Bug 1097413 - Symbolic constants kGLESVersion2 and kGLESVersion3. r=jgilbert draft
authorDan Glastonbury <dglastonbury@mozilla.com>
Mon, 27 Oct 2014 09:31:57 +1000
changeset 226493 1f36655a6d26c82aecbe3c897a206ded02b61526
parent 226492 3f06cebf445854c045b4017f64eae6404e428da1
child 226494 90b44c6125925e3e027200169a21e0c8ab0f5349
push id53
push userdglastonbury@mozilla.com
push dateWed, 12 Nov 2014 02:04:58 +0000
reviewersjgilbert
bugs1097413
milestone36.0a1
Bug 1097413 - Symbolic constants kGLESVersion2 and kGLESVersion3. r=jgilbert
gfx/gl/GLContextFeatures.cpp
--- a/gfx/gl/GLContextFeatures.cpp
+++ b/gfx/gl/GLContextFeatures.cpp
@@ -17,16 +17,19 @@ namespace gl {
 const size_t kMAX_EXTENSION_GROUP_SIZE = 5;
 
 // ARB_ES2_compatibility is natively supported in OpenGL 4.1.
 static const unsigned int kGLCoreVersionForES2Compat = 410;
 
 // ARB_ES3_compatibility is natively supported in OpenGL 4.3.
 static const unsigned int kGLCoreVersionForES3Compat = 430;
 
+static const unsigned int kGLESVersion2 = 200;
+static const unsigned int kGLESVersion3 = 300;
+
 struct FeatureInfo
 {
     const char* mName;
 
     /* The (desktop) OpenGL version that provides this feature */
     unsigned int mOpenGLVersion;
 
     /* The OpenGL ES version that provides this feature */
@@ -59,45 +62,45 @@ static const FeatureInfo sFeatureInfoArr
             GLContext::EXT_transform_feedback,
             GLContext::NV_transform_feedback2,
             GLContext::Extensions_End
         }
     },
     {
         "blend_minmax",
         200, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_blend_minmax,
             GLContext::Extensions_End
         }
     },
     {
         "clear_buffers",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::Extensions_End
         }
     },
     {
         "copy_buffer",
         310, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::ARB_copy_buffer,
         {
             GLContext::Extensions_End
         }
     },
     {
         "depth_texture",
         200, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_depth_texture,
             GLContext::OES_depth_texture,
             // Intentionally avoid putting ANGLE_depth_texture here,
             // it does not offer quite the same functionality.
             GLContext::Extensions_End
         }
@@ -111,40 +114,40 @@ static const FeatureInfo sFeatureInfoArr
             GLContext::ARB_draw_buffers,
             GLContext::EXT_draw_buffers,
             GLContext::Extensions_End
         }
     },
     {
         "draw_instanced",
         310, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_draw_instanced,
             GLContext::EXT_draw_instanced,
             GLContext::NV_draw_instanced,
             GLContext::ANGLE_instanced_arrays,
             GLContext::Extensions_End
         }
     },
     {
         "draw_range_elements",
         120, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_draw_range_elements,
             GLContext::Extensions_End
         }
     },
     {
         "element_index_uint",
         200, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::OES_element_index_uint,
             GLContext::Extensions_End
         }
     },
     {
         "ES2_compatibility",
@@ -153,60 +156,60 @@ static const FeatureInfo sFeatureInfoArr
         GLContext::ARB_ES2_compatibility, // no suffix on ARB extension
         {
             GLContext::Extensions_End
         }
     },
     {
         "ES3_compatibility",
         kGLCoreVersionForES3Compat,
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::ARB_ES3_compatibility, // no suffix on ARB extension
         {
             GLContext::Extensions_End
         }
     },
     {
         // Removes clamping for float color outputs from frag shaders.
         "frag_color_float",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_color_buffer_float,
             GLContext::EXT_color_buffer_float,
             GLContext::EXT_color_buffer_half_float,
             GLContext::Extensions_End
         }
     },
     {
         "frag_depth",
         200, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_frag_depth,
             GLContext::Extensions_End
         }
     },
     {
         "framebuffer_blit",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_framebuffer_blit,
             GLContext::ANGLE_framebuffer_blit,
             GLContext::Extensions_End
         }
     },
     {
         "framebuffer_multisample",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_framebuffer_multisample,
             GLContext::ANGLE_framebuffer_multisample,
             GLContext::Extensions_End
         }
     },
     {
@@ -217,27 +220,27 @@ static const FeatureInfo sFeatureInfoArr
         {
             GLContext::EXT_framebuffer_object,
             GLContext::Extensions_End
         }
     },
     {
         "get_integer_indexed",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_draw_buffers2,
             GLContext::Extensions_End
         }
     },
     {
         "get_integer64_indexed",
         320, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::Extensions_End
         }
     },
     {
         "get_query_object_iv",
         200, // OpenGL version
@@ -249,63 +252,63 @@ static const FeatureInfo sFeatureInfoArr
         /*
          * XXX_get_query_object_iv only provide GetQueryObjectiv provided by
          * ARB_occlusion_query (added by OpenGL 2.0).
          */
     },
     {
         "gpu_shader4",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_gpu_shader4,
             GLContext::Extensions_End
         }
     },
     {
         "instanced_arrays",
         330, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_instanced_arrays,
             GLContext::NV_instanced_arrays,
             GLContext::ANGLE_instanced_arrays,
             GLContext::Extensions_End
         }
     },
     {
         "instanced_non_arrays",
         330, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_instanced_arrays,
             GLContext::Extensions_End
         }
         /* This is an expanded version of `instanced_arrays` that allows for all
          * enabled active attrib arrays to have non-zero divisors.
          * ANGLE_instanced_arrays and NV_instanced_arrays forbid this, but GLES3
          * has no such restriction.
          */
     },
     {
         "invalidate_framebuffer",
         430, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::ARB_invalidate_subdata,
         {
             GLContext::Extensions_End
         }
     },
     {
         "map_buffer_range",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::ARB_map_buffer_range,
         {
             GLContext::Extensions_End
         }
     },
     {
         "occlusion_query",
         200, // OpenGL version
@@ -314,87 +317,87 @@ static const FeatureInfo sFeatureInfoArr
         {
             GLContext::Extensions_End
         }
         // XXX_occlusion_query depend on ARB_occlusion_query (added in OpenGL 2.0)
     },
     {
         "occlusion_query_boolean",
         kGLCoreVersionForES3Compat,
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::ARB_ES3_compatibility,
         {
             GLContext::EXT_occlusion_query_boolean,
             GLContext::Extensions_End
         }
         /*
          * XXX_occlusion_query_boolean provide ANY_SAMPLES_PASSED_CONSERVATIVE,
          * but EXT_occlusion_query_boolean is only a OpenGL ES extension. But
          * it is supported on desktop if ARB_ES3_compatibility because
          * EXT_occlusion_query_boolean (added in OpenGL ES 3.0).
          */
     },
     {
         "occlusion_query2",
         330, // = min(330, kGLCoreVersionForES3Compat),
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_occlusion_query2,
             GLContext::ARB_ES3_compatibility,
             GLContext::EXT_occlusion_query_boolean,
             GLContext::Extensions_End
         }
         /*
          * XXX_occlusion_query2 (add in OpenGL 3.3) provide ANY_SAMPLES_PASSED,
          * which is provided by ARB_occlusion_query2, EXT_occlusion_query_boolean
          * (added in OpenGL ES 3.0) and ARB_ES3_compatibility
          */
     },
     {
         "packed_depth_stencil",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_packed_depth_stencil,
             GLContext::OES_packed_depth_stencil,
             GLContext::Extensions_End
         }
     },
     {
         "query_objects",
         200, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_occlusion_query_boolean,
             GLContext::Extensions_End
         }
         /*
          * XXX_query_objects only provide entry points commonly supported by
          * ARB_occlusion_query (added in OpenGL 2.0) and EXT_occlusion_query_boolean
          * (added in OpenGL ES 3.0)
          */
     },
     {
         "renderbuffer_float",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_texture_float,
             GLContext::EXT_color_buffer_float,
             GLContext::Extensions_End
         }
     },
     {
         "renderbuffer_half_float",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_texture_float,
             GLContext::EXT_color_buffer_half_float,
             GLContext::Extensions_End
         }
     },
     {
@@ -406,101 +409,101 @@ static const FeatureInfo sFeatureInfoArr
             GLContext::ARB_robustness,
             GLContext::EXT_robustness,
             GLContext::Extensions_End
         }
     },
     {
         "sRGB",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_sRGB,
             GLContext::Extensions_End
         }
     },
     {
         "sampler_objects",
         330, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::ARB_sampler_objects,
         {
             GLContext::Extensions_End
         }
     },
     {
         "standard_derivatives",
         200, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::OES_standard_derivatives,
             GLContext::Extensions_End
         }
     },
     {
         "texture_3D",
         120, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_texture3D,
             GLContext::OES_texture_3D,
             GLContext::Extensions_End
         }
     },
     {
         "texture_3D_compressed",
         130, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_texture_compression,
             GLContext::OES_texture_3D,
             GLContext::Extensions_End
         }
     },
     {
         "texture_3D_copy",
         120, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::EXT_copy_texture,
             GLContext::OES_texture_3D,
             GLContext::Extensions_End
         }
     },
     {
         "texture_float",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_texture_float,
             GLContext::OES_texture_float,
             GLContext::Extensions_End
         }
     },
     {
         "texture_float_linear",
         310, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_texture_float,
             GLContext::OES_texture_float_linear,
             GLContext::Extensions_End
         }
     },
     {
         "texture_half_float",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_half_float_pixel,
             GLContext::ARB_texture_float,
             GLContext::NV_half_float,
             GLContext::Extensions_End
         }
         /**
@@ -510,83 +513,83 @@ static const FeatureInfo sFeatureInfoArr
          *   GL_HALF_FLOAT_NV  = 0x140B == GL_HALF_FLOAT
          *   GL_HALF_FLOAT_OES = 0x8D61 != GL_HALF_FLOAT
          * WebGL handles this specifically with an OES_texture_half_float check.
          */
     },
     {
         "texture_half_float_linear",
         310, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_half_float_pixel,
             GLContext::ARB_texture_float,
             GLContext::NV_half_float,
             GLContext::OES_texture_half_float_linear,
             GLContext::Extensions_End
         }
     },
     {
         "texture_non_power_of_two",
         200, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::ARB_texture_non_power_of_two,
             GLContext::OES_texture_npot,
             GLContext::Extensions_End
         }
     },
     {
         "texture_storage",
         420, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::ARB_texture_storage,
         {
             /*
              * Not including GL_EXT_texture_storage here because it
              * doesn't guarantee glTexStorage3D, which is required for
              * WebGL 2.
              */
             GLContext::Extensions_End
         }
     },
     {
         "transform_feedback2",
         400, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::ARB_transform_feedback2,
         {
             GLContext::NV_transform_feedback2,
             GLContext::Extensions_End
         }
     },
     {
         "uniform_buffer_object",
         310, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::ARB_uniform_buffer_object,
         {
             GLContext::Extensions_End
         }
     },
     {
         "uniform_matrix_nonsquare",
         210, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::Extension_None,
         {
             GLContext::Extensions_End
         }
     },
     {
         "vertex_array_object",
         300, // OpenGL version
-        300, // OpenGL ES version
+        kGLESVersion3, // OpenGL ES version
         GLContext::ARB_vertex_array_object, // ARB extension
         {
             GLContext::OES_vertex_array_object,
             GLContext::APPLE_vertex_array_object,
             GLContext::Extensions_End
         }
     }
 };
@@ -614,18 +617,19 @@ ProfileVersionForFeature(GLFeature featu
     if (profile == ContextProfile::OpenGLES) {
         return featureInfo.mOpenGLESVersion;
     }
 
     return featureInfo.mOpenGLVersion;
 }
 
 bool
-IsFeaturePartOfProfileVersion(GLFeature feature,
-                              ContextProfile profile, unsigned int version)
+GLContext::IsFeaturePartOfProfileVersion(GLFeature feature,
+                                         ContextProfile profile,
+                                         unsigned int version)
 {
     unsigned int profileVersion = ProfileVersionForFeature(feature, profile);
 
     /**
      * if `profileVersion` is zero, it means that no version of the profile
      * added support for the feature.
      */
     return profileVersion && version >= profileVersion;