Merge branch 'master' into 361-core
diff --git a/api/GL/glcorearb.h b/api/GL/glcorearb.h
index 8d691cc..63235ef 100755
--- a/api/GL/glcorearb.h
+++ b/api/GL/glcorearb.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
@@ -4770,6 +4751,11 @@
 #endif
 #endif /* GL_INTEL_performance_query */
 
+#ifndef GL_MESA_framebuffer_flip_x
+#define GL_MESA_framebuffer_flip_x 1
+#define GL_FRAMEBUFFER_FLIP_X_MESA        0x8BBC
+#endif /* GL_MESA_framebuffer_flip_x */
+
 #ifndef GL_MESA_framebuffer_flip_y
 #define GL_MESA_framebuffer_flip_y 1
 #define GL_FRAMEBUFFER_FLIP_Y_MESA        0x8BBB
@@ -4781,6 +4767,11 @@
 #endif
 #endif /* GL_MESA_framebuffer_flip_y */
 
+#ifndef GL_MESA_framebuffer_swap_xy
+#define GL_MESA_framebuffer_swap_xy 1
+#define GL_FRAMEBUFFER_SWAP_XY_MESA       0x8BBD
+#endif /* GL_MESA_framebuffer_swap_xy */
+
 #ifndef GL_NV_bindless_multi_draw_indirect
 #define GL_NV_bindless_multi_draw_indirect 1
 typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
@@ -5267,6 +5258,20 @@
 #endif
 #endif /* GL_NV_memory_attachment */
 
+#ifndef GL_NV_memory_object_sparse
+#define GL_NV_memory_object_sparse 1
+typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+GLAPI void APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+GLAPI void APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+GLAPI void APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+#endif
+#endif /* GL_NV_memory_object_sparse */
+
 #ifndef GL_NV_mesh_shader
 #define GL_NV_mesh_shader 1
 #define GL_MESH_SHADER_NV                 0x9559
diff --git a/api/GL/glext.h b/api/GL/glext.h
index effbacd..3593419 100644
--- a/api/GL/glext.h
+++ b/api/GL/glext.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
@@ -51,7 +32,7 @@
 #define GLAPI extern
 #endif
 
-#define GL_GLEXT_VERSION 20200319
+#define GL_GLEXT_VERSION 20200814
 
 #include <KHR/khrplatform.h>
 
@@ -9285,6 +9266,11 @@
 #define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
 #endif /* GL_MESAX_texture_stack */
 
+#ifndef GL_MESA_framebuffer_flip_x
+#define GL_MESA_framebuffer_flip_x 1
+#define GL_FRAMEBUFFER_FLIP_X_MESA        0x8BBC
+#endif /* GL_MESA_framebuffer_flip_x */
+
 #ifndef GL_MESA_framebuffer_flip_y
 #define GL_MESA_framebuffer_flip_y 1
 #define GL_FRAMEBUFFER_FLIP_Y_MESA        0x8BBB
@@ -9296,6 +9282,11 @@
 #endif
 #endif /* GL_MESA_framebuffer_flip_y */
 
+#ifndef GL_MESA_framebuffer_swap_xy
+#define GL_MESA_framebuffer_swap_xy 1
+#define GL_FRAMEBUFFER_SWAP_XY_MESA       0x8BBD
+#endif /* GL_MESA_framebuffer_swap_xy */
+
 #ifndef GL_MESA_pack_invert
 #define GL_MESA_pack_invert 1
 #define GL_PACK_INVERT_MESA               0x8758
@@ -10286,6 +10277,20 @@
 #endif
 #endif /* GL_NV_memory_attachment */
 
+#ifndef GL_NV_memory_object_sparse
+#define GL_NV_memory_object_sparse 1
+typedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+GLAPI void APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+GLAPI void APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+GLAPI void APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+#endif
+#endif /* GL_NV_memory_object_sparse */
+
 #ifndef GL_NV_mesh_shader
 #define GL_NV_mesh_shader 1
 #define GL_MESH_SHADER_NV                 0x9559
@@ -11251,6 +11256,23 @@
 #define GL_FORCE_BLUE_TO_ONE_NV           0x8860
 #endif /* GL_NV_texture_shader3 */
 
+#ifndef GL_NV_timeline_semaphore
+#define GL_NV_timeline_semaphore 1
+#define GL_TIMELINE_SEMAPHORE_VALUE_NV    0x9595
+#define GL_SEMAPHORE_TYPE_NV              0x95B3
+#define GL_SEMAPHORE_TYPE_BINARY_NV       0x95B4
+#define GL_SEMAPHORE_TYPE_TIMELINE_NV     0x95B5
+#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6
+typedef void (APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores);
+typedef void (APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores);
+GLAPI void APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params);
+#endif
+#endif /* GL_NV_timeline_semaphore */
+
 #ifndef GL_NV_transform_feedback
 #define GL_NV_transform_feedback 1
 #define GL_BACK_PRIMARY_COLOR_NV          0x8C77
diff --git a/api/GL/glxext.h b/api/GL/glxext.h
index 63ef441..e0dbe7f 100755
--- a/api/GL/glxext.h
+++ b/api/GL/glxext.h
@@ -6,35 +6,16 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
 **   https://github.com/KhronosGroup/OpenGL-Registry
 */
 
-#define GLX_GLXEXT_VERSION 20200319
+#define GLX_GLXEXT_VERSION 20200813
 
 /* Generated C header for:
  * API: glx
diff --git a/api/GL/wgl.h b/api/GL/wgl.h
index d0758f3..da02dbf 100644
--- a/api/GL/wgl.h
+++ b/api/GL/wgl.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
@@ -39,7 +20,7 @@
 #include <windows.h>
 #endif
 
-/* Generated on date 20200319 */
+/* Generated on date 20200813 */
 
 /* Generated C header for:
  * API: wgl
diff --git a/api/GL/wglext.h b/api/GL/wglext.h
index 923093e..70a2613 100755
--- a/api/GL/wglext.h
+++ b/api/GL/wglext.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
@@ -39,7 +20,7 @@
 #include <windows.h>
 #endif
 
-#define WGL_WGLEXT_VERSION 20200319
+#define WGL_WGLEXT_VERSION 20200813
 
 /* Generated C header for:
  * API: wgl
diff --git a/api/GLES/egl.h b/api/GLES/egl.h
index 86f644c..4f8903d 100644
--- a/api/GLES/egl.h
+++ b/api/GLES/egl.h
@@ -1,17 +1,6 @@
 /*
-** Copyright (c) 2008-2017 The Khronos Group Inc.
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
+** Copyright 2008-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
 */
 
 /*
diff --git a/api/GLES/gl.h b/api/GLES/gl.h
index 4c47e86..55daa6a 100644
--- a/api/GLES/gl.h
+++ b/api/GLES/gl.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
@@ -36,7 +17,7 @@
 
 #include <GLES/glplatform.h>
 
-/* Generated on date 20200319 */
+/* Generated on date 20200814 */
 
 /* Generated C header for:
  * API: gles1
diff --git a/api/GLES/glext.h b/api/GLES/glext.h
index caa28fe..9d53d9a 100644
--- a/api/GLES/glext.h
+++ b/api/GLES/glext.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
@@ -38,7 +19,7 @@
 #define GL_APIENTRYP GL_APIENTRY*
 #endif
 
-/* Generated on date 20200319 */
+/* Generated on date 20200814 */
 
 /* Generated C header for:
  * API: gles1
diff --git a/api/GLES/glplatform.h b/api/GLES/glplatform.h
index 16060a9..3155ef2 100644
--- a/api/GLES/glplatform.h
+++ b/api/GLES/glplatform.h
@@ -2,19 +2,8 @@
 #define __glplatform_h_
 
 /*
-** Copyright (c) 2017 The Khronos Group Inc.
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
+** Copyright 2017-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
 */
 
 /* Platform-specific types and definitions for OpenGL ES 1.X  gl.h
diff --git a/api/GLES2/gl2.h b/api/GLES2/gl2.h
index 54d6ed0..3b1925a 100644
--- a/api/GLES2/gl2.h
+++ b/api/GLES2/gl2.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
@@ -44,7 +25,7 @@
 #define GL_GLES_PROTOTYPES 1
 #endif
 
-/* Generated on date 20200319 */
+/* Generated on date 20200814 */
 
 /* Generated C header for:
  * API: gles2
diff --git a/api/GLES2/gl2ext.h b/api/GLES2/gl2ext.h
index e0bf0b8..49c4460 100644
--- a/api/GLES2/gl2ext.h
+++ b/api/GLES2/gl2ext.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
@@ -38,7 +19,7 @@
 #define GL_APIENTRYP GL_APIENTRY*
 #endif
 
-/* Generated on date 20200319 */
+/* Generated on date 20200814 */
 
 /* Generated C header for:
  * API: gles2
@@ -350,12 +331,12 @@
 typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
 typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
 typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex);
+typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
 #ifdef GL_GLEXT_PROTOTYPES
 GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
 GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
 GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
-GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex);
+GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
 #endif
 #endif /* GL_OES_draw_elements_base_vertex */
 
@@ -1624,6 +1605,10 @@
 #endif
 #endif /* GL_EXT_multisampled_render_to_texture */
 
+#ifndef GL_EXT_multisampled_render_to_texture2
+#define GL_EXT_multisampled_render_to_texture2 1
+#endif /* GL_EXT_multisampled_render_to_texture2 */
+
 #ifndef GL_EXT_multiview_draw_buffers
 #define GL_EXT_multiview_draw_buffers 1
 #define GL_COLOR_ATTACHMENT_EXT           0x90F0
@@ -2459,6 +2444,11 @@
 #endif
 #endif /* GL_INTEL_performance_query */
 
+#ifndef GL_MESA_framebuffer_flip_x
+#define GL_MESA_framebuffer_flip_x 1
+#define GL_FRAMEBUFFER_FLIP_X_MESA        0x8BBC
+#endif /* GL_MESA_framebuffer_flip_x */
+
 #ifndef GL_MESA_framebuffer_flip_y
 #define GL_MESA_framebuffer_flip_y 1
 #define GL_FRAMEBUFFER_FLIP_Y_MESA        0x8BBB
@@ -2470,6 +2460,11 @@
 #endif
 #endif /* GL_MESA_framebuffer_flip_y */
 
+#ifndef GL_MESA_framebuffer_swap_xy
+#define GL_MESA_framebuffer_swap_xy 1
+#define GL_FRAMEBUFFER_SWAP_XY_MESA       0x8BBD
+#endif /* GL_MESA_framebuffer_swap_xy */
+
 #ifndef GL_MESA_program_binary_formats
 #define GL_MESA_program_binary_formats 1
 #define GL_PROGRAM_BINARY_FORMAT_MESA     0x875F
@@ -3008,6 +3003,20 @@
 #endif
 #endif /* GL_NV_memory_attachment */
 
+#ifndef GL_NV_memory_object_sparse
+#define GL_NV_memory_object_sparse 1
+typedef void (GL_APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+typedef void (GL_APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+#ifdef GL_GLEXT_PROTOTYPES
+GL_APICALL void GL_APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+GL_APICALL void GL_APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+GL_APICALL void GL_APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);
+GL_APICALL void GL_APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);
+#endif
+#endif /* GL_NV_memory_object_sparse */
+
 #ifndef GL_NV_mesh_shader
 #define GL_NV_mesh_shader 1
 #define GL_MESH_SHADER_NV                 0x9559
@@ -3599,6 +3608,23 @@
 #define GL_NV_texture_npot_2D_mipmap 1
 #endif /* GL_NV_texture_npot_2D_mipmap */
 
+#ifndef GL_NV_timeline_semaphore
+#define GL_NV_timeline_semaphore 1
+#define GL_TIMELINE_SEMAPHORE_VALUE_NV    0x9595
+#define GL_SEMAPHORE_TYPE_NV              0x95B3
+#define GL_SEMAPHORE_TYPE_BINARY_NV       0x95B4
+#define GL_SEMAPHORE_TYPE_TIMELINE_NV     0x95B5
+#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6
+typedef void (GL_APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores);
+typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params);
+typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params);
+#ifdef GL_GLEXT_PROTOTYPES
+GL_APICALL void GL_APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores);
+GL_APICALL void GL_APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params);
+GL_APICALL void GL_APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params);
+#endif
+#endif /* GL_NV_timeline_semaphore */
+
 #ifndef GL_NV_viewport_array
 #define GL_NV_viewport_array 1
 #define GL_MAX_VIEWPORTS_NV               0x825B
@@ -3777,6 +3803,18 @@
 #endif
 #endif /* GL_QCOM_framebuffer_foveated */
 
+#ifndef GL_QCOM_motion_estimation
+#define GL_QCOM_motion_estimation 1
+#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90
+#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91
+typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output);
+typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask);
+#ifdef GL_GLEXT_PROTOTYPES
+GL_APICALL void GL_APIENTRY glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output);
+GL_APICALL void GL_APIENTRY glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask);
+#endif
+#endif /* GL_QCOM_motion_estimation */
+
 #ifndef GL_QCOM_perfmon_global_mode
 #define GL_QCOM_perfmon_global_mode 1
 #define GL_PERFMON_GLOBAL_MODE_QCOM       0x8FA0
diff --git a/api/GLES2/gl2platform.h b/api/GLES2/gl2platform.h
index eb318dc..5bcce6d 100644
--- a/api/GLES2/gl2platform.h
+++ b/api/GLES2/gl2platform.h
@@ -2,19 +2,8 @@
 #define __gl2platform_h_
 
 /*
-** Copyright (c) 2017 The Khronos Group Inc.
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
+** Copyright 2017-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
 */
 
 /* Platform-specific types and definitions for OpenGL ES 2.X  gl2.h
diff --git a/api/GLES3/gl3.h b/api/GLES3/gl3.h
index 2b5fbdd..8530c3e 100644
--- a/api/GLES3/gl3.h
+++ b/api/GLES3/gl3.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
@@ -44,7 +25,7 @@
 #define GL_GLES_PROTOTYPES 1
 #endif
 
-/* Generated on date 20200319 */
+/* Generated on date 20200814 */
 
 /* Generated C header for:
  * API: gles2
diff --git a/api/GLES3/gl31.h b/api/GLES3/gl31.h
index 0015bec..502d6fe 100644
--- a/api/GLES3/gl31.h
+++ b/api/GLES3/gl31.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
diff --git a/api/GLES3/gl32.h b/api/GLES3/gl32.h
index 3b2487e..ae56b0e 100644
--- a/api/GLES3/gl32.h
+++ b/api/GLES3/gl32.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
diff --git a/api/GLES3/gl3platform.h b/api/GLES3/gl3platform.h
index ca9d7a6..8699212 100644
--- a/api/GLES3/gl3platform.h
+++ b/api/GLES3/gl3platform.h
@@ -2,19 +2,8 @@
 #define __gl3platform_h_
 
 /*
-** Copyright (c) 2017 The Khronos Group Inc.
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
+** Copyright 2017-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
 */
 
 /* Platform-specific types and definitions for OpenGL ES 3.X  gl3.h
diff --git a/api/GLSC2/gl2platform.h b/api/GLSC2/gl2platform.h
index 574c198..3c18223 100644
--- a/api/GLSC2/gl2platform.h
+++ b/api/GLSC2/gl2platform.h
@@ -2,19 +2,8 @@
 #define __gl2platform_h_
 
 /*
-** Copyright (c) 2017 The Khronos Group Inc.
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
+** Copyright 2017-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
 */
 
 /* Platform-specific types and definitions for OpenGL SC 2.0 glsc2.h
diff --git a/api/GLSC2/glsc2.h b/api/GLSC2/glsc2.h
index 9806def..9480202 100644
--- a/api/GLSC2/glsc2.h
+++ b/api/GLSC2/glsc2.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
diff --git a/api/GLSC2/glsc2ext.h b/api/GLSC2/glsc2ext.h
index e858779..e7dd8d2 100644
--- a/api/GLSC2/glsc2ext.h
+++ b/api/GLSC2/glsc2ext.h
@@ -6,28 +6,9 @@
 #endif
 
 /*
-** Copyright (c) 2013-2018 The Khronos Group Inc.
+** Copyright 2013-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: MIT
 **
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
 ** This header is generated from the Khronos OpenGL / OpenGL ES XML
 ** API Registry. The current version of the Registry, generator scripts
 ** used to make the header, and the header can be found at
diff --git a/extensions/ANGLE/ANGLE_depth_texture.txt b/extensions/ANGLE/ANGLE_depth_texture.txt
index 23ef059..afbbcd7 100644
--- a/extensions/ANGLE/ANGLE_depth_texture.txt
+++ b/extensions/ANGLE/ANGLE_depth_texture.txt
@@ -8,7 +8,9 @@
 
 Contributors
 
-    Nicolas Capens, TransGaming
+    Nicolas Capens, TransGaming / Google
+    Daniel Koch, TransGaming / NVIDIA
+    Shannon Woods, TransGaming / Google
     Kenneth Russell, Google
     Vangelis Kokkevis, Google
     Gregg Tavares, Google
@@ -17,7 +19,7 @@
 
 Contact
 
-    Daniel Koch, TransGaming (daniel 'at' transgaming.com)
+    Shannon Woods, Google (shannonwoods 'at' google.com)
 
 Status
 
@@ -25,8 +27,8 @@
 
 Version
 
-    Last Modifed Date: June 4, 2012
-    Revision: #3
+    Last Modified Date: February 25, 2013
+    Revision: #4
 
 Number
 
@@ -89,7 +91,7 @@
 
     If a vertex shader uses..."
 
-Additions to Chapter 3 of the OpenGL ES 2.0 specification (Rasterizatoin)
+Additions to Chapter 3 of the OpenGL ES 2.0 specification (Rasterization)
 
     Add the following rows to Table 3.2 (page 62):
 
@@ -219,8 +221,7 @@
     below. Otherwise, the texture unit operates in the normal manner.
 
     Let <D_t> be the depth texture value, provided by the shader's texture lookup
-    function. Then the effective texture value, <L_t> or <A_t> is computed
-    as follows:
+    function. Then the effective texture value is computed as follows:
             <Tau> = <D_t>
 
     If the texture image has a base internal format of DEPTH_STENCIL_OES, then
@@ -228,10 +229,10 @@
     not include a stencil index component, but includes only the depth
     component.
 
-    The resulting <Tau> is assigned to <L_t>. In some implementations,
-    <Tau> is also assigned to <A_t>. Thus in table 3.12, textures with
-    depth component data behave as if their base internal format is
-    either LUMINANCE or LUMINANCE_ALPHA."
+    The resulting <Tau> is assigned to <R_t>. In some implementations, <Tau> is
+    also assigned to <G_t>, <B_t>, or <A_t>. Thus in table 3.12, textures with
+    depth component data behave as if their base internal format is RGBA, with
+    values in <G_t>, <B_t>, and <A_t> being implementation dependent."
 
     Add the following to section 3.7.11 "Mipmap Generation":
 
@@ -363,8 +364,8 @@
        RESOLVED: This extension:
          - does not support loading pre-baked depth stencil data via
            TexImage2D or TexSubImage2D.
-         - allows variability in w-component of the sample results from
-           depth textures.
+         - allows variability in the y-, z-, and w-components of the sample
+           results from depth textures.
          - only supports one level textures.
          - explicitly lists the errors for unsupported functionality.
            Since these were not clearly specified in the OES_depth_texture
@@ -392,6 +393,8 @@
 
 Revision History
 
+    02/25/2013  swoods  revise to allow texture lookup to guarantee depth values
+                        only in red channel of sample result.
     06/04/2012  dgkoch  fix errors, disallow multi-level depth textures.
     05/30/2012  dgkoch  minor updates and add issues.
     05/23/2012  dgkoch  intial revision based on OES_depth_texture and
diff --git a/extensions/ARB/ARB_buffer_storage.txt b/extensions/ARB/ARB_buffer_storage.txt
index 5e4e947..0f814f4 100644
--- a/extensions/ARB/ARB_buffer_storage.txt
+++ b/extensions/ARB/ARB_buffer_storage.txt
@@ -409,7 +409,8 @@
     INVALID_OPERATION is generated by MapBufferRange if MAP_PERSISTENT_BIT
     is included in <access> but MAP_PERSISTENT_BIT is not
     included in the buffer's storage flags, or if MAP_COHERENT_BIT is included
-    in <access> but
+    in <access> but MAP_COHERENT_BIT is not
+    included in the buffer's storage flags.
 
     OUT_OF_MEMORY is generated by BufferStorage and NamedBufferStorageEXT if
     the GL is not able to allocate a data store with the properties requested
diff --git a/extensions/ARB/ARB_copy_image.txt b/extensions/ARB/ARB_copy_image.txt
index 86fc172..a41dc2e 100644
--- a/extensions/ARB/ARB_copy_image.txt
+++ b/extensions/ARB/ARB_copy_image.txt
@@ -268,7 +268,7 @@
 Dependencies on OpenGL 4.2 and ARB_texture_compression_bptc:
 
     If OpenGL 4.2 or later, and ARB_texture_compression_bptc is not
-    supported, remove any references to the PBTC compressed texture
+    supported, remove any references to the BPTC compressed texture
     formats.
     
 Errors
diff --git a/extensions/ARB/ARB_shader_storage_buffer_object.txt b/extensions/ARB/ARB_shader_storage_buffer_object.txt
index 4200dd3..2cbb853 100644
--- a/extensions/ARB/ARB_shader_storage_buffer_object.txt
+++ b/extensions/ARB/ARB_shader_storage_buffer_object.txt
@@ -1022,7 +1022,7 @@
 
     Get Value                         Type  Get Command    Minimum Value  Description                Sec. 
     -----------------------           ----  -----------    -------------  -------------------------  -----
-    MAX_COMBINED_SHADER_OUTPUT   _    Z+    GetIntegerv    8              limit on active image      3.10.22
+    MAX_COMBINED_SHADER_OUTPUT_       Z+    GetIntegerv    8              limit on active image      3.10.22
       RESOURCES                                                           units, shader storage
                                                                           blocks, and fragment outputs
 
diff --git a/extensions/ARB/ARB_texture_query_lod.txt b/extensions/ARB/ARB_texture_query_lod.txt
index 5d8e648..7d1d809 100644
--- a/extensions/ARB/ARB_texture_query_lod.txt
+++ b/extensions/ARB/ARB_texture_query_lod.txt
@@ -16,6 +16,7 @@
     Pat Brown, NVIDIA
     Greg Roth, NVIDIA
     Eric Werness, NVIDIA
+    Alejandro Piñeiro, Igalia, SL
 
 Notice
 
@@ -38,8 +39,8 @@
 
 Version
 
-    Last Modified Date:         04/10/2013
-    Revision:                   7
+    Last Modified Date:         04/22/2020
+    Revision:                   8
 
 Number
 
@@ -47,7 +48,7 @@
 
 Dependencies
 
-    OpenGL 2.0 is required.
+    OpenGL 3.0 is required.
 
     OpenGL Shading Language 1.30 is required
 
@@ -243,6 +244,10 @@
 
     Rev.    Date      Author    Changes
     ----  ----------  --------  -----------------------------------------
+    8     04/22/2020  apinheiro Update OpenGL version required, to be
+                                consistent with GLSL version required (internal API
+                                issue 124)
+
     7     04/10/2013  Jon Leech Add issue 3 regarding different spelling
                                 of "LOD" vs. "Lod" in extension & core.
 
diff --git a/extensions/EXT/EXT_draw_elements_base_vertex.txt b/extensions/EXT/EXT_draw_elements_base_vertex.txt
index e3a84a6..bf9aee0 100644
--- a/extensions/EXT/EXT_draw_elements_base_vertex.txt
+++ b/extensions/EXT/EXT_draw_elements_base_vertex.txt
@@ -29,8 +29,8 @@
 
 Version
 
-    Last Modified Date:  September 30, 2014
-    Version:             3
+    Last Modified Date:  August 11, 2020
+    Version:             4
 
 Number
 
@@ -138,7 +138,7 @@
                                         const sizei *count,
                                         enum type,
                                         const void * const *indices,
-                                        sizei primcount,
+                                        sizei drawcount,
                                         const int *basevertex);
 
 New Tokens
@@ -361,7 +361,12 @@
 Revision History
 
     Rev.    Date    Author     Changes
-    ----  -------- ---------  ----------------------------------------
+    ----  -------- ---------  ----------------------------------------------
+     4    08/11/20  pdaniell  Renamed the 'primcount' parameter of
+                              MultiDrawElementsBaseVertexEXT in the
+                              "New Procedures and Functions" section to
+                              'drawcount' to match the extension spec body.
+                              
      3    09/30/14  dkoch     Resolved issues 1, 2 as proposed.
                               Added issue 5. Mark complete.
 
diff --git a/extensions/MESA/MESA_framebuffer_flip_x.txt b/extensions/MESA/MESA_framebuffer_flip_x.txt
new file mode 100644
index 0000000..344b75c
--- /dev/null
+++ b/extensions/MESA/MESA_framebuffer_flip_x.txt
@@ -0,0 +1,92 @@
+Name
+
+    MESA_framebuffer_flip_x
+
+Name Strings
+
+    GL_MESA_framebuffer_flip_x
+
+Contact
+
+    Cici Ruan <ruanc@chromium.org>
+
+Contributors
+
+    Cici Ruan, Google
+    Kristian Kristensen‎, Google
+    Fritz Koenig, Google
+    Rob Clark, Google
+    Chad Versace, Google
+
+Status
+
+    Proposal
+
+Version
+
+    Last Modified Date: April 8, 2020
+    Revision: 1
+
+Number
+
+    OpenGL Extension 548
+    OpenGL ES Extension 327
+
+Dependencies
+
+    Requires OpenGL ES 3.1 or OpenGL 4.3 for FramebufferParameteri.
+
+Overview
+
+    This extension defines a new framebuffer parameter,
+    GL_FRAMEBUFFER_FLIP_X_MESA, that changes the behavior of the reads and
+    writes to the framebuffer attachment points. When
+    GL_FRAMEBUFFER_FLIP_X_MESA is GL_TRUE, render commands and pixel transfer
+    operations access the backing store of each attachment point with an
+    x-inverted coordinate system. This x-inversion is relative to the
+    coordinate system set when GL_FRAMEBUFFER_FLIP_X_MESA is GL_FALSE.
+
+    Access through TexSubImage2D and similar calls will notice the effect of
+    the flip when they are not attached to framebuffer objects because
+    GL_FRAMEBUFFER_FLIP_X_MESA is associated with the framebuffer object and
+    not the attachment points.
+
+    This extension is mainly for pre-rotation and recommended to use it with
+    MESA_framebuffer_flip_y and MESA_framebuffer_swap_xy to have rotated
+    result.
+
+IP Status
+
+    None
+
+Issues
+
+    None
+
+New Procedures and Functions
+
+    None
+
+New Types
+
+    None
+
+New Tokens
+
+    Accepted by the <pname> argument of FramebufferParameteri and
+    GetFramebufferParameteriv:
+
+        GL_FRAMEBUFFER_FLIP_X_MESA                      0x8BBC
+
+    Interactions with OpenGL ES 3.1 and any other versions and
+    extensions that provide the entry points FramebufferParameteri
+    and GetFramebufferParameteriv
+
+Errors
+
+    None
+
+Revision History
+
+    Version 1, 2020/04/08
+      - Initial draft (Cici Ruan)
diff --git a/extensions/MESA/MESA_framebuffer_swap_xy.txt b/extensions/MESA/MESA_framebuffer_swap_xy.txt
new file mode 100644
index 0000000..1990cf2
--- /dev/null
+++ b/extensions/MESA/MESA_framebuffer_swap_xy.txt
@@ -0,0 +1,98 @@
+Name
+
+    MESA_framebuffer_swap_xy
+
+Name Strings
+
+    GL_MESA_framebuffer_swap_xy
+
+Contact
+
+    Cici Ruan <ruanc@chromium.org>
+
+Contributors
+
+    Cici Ruan, Google
+    Kristian Kristensen‎, Google
+    Fritz Koenig, Google
+    Rob Clark, Google
+    Chad Versace, Google
+
+Status
+
+    Proposal
+
+Version
+
+    Last Modified Date: April 8, 2020
+    Revision: 1
+
+Number
+
+    OpenGL Extension 549
+    OpenGL ES Extension 328
+
+Dependencies
+
+    Requires OpenGL ES 3.1 or OpenGL 4.3 for FramebufferParameteri.
+
+Overview
+
+    This extension defines a new framebuffer parameter,
+    GL_FRAMEBUFFER_SWAP_XY_MESA, that changes the behavior of the reads and
+    writes to the framebuffer attachment points. When
+    GL_FRAMEBUFFER_SWAP_XY_MESA is GL_TRUE, render commands and pixel transfer
+    operations access the backing store of each attachment point with an
+    xy-swapped coordinate system. This xy-inversion is relative to the
+    coordinate system set when GL_FRAMEBUFFER_SWAP_XY_MESA is GL_FALSE.
+
+    Access through TexSubImage2D and similar calls will notice the effect of
+    the swap when they are not attached to framebuffer objects because
+    GL_FRAMEBUFFER_SWAP_XY_MESA is associated with the framebuffer object and
+    not the attachment points.
+
+    The application should notice the display width and height are also swapped
+    when GL_FRAMEBUFFER_SWAP_XY_MESA is GL_TRUE.
+
+    This extension is mainly for pre-rotation and recommended to use it with
+    MESA_framebuffer_flip_x and MESA_framebuffer_flip_y to have rotated
+    result.
+
+IP Status
+
+    None
+
+Issues
+
+    None
+
+New Procedures and Functions
+
+    None
+
+New Types
+
+    None
+
+New Tokens
+
+    Accepted by the <pname> argument of FramebufferParameteri and
+    GetFramebufferParameteriv:
+
+        GL_FRAMEBUFFER_SWAP_XY_MESA                      0x8BBD
+
+    Interactions with OpenGL ES 3.1 and any other versions and
+    extensions that provide the entry points FramebufferParameteri
+    and GetFramebufferParameteriv
+
+    Token GL_FRAMEBUFFER_SWAP_XY_MESA is accepted as the <pname> argument of
+    FramebufferParameteri and GetFramebufferParameteriv.
+
+Errors
+
+    None
+
+Revision History
+
+    Version 1, 2020/04/08
+      - Initial draft (Cici Ruan)
diff --git a/extensions/NV/NV_memory_object_sparse.txt b/extensions/NV/NV_memory_object_sparse.txt
new file mode 100755
index 0000000..87b2087
--- /dev/null
+++ b/extensions/NV/NV_memory_object_sparse.txt
@@ -0,0 +1,187 @@
+Name
+
+    NV_memory_object_sparse
+
+Name Strings
+
+    GL_NV_memory_object_sparse
+
+Contributors
+
+    Carsten Rohde, NVIDIA
+    James Jones, NVIDIA
+
+Contact
+
+    Carsten Rohde, NVIDIA Corporation (crohde 'at' nvidia.com)
+
+Status
+
+    Complete
+
+Version
+
+    Last Modified Date: August 14, 2020
+    Revision:           2
+
+Number
+
+    550
+    OpenGL ES Extension #329
+
+Dependencies
+
+    Written against the OpenGL 4.6 and OpenGL ES 3.2 specifications
+    including ARB_sparse_texture and ARB_sparse_buffer.
+
+    GL_NV_memory_object_sparse requires GL_EXT_memory_object,
+    ARB_sparse_texture and/or ARB_sparse_buffer or a version of
+    OpenGL or OpenGL ES that incorporates it.
+
+    NV_memory_object_sparse interacts with ARB_direct_state_access (OpenGL)
+    when OpenGL < 4.6 is used.
+
+    ARB_sparse_texture (OpenGL) interacts with GL_EXT_memory_object_sparse.
+    ARB_sparse_buffer (OpenGL) interacts with GL_EXT_memory_object_sparse.
+    EXT_sparse_texture (OpenGL ES) interacts with GL_EXT_memory_object_sparse.
+
+Overview
+
+    This extension adds sparse support to EXT_memory_object extension.
+
+New Procedures and Functions
+
+    void BufferPageCommitmentMemNV(enum target,
+                                   intptr offset, sizeiptr size,
+                                   uint memory, uint64 memOffset,
+                                   boolean commit);
+
+    void NamedBufferPageCommitmentMemNV(uint buffer,
+                                        intptr offset, sizeiptr size,
+                                        uint memory, uint64 memOffset,
+                                        boolean commit);
+
+    void TexPageCommitmentMemNV(enum target,
+                                int layer, int level,
+                                int xoffset, int yoffset, int zoffset,
+                                sizei width, sizei height, sizei depth,
+                                uint memory, uint64 offset,
+                                boolean commit);
+
+    void TexturePageCommitmentMemNV(uint texture,
+                                    int layer, int level,
+                                    int xoffset, int yoffset, int zoffset,
+                                    sizei width, sizei height, sizei depth,
+                                    uint memory, uint64 offset,
+                                    boolean commit);
+
+
+New Tokens
+
+    None
+
+
+Additions to Chapter 6 of the OpenGL 4.4 (core) Specification (Buffer Objects)
+
+    In Section 6.2, "Creating and Modifying Buffer Object Data Stores", add
+    the following add the following to the end of the description of
+    BufferSubData:
+
+    If NV_memory_object_sparse is supported, additionally, the commands
+
+        void BufferPageCommitmentMemNV(enum target,
+                                       intptr offset, sizeiptr size,
+                                       uint memory, uint64 memOffset,
+                                       boolean commit);
+
+        void NamedBufferPageCommitmentMemNV(uint buffer,
+                                            intptr offset,
+                                            sizeiptr size,
+                                            uint memory, uint64 memOffset,
+                                            boolean commit);
+
+    behaves similarly to BufferPageCommitmentARB and
+    NamedBufferPageCommitmentMemARB except that the pages of the sparse buffer
+    are bound to the memory specified by <memory> and <memOffset>.
+
+    Errors (additionally to non-Mem variants)
+
+      An INVALID_OPERATION error is generated if <memory> is not the name of
+      an existing memory object.
+
+      An INVALID_OPERATION error is generated if <offset> + <size> exceeds the
+      size of the memory object.
+
+    Add the following to end of subsection 8.20.2. "Controlling Sparse Texture
+    Commitment":
+
+    If NV_memory_object_sparse is supported, additionally, the commands
+
+        void TexPageCommitmentMemNV(enum target,
+                                    int layer, int level,
+                                    int xoffset, int yoffset, int zoffset,
+                                    sizei width, sizei height, sizei depth,
+                                    uint memory, uint64 offset,
+                                    boolean commit);
+
+        void TexturePageCommitmentMemNV(uint texture,
+                                        int layer, int level,
+                                        int xoffset, int yoffset, int zoffset,
+                                        sizei width, sizei height, sizei depth,
+                                        uint memory, uint64 offset,
+                                        boolean commit);
+
+    behaves similarly to TexPageCommitmentMemARB and
+    TexturePageCommitmentEXT except that the tiles of the sparse texture
+    are bound to the memory specified by <memory> and <offset>.
+
+    <layer> indicates the layer of a texture array or cube texture,
+    <zoffset> must be 0 and <depth> must 1 in this case. For other textures
+    <layer> must be 0.
+
+    Errors (additionally to non-Mem variants)
+
+      An INVALID_OPERATION error is generated if <memory> is not the name of
+      an existing memory object.
+
+      An INVALID_OPERATION error is generated if <memory> is dedicated or
+      imported from a non-opaque handle.
+
+      An INVALID_OPERATION error is generated if <offset> plus the number of
+      bytes required for the tiles to commit exceeds the size of the memory
+      object.
+
+      An INVALID_VALUE error is generated if <layer> is not 0 and the texture
+      neither a texture array or a cube texture.
+
+      An INVALID_VALUE error is generated if <zoffset> is not 0 or <depth> is
+      not 1 if the texture is a texture array or a cube texture.
+
+      An INVALID_VALUE error is generated if <layer> is greater or equal than
+      the number of layers of the texture array.
+
+      An INVALID_VALUE error is generated if <layer> is greater or equal than
+      6 in case of a cube texture.
+
+Dependencies on EXT_direct_state_access
+
+    If EXT_direct_state_access is not supported, remove references to the
+    NamedBufferPageCommitmentMemNV and TexturePageCommitmentMemNV commands
+    added by this extension.
+
+Issues
+
+    (1) Should we a 'aspect' parameter to the new gl.*CommitMemNV() functions?
+
+    RESOLVED: No. This can be deferred to a future EXT extension because there
+              is currently no multi-planar texture support in GL and metadata
+              isn't required for NVIDIA hardware.
+
+Revision History
+
+    Revision 2, 2020-08-14 (Piers Daniell)
+        - Fix duplicate parameter names in BufferPageCommitmentMemNV and
+          NamedBufferPageCommitmentMemNV.
+
+    Revision 1, 2020-08-04 (Carsten Rohde)
+        - Initial draft.
diff --git a/extensions/NV/NV_pixel_buffer_object.txt b/extensions/NV/NV_pixel_buffer_object.txt
index 632935d..9a99790 100644
--- a/extensions/NV/NV_pixel_buffer_object.txt
+++ b/extensions/NV/NV_pixel_buffer_object.txt
@@ -21,8 +21,8 @@
 
 Version
 
-    Last Modified Date: October 23rd, 2012
-    Revision: 2.0
+    Last Modified Date: April 27th, 2020
+    Revision: 3.0
 
 Number
 
@@ -552,11 +552,11 @@
 
         glBindBuffer(GL_PIXEL_PACK_BUFFER_NV, imageBuffers[0]);
         glBufferData(GL_PIXEL_PACK_BUFFER_NV, imageSize / 2, NULL,
-                     GL_STREAM_READ);
+                     GL_STREAM_DRAW);
 
         glBindBuffer(GL_PIXEL_PACK_BUFFER_NV, imageBuffers[1]);
         glBufferData(GL_PIXEL_PACK_BUFFER_NV, imageSize / 2, NULL,
-                     GL_STREAM_READ);
+                     GL_STREAM_DRAW);
 
         // Render to framebuffer
         glDrawBuffer(GL_BACK);
@@ -576,12 +576,12 @@
         // Process partial images.  Mapping the buffer waits for
         // outstanding DMA transfers into the buffer to finish.
         glBindBuffer(GL_PIXEL_PACK_BUFFER_NV, imageBuffers[0]);
-        pboMemory1 = glMapBuffer(GL_PIXEL_PACK_BUFFER_NV,
-                                 GL_READ_ONLY);
+        pboMemory1 = glMapBufferRangeEXT(GL_PIXEL_PACK_BUFFER_NV, 0,
+                                         imageSize/2, GL_MAP_READ_BIT_EXT);
         processImage(pboMemory1);
         glBindBuffer(GL_PIXEL_PACK_BUFFER_NV, imageBuffers[1]);
-        pboMemory2 = glMapBuffer(GL_PIXEL_PACK_BUFFER_NV,
-                                 GL_READ_ONLY);
+        pboMemory2 = glMapBufferRangeEXT(GL_PIXEL_PACK_BUFFER_NV, 0,
+                                         imageSize/2, GL_MAP_READ_BIT_EXT);
         processImage(pboMemory2);
 
         // Unmap the image buffers
@@ -750,6 +750,8 @@
         
 Revision History
 
+    3   04/27/2020 fix example code: GL_STREAM_READ is not available in ES2.0
+                   glMapBufferOES does not allow reading from the mapped pointer.
     2   10/23/2012 more cleanup, interaction with EXT_map_buffer_range
     1   04/19/2012 initial revision
         - took ARB_pixel_buffer_object, stripped everything not applicable to 
diff --git a/extensions/NV/NV_timeline_semaphore.txt b/extensions/NV/NV_timeline_semaphore.txt
new file mode 100755
index 0000000..3479fa3
--- /dev/null
+++ b/extensions/NV/NV_timeline_semaphore.txt
@@ -0,0 +1,223 @@
+Name
+
+    NV_timeline_semaphore
+
+Name Strings
+
+    GL_NV_timeline_semaphore
+
+Contributors
+
+    Carsten Rohde, NVIDIA
+    James Jones, NVIDIA
+
+Contact
+
+    Carsten Rohde, NVIDIA Corporation (crohde 'at' nvidia.com)
+
+Status
+
+    Complete
+
+Version
+
+    Last Modified Date: Jul 10, 2020
+    Revision:           1
+
+Number
+
+    551
+    OpenGL ES Extension #330
+
+Dependencies
+
+    Written against the OpenGL 4.6 and OpenGL ES 3.2 specifications.
+
+    GL_NV_timeline_semaphore requires GL_EXT_semaphore or a version of
+    OpenGL or OpenGL ES that incorporates it.
+
+Overview
+
+    The Vulkan API introduces the concept of timeline semaphores.
+    This extension brings those concepts to the OpenGL API by adding
+    a semaphore type to the semaphore object. In OpenGL, timeline semaphore
+    signal and wait operations are similar to the corresponding operations on
+    imported Direct3D 12 fences defined in EXT_external_objects_win32.
+
+New Procedures and Functions
+
+    void CreateSemaphoresNV(sizei n, uint *semaphores);
+
+    void SemaphoreParameterivNV(uint semaphore,
+                                enum pname,
+                                const GLint *params);
+
+    void GetSemaphoreParameterivNV(uint semaphore,
+                                   enum pname,
+                                   int *params);
+
+New Tokens
+
+    Accepted by the <pname> parameter of SemaphoreParameterivNV
+    and GetSemaphoreParameterivNV:
+
+        SEMAPHORE_TYPE_NV                           0x95B3
+
+    Accepted by the <param> parameter of SemaphoreParameterivNV and
+    GetSemaphoreParameterivNV when <pname> parameter is SEMAPHORE_TYPE_NV:
+
+        SEMAPHORE_TYPE_BINARY_NV                    0x95B4
+        SEMAPHORE_TYPE_TIMELINE_NV                  0x95B5
+
+    Accepted by the <pname> parameter of SemaphoreParameterui64vNV
+    and GetSemaphoreParameterui64vNV:
+
+        TIMELINE_SEMAPHORE_VALUE_NV                 0x9595
+
+    Accepted by the <pname> parameter to GetIntegerv, GetFloatv, GetDoublev,
+    GetInteger64v, and GetBooleanv:
+
+        MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV  0x95B6
+
+
+Additions to Chapter 4 of the OpenGL 4.6 Specification (Event Model)
+
+    Add the following to section 4.2 Semaphore Objects after paragraph
+    which describes command GenSemaphoresEXT:
+
+        The command
+
+            void CreateSemaphoresNV(sizei n,
+                                    uint *semaphores);
+
+        returns <n> previously unused semaphore names in <semaphores>.
+        The semaphores named contain default state, but initially have no
+        external semaphores associated with them.
+
+    Replace section 4.2.2 Semaphore Parameters with the following:
+
+        Semaphore parameters control the type of the semaphore and how
+        semaphore wait and signal operations behave.
+        Table 4.3 defines which parameters are available for a semaphore
+        based on the external handle type from which it was imported.
+        Semaphore parameters are set using the commands
+
+            void SemaphoreParameterivNV(uint semaphore,
+                                        enum pname,
+                                        const int *params);
+
+        and
+
+            void SemaphoreParameterui64vEXT(uint semaphore,
+                                            enum pname,
+                                            const uint64 *params);
+
+        <semaphore> is the name of the semaphore object on which the
+        parameter <pname> will be set to the value(s) in <pname>.
+
+        Table 4.3: Semaphore parameters
+
+        | Name                        | Handle Types                | Legal Values                         |
+        +-----------------------------+-----------------------------+--------------------------------------+
+        | SEMAPHORE_TYPE_NV           | any handle type             | SEMAPHORE_TYPE_BINARY_NV (default)   |
+        |                             |                             | SEMAPHORE_TYPE_TIMELINE_NV           |
+        +-----------------------------+-----------------------------+--------------------------------------+
+        | TIMELINE_SEMAPHORE_VALUE_NV | any handle type             | any value                            |
+        +-----------------------------+-----------------------------+--------------------------------------+
+
+        The default type of a semaphore is SEMAPHORE_TYPE_BINARY_NV. Only when the semaphore is imported
+        from a D3D fence, the semaphore type defaults to SEMAPHORE_TYPE_TIMELINE_NV.
+
+        Parameters of a semaphore object may be queried with the commands
+
+            void GetSemaphoreParameteriEXT(uint semaphore,
+                                           enum pname,
+                                           uint64 *params);
+
+        and
+
+            void GetSemaphoreParameterui64EXT(uint semaphore,
+                                              enum pname,
+                                              uint64 *params);
+
+        <semaphore> is the semaphore object from with the parameter <pname>
+        is queried.  The value(s) of the parameter are returned in <params>.
+        <pname> may be any value in table 4.3.
+
+    Add the following after the first paragraph of section 4.2.3 "Waiting
+    for Semaphores"
+
+        If <semaphore> is of the type SEMAPHORE_TYPE_TIMELINE_NV, it will
+        reach the signaled state when its value is greater than or equal
+        to the value specified by its TIMELINE_SEMAPHORE_VALUE_NV parameter.
+
+    Add the following at the end of section 4.2.3 "Waiting for Semaphores":
+
+        When using binary semaphores, for every wait on a semaphore there must
+        be a prior signal of that semaphore that will not be consumed by a
+        different wait on the semaphore.
+        When using timeline semaphores, wait-before-signal behavior is
+        well-defined and applications can wait for semaphore before the
+        corresponding semaphore signal operation is flushed.
+
+        MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV indicates the maximum
+        difference allowed by the implementation between the current value
+        of a timeline semaphore and any pending wait operations
+
+    Add the following after the first paragraph of section 4.2.4 "Signaling
+    Semaphores"
+
+        If <semaphore> is of the type SEMAPHORE_TYPE_TIMELINE_NV, its value
+        will be set to the value specified by its TIMELINE_SEMAPHORE_VALUE_NV
+        parameter when the signal operation completes.
+
+    Add the following at the end of section 4.2.4 "Signaling for Semaphores":
+
+        MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV indicates the maximum
+        difference allowed by the implementation between the current value
+        of a timeline semaphore and any pending signal operations.
+
+
+Example
+
+    GLuint semapohre;
+    glCreateSemaphoresNV(1, &semaphore);
+    GLenum semaphoreType = GL_SEMAPHORE_TYPE_TIMELINE_NV;
+    glSemaphoreParameterivNV(semaphore, GL_SEMAPHORE_TYPE_NV, (GLint*)&semaphoreType);
+    glImportSemaphoreFdEXT(semaphore, GL_HANDLE_TYPE_OPAQUE_FD_EXT, fd); // or win32 equivalent
+
+    GLuint64 semaphoreValue = 0;
+
+    while (...) {
+        glSemaphoreParameterui64vEXT(semaphore, GL_TIMELINE_SEMAPHORE_VALUE_NV, &semaphoreValue);
+        glWaitSemaphoreEXT(semaphore, ...);
+
+        ...
+
+        semaphoreValue ++;
+        glSemaphoreParameterui64vEXT(semaphore, GL_TIMELINE_SEMAPHORE_VALUE_NV, &semaphoreValue);
+        glSignalSemaphoreEXT(semaphore, ...);
+    }
+
+    glDeleteSemaphoresEXT(1, &semaphore);
+
+
+Issues
+
+    (1) Should we add client functions to signal and wait for the semaphore on
+        the CPU?
+
+        RESOLVED: No. We already declined to add external Vulkan fence interop
+                  with GL on the basis that you can just do that with Vulkan
+                  if you need it.
+
+    (2) Should GetIntegerv and GetBooleanv be allowed to query
+        MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV?
+
+        RESOLVED: Yes. Although it's dangerous to use them they don't throw an
+                  error but you are advised to use GetInteger64v.
+
+Revision History
+
+    Revision 1, 2020-07-10 (Carsten Rohde)
+        - Initial draft.
diff --git a/extensions/OES/OES_get_program_binary.txt b/extensions/OES/OES_get_program_binary.txt
index 696cb07..8457d07 100644
--- a/extensions/OES/OES_get_program_binary.txt
+++ b/extensions/OES/OES_get_program_binary.txt
@@ -44,8 +44,8 @@
 
 Version
 
-    Last Modified Date: January 11, 2019
-    Revision: #15
+    Last Modified Date: June 24, 2020
+    Revision: #16
 
 Number
 
@@ -352,7 +352,7 @@
             //
             glGetProgramiv(newProgram, GL_PROGRAM_BINARY_LENGTH_OES, &binaryLength);
             binary = (void*)malloc(binaryLength);
-            glGetProgramBinaryOES(newProgram, &binaryLength, NULL, binaryFormat, binary);
+            glGetProgramBinaryOES(newProgram, binaryLength, NULL, binaryFormat, binary);
 
             //
             //  Cache the program binary for future runs
@@ -416,6 +416,8 @@
 
 Revision History
 
+    #16    24/06/2020    Arthur Tombs    Fix typo: pass binaryLength by value
+                                         instead of by pointer in example code
     #15    01/11/2019    Jon Leech       Add an error for ProgramBinary if there
                                          are no binary formats (Bug 16155).
     #14    10/08/2013    Jon Leech       Change GLvoid -> void (Bug 10412).
diff --git a/extensions/QCOM/QCOM_motion_estimation.txt b/extensions/QCOM/QCOM_motion_estimation.txt
new file mode 100644
index 0000000..7ea44e9
--- /dev/null
+++ b/extensions/QCOM/QCOM_motion_estimation.txt
@@ -0,0 +1,185 @@
+Name
+
+    QCOM_motion_estimation
+
+Name Strings
+
+    GL_QCOM_motion_estimation
+
+Contributors
+
+    Jonathan Wicks
+    Sam Holmes
+    Jeff Leger
+
+Contacts
+
+    Jeff Leger  <jleger@qti.qualcomm.com>
+
+Status
+
+    Complete
+
+Version
+
+    Last Modified Date: March 19, 2020
+    Revision: 1.0
+
+Number
+
+    OpenGL ES Extension #326
+
+Dependencies
+
+    Requires OpenGL ES 2.0
+
+    This extension is written against the OpenGL ES 3.2 Specification.
+
+    This extension interacts with OES_EGL_image_external.
+
+Overview
+
+    Motion estimation, also referred to as optical flow, is the process of
+    producing motion vectors that convey the 2D transformation from a reference
+    image to a target image.  There are various uses of motion estimation, such as
+    frame extrapolation, compression, object tracking, etc.
+
+    This extension adds support for motion estimation in OpenGL ES by adding
+    functions which take the reference and target images and populate an
+    output texture containing the corresponding motion vectors.
+
+New Procedures and Functions
+
+    void TexEstimateMotionQCOM(uint ref,
+                               uint target,
+                               uint output);
+
+    void TexEstimateMotionRegionsQCOM(uint ref,
+                                      uint target,
+                                      uint output,
+                                      uint mask);
+
+New Tokens
+
+    Accepted by the <pname> parameter of GetIntegerv, GetInteger64v, and GetFloatv:
+
+        MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM    0x8C90
+        MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM    0x8C91
+
+Additions to the OpenGL ES 3.2 Specification
+
+    Add two new rows in Table 21.40 "Implementation Dependent Values"
+
+    Get Value                              Type     Get Command  Minimum Value   Description           Sec
+    ---------                              ----     -----------  -------------   -----------           ------
+    MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM   Z+      GetIntegerv  1               The block size in X   8.19
+    MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM   Z+      GetIntegerv  1               The block size in Y   8.19
+
+Additions to Chapter 8 of the OpenGL ES 3.2 Specification
+
+    The commands
+
+    void TexEstimateMotionQCOM(uint ref,
+                               uint target,
+                               uint output);
+
+    void TexEstimateMotionRegionsQCOM(uint ref,
+                                      uint target,
+                                      uint output,
+                                      uint mask);
+
+    are called to perfom the motion estimation based on the contents of the two input
+    textures, <ref> and <target>.  The results of the motion estimation are stored in
+    the <output> texture.
+
+    The <ref> and <target> must be either be GL_R8 2D textures, or backed by EGLImages where
+    the underlying format contain a luminance plane.  The <ref> and <target> dimension must
+    be identical and must be an exact multiple of the search block size.  While <ref> and <target>
+    can have multiple levels, the implementation only reads from the base level.
+
+    The resulting motion vectors are stored in a 2D texture <output> of the format GL_RGBA16F,
+    ready to be used by other application shaders and stages.  While <output> can have multiple
+    levels, the implementation only writes to the base level.  The <output> dimensions
+    must be set as follows so that it can hold one vector per search block:
+
+        output.width  = ref.width  / MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM
+        output.height = ref.height / MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM
+
+    Each texel in the <output> texture represents the estimated motion in pixels, for the supported
+    search block size, from the <ref> texture to the <target> target texture.  Implementations may
+    generate sub-pixel motion vectors, in which case the returned vector components may have fractional
+    values.  The motion vector X and Y components are provided in the R and G channels respectively.
+    The B and A components are currently undefined and left for future expansion.  If no motion is
+    detected for a block, or if the <mask> texture indicates that the block should be skipped, then
+    the R and G channels will be set to zero, indicating no motion.
+
+    The <mask> texture is used to control the region-of-interest which can help to reduce the
+    overall workload.  The <mask> texture dimensions must exactly match that of the <output>
+    texture and the format must be GL_R8UI.  While <mask> can have multiple levels, the
+    implementation only reads from the base level.  For any texel with a value of 0 in the <mask>
+    motion estimation will not be performed for the corresponding block.  Any non-zero texel value
+    will produce a motion vector result in the <output> result.  The <mask> only controls the vector
+    basepoint.  Therefore it is possible for an unmasked block to produce a vector that lands in the
+    masked block.
+
+Errors
+
+    INVALID_OPERATION is generated if any of the textures passed in are invalid
+
+    INVALID_OPERATION is generated if the texture types are not TEXTURE_2D or TEXTURE_EXTERNAL_OES
+
+    INVALID_OPERATION is generated if <ref> is not of the format GL_R8, or when backed by an EGLImage,
+    when the underlying internal format does not contain a luminance plane.
+
+    INVALID_OPERATION is generated if <target> is not of the format GL_R8, or when backed by an EGLImage,
+    when the underlying internal format does not contain a luminance plane.
+
+    INVALID_OPERATION is generated if the <ref> and <target> textures do not have
+    identical dimensions
+
+    INVALID_OPERATION is generated if the <output> texture is not of the format GL_RGBA16F
+
+    INVALID_OPERATION is generated if the <mask> texture is not of the format GL_R8UI
+
+    INVALID_OPERATION is generated if the <output> or <mask> dimensions are not
+    ref.[width/height] / MOTION_ESTIMATION_SEARCH_BLOCK_[X,Y]_QCOM
+
+Interactions with OES_EGL_image_external
+
+    If OES_EGL_image_external is supported, then the <ref> and/or <target> parameters to
+    TexEstimateMotionQCOM and TexEstimateMotionRegionsQCOM may be backed by an EGLImage.
+
+Issues
+
+    (1) What should the pixel data of the input textures <ref> and <target> contain?
+
+    Resolved: Motion estimation tracks the brightness across the input textures.  To produce
+    the best results, it is recommended that the texels in the <ref> and <target> textures
+    represent some measure of the luminance/luma.  OpenGL ES does not currently expose
+    a Y8 or Y plane only format, so GL_R8 can be used.  Alternatively, a texture backed by
+    and EGLImage, which has an underlying format where luminance is contained in a separate plane,
+    can also be used.  If starting with an RGBA8 texture one way to convert it to GL_R8 would be
+    to perform a copy and use code such as the following:
+
+        fragColor = rgb_2_yuv(texture(tex, texcoord).rgb, itu_601_full_range).r;\n"
+
+    (2) Why use GL_RGBA16F instead of GL_RG16F for storing the motion vector output?
+
+    Resolved: While only the R and G channels are currently used, it was decided to use
+    a format with more channels for future expansion.  A floating point format was chosen
+    to support implementations with sub-pixel precision without enforcing any particular precision
+    requirements other than what can be represented in a 16-bit floating point number.
+
+    (3) Why is the motion estimation quality not defined?
+
+    Resolved: The intention of this specification is to estimate the motion between
+    the two input textures.  Implementations should aim to produce the highest quality estimations
+    but since the results are estimations there are no prescribed steps for how the vectors
+    must be generated.
+
+
+Revision History
+
+      Rev.  Date        Author          Changes
+      ----  ----------  --------        -----------------------------------------
+      1.0   03/19/2020  Jonathan Wicks  Initial public version
diff --git a/extensions/QCOM/QCOM_shading_rate.txt b/extensions/QCOM/QCOM_shading_rate.txt
index 7fd4630..c2e58b6 100644
--- a/extensions/QCOM/QCOM_shading_rate.txt
+++ b/extensions/QCOM/QCOM_shading_rate.txt
@@ -21,8 +21,8 @@
 
 Version
 
-    Last Modified Date: March 17, 2020
-    Revision: #1
+    Last Modified Date: April 22, 2020
+    Revision: #2
 
 Number
 
@@ -227,7 +227,7 @@
         1x1.
 
         If the <W>x<H> value of SHADING_RATE_QCOM is expressed as <w, h> then the
-        adjusted rate may be any <w', h'> as long as w' <= w and h' <= h.  If
+        adjusted rate may be any <w', h'> as long as (w' * h') <= (w * h).  If
         PRESERVE_SHADING_RATE_ASPECT_RATIO is TRUE, then the implementation further
         guarantees that (w'/h') equals (w/h) or that w'=1 and h'=1.
 
@@ -421,3 +421,5 @@
     Rev.    Date    Author    Changes
     ----  --------  --------  ----------------------------------------------
      1    03/17/20  jleger    Initial draft.
+     2    04/22/20  jleger    Relaxed the <w', h'> guarantee from "w'<=w and
+                              h'<=h" to "w’*h’ <= w*h".
diff --git a/extensions/esext.php b/extensions/esext.php
index 290c8ad..3ed2597 100644
--- a/extensions/esext.php
+++ b/extensions/esext.php
@@ -677,4 +677,14 @@
 </li>
 <li value=325><a href="extensions/QCOM/QCOM_shading_rate.txt">GL_QCOM_shading_rate</a>
 </li>
+<li value=326><a href="extensions/QCOM/QCOM_motion_estimation.txt">GL_QCOM_motion_estimation</a>
+</li>
+<li value=327><a href="extensions/MESA/MESA_framebuffer_flip_x.txt">GL_MESA_framebuffer_flip_x</a>
+</li>
+<li value=328><a href="extensions/MESA/MESA_framebuffer_swap_xy.txt">GL_MESA_framebuffer_swap_xy</a>
+</li>
+<li value=329><a href="extensions/NV/NV_memory_object_sparse.txt">GL_NV_memory_object_sparse</a>
+</li>
+<li value=330><a href="extensions/NV/NV_timeline_semaphore.txt">GL_NV_timeline_semaphore</a>
+</li>
 </ol>
diff --git a/extensions/glext.php b/extensions/glext.php
index 7110dba..e76db85 100644
--- a/extensions/glext.php
+++ b/extensions/glext.php
@@ -1033,4 +1033,12 @@
 </li>
 <li value=547><a href="extensions/INTEL/INTEL_shader_integer_functions2.txt">GL_INTEL_shader_integer_functions2</a>
 </li>
+<li value=548><a href="extensions/MESA/MESA_framebuffer_flip_x.txt">GL_MESA_framebuffer_flip_x</a>
+</li>
+<li value=549><a href="extensions/MESA/MESA_framebuffer_swap_xy.txt">GL_MESA_framebuffer_swap_xy</a>
+</li>
+<li value=550><a href="extensions/NV/NV_memory_object_sparse.txt">GL_NV_memory_object_sparse</a>
+</li>
+<li value=551><a href="extensions/NV/NV_timeline_semaphore.txt">GL_NV_timeline_semaphore</a>
+</li>
 </ol>
diff --git a/extensions/registry.py b/extensions/registry.py
index 60abee2..8f3fa4e 100644
--- a/extensions/registry.py
+++ b/extensions/registry.py
@@ -2989,6 +2989,13 @@
         'supporters' : { 'MESA' },
         'url' : 'extensions/MESA/GLX_MESA_copy_sub_buffer.txt',
     },
+    'GL_MESA_framebuffer_flip_x' : {
+        'number' : 548,
+        'esnumber' : 327,
+        'flags' : { 'public' },
+        'supporters' : { 'MESA' },
+        'url' : 'extensions/MESA/MESA_framebuffer_flip_x.txt',
+    },
     'GL_MESA_framebuffer_flip_y' : {
         'number' : 540,
         'esnumber' : 302,
@@ -2996,6 +3003,13 @@
         'supporters' : { 'MESA' },
         'url' : 'extensions/MESA/MESA_framebuffer_flip_y.txt',
     },
+    'GL_MESA_framebuffer_swap_xy' : {
+        'number' : 549,
+        'esnumber' : 328,
+        'flags' : { 'public' },
+        'supporters' : { 'MESA' },
+        'url' : 'extensions/MESA/MESA_framebuffer_swap_xy.txt',
+    },
     'GL_MESA_pack_invert' : {
         'number' : 300,
         'flags' : { 'public' },
@@ -3517,6 +3531,13 @@
         'supporters' : { 'NVIDIA' },
         'url' : 'extensions/NV/NV_memory_attachment.txt',
     },
+    'GL_NV_memory_object_sparse' : {
+        'number' : 550,
+        'esnumber' : 329,
+        'flags' : { 'public' },
+        'supporters' : { 'NVIDIA' },
+        'url' : 'extensions/NV/NV_memory_object_sparse.txt',
+    },
     'GL_NV_mesh_shader' : {
         'number' : 527,
         'esnumber' : 312,
@@ -3923,6 +3944,13 @@
         'supporters' : { 'NVIDIA' },
         'url' : 'extensions/NV/NV_transform_feedback2.txt',
     },
+    'GL_NV_timeline_semaphore' : {
+        'number' : 551,
+        'esnumber' : 330,
+        'flags' : { 'public' },
+        'supporters' : { 'NVIDIA' },
+        'url' : 'extensions/NV/NV_timeline_semaphore.txt',
+    },
     'GL_NV_uniform_buffer_unified_memory' : {
         'number' : 459,
         'flags' : { 'public' },
@@ -4484,6 +4512,11 @@
         'flags' : { 'public' },
         'url' : 'extensions/QCOM/QCOM_framebuffer_foveated.txt',
     },
+    'GL_QCOM_motion_estimation' : {
+        'esnumber' : 326,
+        'flags' : { 'public' },
+        'url' : 'extensions/QCOM/QCOM_motion_estimation.txt',
+    },
     'GL_QCOM_performance_monitor_global_mode' : {
         'esnumber' : 56,
         'flags' : { 'public' },
diff --git a/index_gl.php b/index_gl.php
index d075085..db44f6b 100644
--- a/index_gl.php
+++ b/index_gl.php
@@ -221,7 +221,7 @@
 <li> <a href="specs/gl/glspec14.pdf"> OpenGL 1.4 API Specification </a>
 <li> <a href="specs/gl/glspec13.pdf"> OpenGL 1.3 API Specification </a>
 <li> <a href="specs/gl/glspec121.pdf"> OpenGL 1.2.1 API Specification </a>
-<li> <a href="specs/gl/glspec11.ps"> OpenGL 1.1 API Specification (PostScript format) </a>
+<li> <a href="specs/gl/glspec11.pdf"> OpenGL 1.1 API Specification </a>
 <li> <a href="specs/gl/glspec10.pdf"> OpenGL 1.0 API Specification </a>
 
 <li> <b> Older GLX Specifications </b>
diff --git a/specs/gl/glspec11.pdf b/specs/gl/glspec11.pdf
new file mode 100644
index 0000000..a50c697
--- /dev/null
+++ b/specs/gl/glspec11.pdf
Binary files differ
diff --git a/xml/Makefile b/xml/Makefile
index 2e2dbd9..815813d 100644
--- a/xml/Makefile
+++ b/xml/Makefile
@@ -1,16 +1,5 @@
-# Copyright (c) 2013-2018 The Khronos Group Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
 
 # Generator scripts and options
 # GENOPTS can be e.g. '-noprotect'
diff --git a/xml/genglvnd.py b/xml/genglvnd.py
index 5b3ab02..49b11e5 100755
--- a/xml/genglvnd.py
+++ b/xml/genglvnd.py
@@ -1,18 +1,7 @@
 #!/usr/bin/env python
 #
-# Copyright (c) 2013-2018 The Khronos Group Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
 
 import sys, time, pdb, string, cProfile
 from reg import *
@@ -75,10 +64,10 @@
 startTime = None
 def startTimer():
     global startTime
-    startTime = time.clock()
+    startTime = time.process_time()
 def endTimer(msg):
     global startTime
-    endTime = time.clock()
+    endTime = time.process_time()
     if (timeit):
         write(msg, endTime - startTime)
         startTime = None
@@ -143,28 +132,9 @@
 # Copyright text prefixing all headers (list of strings).
 prefixStrings = [
     '/*',
-    '** Copyright (c) 2013-2018 The Khronos Group Inc.',
+    '** Copyright 2013-2020 The Khronos Group Inc.',
+    '** SPDX-' + 'License-Identifier: MIT',
     '**',
-    '** Permission is hereby granted, free of charge, to any person obtaining a',
-    '** copy of this software and/or associated documentation files (the',
-    '** "Materials"), to deal in the Materials without restriction, including',
-    '** without limitation the rights to use, copy, modify, merge, publish,',
-    '** distribute, sublicense, and/or sell copies of the Materials, and to',
-    '** permit persons to whom the Materials are furnished to do so, subject to',
-    '** the following conditions:',
-    '**',
-    '** The above copyright notice and this permission notice shall be included',
-    '** in all copies or substantial portions of the Materials.',
-    '**',
-    '** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,',
-    '** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF',
-    '** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.',
-    '** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY',
-    '** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,',
-    '** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE',
-    '** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.',
-    '*/',
-    '/*',
     '** This header is generated from the Khronos OpenGL / OpenGL ES XML',
     '** API Registry. The current version of the Registry, generator scripts',
     '** used to make the header, and the header can be found at',
diff --git a/xml/genheaders.py b/xml/genheaders.py
index bc60b59..f60b9a5 100755
--- a/xml/genheaders.py
+++ b/xml/genheaders.py
@@ -1,18 +1,7 @@
 #!/usr/bin/env python3
 #
-# Copyright (c) 2013-2018 The Khronos Group Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
 
 import sys, time, pdb, string, cProfile
 from reg import *
@@ -41,10 +30,10 @@
 startTime = None
 def startTimer():
     global startTime
-    startTime = time.clock()
+    startTime = time.process_time()
 def endTimer(msg):
     global startTime
-    endTime = time.clock()
+    endTime = time.process_time()
     if (timeit):
         write(msg, endTime - startTime)
         startTime = None
@@ -80,28 +69,9 @@
 # Copyright text prefixing all headers (list of strings).
 prefixStrings = [
     '/*',
-    '** Copyright (c) 2013-2018 The Khronos Group Inc.',
+    '** Copyright 2013-2020 The Khronos Group Inc.',
+    '** SPDX-' + 'License-Identifier: MIT',
     '**',
-    '** Permission is hereby granted, free of charge, to any person obtaining a',
-    '** copy of this software and/or associated documentation files (the',
-    '** "Materials"), to deal in the Materials without restriction, including',
-    '** without limitation the rights to use, copy, modify, merge, publish,',
-    '** distribute, sublicense, and/or sell copies of the Materials, and to',
-    '** permit persons to whom the Materials are furnished to do so, subject to',
-    '** the following conditions:',
-    '**',
-    '** The above copyright notice and this permission notice shall be included',
-    '** in all copies or substantial portions of the Materials.',
-    '**',
-    '** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,',
-    '** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF',
-    '** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.',
-    '** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY',
-    '** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,',
-    '** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE',
-    '** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.',
-    '*/',
-    '/*',
     '** This header is generated from the Khronos OpenGL / OpenGL ES XML',
     '** API Registry. The current version of the Registry, generator scripts',
     '** used to make the header, and the header can be found at',
diff --git a/xml/gl.xml b/xml/gl.xml
index 2250fc0..10f1448 100644
--- a/xml/gl.xml
+++ b/xml/gl.xml
@@ -1,27 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <registry>
     <comment>
-Copyright (c) 2013-2019 The Khronos Group Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-------------------------------------------------------------------------
+Copyright 2013-2020 The Khronos Group Inc.
+SPDX-License-Identifier: Apache-2.0
 
 This file, gl.xml, is the OpenGL and OpenGL API Registry. The canonical
 version of the registry, together with documentation, schema, and Python
 generator scripts used to generate C header files for OpenGL and OpenGL ES,
 can always be found in the Khronos Registry at
-        https://github.com/KhronosGroup/OpenGL-Registry
+https://github.com/KhronosGroup/OpenGL-Registry
     </comment>
 
     <!-- SECTION: GL type definitions. -->
@@ -7524,7 +7511,7 @@
         <enum value="0x84FF" name="GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT" alias="GL_MAX_TEXTURE_MAX_ANISOTROPY"/>
         <enum value="0x8500" name="GL_TEXTURE_FILTER_CONTROL"/>
         <enum value="0x8500" name="GL_TEXTURE_FILTER_CONTROL_EXT"/>
-        <enum value="0x8501" name="GL_TEXTURE_LOD_BIAS" group="TextureParameterName"/>
+        <enum value="0x8501" name="GL_TEXTURE_LOD_BIAS" group="TextureParameterName,SamplerParameterF"/>
         <enum value="0x8501" name="GL_TEXTURE_LOD_BIAS_EXT"/>
         <enum value="0x8502" name="GL_MODELVIEW1_STACK_DEPTH_EXT"/>
         <enum value="0x8503" name="GL_COMBINE4_NV"/>
@@ -9291,6 +9278,8 @@
         <enum value="0x8BB9" name="GL_TILE_RASTER_ORDER_INCREASING_X_MESA"/>
         <enum value="0x8BBA" name="GL_TILE_RASTER_ORDER_INCREASING_Y_MESA"/>
         <enum value="0x8BBB" name="GL_FRAMEBUFFER_FLIP_Y_MESA"/>
+        <enum value="0x8BBC" name="GL_FRAMEBUFFER_FLIP_X_MESA" />
+        <enum value="0x8BBD" name="GL_FRAMEBUFFER_SWAP_XY_MESA" />
     </enums>
 
     <enums namespace="GL" start="0x8BC0" end="0x8BFF" vendor="QCOM" comment="Reassigned from AMD to QCOM">
@@ -9377,7 +9366,7 @@
         <enum value="0x8C29" name="GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB"/>
         <enum value="0x8C29" name="GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT"/>
         <enum value="0x8C29" name="GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES"/>
-        <enum value="0x8C2A" name="GL_TEXTURE_BUFFER" group="CopyBufferSubDataTarget,BufferTargetARB,BufferStorageTarget"/>
+        <enum value="0x8C2A" name="GL_TEXTURE_BUFFER" group="TextureTarget,CopyBufferSubDataTarget,BufferTargetARB,BufferStorageTarget"/>
         <enum value="0x8C2A" name="GL_TEXTURE_BUFFER_ARB"/>
         <enum value="0x8C2A" name="GL_TEXTURE_BUFFER_EXT"/>
         <enum value="0x8C2A" name="GL_TEXTURE_BUFFER_OES"/>
@@ -9526,7 +9515,8 @@
     </enums>
 
     <enums namespace="GL" start="0x8C90" end="0x8C9F" vendor="QCOM" comment="For Affie Munshi. Reassigned from AMD to QCOM (bug 5874)">
-            <unused start="0x8C90" end="0x8C91" vendor="QCOM"/>
+        <enum value="0x8C90" name="GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM" group="GetPName"/>
+        <enum value="0x8C91" name="GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM" group="GetPName"/>
         <enum value="0x8C92" name="GL_ATC_RGB_AMD"/>
         <enum value="0x8C93" name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD"/>
             <unused start="0x8C94" end="0x8C9F" vendor="QCOM"/>
@@ -9695,7 +9685,7 @@
         <enum value="0x8CFD" name="GL_COLOR_ATTACHMENT29" group="ColorBuffer,DrawBufferMode,FramebufferAttachment,InvalidateFramebufferAttachment"/>
         <enum value="0x8CFE" name="GL_COLOR_ATTACHMENT30" group="ColorBuffer,DrawBufferMode,FramebufferAttachment,InvalidateFramebufferAttachment"/>
         <enum value="0x8CFF" name="GL_COLOR_ATTACHMENT31" group="ColorBuffer,DrawBufferMode,FramebufferAttachment,InvalidateFramebufferAttachment"/>
-        <enum value="0x8D00" name="GL_DEPTH_ATTACHMENT" group="InvalidateFramebufferAttachment"/>
+        <enum value="0x8D00" name="GL_DEPTH_ATTACHMENT" group="InvalidateFramebufferAttachment,FramebufferAttachment"/>
         <enum value="0x8D00" name="GL_DEPTH_ATTACHMENT_EXT" group="InvalidateFramebufferAttachment"/>
         <enum value="0x8D00" name="GL_DEPTH_ATTACHMENT_OES" group="InvalidateFramebufferAttachment"/>
             <unused start="0x8D01" end="0x8D1F" vendor="ARB" comment="For depth attachments 16-31"/>
@@ -10196,10 +10186,10 @@
         <enum value="0x8E88" name="GL_TESS_CONTROL_SHADER" group="PipelineParameterName,ShaderType"/>
         <enum value="0x8E88" name="GL_TESS_CONTROL_SHADER_EXT"/>
         <enum value="0x8E88" name="GL_TESS_CONTROL_SHADER_OES"/>
-        <enum value="0x8E89" name="GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS"/>
+        <enum value="0x8E89" name="GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS" group="GetPName"/>
         <enum value="0x8E89" name="GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT"/>
         <enum value="0x8E89" name="GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES"/>
-        <enum value="0x8E8A" name="GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS"/>
+        <enum value="0x8E8A" name="GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS" group="GetPName"/>
         <enum value="0x8E8A" name="GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT"/>
         <enum value="0x8E8A" name="GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES"/>
             <unused start="0x8E8B" vendor="NV"/>
@@ -10804,7 +10794,7 @@
         <enum value="0x9124" name="GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT"/>
         <enum value="0x9124" name="GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES"/>
         <enum value="0x9125" name="GL_MAX_FRAGMENT_INPUT_COMPONENTS" group="GetPName"/>
-        <enum value="0x9126" name="GL_CONTEXT_PROFILE_MASK"/>
+        <enum value="0x9126" name="GL_CONTEXT_PROFILE_MASK" group="GetPName"/>
         <enum value="0x9127" name="GL_UNPACK_COMPRESSED_BLOCK_WIDTH"/>
         <enum value="0x9128" name="GL_UNPACK_COMPRESSED_BLOCK_HEIGHT"/>
         <enum value="0x9129" name="GL_UNPACK_COMPRESSED_BLOCK_DEPTH"/>
@@ -11568,6 +11558,7 @@
         <enum value="0x9593" name="GL_LAYOUT_TRANSFER_DST_EXT" group="TextureLayout"/>
         <enum value="0x9594" name="GL_HANDLE_TYPE_D3D12_FENCE_EXT" group="ExternalHandleType"/>
         <enum value="0x9595" name="GL_D3D12_FENCE_VALUE_EXT" group="SemaphoreParameterName"/>
+        <enum value="0x9595" name="GL_TIMELINE_SEMAPHORE_VALUE_NV" group="SemaphoreParameterName"/>
         <enum value="0x9596" name="GL_NUM_DEVICE_UUIDS_EXT" group="GetPName"/>
         <enum value="0x9597" name="GL_DEVICE_UUID_EXT" group="GetPName"/>
         <enum value="0x9598" name="GL_DRIVER_UUID_EXT" group="GetPName"/>
@@ -11595,7 +11586,12 @@
         <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="0x9581" end="0x962F" vendor="NV"/>
+        <unused start="0x95B1" end="0x95B2" vendor="NV"/>
+        <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"/>
+        <enum value="0x95B6" name="GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV" group="GetPName"/>
+        <unused start="0x95B7" end="0x962F" vendor="NV"/>
     </enums>
 
     <enums namespace="GL" start="0x9630" end="0x963F" vendor="Oculus" comment="Email from Cass Everitt">
@@ -12809,6 +12805,15 @@
             <param group="Boolean"><ptype>GLboolean</ptype> <name>commit</name></param>
         </command>
         <command>
+            <proto>void <name>glBufferPageCommitmentMemNV</name></proto>
+            <param group="BufferStorageTarget"><ptype>GLenum</ptype> <name>target</name></param>
+            <param><ptype>GLintptr</ptype> <name>offset</name></param>
+            <param><ptype>GLsizeiptr</ptype> <name>size</name></param>
+            <param><ptype>GLuint</ptype> <name>memory</name></param>
+            <param><ptype>GLuint64</ptype> <name>memOffset</name></param>
+            <param group="Boolean"><ptype>GLboolean</ptype> <name>commit</name></param>
+        </command>
+        <command>
             <proto>void <name>glBufferParameteriAPPLE</name></proto>
             <param><ptype>GLenum</ptype> <name>target</name></param>
             <param><ptype>GLenum</ptype> <name>pname</name></param>
@@ -14964,6 +14969,11 @@
             <param len="n"><ptype>GLuint</ptype> *<name>samplers</name></param>
         </command>
         <command>
+            <proto>void <name>glCreateSemaphoresNV</name></proto>
+            <param><ptype>GLsizei</ptype> <name>n</name></param>
+            <param len="n"><ptype>GLuint</ptype> *<name>semaphores</name></param>
+        </command>
+        <command>
             <proto><ptype>GLuint</ptype> <name>glCreateShader</name></proto>
             <param group="ShaderType"><ptype>GLenum</ptype> <name>type</name></param>
         </command>
@@ -18776,37 +18786,37 @@
         <command>
             <proto>void <name>glGetNamedBufferParameteri64v</name></proto>
             <param><ptype>GLuint</ptype> <name>buffer</name></param>
-            <param group="VertexBufferObjectParameter"><ptype>GLenum</ptype> <name>pname</name></param>
+            <param group="BufferPNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
             <param><ptype>GLint64</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetNamedBufferParameteriv</name></proto>
             <param><ptype>GLuint</ptype> <name>buffer</name></param>
-            <param group="VertexBufferObjectParameter"><ptype>GLenum</ptype> <name>pname</name></param>
+            <param group="BufferPNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
             <param><ptype>GLint</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetNamedBufferParameterivEXT</name></proto>
             <param><ptype>GLuint</ptype> <name>buffer</name></param>
-            <param group="VertexBufferObjectParameter"><ptype>GLenum</ptype> <name>pname</name></param>
+            <param group="BufferPNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
             <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetNamedBufferParameterui64vNV</name></proto>
             <param><ptype>GLuint</ptype> <name>buffer</name></param>
-            <param group="VertexBufferObjectParameter"><ptype>GLenum</ptype> <name>pname</name></param>
+            <param group="BufferPNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
             <param len="COMPSIZE(pname)"><ptype>GLuint64EXT</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetNamedBufferPointerv</name></proto>
             <param><ptype>GLuint</ptype> <name>buffer</name></param>
-            <param group="VertexBufferObjectParameter"><ptype>GLenum</ptype> <name>pname</name></param>
+            <param group="BufferPointerNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
             <param>void **<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetNamedBufferPointervEXT</name></proto>
             <param><ptype>GLuint</ptype> <name>buffer</name></param>
-            <param group="VertexBufferObjectParameter"><ptype>GLenum</ptype> <name>pname</name></param>
+            <param group="BufferPointerNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
             <param len="1">void **<name>params</name></param>
         </command>
         <command>
@@ -19707,6 +19717,12 @@
             <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
         </command>
         <command>
+            <proto>void <name>glGetSemaphoreParameterivNV</name></proto>
+            <param><ptype>GLuint</ptype> <name>semaphore</name></param>
+            <param group="SemaphoreParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+            <param><ptype>GLint</ptype> *<name>params</name></param>
+        </command>
+        <command>
             <proto>void <name>glGetSemaphoreParameterui64vEXT</name></proto>
             <param><ptype>GLuint</ptype> <name>semaphore</name></param>
             <param group="SemaphoreParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
@@ -19793,6 +19809,11 @@
             <proto><ptype>GLushort</ptype> <name>glGetStageIndexNV</name></proto>
             <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
         </command>
+        <!-- These commands represent strings as GLubyte* instead of GLchar* as represented elsewhere.
+             While functionally the same, these commands continue to use GLubyte* as there's no way to
+             change the signature of these commands without potentially breaking lots of applications
+             using these APIs. For more information, see public issue 363:
+             https://github.com/KhronosGroup/OpenGL-Registry/issues/363 -->
         <command>
             <proto group="String">const <ptype>GLubyte</ptype> *<name>glGetString</name></proto>
             <param group="StringName"><ptype>GLenum</ptype> <name>name</name></param>
@@ -20181,7 +20202,7 @@
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
             <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
             <param len="1"><ptype>GLsizei</ptype> *<name>size</name></param>
-            <param group="GlslTypeToken" len="1"><ptype>GLenum</ptype> *<name>type</name></param>
+            <param group="AttributeType" len="1"><ptype>GLenum</ptype> *<name>type</name></param>
             <param len="bufSize"><ptype>GLchar</ptype> *<name>name</name></param>
             <glx type="single" opcode="213"/>
         </command>
@@ -20192,7 +20213,7 @@
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
             <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
             <param len="1"><ptype>GLsizei</ptype> *<name>size</name></param>
-            <param group="GlslTypeToken" len="1"><ptype>GLenum</ptype> *<name>type</name></param>
+            <param group="AttributeType" len="1"><ptype>GLenum</ptype> *<name>type</name></param>
             <param len="bufSize"><ptype>GLchar</ptype> *<name>name</name></param>
             <alias name="glGetTransformFeedbackVarying"/>
         </command>
@@ -22589,7 +22610,7 @@
             <param len="COMPSIZE(drawcount)">const <ptype>GLsizei</ptype> *<name>count</name></param>
             <param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
             <param len="COMPSIZE(drawcount)">const void *const*<name>indices</name></param>
-            <param><ptype>GLsizei</ptype> <name>primcount</name></param>
+            <param><ptype>GLsizei</ptype> <name>drawcount</name></param>
             <param len="COMPSIZE(drawcount)">const <ptype>GLint</ptype> *<name>basevertex</name></param>
             <alias name="glMultiDrawElementsBaseVertex"/>
         </command>
@@ -23742,6 +23763,15 @@
             <param group="Boolean"><ptype>GLboolean</ptype> <name>commit</name></param>
         </command>
         <command>
+            <proto>void <name>glNamedBufferPageCommitmentMemNV</name></proto>
+            <param><ptype>GLuint</ptype> <name>buffer</name></param>
+            <param><ptype>GLintptr</ptype> <name>offset</name></param>
+            <param><ptype>GLsizeiptr</ptype> <name>size</name></param>
+            <param><ptype>GLuint</ptype> <name>memory</name></param>
+            <param><ptype>GLuint64</ptype> <name>memOffset</name></param>
+            <param group="Boolean"><ptype>GLboolean</ptype> <name>commit</name></param>
+        </command>
+        <command>
             <proto>void <name>glNamedBufferStorage</name></proto>
             <param><ptype>GLuint</ptype> <name>buffer</name></param>
             <param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
@@ -27754,6 +27784,12 @@
             <param len="numCounters"><ptype>GLuint</ptype> *<name>counterList</name></param>
         </command>
         <command>
+            <proto>void <name>glSemaphoreParameterivNV</name></proto>
+            <param><ptype>GLuint</ptype> <name>semaphore</name></param>
+            <param group="SemaphoreParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+            <param>const <ptype>GLint</ptype> *<name>params</name></param>
+        </command>
+        <command>
             <proto>void <name>glSemaphoreParameterui64vEXT</name></proto>
             <param><ptype>GLuint</ptype> <name>semaphore</name></param>
             <param group="SemaphoreParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
@@ -28865,6 +28901,19 @@
             <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
         </command>
         <command>
+            <proto>void <name>glTexEstimateMotionQCOM</name></proto>
+            <param group="Texture"><ptype>GLuint</ptype> <name>ref</name></param>
+            <param group="Texture"><ptype>GLuint</ptype> <name>target</name></param>
+            <param group="Texture"><ptype>GLuint</ptype> <name>output</name></param>
+        </command>
+        <command>
+            <proto>void <name>glTexEstimateMotionRegionsQCOM</name></proto>
+            <param group="Texture"><ptype>GLuint</ptype> <name>ref</name></param>
+            <param group="Texture"><ptype>GLuint</ptype> <name>target</name></param>
+            <param group="Texture"><ptype>GLuint</ptype> <name>output</name></param>
+            <param group="Texture"><ptype>GLuint</ptype> <name>mask</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>
@@ -29101,6 +29150,21 @@
             <alias name="glTexPageCommitmentARB"/>
         </command>
         <command>
+            <proto>void <name>glTexPageCommitmentMemNV</name></proto>
+            <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+            <param><ptype>GLint</ptype> <name>layer</name></param>
+            <param><ptype>GLint</ptype> <name>level</name></param>
+            <param><ptype>GLint</ptype> <name>xoffset</name></param>
+            <param><ptype>GLint</ptype> <name>yoffset</name></param>
+            <param><ptype>GLint</ptype> <name>zoffset</name></param>
+            <param><ptype>GLsizei</ptype> <name>width</name></param>
+            <param><ptype>GLsizei</ptype> <name>height</name></param>
+            <param><ptype>GLsizei</ptype> <name>depth</name></param>
+            <param><ptype>GLuint</ptype> <name>memory</name></param>
+            <param><ptype>GLuint64</ptype> <name>offset</name></param>
+            <param group="Boolean"><ptype>GLboolean</ptype> <name>commit</name></param>
+        </command>
+        <command>
             <proto>void <name>glTexParameterIiv</name></proto>
             <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
             <param group="TextureParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
@@ -29629,6 +29693,21 @@
             <param group="Boolean"><ptype>GLboolean</ptype> <name>commit</name></param>
         </command>
         <command>
+            <proto>void <name>glTexturePageCommitmentMemNV</name></proto>
+            <param><ptype>GLuint</ptype> <name>texture</name></param>
+            <param><ptype>GLint</ptype> <name>layer</name></param>
+            <param><ptype>GLint</ptype> <name>level</name></param>
+            <param><ptype>GLint</ptype> <name>xoffset</name></param>
+            <param><ptype>GLint</ptype> <name>yoffset</name></param>
+            <param><ptype>GLint</ptype> <name>zoffset</name></param>
+            <param><ptype>GLsizei</ptype> <name>width</name></param>
+            <param><ptype>GLsizei</ptype> <name>height</name></param>
+            <param><ptype>GLsizei</ptype> <name>depth</name></param>
+            <param><ptype>GLuint</ptype> <name>memory</name></param>
+            <param><ptype>GLuint64</ptype> <name>offset</name></param>
+            <param group="Boolean"><ptype>GLboolean</ptype> <name>commit</name></param>
+        </command>
+        <command>
             <proto>void <name>glTextureParameterIiv</name></proto>
             <param><ptype>GLuint</ptype> <name>texture</name></param>
             <param group="TextureParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
@@ -32678,7 +32757,7 @@
             <proto>void <name>glVertexAttribIPointer</name></proto>
             <param><ptype>GLuint</ptype> <name>index</name></param>
             <param><ptype>GLint</ptype> <name>size</name></param>
-            <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
+            <param group="VertexAttribIType"><ptype>GLenum</ptype> <name>type</name></param>
             <param><ptype>GLsizei</ptype> <name>stride</name></param>
             <param len="COMPSIZE(size,type,stride)">const void *<name>pointer</name></param>
         </command>
@@ -32686,7 +32765,7 @@
             <proto>void <name>glVertexAttribIPointerEXT</name></proto>
             <param><ptype>GLuint</ptype> <name>index</name></param>
             <param><ptype>GLint</ptype> <name>size</name></param>
-            <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
+            <param group="VertexAttribIType"><ptype>GLenum</ptype> <name>type</name></param>
             <param><ptype>GLsizei</ptype> <name>stride</name></param>
             <param len="COMPSIZE(size,type,stride)">const void *<name>pointer</name></param>
             <alias name="glVertexAttribIPointer"/>
@@ -32911,7 +32990,7 @@
             <proto>void <name>glVertexAttribLPointer</name></proto>
             <param><ptype>GLuint</ptype> <name>index</name></param>
             <param><ptype>GLint</ptype> <name>size</name></param>
-            <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
+            <param group="VertexAttribLType"><ptype>GLenum</ptype> <name>type</name></param>
             <param><ptype>GLsizei</ptype> <name>stride</name></param>
             <param len="size">const void *<name>pointer</name></param>
         </command>
@@ -32919,7 +32998,7 @@
             <proto>void <name>glVertexAttribLPointerEXT</name></proto>
             <param><ptype>GLuint</ptype> <name>index</name></param>
             <param><ptype>GLint</ptype> <name>size</name></param>
-            <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
+            <param group="VertexAttribLType"><ptype>GLenum</ptype> <name>type</name></param>
             <param><ptype>GLsizei</ptype> <name>stride</name></param>
             <param len="size">const void *<name>pointer</name></param>
             <alias name="glVertexAttribLPointer"/>
@@ -45740,6 +45819,10 @@
                 <command name="glFramebufferTexture2DMultisampleEXT"/>
             </require>
         </extension>
+        <extension name="GL_EXT_multisampled_render_to_texture2" supported="gles2">
+            <require>
+            </require>
+        </extension>
         <extension name="GL_EXT_multiview_draw_buffers" supported="gles2">
             <require>
                 <enum name="GL_COLOR_ATTACHMENT_EXT"/>
@@ -46818,6 +46901,18 @@
                 <command name="glTextureViewEXT"/>
             </require>
         </extension>
+        <extension name="GL_NV_timeline_semaphore" supported="gl|gles2">
+            <require>
+                <enum name="GL_TIMELINE_SEMAPHORE_VALUE_NV"/>
+                <enum name="GL_SEMAPHORE_TYPE_NV"/>
+                <enum name="GL_SEMAPHORE_TYPE_BINARY_NV"/>
+                <enum name="GL_SEMAPHORE_TYPE_TIMELINE_NV"/>
+                <enum name="GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV"/>
+                <command name="glCreateSemaphoresNV"/>
+                <command name="glSemaphoreParameterivNV"/>
+                <command name="glGetSemaphoreParameterivNV"/>
+            </require>
+        </extension>
         <extension name="GL_EXT_timer_query" supported="gl">
             <require>
                 <enum name="GL_TIME_ELAPSED_EXT"/>
@@ -47724,6 +47819,11 @@
                 <enum name="GL_TEXTURE_2D_STACK_BINDING_MESAX"/>
             </require>
         </extension>
+        <extension name="GL_MESA_framebuffer_flip_x" supported="gl|glcore|gles2">
+            <require>
+                <enum name="GL_FRAMEBUFFER_FLIP_X_MESA"/>
+            </require>
+        </extension>
         <extension name="GL_MESA_framebuffer_flip_y" supported="gl|glcore|gles2">
             <require>
                 <enum name="GL_FRAMEBUFFER_FLIP_Y_MESA"/>
@@ -47731,6 +47831,11 @@
                 <command name="glGetFramebufferParameterivMESA"/>
             </require>
         </extension>
+        <extension name="GL_MESA_framebuffer_swap_xy" supported="gl|glcore|gles2">
+            <require>
+                <enum name="GL_FRAMEBUFFER_SWAP_XY_MESA"/>
+            </require>
+        </extension>
         <extension name="GL_MESA_pack_invert" supported="gl">
             <require>
                 <enum name="GL_PACK_INVERT_MESA"/>
@@ -48625,6 +48730,16 @@
                 <command name="glNamedBufferAttachMemoryNV"/>
             </require>
         </extension>
+        <extension name="GL_NV_memory_object_sparse" supported="gl|glcore|gles2">
+            <require>
+                <command name="glBufferPageCommitmentMemNV"/>
+                <command name="glTexPageCommitmentMemNV"/>
+            </require>
+            <require comment="Supported only if GL_EXT_direct_state_access is supported">
+                <command name="glNamedBufferPageCommitmentMemNV"/>
+                <command name="glTexturePageCommitmentMemNV"/>
+            </require>
+        </extension>
         <extension name="GL_NV_mesh_shader" supported="gl|glcore|gles2">
             <require>
                 <enum name="GL_MESH_SHADER_NV"/>
@@ -50956,6 +51071,15 @@
                 <command name="glFramebufferFoveationParametersQCOM"/>
             </require>
         </extension>
+        <extension name="GL_QCOM_motion_estimation" supported="gles2">
+            <require>
+                <enum name="GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM"/>
+                <enum name="GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM"/>
+                <enum name="GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM"/>
+                <command name="glTexEstimateMotionQCOM"/>
+                <command name="glTexEstimateMotionRegionsQCOM"/>
+            </require>
+        </extension>
         <extension name="GL_QCOM_texture_foveated" supported="gles2">
             <require>
                 <enum name="GL_FOVEATION_ENABLE_BIT_QCOM"/>
diff --git a/xml/glx.xml b/xml/glx.xml
index 4ee1cae..797d51d 100644
--- a/xml/glx.xml
+++ b/xml/glx.xml
@@ -1,27 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <registry>
     <comment>
-Copyright (c) 2013-2019 The Khronos Group Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-------------------------------------------------------------------------
+Copyright 2013-2020 The Khronos Group Inc.
+SPDX-License-Identifier: Apache-2.0
 
 This file, glx.xml, is the GLX API Registry. The canonical version of the
 registry, together with documentation, schema, and Python generator scripts
 used to generate C header files for GLX, can always be found in the Khronos
-Registry at
-        https://github.com/KhronosGroup/OpenGL-Registry
+Registry at https://github.com/KhronosGroup/OpenGL-Registry
     </comment>
 
     <!-- SECTION: GLX type definitions. Does not include X or GL types. -->
diff --git a/xml/reg.py b/xml/reg.py
index 9e31e39..f5c0455 100755
--- a/xml/reg.py
+++ b/xml/reg.py
@@ -1,18 +1,7 @@
 #!/usr/bin/python3 -i
 #
-# Copyright (c) 2013-2018 The Khronos Group Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
 
 import io,os,re,string,sys
 from lxml import etree
diff --git a/xml/registry.rnc b/xml/registry.rnc
index 24aceef..9a5dfc2 100644
--- a/xml/registry.rnc
+++ b/xml/registry.rnc
@@ -1,16 +1,5 @@
-# Copyright (c) 2013-2018 The Khronos Group Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# Copyright 2013-2020 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
 
 # Relax NG schema for Khronos Registry XML
 # See https://github.com/KhronosGroup/OpenGL-Registry
diff --git a/xml/wgl.xml b/xml/wgl.xml
index 88922eb..189b369 100644
--- a/xml/wgl.xml
+++ b/xml/wgl.xml
@@ -1,29 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <registry>
     <comment>
-Copyright (c) 2013-2019 The Khronos Group Inc.
+Copyright 2013-2020 The Khronos Group Inc.
+SPDX-License-Identifier: Apache-2.0
 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-------------------------------------------------------------------------
-
-This file, wgl.xml, is the WGL API Registry. The older ".spec" file
-format has been retired and will no longer be updated with new
-extensions and API versions. The canonical version of the registry,
-together with documentation, schema, and Python generator scripts used
-to generate C header files for WGL, can always be found in the Khronos
-Registry at
-        https://github.com/KhronosGroup/OpenGL-Registry
+This file, wgl.xml, is the WGL API Registry. The canonical version of the
+registry, together with documentation, schema, and Python generator scripts
+used to generate C header files for WGL, can always be found in the Khronos
+Registry at https://github.com/KhronosGroup/OpenGL-Registry
     </comment>
 
     <!-- SECTION: WGL type definitions. Does not include base Windows types. -->