Merge pull request #452 from Perksey/patch-2
Register & add interactions for EXT_texture_sRGB_RG8
diff --git a/extensions/ARB/ARB_indirect_parameters.txt b/extensions/ARB/ARB_indirect_parameters.txt
index 0dc05dc..f7024c6 100644
--- a/extensions/ARB/ARB_indirect_parameters.txt
+++ b/extensions/ARB/ARB_indirect_parameters.txt
@@ -36,8 +36,8 @@
Version
- Last Modified Date: 23 October 2017
- Revision: 4
+ Last Modified Date: 11 November 2020
+ Revision: 5
Number
@@ -139,7 +139,7 @@
void MultiDrawArraysIndirectCountARB(enum mode,
const void *indirect,
intptr drawcount,
- intptr maxdrawcount,
+ sizei maxdrawcount,
sizei stride);
behaves similarly to MultiDrawArraysIndirect, except that <drawcount>
@@ -218,3 +218,6 @@
3 06/20/2013 pdaniell Modify the <indirect> parameter type to
const void *.
4 10/23/2017 nhaehnle Add COMMAND_BARRIER_BIT language.
+ 5 11/11/2020 pdaniell Fix the type of the maxdrawcount parameter
+ of MultiDrawArraysIndirectCountARB to be
+ sizei making it consistent in the extension.
diff --git a/extensions/EXT/EXT_disjoint_timer_query.txt b/extensions/EXT/EXT_disjoint_timer_query.txt
index 9c30452..d31619a 100644
--- a/extensions/EXT/EXT_disjoint_timer_query.txt
+++ b/extensions/EXT/EXT_disjoint_timer_query.txt
@@ -33,7 +33,7 @@
Version
- Version 8, December 11, 2019
+ Version 9, November 20, 2020
Number
@@ -477,7 +477,7 @@
(2) This example uses QueryCounter.
- GLint queries[1];
+ GLint queries[2];
GLint available = 0;
GLint disjointOccurred = 0;
/* Timer queries can contain more than 32 bits of data, so always
@@ -485,20 +485,24 @@
GLuint64 timeStart, timeEnd, timeElapsed = 0;
/* Create a query object. */
- glGenQueries(1, queries);
+ glGenQueries(2, queries);
/* Clear disjoint error */
glGetIntegerv(GL_GPU_DISJOINT_EXT, &disjointOccurred);
+ /* Query current timestamp before drawing */
+ glQueryCounterEXT(queries[0], GL_TIMESTAMP_EXT);
+
/* Draw full rendertarget of objects */
- glQueryCounterEXT(queries[0], GL_TIMESTAMP_EXT);
+ /* Query current timestamp after drawing */
+ glQueryCounterEXT(queries[1], GL_TIMESTAMP_EXT);
/* Do some other work so you don't stall waiting for available */
/* Wait for the query result to become available */
while (!available) {
- glGetQueryObjectiv(queries[0], GL_QUERY_RESULT_AVAILABLE, &available);
+ glGetQueryObjectiv(queries[1], GL_QUERY_RESULT_AVAILABLE, &available);
}
/* Check for disjoint operation. */
@@ -507,15 +511,18 @@
/* If a disjoint operation occurred, continue without reading the the
values */
if (!disjointOccurred) {
+ /* Get timestamp for when rendertarget started. */
+ glGetQueryObjectui64vEXT(queries[0], GL_QUERY_RESULT, &timeStart);
/* Get timestamp for when rendertarget finished. */
- glGetQueryObjectui64vEXT(queries[0], GL_QUERY_RESULT, &timeElapsed);
+ glGetQueryObjectui64vEXT(queries[1], GL_QUERY_RESULT, &timeEnd);
+ /* See how much time the rendering took in nanoseconds. */
+ timeElapsed = timeEnd - timeStart;
/* Do something useful with the time if a disjoint operation did
not occur. Note that care should be taken to use all
significant bits of the result, not just the least significant
32 bits. */
-
- AdjustObjectLODBasedOnDrawTime(i, timeElapsed);
+ AdjustObjectLODBasedOnDrawTime(timeElapsed);
}
(3) This example demonstrates how to measure the latency between GL
@@ -538,7 +545,7 @@
glGetIntegerv(GL_GPU_DISJOINT_EXT, &disjointOccurred);
/* Queue a query to find out when the frame finishes on the GL */
- glQueryCounterEXT(GL_TIMESTAMP_EXT, endFrameQuery);
+ glQueryCounterEXT(endFrameQuery, GL_TIMESTAMP_EXT);
/* Get the current GL time without stalling the GL */
glGetIntegerv(GL_TIMESTAMP_EXT, &flushTime);
@@ -754,6 +761,8 @@
will not be set.
Revision History
+ Revision 9, 2020/11/20 (xndcn)
+ - Minor fix of code sample
Revision 8, 2019/12/11 (Jon Leech)
- Add actual spec language defining GetInteger64vEXT (github
OpenGL-Registry issue 326)
diff --git a/extensions/QCOM/QCOM_frame_extrapolation.txt b/extensions/QCOM/QCOM_frame_extrapolation.txt
new file mode 100644
index 0000000..b185217
--- /dev/null
+++ b/extensions/QCOM/QCOM_frame_extrapolation.txt
@@ -0,0 +1,133 @@
+Name
+
+ QCOM_frame_extrapolation
+
+Name Strings
+
+ GL_QCOM_frame_extrapolation
+
+Contributors
+
+ Sam Holmes
+ Jonathan Wicks
+
+Contacts
+
+ Jeff Leger <jleger@qti.qualcomm.com>
+
+Status
+
+ Complete
+
+Version
+
+ Last Modified Date: November 30, 2020
+ Revision: 1.0
+
+Number
+
+ OpenGL ES Extension #333
+
+Dependencies
+
+ Requires OpenGL ES 2.0
+
+ This extension is written based on the wording of the OpenGL ES 3.2
+ Specification.
+
+Overview
+
+ Frame extrapolation is the process of producing a new, future frame
+ based on the contents of two previously rendered frames. It may be
+ used to produce high frame rate display updates without incurring the
+ full cost of traditional rendering at the higher framerate.
+
+ This extension adds support for frame extrapolation in OpenGL ES by
+ adding a function which takes three textures. The first two are used
+ in sequence as the source frames, from which the extrapolated frame
+ is derived. The extrapolated frame is stored in the third texture.
+
+New Procedures and Functions
+
+ void ExtrapolateTex2DQCOM(uint src1,
+ uint src2,
+ uint output,
+ float scaleFactor);
+
+Additions to Chapter 8 of the OpenGL ES 3.2 Specification
+
+ 8.24 Frame Extrapolation
+
+ The command
+
+ void ExtrapolateTex2DQCOM(uint src1, uint src2,
+ uint output, float scaleFactor);
+
+ is used to produce an extrapolated frame based on the contents of
+ two previous frames. <src1> and <src2> specify the two previously
+ rendered frames, in order, which will be used as the basis of the
+ extrapolation. The three textures provided must have the same
+ dimensions and format. While <src1>, <src2> and <output> can
+ have multiple levels the implementation only reads from or writes
+ to the base level.
+
+ The texture contents provided in the two source textures represent
+ frame contents at two points in time. <scaleFactor> defines the amount
+ of time into the future the extrapolation is to target, based on the
+ delta in time between the two source textures.
+
+ For example, a value of 1.0 for <scaleFactor> will produce an
+ extrapolated frame that is as far into the future beyond 'src2'
+ as the time delta between 'src1' and 'src2'. A value of 0.5
+ for 'scaleFactor' targets a time that is a half step in the
+ future (compared to the full step delta between the two source frames).
+
+ Specifying an accurate scale factor is important for producing smooth
+ animation. An application that is displaying to the user alternating
+ rendered and extrapolated frames would use a scale factor of 0.5 so
+ that the extrapolated frame has contents which fall halfways between the
+ last rendered frame and the next rendered frame to come in the future.
+ Negative <scaleFactor> values produce frames targeting times before
+ that represented by the contents of <src2>.
+
+ Table 8.28: Compatible formats for <src1>, <src2> and <output>
+
+ Internal Format
+ ---------------
+ RGBA8
+ RGB8
+ R8
+ RGBA16F
+ RGB16F
+ RGBA32F
+ RGB32F
+
+Errors
+
+ INVALID_VALUE is generated if scaleFactor is equal to 0.
+
+ INVALID_OPERATION is generated if the texture formats of src1, src2 and
+ output are not identical.
+
+ INVALID_OPERATION is generated if the texture dimensions of src1, src2
+ and output are not identical.
+
+ INVALID_OPERATION is generated if the texture formats of src1, src2 and
+ output are not one of the formats listed in table 8.28.
+
+Issues
+
+ (1) Why is the extrapolation quality not defined?
+
+ Resolved: The intention of this specification is to extrapolate a new
+ texture based on the two input textures. Implementations should aim to
+ produce the highest quality extrapolation but since the results are
+ extrapolations there are no prescribed steps for how the textures must
+ be generated.
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- ---------- -------- -----------------------------------------
+ 0.1 11/21/2019 Sam Initial draft
+ 1.0 11/30/2020 Tate Official extension number
diff --git a/extensions/esext.php b/extensions/esext.php
index 4d6946d..7e56ead 100644
--- a/extensions/esext.php
+++ b/extensions/esext.php
@@ -691,4 +691,6 @@
</li>
<li value=332><a href="extensions/NV/NV_primitive_shading_rate.txt">GL_NV_primitive_shading_rate</a>
</li>
+<li value=333><a href="extensions/QCOM/QCOM_frame_extrapolation.txt">QCOM_frame_extrapolation</a>
+</li>
</ol>
diff --git a/extensions/registry.py b/extensions/registry.py
index 0dd8bfa..fd7502f 100644
--- a/extensions/registry.py
+++ b/extensions/registry.py
@@ -4536,6 +4536,11 @@
'flags' : { 'public' },
'url' : 'extensions/QCOM/QCOM_motion_estimation.txt',
},
+ 'QCOM_frame_extrapolation' : {
+ 'esnumber' : 333,
+ 'flags' : { 'public' },
+ 'url' : 'extensions/QCOM/QCOM_frame_extrapolation.txt',
+ },
'GL_QCOM_performance_monitor_global_mode' : {
'esnumber' : 56,
'flags' : { 'public' },
diff --git a/xml/gl.xml b/xml/gl.xml
index 0763863..1319d48 100644
--- a/xml/gl.xml
+++ b/xml/gl.xml
@@ -9324,7 +9324,7 @@
<enum value="0x8C07" name="GL_FACTOR_ALPHA_MODULATE_IMG"/>
<enum value="0x8C08" name="GL_FRAGMENT_ALPHA_MODULATE_IMG"/>
<enum value="0x8C09" name="GL_ADD_BLEND_IMG"/>
- <enum value="0x8C0A" name="GL_SGX_BINARY_IMG"/>
+ <enum value="0x8C0A" name="GL_SGX_BINARY_IMG" group="ShaderBinaryFormat"/>
<unused start="0x8C0B" end="0x8C0F" vendor="IMG"/>
</enums>
@@ -9982,7 +9982,7 @@
<enum value="0x8DF5" name="GL_HIGH_INT" group="PrecisionType"/>
<enum value="0x8DF6" name="GL_UNSIGNED_INT_10_10_10_2_OES"/>
<enum value="0x8DF7" name="GL_INT_10_10_10_2_OES"/>
- <enum value="0x8DF8" name="GL_SHADER_BINARY_FORMATS"/>
+ <enum value="0x8DF8" name="GL_SHADER_BINARY_FORMATS" group="GetPName"/>
<enum value="0x8DF9" name="GL_NUM_SHADER_BINARY_FORMATS" group="GetPName"/>
<enum value="0x8DFA" name="GL_SHADER_COMPILER" group="GetPName"/>
<enum value="0x8DFB" name="GL_MAX_VERTEX_UNIFORM_VECTORS" group="GetPName"/>
@@ -10319,7 +10319,7 @@
</enums>
<enums namespace="GL" start="0x8F60" end="0x8F6F" vendor="ARM" comment="For Remi Pedersen, Khronos bug 3745">
- <enum value="0x8F60" name="GL_MALI_SHADER_BINARY_ARM"/>
+ <enum value="0x8F60" name="GL_MALI_SHADER_BINARY_ARM" group="ShaderBinaryFormat"/>
<enum value="0x8F61" name="GL_MALI_PROGRAM_BINARY_ARM"/>
<unused start="0x8F62" vendor="ARM"/>
<enum value="0x8F63" name="GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT"/>
@@ -10381,7 +10381,7 @@
</enums>
<enums namespace="GL" start="0x8FC0" end="0x8FDF" vendor="VIV" comment="For Frido Garritsen, bug 4526">
- <enum value="0x8FC4" name="GL_SHADER_BINARY_VIV"/>
+ <enum value="0x8FC4" name="GL_SHADER_BINARY_VIV" group="ShaderBinaryFormat"/>
</enums>
<enums namespace="GL" start="0x8FE0" end="0x8FFF" vendor="NV" comment="For Pat Brown, bug 4935">
@@ -10964,7 +10964,7 @@
</enums>
<enums namespace="GL" start="0x9250" end="0x925F" vendor="DMP" comment="For Eisaku Ohbuchi via email">
- <enum value="0x9250" name="GL_SHADER_BINARY_DMP"/>
+ <enum value="0x9250" name="GL_SHADER_BINARY_DMP" group="ShaderBinaryFormat"/>
<enum value="0x9251" name="GL_SMAPHS30_PROGRAM_BINARY_DMP"/>
<enum value="0x9252" name="GL_SMAPHS_PROGRAM_BINARY_DMP"/>
<enum value="0x9253" name="GL_DMP_PROGRAM_BINARY_DMP"/>
@@ -10972,7 +10972,7 @@
</enums>
<enums namespace="GL" start="0x9260" end="0x926F" vendor="FJ" comment="Khronos bug 7486">
- <enum value="0x9260" name="GL_GCCSO_SHADER_BINARY_FJ"/>
+ <enum value="0x9260" name="GL_GCCSO_SHADER_BINARY_FJ" group="ShaderBinaryFormat"/>
<unused start="0x9261" end="0x926F" vendor="FJ"/>
</enums>
@@ -19133,7 +19133,7 @@
<param><ptype>GLuint</ptype> <name>monitor</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLsizei</ptype> <name>dataSize</name></param>
- <param len="dataSize"><ptype>GLuint</ptype> *<name>data</name></param>
+ <param len="dataSize / 4"><ptype>GLuint</ptype> *<name>data</name></param>
<param len="1"><ptype>GLint</ptype> *<name>bytesWritten</name></param>
</command>
<command>
@@ -20746,7 +20746,7 @@
<param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="MapQuery"><ptype>GLenum</ptype> <name>query</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="COMPSIZE(bufSize)"><ptype>GLdouble</ptype> *<name>v</name></param>
+ <param len="bufSize / 8"><ptype>GLdouble</ptype> *<name>v</name></param>
</command>
<command>
<proto>void <name>glGetnMapfv</name></proto>
@@ -20804,7 +20804,7 @@
<proto>void <name>glGetnPixelMapfvARB</name></proto>
<param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="COMPSIZE(bufSize)"><ptype>GLfloat</ptype> *<name>values</name></param>
+ <param len="bufSize / 4"><ptype>GLfloat</ptype> *<name>values</name></param>
</command>
<command>
<proto>void <name>glGetnPixelMapuiv</name></proto>
@@ -20885,35 +20885,35 @@
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLdouble</ptype> *<name>params</name></param>
+ <param len="bufSize / 8"><ptype>GLdouble</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformdvARB</name></proto>
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLdouble</ptype> *<name>params</name></param>
+ <param len="bufSize / 8"><ptype>GLdouble</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformfv</name></proto>
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLfloat</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformfvARB</name></proto>
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLfloat</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformfvEXT</name></proto>
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLfloat</ptype> *<name>params</name></param>
<alias name="glGetnUniformfv"/>
</command>
<command>
@@ -20921,7 +20921,7 @@
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLfloat</ptype> *<name>params</name></param>
<alias name="glGetnUniformfv"/>
</command>
<command>
@@ -20929,28 +20929,28 @@
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLint64</ptype> *<name>params</name></param>
+ <param len="bufSize / 8"><ptype>GLint64</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformiv</name></proto>
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformivARB</name></proto>
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformivEXT</name></proto>
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetnUniformiv"/>
</command>
<command>
@@ -20958,7 +20958,7 @@
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetnUniformiv"/>
</command>
<command>
@@ -20966,28 +20966,28 @@
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLuint64</ptype> *<name>params</name></param>
+ <param len="bufSize / 8"><ptype>GLuint64</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformuiv</name></proto>
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLuint</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLuint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformuivARB</name></proto>
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLuint</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLuint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformuivKHR</name></proto>
<param class="program"><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="bufSize"><ptype>GLuint</ptype> *<name>params</name></param>
+ <param len="bufSize / 4"><ptype>GLuint</ptype> *<name>params</name></param>
<alias name="glGetnUniformuiv"/>
</command>
<command>
@@ -28916,6 +28916,13 @@
<param class="texture" group="Texture"><ptype>GLuint</ptype> <name>mask</name></param>
</command>
<command>
+ <proto>void <name>glExtrapolateTex2DQCOM</name></proto>
+ <param class="texture"><ptype>GLuint</ptype> <name>src1</name></param>
+ <param class="texture"><ptype>GLuint</ptype> <name>src2</name></param>
+ <param class="texture"><ptype>GLuint</ptype> <name>output</name></param>
+ <param><ptype>GLfloat</ptype> <name>scaleFactor</name></param>
+ </command>
+ <command>
<proto>void <name>glTexFilterFuncSGIS</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="TextureFilterSGIS"><ptype>GLenum</ptype> <name>filter</name></param>
@@ -51100,6 +51107,11 @@
<command name="glTexEstimateMotionRegionsQCOM"/>
</require>
</extension>
+ <extension name="GL_QCOM_frame_extrapolation" supported="gles2">
+ <require>
+ <command name="glExtrapolateTex2DQCOM"/>
+ </require>
+ </extension>
<extension name="GL_QCOM_texture_foveated" supported="gles2">
<require>
<enum name="GL_FOVEATION_ENABLE_BIT_QCOM"/>