Merge branch 'master' into 280-group-warning
diff --git a/api/GL/glcorearb.h b/api/GL/glcorearb.h
index 88dc825..e568510 100755
--- a/api/GL/glcorearb.h
+++ b/api/GL/glcorearb.h
@@ -4763,6 +4763,12 @@
 #ifndef GL_MESA_framebuffer_flip_y
 #define GL_MESA_framebuffer_flip_y 1
 #define GL_FRAMEBUFFER_FLIP_Y_MESA        0x8BBB
+typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint *params);
+#endif
 #endif /* GL_MESA_framebuffer_flip_y */
 
 #ifndef GL_NV_bindless_multi_draw_indirect
diff --git a/api/GL/glext.h b/api/GL/glext.h
index 6a8e07a..8aa0157 100644
--- a/api/GL/glext.h
+++ b/api/GL/glext.h
@@ -51,7 +51,7 @@
 #define GLAPI extern
 #endif
 
-#define GL_GLEXT_VERSION 20190728
+#define GL_GLEXT_VERSION 20190805
 
 #include <KHR/khrplatform.h>
 
@@ -9278,6 +9278,12 @@
 #ifndef GL_MESA_framebuffer_flip_y
 #define GL_MESA_framebuffer_flip_y 1
 #define GL_FRAMEBUFFER_FLIP_Y_MESA        0x8BBB
+typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint *params);
+#endif
 #endif /* GL_MESA_framebuffer_flip_y */
 
 #ifndef GL_MESA_pack_invert
diff --git a/api/GL/glxext.h b/api/GL/glxext.h
index a6f1c0c..ea970a0 100755
--- a/api/GL/glxext.h
+++ b/api/GL/glxext.h
@@ -34,7 +34,7 @@
 **   https://github.com/KhronosGroup/OpenGL-Registry
 */
 
-#define GLX_GLXEXT_VERSION 20190728
+#define GLX_GLXEXT_VERSION 20190822
 
 /* Generated C header for:
  * API: glx
@@ -555,6 +555,15 @@
 #define GLX_FLOAT_COMPONENTS_NV           0x20B0
 #endif /* GLX_NV_float_buffer */
 
+#ifndef GLX_NV_multigpu_context
+#define GLX_NV_multigpu_context 1
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_NV    0x20AA
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
+#define GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
+#endif /* GLX_NV_multigpu_context */
+
 #ifndef GLX_NV_multisample_coverage
 #define GLX_NV_multisample_coverage 1
 #define GLX_COVERAGE_SAMPLES_NV           100001
diff --git a/api/GLES/gl.h b/api/GLES/gl.h
index 50b4577..ea586eb 100644
--- a/api/GLES/gl.h
+++ b/api/GLES/gl.h
@@ -36,7 +36,7 @@
 
 #include <GLES/glplatform.h>
 
-/* Generated on date 20190728 */
+/* Generated on date 20190805 */
 
 /* Generated C header for:
  * API: gles1
diff --git a/api/GLES/glext.h b/api/GLES/glext.h
index a79dbd5..be8a569 100644
--- a/api/GLES/glext.h
+++ b/api/GLES/glext.h
@@ -38,7 +38,7 @@
 #define GL_APIENTRYP GL_APIENTRY*
 #endif
 
-/* Generated on date 20190728 */
+/* Generated on date 20190805 */
 
 /* Generated C header for:
  * API: gles1
diff --git a/api/GLES2/gl2.h b/api/GLES2/gl2.h
index a5c6130..f1e3dc6 100644
--- a/api/GLES2/gl2.h
+++ b/api/GLES2/gl2.h
@@ -44,7 +44,7 @@
 #define GL_GLES_PROTOTYPES 1
 #endif
 
-/* Generated on date 20190728 */
+/* Generated on date 20190805 */
 
 /* Generated C header for:
  * API: gles2
diff --git a/api/GLES2/gl2ext.h b/api/GLES2/gl2ext.h
index 758d554..cab1c45 100644
--- a/api/GLES2/gl2ext.h
+++ b/api/GLES2/gl2ext.h
@@ -38,7 +38,7 @@
 #define GL_APIENTRYP GL_APIENTRY*
 #endif
 
-/* Generated on date 20190728 */
+/* Generated on date 20190805 */
 
 /* Generated C header for:
  * API: gles2
@@ -2455,6 +2455,12 @@
 #ifndef GL_MESA_framebuffer_flip_y
 #define GL_MESA_framebuffer_flip_y 1
 #define GL_FRAMEBUFFER_FLIP_Y_MESA        0x8BBB
+typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GL_APICALL void GL_APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param);
+GL_APICALL void GL_APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint *params);
+#endif
 #endif /* GL_MESA_framebuffer_flip_y */
 
 #ifndef GL_MESA_program_binary_formats
diff --git a/api/GLES3/gl3.h b/api/GLES3/gl3.h
index d8f71f3..838286c 100644
--- a/api/GLES3/gl3.h
+++ b/api/GLES3/gl3.h
@@ -44,7 +44,7 @@
 #define GL_GLES_PROTOTYPES 1
 #endif
 
-/* Generated on date 20190728 */
+/* Generated on date 20190805 */
 
 /* Generated C header for:
  * API: gles2
diff --git a/extensions/AMD/AMD_gpu_shader_half_float.txt b/extensions/AMD/AMD_gpu_shader_half_float.txt
index b59ace4..3cd05a3 100644
--- a/extensions/AMD/AMD_gpu_shader_half_float.txt
+++ b/extensions/AMD/AMD_gpu_shader_half_float.txt
@@ -122,7 +122,7 @@
     | FLOAT16_MAT3x2_AMD         | f16mat3x2      |  *   |  *   |  *   |
     | FLOAT16_MAT3x4_AMD         | f16mat3x4      |  *   |  *   |  *   |
     | FLOAT16_MAT4x2_AMD         | f16mat4x2      |  *   |  *   |  *   |
-    | FLOAT16_MAT4x3_AMD         | f16mat4x2      |  *   |  *   |  *   |
+    | FLOAT16_MAT4x3_AMD         | f16mat4x3      |  *   |  *   |  *   |
     +----------------------------+----------------+------+------+------+
 
 
diff --git a/extensions/ARB/ARB_draw_elements_base_vertex.txt b/extensions/ARB/ARB_draw_elements_base_vertex.txt
index f140691..245f050 100644
--- a/extensions/ARB/ARB_draw_elements_base_vertex.txt
+++ b/extensions/ARB/ARB_draw_elements_base_vertex.txt
@@ -40,8 +40,8 @@
 
 Version
 
-    Last Modified Date:  August 2, 2009
-    Version:             3
+    Last Modified Date:  August 22, 2019
+    Version:             4
 
 Number
 
@@ -120,16 +120,16 @@
 New Procedures and Functions
 
     void DrawElementsBaseVertex(enum mode, sizei count, enum type,
-         void *indices, int basevertex);
+         const void *indices, int basevertex);
 
     void DrawRangeElementsBaseVertex(enum mode, uint start, uint end,
-         sizei count, enum type, void *indices, int basevertex);
+         sizei count, enum type, const void *indices, int basevertex);
 
     void DrawElementsInstancedBaseVertex(enum mode, sizei count,
-         enum type, const void *indices, sizei primcount, int basevertex);
+         enum type, const void *indices, sizei instancecount, int basevertex);
 
-    void MultiDrawElementsBaseVertex(enum mode, sizei *count, enum type,
-         void **indices, sizei primcount, int *basevertex)
+    void MultiDrawElementsBaseVertex(enum mode, const sizei *count, enum type,
+         const void *const *indices, sizei drawcount, const int *basevertex)
 
 New Tokens
 
@@ -147,13 +147,13 @@
 
     "The commands
       void DrawElementsBaseVertex(enum mode, sizei count, enum type,
-           void *indices, int basevertex);
+           const void *indices, int basevertex);
 
       void DrawRangeElementsBaseVertex(enum mode, uint start, uint end,
-           sizei count, enum type, void *indices, int basevertex);
+           sizei count, enum type, const void *indices, int basevertex);
 
       void DrawElementsInstancedBaseVertex(enum mode, sizei count,
-           enum type, const void *indices, sizei primcount, int basevertex);
+           enum type, const void *indices, sizei instancecount, int basevertex);
 
     are equivalent to the commands with the same base name (without the
     "BaseVertex" suffix) except that the <i>th element transferred by
@@ -171,14 +171,14 @@
 
     The command
 
-      void MultiDrawElementsBaseVertex(enum mode, sizei *count,
-           enum type, void **indices, sizei primcount, int *basevertex);
+      void MultiDrawElementsBaseVertex(enum mode, const sizei *count,
+           enum type, const void *const *indices, sizei drawcount, const int *basevertex);
 
     behaves identically to DrawElementsBaseVertex except that
-    <primcount> separate lists of elements are specified instead. It has
+    <drawcount> separate lists of elements are specified instead. It has
     the same effect as:
 
-      for (i = 0; i < primcount; i++) {
+      for (i = 0; i < drawcount; i++) {
         if (count[i] > 0)
           DrawElementsBaseVertex(mode, count[i], type, indices[i],
                                  basevertex[i]);
@@ -468,3 +468,4 @@
      2     7/21/09  dgkoch     resync language with 20090630 3.2 spec
      3     8/02/09  Jon Leech  Reformat to 80 columns and assign ARB
                                extension number.
+     4     8/22/19  N Stewart  Parameter naming and const aligned to 4.6 core spec.
diff --git a/extensions/MESA/MESA_framebuffer_flip_y.txt b/extensions/MESA/MESA_framebuffer_flip_y.txt
index 0866203..349e113 100644
--- a/extensions/MESA/MESA_framebuffer_flip_y.txt
+++ b/extensions/MESA/MESA_framebuffer_flip_y.txt
@@ -23,7 +23,7 @@
 
 Version
 
-    Version 2, June 4, 2019
+    Version 3, August, 2019
 
 Number
 
@@ -32,7 +32,7 @@
 
 Dependencies
 
-    OpenGL ES 3.1 or OpenGL 4.3 is required, for FramebufferParameteri.
+    Requires OpenGL ES 3.0, OpenGL 4.3, or ARB_framebuffer_no_attachments.
 
 Overview
 
@@ -59,7 +59,10 @@
 
 New Procedures and Functions
 
-    None
+    OpenGL ES must provide the following functions:
+
+    void FramebufferParameteriMESA(enum target, enum pname, int param);
+    void GetFramebufferParameterivMESA(enum target, enum pname, int *params);
 
 New Types
 
@@ -67,20 +70,33 @@
 
 New Tokens
 
-    Accepted by the <pname> argument of FramebufferParameteri and
-    GetFramebufferParameteriv:
+    Accepted by the <pname> argument of FramebufferParameteriMESA and
+    GetFramebufferParameterivMESA:
 
         GL_FRAMEBUFFER_FLIP_Y_MESA                      0x8BBB
 
+Interactions with OpenGL 4.3, OpenGL ES 3.1, ARB_framebuffer_no_attachments
+and any other versions and extensions that provide the entry points
+FramebufferParameteri and GetFramebufferParameteriv
+
+        Token GL_FRAMEBUFFER_FLIP_Y_MESA is accepted as the <pname> argument of
+        FramebufferParameteri and GetFramebufferParameteriv.
+
 Errors
 
-    An INVALID_OPERATION error is generated by GetFramebufferParameteriv if the
-    default framebuffer is bound to <target> and <pname> is FRAMEBUFFER_FLIP_Y_MESA.
+    An INVALID_OPERATION error is generated by GetFramebufferParameteriv or
+    GetFramebufferParameterivMESA if the default framebuffer is bound
+    to <target> and <pname> is GL_FRAMEBUFFER_FLIP_Y_MESA.
 
 
 
 Revision History
 
+    Version 3, August, 2019
+        Allow OpenGL ES 3.0 to implement by adding functions
+        FramebufferParameteriMESA and GetFramebufferParameterivMESA which were
+        previously only available in OpenGL ES 3.1.
+
     Version 2, June, 2019
         Enable extension for OpenGL 4.3 and beyond
 
diff --git a/extensions/NV/GLX_NV_multigpu_context.txt b/extensions/NV/GLX_NV_multigpu_context.txt
new file mode 100644
index 0000000..9830311
--- /dev/null
+++ b/extensions/NV/GLX_NV_multigpu_context.txt
@@ -0,0 +1,142 @@
+Name
+
+    NV_multigpu_context
+
+Name Strings
+
+    GLX_NV_multigpu_context
+
+Contact
+
+    Ben Quest (bquest 'at' nvidia.com)
+
+Contributors
+
+    Ben Quest, NVIDIA
+    Joshua Schnarr, NVIDIA
+    Ralf Biermann, NVIDIA
+    Ingo Esser, NVIDIA
+    Robert Menzel, NVIDIA
+    James Jones, NVIDIA
+
+Notice
+
+    Copyright (c) 2019 NVIDIA
+
+Status
+
+    Complete.
+
+Version
+
+    Last Modified Date:         2019-05-17
+    Author Revision:            1
+
+Number
+
+    OpenGL Extension #545
+
+Dependencies
+
+    GLX_NV_multigpu_context is written against the GLX 1.4 and
+    GLX_ARB_create_context specifications. Both are required.
+
+    This extension interacts with NV_gpu_multicast.
+
+Overview
+
+    This extension allows the creation of an OpenGL context in a multi-GPU
+    environment with a specified multi-GPU strategy (known as SLI mode) which
+    takes precedence over process-wide multi-GPU mode settings.
+
+    The multi-GPU mode denotes vendor specific techniques to allow distributed
+    rendering on multiple GPUs, further called AFR (alternate frame rendering)
+    and Multicast (as defined in NV_gpu_multicast).
+
+    OpenGL supports multiple contexts. The semantics of switching contexts
+    is generally left to window system binding APIs such as WGL, GLX and EGL.
+    The extension GLX_NV_multigpu_context allows to specify a preferred
+    multi-GPU rendering mode per context, thus context switching can also
+    switch the current multi-GPU rendering mode.
+
+    In addition to the modes described above, this extension allows creating
+    contexts in single mode to force all rendering to be done on a single GPU,
+    and multi-display multicast mode to allow multicast rendering on a
+    multi-display configuration where displays attached to multiple GPUs are
+    linked together in a desktop configuration spanning multiple GPUs.
+
+    The implementation is platform dependent and the actual multi-GPU rendering
+    mode of the created context may vary on different hardware and operation
+    system platforms.
+
+New Procedures and Functions
+
+    None
+
+New Tokens (GLX)
+
+    Accepted as an attribute name in the <*attrib_list> argument to
+    glXCreateContextAttribsARB:
+
+        GLX_CONTEXT_MULTIGPU_ATTRIB_NV                         0x20AA
+
+    Accepted as an attribute value for GLX_CONTEXT_MULTIGPU_ATTRIB_NV in
+    the <*attrib_list> argument to glXCreateContextAttribsARB:
+
+        GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV                  0x20AB
+        GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV                     0x20AC
+        GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV               0x20AD
+        GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
+
+Additions to the GLX 1.4 Specification
+
+    This extension modifies language specified in the GLX_ARB_create_context
+    extension.
+
+    Add a new paragraph to the description of glXCreateContextAttribsARB:
+
+    "The attribute name GLX_CONTEXT_MULTIGPU_ATTRIB_NV indicates the
+    preferred multi-GPU rendering mode for the OpenGL context.
+    This specified mode precedes other selected configuration settings."
+
+    Add a new context creation error to glXCreateContextAttribsARB:
+
+    "If attribute GLX_CONTEXT_MULTIGPU_ATTRIB_NV does not describe a valid and
+    supported SLI rendering mode, BadValue is generated."
+
+    Append a new paragraph to the end of section 3.5 "Rendering Contexts":
+
+    "When multiple contexts created with a multigpu context attribute are being
+    used, glXMakeCurrent and glXMakeContextCurrent will return FALSE if the
+    GLXDrawable is already current with a context using a different multigpu
+    attribute."
+
+GLX Errors
+
+    BadValue is generated if GLX_CONTEXT_MULTIGPU_ATTRIB_NV does not describe a
+    valid and supported SLI rendering mode.
+
+    GLXBadContextState is generated if glXMakeCurrent is called with a context
+    created with a different multigpu attribute than the context previously
+    current to the drawable.
+
+GLX Protocol
+
+    None
+
+New State
+
+    None
+
+Issues
+
+    All non-window-system dependent issues described in the
+    WGL_NV_multigpu_context extension specification apply equally to
+    GLX_NV_multigpu_context.
+
+Revision History
+
+ Rev.   Date      Author    Changes
+ ---- ----------  --------  ---------------------------------------------
+   1  2019-05-17  bquest    Fork from WGL_NV_multigpu_context
+
diff --git a/extensions/NV/NV_compute_shader_derivatives.txt b/extensions/NV/NV_compute_shader_derivatives.txt
index 4bc891b..bdd9f6c 100644
--- a/extensions/NV/NV_compute_shader_derivatives.txt
+++ b/extensions/NV/NV_compute_shader_derivatives.txt
@@ -22,8 +22,8 @@
 
 Version
 
-    Last Modified:      November 9, 2018
-    Revision:           2
+    Last Modified:      September 4, 2019
+    Revision:           3
 
 Number
 
@@ -37,6 +37,8 @@
 
     OpenGL 4.5 or OpenGL ES 3.2 is required.
 
+    This extension interacts with ARB_compute_variable_group_size.
+
     This extension requires support for the OpenGL Shading Language (GLSL)
     extension "NV_compute_shader_derivatives", which can be found at the
     Khronos Group Github site here:
@@ -88,12 +90,62 @@
 
     None
 
+Dependencies on ARB_compute_variable_group_size
+
+    If ARB_compute_variable_group_size is supported, the GLSL compiler/linker is
+    unable to enforce the following restrictions:
+
+    * Compute shaders using the "derivative_group_quadsNV" mode must have a
+      local workgroup size whose width and height are both multiples of two.
+
+    * Compute shaders using the "derivative_group_linearNV" mode must have a
+      local workgroup size whose total number of invocations is a multiple of four.
+
+    Instead, we need to enforce this restriction at run time.
+
+    Add the following to the list of errors under the heading of "insert at the
+    end of the first error block, shared between DispatchCompute and
+    DispatchComputeGroupSizeARB, p. 586" in ARB_compute_variable_group_size:
+
+    * An INVALID_VALUE error is generated by DispatchComputeGroupSizeARB if the
+      active program for the compute shader stage has a compute shader using the
+      "derivative_group_quadsNV" layout qualifier and <group_size_x> or
+      <group_size_y> is not a multiple of two.
+
+    * An INVALID_VALUE error is generated by DispatchComputeGroupSizeARB if the
+      active program for the compute shader stage has a compute shader using the
+      "derivative_group_linearNV" layout qualifier and the product of
+      <group_size_x>, <group_size_y>, and <group_size_z> is not a multiple of
+      four.
+
+    Note that as of September 2019, this issue does not apply to SPIR-V compute
+    shaders because SPIR-V does not provide a mechanism to specify variable
+    local group sizes.  If this changes in the future, the INVALID_VALUE error
+    above would apply both to GLSL and SPIR-V compute shaders.
+
+
 Issues
 
-    None, but please refer to issues in the GLSL extension specification.
+    (1) How does this extension interact with ARB_compute_variable_group_size?
+
+      RESOLVED:  For compute shaders with fixed group size, the GLSL
+      specification calls for a compile- or link-time error if the local group
+      size is inconsistent with the derivative mode specified using the
+      "derivative_group_quadsNV" or "derivative_group_linearNV" layout
+      qualifiers.  However, this sort of error can not be generated if
+      "local_size_variable" is also specified because the local group size is
+      not known until DispatchComputeGroupSizeARB is called.  To deal with this,
+      we specify an INVALID_VALUE error if DispatchComputeGroupSizeARB is called
+      with a bad local group size.
 
 Revision History
 
+    Revision 3 (pbrown), 2019/09/04
+    - Add an interaction with ARB_compute_variable_group_size, specifying
+      that INVALID_VALUE is generated by DispatchComputeGroupSizeARB if the
+      derivative mode is inconsistent with the local group size specified in the
+      dispatch command.
+
     Revision 2 (mchock)
     - Added OpenGL ES support.
 
diff --git a/extensions/NV/NV_mesh_shader.txt b/extensions/NV/NV_mesh_shader.txt
index 7914378..5acf1cb 100644
--- a/extensions/NV/NV_mesh_shader.txt
+++ b/extensions/NV/NV_mesh_shader.txt
@@ -23,8 +23,8 @@
 
 Version
 
-    Last Modified Date:     February 7, 2019
-    NVIDIA Revision:        4
+    Last Modified Date:     September 5, 2019
+    NVIDIA Revision:        5
 
 Number
 
@@ -814,7 +814,7 @@
     +------------------------------------------+-----------+---------------+---------------------+-----------------------------------------------------------------------+--------+
     | Get Value                                | Type      | Get Command   | Minimum Value       | Description                                                           | Sec.   |
     +------------------------------------------+-----------+---------------+---------------------+-----------------------------------------------------------------------+--------+
-    | MAX_DRAW_MESH_TASKS_COUNT_NV             | Z+        | GetIntegerv   | 2^32 - 1            | Maximum number of work groups that may be drawn by a single           | X.6    |
+    | MAX_DRAW_MESH_TASKS_COUNT_NV             | Z+        | GetIntegerv   | 2^16 - 1            | Maximum number of work groups that may be drawn by a single           | X.6    |
     |                                          |           |               |                     | draw mesh tasks command                                               |        |
     | MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV    | Z+        | GetIntegerv   | -                   | Per-vertex output allocation granularity for mesh shaders             | X.3    |
     | MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV | Z+        | GetIntegerv   | -                   | Per-primitive output allocation granularity for mesh shaders          | X.3    |
@@ -1098,6 +1098,9 @@
 
 Revision History
 
+    Revision 5 (pdaniell)
+    - Fix minimum implementation limit of MAX_DRAW_MESH_TASKS_COUNT_NV.
+
     Revision 4 (pknowles)
     - Add ES interactions.
 
diff --git a/extensions/glext.php b/extensions/glext.php
index c0204bd..9baab5d 100644
--- a/extensions/glext.php
+++ b/extensions/glext.php
@@ -1027,4 +1027,6 @@
 </li>
 <li value=544><a href="extensions/NV/NV_shader_subgroup_partitioned.txt">GL_NV_shader_subgroup_partitioned</a>
 </li>
+<li value=545><a href="extensions/NV/GLX_NV_multigpu_context.txt">GLX_NV_multigpu_context</a>
+</li>
 </ol>
diff --git a/extensions/registry.py b/extensions/registry.py
index 1c176f4..acd3d7f 100644
--- a/extensions/registry.py
+++ b/extensions/registry.py
@@ -5544,4 +5544,10 @@
         'supporters' : { 'NVIDIA' },
         'url' : 'extensions/NV/WGL_NV_multigpu_context.txt',
     },
+    'GLX_NV_multigpu_context' : {
+        'number' : 545,
+        'flags' : { 'public' },
+        'supporters' : { 'NVIDIA' },
+        'url' : 'extensions/NV/GLX_NV_multigpu_context.txt',
+    },
 }
diff --git a/xml/gl.xml b/xml/gl.xml
index 70dfa14..9422da3 100644
--- a/xml/gl.xml
+++ b/xml/gl.xml
@@ -93,6 +93,210 @@
     -->
 
     <groups>
+        <group name="EvalMapsModeNV">
+            <enum name="GL_FILL_NV"/>
+        </group>
+
+        <group name="ProgramTarget">
+            <enum name="GL_TEXT_FRAGMENT_SHADER"/>
+        </group>
+
+        <group name="CombinerStageNV">
+            <enum name="GL_COMBINER0_NV"/>
+            <enum name="GL_COMBINER1_NV"/>
+            <enum name="GL_COMBINER2_NV"/>
+            <enum name="GL_COMBINER3_NV"/>
+            <enum name="GL_COMBINER4_NV"/>
+            <enum name="GL_COMBINER5_NV"/>
+            <enum name="GL_COMBINER6_NV"/>
+            <enum name="GL_COMBINER7_NV"/>
+        </group>
+
+        <group name="CombinerPortionNV">
+            <enum name="GL_RGB_NV"/>
+            <enum name="GL_ALPHA_NV"/>
+        </group>
+
+        <group name="MapTypeNV">
+            <enum name="GL_FLOAT_NV"/>
+            <enum name="GL_DOUBLE_NV"/>
+        </group>
+
+        <group name="ScalarType">
+            <enum name="GL_UNSIGNED_BYTE"/>
+            <enum name="GL_UNSIGNED_SHORT"/>
+            <enum name="GL_UNSIGNED_INT"/>
+        </group>
+
+        <group name="VertexShaderTextureUnitParameter">
+            <enum name="GL_CURRENT_TEXTURE_COORDS"/>
+            <enum name="GL_TEXTURE_MATRIX"/>
+        </group>
+
+        <group name="ProgramStringProperty">
+            <enum name="GL_PROGRAM_STRING"/>
+        </group>
+
+        <group name="ProgramFormat">
+            <enum name="GL_PROGRAM_FORMAT_ASCII"/>
+        </group>
+
+        <group name="PathColorFormat">
+            <enum name="GL_NONE"/>
+            <enum name="GL_LUMINANCE"/>
+            <enum name="GL_ALPHA"/>
+            <enum name="GL_INTENSITY"/>
+            <enum name="GL_LUMINANCE_ALPHA"/>
+            <enum name="GL_RGB"/>
+            <enum name="GL_RGBA"/>
+        </group>
+
+        <group name="ReplacementCodeTypeSUN">
+            <enum name="GL_UNSIGNED_BYTE_SUN"/>
+            <enum name="GL_UNSIGNED_SHORT_SUN"/>
+            <enum name="GL_UNSIGNED_INT_SUN"/>
+        </group>
+
+        <group name="SecondaryColorPointerTypeIBM">
+            <enum name="GL_SHORT_IBM"/>
+            <enum name="GL_INT_IBM"/>
+            <enum name="GL_FLOAT_IBM"/>
+            <enum name="GL_DOUBLE_IBM"/>
+        </group>
+
+        <group name="FragmentLightNameSGIX">
+            <enum name="GL_FRAGMENT_LIGHT0_SGIX"/>
+            <enum name="GL_FRAGMENT_LIGHT1_SGIX"/>
+            <enum name="GL_FRAGMENT_LIGHT2_SGIX"/>
+            <enum name="GL_FRAGMENT_LIGHT3_SGIX"/>
+            <enum name="GL_FRAGMENT_LIGHT4_SGIX"/>
+            <enum name="GL_FRAGMENT_LIGHT5_SGIX"/>
+            <enum name="GL_FRAGMENT_LIGHT6_SGIX"/>
+            <enum name="GL_FRAGMENT_LIGHT7_SGIX"/>
+        </group>
+
+        <group name="FragmentLightParameterSGIX">
+            <enum name="GL_SPOT_EXPONENT_SGIX"/>
+            <enum name="GL_SPOT_CUTOFF_SGIX"/>
+            <enum name="GL_CONSTANT_ATTENUATION_SGIX"/>
+            <enum name="GL_LINEAR_ATTENUATION_SGIX"/>
+            <enum name="GL_QUADRATIC_ATTENUATION_SGIX"/>
+            <enum name="GL_AMBIENT_SGIX"/>
+            <enum name="GL_DIFFUSE_SGIX"/>
+            <enum name="GL_SPECULAR_SGIX"/>
+            <enum name="GL_POSITION_SGIX"/>
+            <enum name="GL_SPOT_DIRECTION_SGIX"/>
+            <enum name="GL_SPOT_EXPONENT_SGIX"/>
+            <enum name="GL_SPOT_CUTOFF_SGIX"/>
+            <enum name="GL_CONSTANT_ATTENUATION_SGIX"/>
+            <enum name="GL_LINEAR_ATTENUATION_SGIX"/>
+            <enum name="GL_QUADRATIC_ATTENUATION_SGIX"/>
+        </group>
+
+        <group name="ElementPointerTypeATI">
+            <enum name="GL_UNSIGNED_BYTE_ATI"/>
+            <enum name="GL_UNSIGNED_SHORT_ATI"/>
+            <enum name="GL_UNSIGNED_INT_ATI"/>
+        </group>
+
+        <group name="MatrixIndexPointerTypeARB">
+            <enum name="GL_UNSIGNED_BYTE_ARB"/>
+            <enum name="GL_UNSIGNED_SHORT_ARB"/>
+            <enum name="GL_UNSIGNED_INT_ARB"/>
+        </group>
+
+        <group name="WeightPointerTypeARB">
+            <enum name="GL_BYTE_ARB"/>
+            <enum name="GL_UNSIGNED_BYTE_ARB"/>
+            <enum name="GL_SHORT_ARB"/>
+            <enum name="GL_UNSIGNED_SHORT_ARB"/>
+            <enum name="GL_INT_ARB"/>
+            <enum name="GL_UNSIGNED_INT_ARB"/>
+            <enum name="GL_FLOAT_ARB"/>
+            <enum name="GL_DOUBLE_ARB"/>
+        </group>
+
+        <group name="CullParameterEXT">
+            <enum name="GL_CULL_VERTEX_EYE_POSITION_EXT"/>
+            <enum name="GL_CULL_VERTEX_OBJECT_POSITION_EXT"/>
+        </group>
+
+        <group name="DataTypeEXT">
+            <enum name="GL_SCALAR_EXT"/>
+            <enum name="GL_VECTOR_EXT"/>
+            <enum name="GL_MATRIX_EXT"/>
+        </group>
+
+        <group name="ParameterRangeEXT">
+            <enum name="GL_NORMALIZED_RANGE_EXT"/>
+            <enum name="GL_FULL_RANGE_EXT"/>
+        </group>
+
+        <group name="GetVariantValueEXT">
+            <enum name="GL_VARIANT_VALUE_EXT"/>
+            <enum name="GL_VARIANT_DATATYPE_EXT"/>
+            <enum name="GL_VARIANT_ARRAY_STRIDE_EXT"/>
+            <enum name="GL_VARIANT_ARRAY_TYPE_EXT"/>
+        </group>
+
+        <group name="IndexFunctionEXT">
+            <enum name="GL_NEVER_EXT"/>
+            <enum name="GL_ALWAYS_EXT"/>
+            <enum name="GL_LESS_EXT"/>
+            <enum name="GL_LEQUAL_EXT"/>
+            <enum name="GL_EQUAL_EXT"/>
+            <enum name="GL_GEQUAL_EXT"/>
+            <enum name="GL_GREATER_EXT"/>
+            <enum name="GL_NOTEQUAL_EXT"/>
+        </group>
+
+        <group name="IndexMaterialParameterEXT">
+            <enum name="GL_INDEX_OFFSET"/>
+        </group>
+
+        <group name="VariantCapEXT">
+            <enum name="GL_VARIANT_ARRAY_EXT"/>
+        </group>
+
+        <group name="PixelTransformTargetEXT">
+            <enum name="GL_PIXEL_TRANSFORM_2D_EXT"/>
+        </group>
+
+        <group name="PixelTransformPNameEXT">
+            <enum name="GL_PIXEL_MAG_FILTER_EXT"/>
+            <enum name="GL_PIXEL_MIN_FILTER_EXT"/>
+            <enum name="GL_PIXEL_CUBIC_WEIGHT_EXT"/>
+        </group>
+
+        <group name="VertexWeightPointerTypeEXT">
+            <enum name="GL_FLOAT_EXT"/>
+        </group>
+
+        <group name="VertexShaderWriteMaskEXT">
+            <enum name="GL_TRUE_EXT"/>
+            <enum name="GL_FALSE_EXT"/>
+        </group>
+
+        <group name="CombinerComponentUsageNV">
+            <enum name="GL_RGB_NV"/>
+            <enum name="GL_ALPHA_NV"/>
+            <enum name="GL_BLUE_NV"/>
+        </group>
+
+        <group name="TangentPointerTypeEXT">
+            <enum name="GL_BYTE_EXT"/>
+            <enum name="GL_SHORT_EXT"/>
+            <enum name="GL_FLOAT_EXT"/>
+            <enum name="GL_DOUBLE_EXT"/>
+        </group>
+
+        <group name="BinormalPointerTypeEXT">
+            <enum name="GL_BYTE_EXT"/>
+            <enum name="GL_SHORT_EXT"/>
+            <enum name="GL_FLOAT_EXT"/>
+            <enum name="GL_DOUBLE_EXT"/>
+        </group>
+
         <group name="TextureNormalModeEXT">
             <enum name="GL_PERTURB_EXT"/>
         </group>
@@ -2392,6 +2596,20 @@
             <enum name="GL_DEPTH24_STENCIL8_OES"/>
             <enum name="GL_DEPTH32F_STENCIL8"/>
             <enum name="GL_DEPTH32F_STENCIL8_NV"/>
+            <!-- Base internal format: GL_STENCIL_INDEX -->
+            <enum name="GL_STENCIL_INDEX"/>
+            <enum name="GL_STENCIL_INDEX_OES"/>
+            <enum name="GL_STENCIL_INDEX1"/>
+            <enum name="GL_STENCIL_INDEX1_OES"/>
+            <enum name="GL_STENCIL_INDEX1_EXT"/>
+            <enum name="GL_STENCIL_INDEX4"/>
+            <enum name="GL_STENCIL_INDEX4_OES"/>
+            <enum name="GL_STENCIL_INDEX4_EXT"/>
+            <enum name="GL_STENCIL_INDEX8"/>
+            <enum name="GL_STENCIL_INDEX8_OES"/>
+            <enum name="GL_STENCIL_INDEX8_EXT"/>
+            <enum name="GL_STENCIL_INDEX16"/>
+            <enum name="GL_STENCIL_INDEX16_EXT"/>
             <!-- Compressed base internal formats -->
             <enum name="GL_COMPRESSED_RED"/>
             <enum name="GL_COMPRESSED_RG"/>
@@ -2427,6 +2645,83 @@
             <enum name="GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"/>
             <enum name="GL_COMPRESSED_RGBA_S3TC_DXT5_EXT"/>
             <enum name="GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"/>
+            <!-- Compressed ASTC internal formats -->
+            <enum name="GL_COMPRESSED_RGBA_ASTC_3x3x3_OES"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_4x3x3_OES"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_4x4"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_4x4_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_4x4x3_OES"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_4x4x4_OES"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_5x4"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_5x4_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_5x4x4_OES"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_5x5"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_5x5_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_5x5x4_OES"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_5x5x5_OES"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_6x5"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_6x5_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_6x5x5_OES"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_6x6"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_6x6_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_6x6x5_OES"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_6x6x6_OES"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_8x5"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_8x5_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_8x6"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_8x6_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_8x8"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_8x8_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_10x10"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_10x10_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_10x5"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_10x5_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_10x6"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_10x6_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_10x8"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_10x8_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_12x10"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_12x10_KHR"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_12x12"/>
+            <enum name="GL_COMPRESSED_RGBA_ASTC_12x12_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12"/>
+            <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"/>
         </group>
 
         <group name="PixelMap">
@@ -33441,6 +33736,18 @@
             <proto>void <name>glSignalVkFenceNV</name></proto>
             <param><ptype>GLuint64</ptype> <name>vkFence</name></param>
         </command>
+         <command>
+            <proto>void <name>glFramebufferParameteriMESA</name></proto>
+            <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+            <param group="FramebufferParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+            <param><ptype>GLint</ptype> <name>param</name></param>
+        </command>
+        <command>
+            <proto>void <name>glGetFramebufferParameterivMESA</name></proto>
+            <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+            <param group="FramebufferAttachmentParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+            <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
+        </command>
 
     </commands>
 
@@ -47114,6 +47421,8 @@
         <extension name="GL_MESA_framebuffer_flip_y" supported="gl|glcore|gles2">
             <require>
                 <enum name="GL_FRAMEBUFFER_FLIP_Y_MESA"/>
+                <command name="glFramebufferParameteriMESA"/>
+                <command name="glGetFramebufferParameterivMESA"/>
             </require>
         </extension>
         <extension name="GL_MESA_pack_invert" supported="gl">
diff --git a/xml/glx.xml b/xml/glx.xml
index 0ce9cba..d9e504b 100644
--- a/xml/glx.xml
+++ b/xml/glx.xml
@@ -387,6 +387,11 @@
     </enums>
 
     <enums namespace="GLX" start="0x20A0" end="0x219F" vendor="NV" comment="Shared with WGL">
+        <enum value="0x20AA"        name="GLX_CONTEXT_MULTIGPU_ATTRIB_NV"/>
+        <enum value="0x20AB"        name="GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV"/>
+        <enum value="0x20AC"        name="GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV"/>
+        <enum value="0x20AD"        name="GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV"/>
+        <enum value="0x20AE"        name="GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV"/>
         <enum value="0x20B0"        name="GLX_FLOAT_COMPONENTS_NV"/>
         <enum value="0x20B1"        name="GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT"/>
         <enum value="0x20B2"        name="GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB"/>
@@ -2198,5 +2203,14 @@
                 <command name="glXGetTransparentIndexSUN"/>
             </require>
         </extension>
+        <extension name="GLX_NV_multigpu_context" supported="glx">
+            <require>
+                <enum name="GLX_CONTEXT_MULTIGPU_ATTRIB_NV"/>
+                <enum name="GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV"/>
+                <enum name="GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV"/>
+                <enum name="GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV"/>
+                <enum name="GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV"/>
+            </require>
+        </extension>
     </extensions>
 </registry>