Merge pull request #442 from Perksey/patch-1

Advance notice of old-style grouping removals
diff --git a/api/GL/glcorearb.h b/api/GL/glcorearb.h
index d625420..ea6acc8 100755
--- a/api/GL/glcorearb.h
+++ b/api/GL/glcorearb.h
@@ -4662,6 +4662,11 @@
 #define GL_SR8_EXT                        0x8FBD
 #endif /* GL_EXT_texture_sRGB_R8 */
 
+#ifndef GL_EXT_texture_sRGB_RG8
+#define GL_EXT_texture_sRGB_RG8 1
+#define GL_SRG8_EXT                       0x8FBE
+#endif /* GL_EXT_texture_sRGB_RG8 */
+
 #ifndef GL_EXT_texture_sRGB_decode
 #define GL_EXT_texture_sRGB_decode 1
 #define GL_TEXTURE_SRGB_DECODE_EXT        0x8A48
@@ -5612,6 +5617,12 @@
 #define GL_SHARED_EDGE_NV                 0xC0
 #endif /* GL_NV_path_rendering_shared_edge */
 
+#ifndef GL_NV_primitive_shading_rate
+#define GL_NV_primitive_shading_rate 1
+#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
+#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
+#endif /* GL_NV_primitive_shading_rate */
+
 #ifndef GL_NV_representative_fragment_test
 #define GL_NV_representative_fragment_test 1
 #define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F
diff --git a/api/GL/glext.h b/api/GL/glext.h
index f6499a5..4a4a5ce 100644
--- a/api/GL/glext.h
+++ b/api/GL/glext.h
@@ -32,7 +32,7 @@
 #define GLAPI extern
 #endif
 
-#define GL_GLEXT_VERSION 20201027
+#define GL_GLEXT_VERSION 20210107
 
 #include <KHR/khrplatform.h>
 
@@ -8536,6 +8536,11 @@
 #define GL_SR8_EXT                        0x8FBD
 #endif /* GL_EXT_texture_sRGB_R8 */
 
+#ifndef GL_EXT_texture_sRGB_RG8
+#define GL_EXT_texture_sRGB_RG8 1
+#define GL_SRG8_EXT                       0x8FBE
+#endif /* GL_EXT_texture_sRGB_RG8 */
+
 #ifndef GL_EXT_texture_sRGB_decode
 #define GL_EXT_texture_sRGB_decode 1
 #define GL_TEXTURE_SRGB_DECODE_EXT        0x8A48
@@ -10780,6 +10785,12 @@
 #endif
 #endif /* GL_NV_primitive_restart */
 
+#ifndef GL_NV_primitive_shading_rate
+#define GL_NV_primitive_shading_rate 1
+#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
+#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
+#endif /* GL_NV_primitive_shading_rate */
+
 #ifndef GL_NV_query_resource
 #define GL_NV_query_resource 1
 #define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540
diff --git a/api/GLES/gl.h b/api/GLES/gl.h
index e598367..2153011 100644
--- a/api/GLES/gl.h
+++ b/api/GLES/gl.h
@@ -17,7 +17,7 @@
 
 #include <GLES/glplatform.h>
 
-/* Generated on date 20201027 */
+/* Generated on date 20210107 */
 
 /* Generated C header for:
  * API: gles1
diff --git a/api/GLES/glext.h b/api/GLES/glext.h
index 037af10..61a6363 100644
--- a/api/GLES/glext.h
+++ b/api/GLES/glext.h
@@ -19,7 +19,7 @@
 #define GL_APIENTRYP GL_APIENTRY*
 #endif
 
-/* Generated on date 20201027 */
+/* Generated on date 20210107 */
 
 /* Generated C header for:
  * API: gles1
diff --git a/api/GLES2/gl2.h b/api/GLES2/gl2.h
index ef3fe7c..3c5e6d3 100644
--- a/api/GLES2/gl2.h
+++ b/api/GLES2/gl2.h
@@ -25,7 +25,7 @@
 #define GL_GLES_PROTOTYPES 1
 #endif
 
-/* Generated on date 20201027 */
+/* Generated on date 20210107 */
 
 /* Generated C header for:
  * API: gles2
diff --git a/api/GLES2/gl2ext.h b/api/GLES2/gl2ext.h
index 7c0b043..8a66d82 100644
--- a/api/GLES2/gl2ext.h
+++ b/api/GLES2/gl2ext.h
@@ -19,7 +19,7 @@
 #define GL_APIENTRYP GL_APIENTRY*
 #endif
 
-/* Generated on date 20201027 */
+/* Generated on date 20210107 */
 
 /* Generated C header for:
  * API: gles2
@@ -3442,6 +3442,12 @@
 #endif
 #endif /* GL_NV_polygon_mode */
 
+#ifndef GL_NV_primitive_shading_rate
+#define GL_NV_primitive_shading_rate 1
+#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
+#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
+#endif /* GL_NV_primitive_shading_rate */
+
 #ifndef GL_NV_read_buffer
 #define GL_NV_read_buffer 1
 #define GL_READ_BUFFER_NV                 0x0C02
@@ -3791,6 +3797,14 @@
 #endif
 #endif /* GL_QCOM_extended_get2 */
 
+#ifndef GL_QCOM_frame_extrapolation
+#define GL_QCOM_frame_extrapolation 1
+typedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor);
+#ifdef GL_GLEXT_PROTOTYPES
+GL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor);
+#endif
+#endif /* GL_QCOM_frame_extrapolation */
+
 #ifndef GL_QCOM_framebuffer_foveated
 #define GL_QCOM_framebuffer_foveated 1
 #define GL_FOVEATION_ENABLE_BIT_QCOM      0x00000001
diff --git a/api/GLES3/gl3.h b/api/GLES3/gl3.h
index 7ad72f9..6bb4d8f 100644
--- a/api/GLES3/gl3.h
+++ b/api/GLES3/gl3.h
@@ -25,7 +25,7 @@
 #define GL_GLES_PROTOTYPES 1
 #endif
 
-/* Generated on date 20201027 */
+/* Generated on date 20210107 */
 
 /* Generated C header for:
  * API: gles2
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/EXT/EXT_texture_sRGB_RG8.txt b/extensions/EXT/EXT_texture_sRGB_RG8.txt
index 35fac02..c973dba 100644
--- a/extensions/EXT/EXT_texture_sRGB_RG8.txt
+++ b/extensions/EXT/EXT_texture_sRGB_RG8.txt
@@ -12,6 +12,7 @@
     Maurice Ribble
     Tobias Hector
     Jan-Harald Fredriksen
+    Dylan Perks
     Contributors to EXT_texture_sRGB_R8, on which this is based.
 
 Contact
@@ -24,18 +25,28 @@
 
 Version
 
-    Last Modified Date: February 05, 2015
-    Revision: 3.0
+    Last Modified Date: December 11, 2020
+    Revision: 4
 
 Number
 
     OpenGL ES Extension #223
+    OpenGL Extension #555
 
 Dependencies
 
-    OpenGL ES 3.0 is required.
+    OpenGL ES 3.0 or OpenGL 1.2 is required.
 
-    This extension is written against the OpenGL ES 3.1 specification.
+    This extension is written against the OpenGL ES 3.1 and
+    OpenGL 4.6 (Core Profile) specifications.
+
+    This extension interacts with ARB_texture_view.
+
+    This extension interacts with EXT_texture_view.
+
+    This extension interacts with OES_texture_view.
+
+    This extension interacts with ARB_direct_state_access.
 
 Overview
 
@@ -49,8 +60,9 @@
 
 New Tokens
 
-    Accepted by the <internalformat> parameters of TexImage2D, TexImage3D,
-    TexStorage2D and TexStorage3D:
+    Accepted by the <internalformat> parameters of TexImage3D, TexImage2D,
+    TexImage1D, TexStorage3D, TexStorage2D, TexStorage1D, TextureStorage3D,
+    TextureStorage2D, and TextureStorage1D:
 
         SRG8_EXT    0x8FBE
 
@@ -78,6 +90,62 @@
         ---------------
         SRG8_EXT
 
+Additions to Chapter 8 of the OpenGL 4.6 (Core Profile) Specification
+(Textures and Samplers)
+
+    The following table entry is added to Table 8.2 (Valid combinations of
+    format, type and sized internalformat):
+
+        Format    Type             External Bytes per Pixel    Internal Format
+        ------    ----             ------------------------    ---------------
+        RG        UNSIGNED_BYTE    2                           SRG8_EXT
+
+    The following table entry is added to Table 8.12 (Correspondence of sized
+    internal color formats to base internal formats):
+
+        Sized Internal Format    Base Internal Format    R    G    B    A    S    CR    TF    Req. rend.    Req. tex.
+        ---------------------    --------------------    -    -    -    -    -    --    --    ----------    ---------
+        SRG8_EXT                 RG                      8    8                         X                   X
+    
+    The following table entry is added to Table 8.22 (Compatible internal
+    formats for TextureView):
+
+        Class              Internal formats
+        ---------------    ----------------
+        VIEW_CLASS_16_BITS  SRG8_EXT
+
+    The following table entry is added to Table 8.24 (sRGB texture internal
+    formats):
+
+        Internal Format
+        ---------------
+        SRG8_EXT
+        
+Dependencies on OpenGL
+        
+    If OpenGL is not supported, ignore all references to 1D textures,
+    including TexImage1D, TexStorage1D, and TextureStorage1D.
+    
+Dependencies on OpenGL 4.5 and ARB_direct_state_access
+
+    If neither OpenGL 4.5 nor ARB_direct_state_access are supported,
+    ignore all references to TextureStorage3D, TextureStorage2D, and
+    TextureStorage1D.
+
+Dependencies on ARB_texture_view
+
+    If ARB_texture_view is supported, add SRG8_EXT to the Internal formats
+    column of the VIEW_CLASS_16_BITS row in Table 3.X.2.
+
+Dependencies on EXT_texture_view
+
+    If EXT_texture_view is supported, add SRG8_EXT to the Internal formats
+    column of the VIEW_CLASS_16_BITS row in Table 8.X.2.
+
+Dependencies on OES_texture_view
+
+    If OES_texture_view is supported, add SRG8_EXT to the Internal formats
+    column of the VIEW_CLASS_16_BITS row in Table 8.X.2.
 
 Errors
 
@@ -92,3 +160,4 @@
     #01    2/5/2015    Tobias Hector      Initial revision.
     #02    2/5/2015    Tobias Hector      Fixed Table 8.13 entry and whitespace issues.
     #03    2/17/2015   Tobias Hector      Fixed Table 8.2 entry to correctly say 2 bytes.
+    #04    12/11/2020  Dylan Perks        Add GL interactions and register for GL
diff --git a/extensions/NV/NV_primitive_shading_rate.txt b/extensions/NV/NV_primitive_shading_rate.txt
new file mode 100644
index 0000000..dc0bb42
--- /dev/null
+++ b/extensions/NV/NV_primitive_shading_rate.txt
@@ -0,0 +1,267 @@
+Name
+
+    NV_primitive_shading_rate
+
+Name Strings
+
+    GL_NV_primitive_shading_rate
+
+Contact
+
+    Pat Brown, NVIDIA Corporation (pbrown 'at' nvidia.com)
+
+Contributors
+
+    Jeff Bolz, NVIDIA
+
+Status
+
+    Shipping
+
+Version
+
+    Last Modified:      October 30, 2020
+    Revision:           1
+
+Number
+
+    OpenGL Extension #554
+    OpenGL ES Extension #332
+
+Dependencies
+
+    This extension is written against the OpenGL 4.6 Specification
+    (Compatibility Profile), dated February 2, 2019.
+
+    OpenGL 4.5 or OpenGL ES 3.2 is required.
+
+    NV_shading_rate_image is required.
+
+    This extension requires support from the OpenGL Shading Language (GLSL)
+    extension "NV_primitive_shading_rate", which can be found at the Khronos
+    Group Github site here:
+
+        https://github.com/KhronosGroup/GLSL
+
+    This extension interacts with NV_mesh_shader.
+
+Overview
+
+    This extension builds on top of the NV_shading_rate_image extension to
+    provide OpenGL API support for using a per-primitive shading rate value to
+    control the computation of the rate used to process each fragment.
+
+    In the NV_shading_rate_image extension, the shading rate for each fragment
+    produced by a primitive is determined by looking up a texel in the bound
+    shading rate image and using that value as an index into a shading rate
+    palette.  That extension provides a separate shading rate image lookup
+    enable and palette for each viewport.  When a primitive is rasterized, the
+    implementation uses the enable and palette associated with the primitive's
+    viewport to determine the shading rate.
+
+    This extension decouples the shading rate image enables and palettes from
+    viewports.  The number of enables/palettes now comes from the
+    implementation-dependent constant SHADING_RATE_IMAGE_PALETTE_COUNT_NV.  When
+    SHADING_RATE_IMAGE_PER_PRIMITIVE_NV (added here) is enabled, the value of
+    the new gl_ShadingRateNV built-in output is used to select an enable and
+    palette to determine the shading rate.  Otherwise, the viewport number for
+    the primitive is used, as in NV_shading_rate_image.
+
+
+New Procedures and Functions
+
+    None.
+
+
+New Tokens
+
+    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled and by the
+    <pname> parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv,
+    GetDoublev:
+
+        SHADING_RATE_IMAGE_PER_PRIMITIVE_NV             0x95B1
+
+    Accepted by the <pname> parameter of GetBooleanv, GetDoublev,
+    GetIntegerv, and GetFloatv:
+
+        SHADING_RATE_IMAGE_PALETTE_COUNT_NV             0x95B2
+
+
+Modifications to the OpenGL 4.6 Specification (Compatibility Profile)
+
+    Modify Section 14.3.1, Multisampling, as modified by the
+    NV_shading_rate_image extension.
+
+    (modify the introduction of the shading rate image functionality to decouple
+    shading rate image enables and viewports)
+
+    When using a shading rate image (Section 14.4.1), rasterization may produce
+    fragments covering multiple pixels, where each pixel is treated as a sample.
+    If any of the SHADING_RATE_IMAGE_NV enables is enabled, primitives will be
+    processed with multisample rasterization rules, regardless of the
+    MULTISAMPLE enable or the value of SAMPLE_BUFFERS.  ...
+
+
+    Modify Section 14.4.1, Shading Rate Image, as added by the
+    NV_shading_rate_image extension.
+
+    (rework the introduction of the shading rate image functionality to decouple
+    shading rate image enables and viewports)
+
+    Applications can specify the use of a shading rate that varies by (x,y)
+    location using a _shading rate image_.  For each primitive, the shading rate
+    image is enabled or disabled by selecting a single enable in an array of
+    enables whose size is given by the implementation-dependent constant
+    SHADING_RATE_IMAGE_PALETTE_COUNT_NV.  Use of a shading rate image is enabled
+    or disabled globally by using Enable or Disable with target
+    SHADING_RATE_IMAGE_NV.  A single shading rate image enable can be modified
+    by calling Enablei or Disablei with the constant SHADING_RATE_IMAGE_NV and
+    the index of the selected enable.  The shading rate image may only be used
+    with a framebuffer object.  When rendering to the default framebuffer, the
+    shading rate image enables are ignored and operations in this section are
+    disabled.  In the initial state, all shading rate image enables are
+    disabled.
+
+    The method used to select a single shading rate image enable used to process
+    each primitive is controlled by calling Enable or Disable with the target
+    SHADING_RATE_IMAGE_PER_PRIMITIVE_NV.  When enabled, a shading rate enable
+    used for a primitive is selected using an index taken from the value of the
+    built-in output gl_ShadingRateNV for the primitive's provoking vertex.  If
+    the value of gl_ShadingRateNV is negative or greater than or equal to the
+    number of shading rate enables, the shading rate used for a primitive is
+    undefined.  When SHADING_RATE_IMAGE_PER_PRIMITIVE_NV is disabled, a shading
+    rate enable is selected using the index of the viewport used for processing
+    the primitive.  In the initial state, SHADING_RATE_IMAGE_PER_PRIMITIVE_NV is
+    disabled.
+
+
+    (rework the introduction of the shading rate image functionality to decouple
+    shading rate image palettes and viewports)
+
+    A shading rate index is mapped to a _base shading rate_ using a lookup table
+    called the shading rate image palette.  There is a separate palette
+    associated with each shading rate image enable.  As with the shading rate
+    image enables, a single palette is selected for a primitive according to the
+    enable SHADING_RATE_IMAGE_PER_PRIMITIVE_NV.  The number of palettes and the
+    number of entries in each palette are given by the implementation-dependent
+    constants SHADING_RATE_IMAGE_PALETTE_COUNT_NV and
+    SHADING_RATE_IMAGE_PALETTE_SIZE_NV, respectively.  The base shading rate for
+    an (x,y) coordinate with a shading rate index of <i> will be given by entry
+    <i> of the selected palette.  If the shading rate index is greater than or
+    equal to the palette size, the results of the palette lookup are undefined.
+
+
+    (rework the introduction of ShadingRateImagePaletteNV to decouple shading
+    rate image palettes and viewports)
+
+      Shading rate image palettes are updated using the command
+
+        void ShadingRateImagePaletteNV(uint viewport, uint first, sizei count,
+                                       const enum *rates);
+
+      <viewport> specifies the number of the palette that should be updated.
+      [[ Note:  The formal parameter name <viewport> is a remnant of the
+      original NV_shading_rate_image extension, where palettes were tightly
+      coupled with viewports. ]]  <rates> is an array ...
+
+
+    (modify the discussion of ShadingRateImagePaletteNV errors to decouple
+    shading rate image palettes and viewports)
+
+        INVALID_VALUE is generated if <viewport> is greater than or equal to
+        SHADING_RATE_IMAGE_PALETTE_COUNT_NV.
+
+        INVALID_VALUE is generated if <first> plus <count> is greater than
+        SHADING_RATE_IMAGE_PALETTE_SIZE_NV.
+
+
+    (modify the discussion of GetShadingRateImagePaletteNV to decouple shading
+    rate image palettes and viewports)
+
+      Individual entries in the shading rate palette can be queried using the
+      command:
+
+        void GetShadingRateImagePaletteNV(uint viewport, uint entry,
+                                          enum *rate);
+
+      where <viewport> specifies the number of the palette to query and...
+      <entry> specifies the palette entry number.  [[ Note:  The formal
+      parameter name <viewport> is a remnant of the original
+      NV_shading_rate_image extension, where palettes were tightly coupled
+      with viewports. ]]  A single enum from Table X.1 is returned in <rate>.
+
+      Errors
+
+        INVALID_VALUE is generated if <viewport> is greater than or equal to
+        SHADING_RATE_IMAGE_PALETTE_COUNT_NV.
+
+        INVALID_VALUE is generated if <first> plus <count> is greater than
+        SHADING_RATE_IMAGE_PALETTE_SIZE_NV.
+
+
+    Modify Section 14.9.3, Multisample Fragment Operations, as edited by
+    NV_shading_rate_image.
+
+    (modify the discussion of the shading rate image multisample functionality
+    to decouple shading rate image enables and viewports)
+
+    ... This step is skipped if MULTISAMPLE is disabled or if the value of
+    SAMPLE_BUFFERS is not one, unless one or more of the SHADING_RATE_IMAGE_NV
+    enables are enabled.
+
+
+Dependencies on NV_mesh_shader
+
+    When NV_mesh_shader is supported, the "NV_primitive_shading_rate" GLSL
+    extension allows multi-view mesh shaders to write separate per-primitive
+    shading rates for each view using the built-in gl_ShadingRatePerViewNV[].
+    When gl_ShadingRatePerViewNV[] is used with
+    SHADING_RATE_IMAGE_PER_PRIMITIVE_NV enabled, a separate shading rate image
+    enable and palette will be used for each view.
+
+
+Additions to the AGL/GLX/WGL Specifications
+
+    None
+
+Errors
+
+    See the "Errors" sections for individual commands above.
+
+New State
+
+    Get Value                   Get Command        Type    Initial Value    Description                 Sec.    Attribute
+    ---------                   ---------------    ----    -------------    -----------                 ----    ---------
+    SHADING_RATE_IMAGE_         IsEnabled           B      FALSE            Use per-primitive shading   14.4.1  enable
+      PER_PRIMITIVE_NV                                                      rate to select shading
+                                                                            rate images/palettes
+
+New Implementation Dependent State
+
+                                                    Minimum
+    Get Value                Type  Get Command      Value   Description                   Sec.
+    ---------                ----- ---------------  ------- ------------------------      ------
+    SHADING_RATE_IMAGE_      Z+    GetIntegerv      16      Number of shading rate image  14.4.1
+      PALETTE_COUNT_NV                                      enables/palettes supported
+
+Issues
+
+    (1) How should we name this extension?
+
+      RESOLVED:  We are calling this extension "NV_primitive_shading_rate"
+      because it adds a new per-primitive shading rate to the variable-rate
+      shading functionality added by NV_shading_rate_image.
+
+    (2) Do we need to add queries like LAYER_PROVOKING_VERTEX and
+        VIEWPORT_INDEX_PROVOKING_VERTEX to determine the vertex used to obtain
+        the per-primitive shading rate for each primitive?
+
+      RESOLVED:  No -- we will always use the provoking vertex.  In the event
+      that this extension is standardized in the future with behavior that
+      diverges between implementations, such a query could be added as part of
+      that effort.
+
+Revision History
+
+    Revision 1 (pbrown)
+    - Internal revisions.
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 3d80fe4..7e56ead 100644
--- a/extensions/esext.php
+++ b/extensions/esext.php
@@ -689,4 +689,8 @@
 </li>
 <li value=331><a href="extensions/QCOM/QCOM_texture_foveated2.txt">GL_QCOM_texture_foveated2</a>
 </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/glext.php b/extensions/glext.php
index 89618c1..1e2c0f1 100644
--- a/extensions/glext.php
+++ b/extensions/glext.php
@@ -1045,4 +1045,6 @@
 </li>
 <li value=553><a href="extensions/EXT/GLX_EXT_no_config_context.txt">GLX_EXT_no_config_context</a>
 </li>
+<li value=554><a href="extensions/NV/NV_primitive_shading_rate.txt">GL_NV_primitive_shading_rate</a>
+</li>
 </ol>
diff --git a/extensions/registry.py b/extensions/registry.py
index 86d395e..fd7502f 100644
--- a/extensions/registry.py
+++ b/extensions/registry.py
@@ -2560,6 +2560,7 @@
         'url' : 'extensions/EXT/EXT_texture_sRGB_R8.txt',
     },
     'GL_EXT_texture_sRGB_RG8' : {
+        'number' : 555,
         'esnumber' : 223,
         'flags' : { 'public' },
         'url' : 'extensions/EXT/EXT_texture_sRGB_RG8.txt',
@@ -3660,6 +3661,13 @@
         'supporters' : { 'NVIDIA' },
         'url' : 'extensions/NV/NV_primitive_restart.txt',
     },
+    'GL_NV_primitive_shading_rate' : {
+        'number' : 554,
+        'esnumber' : 332,
+        'flags' : { 'public' },
+        'supporters' : { 'NVIDIA' },
+        'url' : 'extensions/NV/NV_primitive_shading_rate.txt',
+    },
     'GL_NV_query_resource' : {
         'number' : 511,
         'flags' : { 'public' },
@@ -4528,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 c573573..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"/>
@@ -10375,13 +10375,13 @@
             <unused start="0x8FB4" end="0x8FBA" vendor="QCOM"/>
         <enum value="0x8FBB" name="GL_GPU_DISJOINT_EXT"/>
             <unused start="0x8FBC" vendor="QCOM"/>
-        <enum value="0x8FBD" name="GL_SR8_EXT"/>
-        <enum value="0x8FBE" name="GL_SRG8_EXT"/>
+        <enum value="0x8FBD" name="GL_SR8_EXT" group="InternalFormat"/>
+        <enum value="0x8FBE" name="GL_SRG8_EXT" group="InternalFormat"/>
         <enum value="0x8FBF" name="GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT"/>
     </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>
 
@@ -11586,7 +11586,8 @@
         <enum value="0x95AE" name="GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV"/>
         <enum value="0x95AF" name="GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV"/>
         <enum value="0x95B0" name="GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV"/>
-        <unused start="0x95B1" end="0x95B2" vendor="NV"/>
+        <enum value="0x95B1" name="GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV" group="EnableCap,GetPName"/>
+        <enum value="0x95B2" name="GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV" group="GetPName"/>
         <enum value="0x95B3" name="GL_SEMAPHORE_TYPE_NV" group="SemaphoreParameterName"/>
         <enum value="0x95B4" name="GL_SEMAPHORE_TYPE_BINARY_NV" group="SemaphoreParameterName"/>
         <enum value="0x95B5" name="GL_SEMAPHORE_TYPE_TIMELINE_NV" group="SemaphoreParameterName"/>
@@ -19132,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>
@@ -20745,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>
@@ -20803,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>
@@ -20884,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>
@@ -20920,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>
@@ -20928,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>
@@ -20957,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>
@@ -20965,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>
@@ -28915,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>
@@ -46183,7 +46191,6 @@
                 <command name="glProgramUniform2uivEXT"/>
                 <command name="glProgramUniform3uivEXT"/>
                 <command name="glProgramUniform4uivEXT"/>
-                <command name="glProgramUniformMatrix4fvEXT"/>
                 <command name="glProgramUniformMatrix2x3fvEXT"/>
                 <command name="glProgramUniformMatrix3x2fvEXT"/>
                 <command name="glProgramUniformMatrix2x4fvEXT"/>
@@ -46809,7 +46816,7 @@
                 <enum name="GL_SR8_EXT"/>
             </require>
         </extension>
-        <extension name="GL_EXT_texture_sRGB_RG8" supported="gles2">
+        <extension name="GL_EXT_texture_sRGB_RG8" supported="gles2|gl|glcore">
             <require>
                 <enum name="GL_SRG8_EXT"/>
             </require>
@@ -49202,6 +49209,12 @@
                 <command name="glPrimitiveRestartIndexNV"/>
             </require>
         </extension>
+        <extension name="GL_NV_primitive_shading_rate" supported="gl|glcore|gles2">
+            <require>
+                <enum name="GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV"/>
+                <enum name="GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV"/>
+            </require>
+        </extension>
         <extension name="GL_NV_query_resource" supported="gl">
             <require>
                 <enum name="GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV"/>
@@ -51094,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"/>