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 d558234..4eef9df 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. -->
