Index: gpu/GLES2/extensions/CHROMIUM/CHROMIUM_consistent_uniform_locations.txt |
diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_consistent_uniform_locations.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_consistent_uniform_locations.txt |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8a7d163ef0f71bb8137439158037f1f1f23d976a |
--- /dev/null |
+++ b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_consistent_uniform_locations.txt |
@@ -0,0 +1,86 @@ |
+Name |
+ |
+ CHROMIUM_consistent_uniform_locations |
+ |
+Name Strings |
+ |
+ GL_CHROMIUM_consistent_uniform_locations |
+ |
+Version |
+ |
+ Last Modifed Date: June 17, 2012 |
+ |
+Dependencies |
+ |
+ OpenGL ES 2.0 is required. |
+ |
+Overview |
+ |
+ This extension guarantees uniforms always have the same locations. |
+ |
+ This allows the client program to know the locations of uniforms |
+ without having to compile the shaders, link the program and query |
+ the locations and therefore have no blocking calls when initializing |
+ programs. |
+ |
+ To be forward compatible the locations are provided through the |
+ function GetUniformLocationsCHROMIUM but they can be provided |
+ even before linking a program and therefore do not have to wait |
+ for compile or link completion to return results. |
+ |
+Issues |
+ |
+ If a uniform is unused in the actual program it may be optimized out |
+ by the GL driver. In this case the locations will be wrong. You |
+ must provide a list of only the used uniforms. |
+ |
+New Tokens |
+ |
+ None |
+ |
+New Procedures and Functions |
+ |
+ void GetUniformLocationsCHROMIUM (const GLUniformDefinitionCHROMIUM* uniforms, |
+ GLsizei count, GLsizei max_locations, |
+ GLint* locations); |
+ |
+ Provides the locations of uniforms assuming the list of uniforms provided |
+ matches the uniforms actually used in the corresponding program. |
+ |
+ <uniforms> is an array of uniforms. <count> is the number of uniforms in the |
+ array. <max_locations> is the maximum number of locations to write to |
+ <locations>. <locations> is an array to receive the uniform locations. |
+ |
+ INVALID_VALUE is generated if <count> is less then or equal to 0. |
+ |
+ INVALID_VALUE is generated if any GLUniformDefinitionHCHROMIUM's size |
+ field is <= 0. |
+ |
+ For each uniform <size> locations are provided. For example: |
+ |
+ static const GLUniformDefinitionCHROMIUM defs[] = { |
+ { GL_FLOAT_VEC2, 3, "someUniform", }, // An array of 3 vec2s |
+ { GL_FLOAT_VEC4, 1, "someOtherUniform", }, // A single vec4 |
+ { GL_SAMPLER_2D, 2, "yetAnotherUniform", }, // An array of 2 sampler2Ds |
+ }; |
+ |
+ Would return an array of locations as follows |
+ |
+ location[0] = location for "someUniform[0]" |
+ location[1] = location for "someUniform[1]" |
+ location[2] = location for "someUniform[2]" |
+ location[3] = location for "someOtherUniform" |
+ location[4] = location for "yetAnotherUniform[0]" |
+ location[5] = location for "yetAnotherUniform[1]" |
+ |
+Errors |
+ |
+ None. |
+ |
+New State |
+ |
+ None. |
+ |
+Revision History |
+ |
+ 7/17/2012 Documented the extension |