summaryrefslogtreecommitdiff
path: root/lib/mesa/src/mapi
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2017-12-31 06:39:08 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2017-12-31 06:39:08 +0000
commit2dae6fe6f74cf7fb9fd65285302c0331d9786b00 (patch)
tree04651e732331dc50a34e063cbaa0c394ccfcd327 /lib/mesa/src/mapi
parentb90fb74e3c85f2799d21d1e07bf91c5fb8359eb8 (diff)
Import Mesa 17.2.8
Diffstat (limited to 'lib/mesa/src/mapi')
-rw-r--r--lib/mesa/src/mapi/entry.c14
-rw-r--r--lib/mesa/src/mapi/entry_ppc64le_tls.h152
-rw-r--r--lib/mesa/src/mapi/entry_ppc64le_tsd.h210
-rw-r--r--lib/mesa/src/mapi/glapi/gen/APPLE_vertex_array_object.xml8
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_bindless_texture.xml100
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_blend_func_extended.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_clip_control.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_compute_shader.xml4
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_compute_variable_group_size.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_copy_buffer.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_copy_image.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_direct_state_access.xml58
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml6
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_framebuffer_object.xml14
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_invalidate_subdata.xml4
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_map_buffer_range.xml4
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_multi_bind.xml4
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_sampler_objects.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_shader_image_load_store.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_shader_storage_buffer_object.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_sync.xml4
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_uniform_buffer_object.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_64bit.xml2
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml4
-rw-r--r--lib/mesa/src/mapi/glapi/gen/ARB_viewport_array.xml24
-rw-r--r--lib/mesa/src/mapi/glapi/gen/es_EXT.xml3
-rw-r--r--lib/mesa/src/mapi/glapi/glapi.c2
-rw-r--r--lib/mesa/src/mapi/mapi_glapi.c2
-rw-r--r--lib/mesa/src/mapi/shared-glapi/SConscript2
-rw-r--r--lib/mesa/src/mapi/table.h10
-rw-r--r--lib/mesa/src/mapi/u_current.c20
-rw-r--r--lib/mesa/src/mapi/u_current.h15
32 files changed, 576 insertions, 108 deletions
diff --git a/lib/mesa/src/mapi/entry.c b/lib/mesa/src/mapi/entry.c
index 27d0db40e..1e250122c 100644
--- a/lib/mesa/src/mapi/entry.c
+++ b/lib/mesa/src/mapi/entry.c
@@ -25,8 +25,12 @@
* Chia-I Wu <olv@lunarg.com>
*/
+#include <stdlib.h>
+#include <stdint.h>
+
#include "entry.h"
#include "u_current.h"
+#include "util/u_endian.h"
#define _U_STRINGIFY(x) #x
#define U_STRINGIFY(x) _U_STRINGIFY(x)
@@ -49,11 +53,15 @@
# endif
#elif defined(USE_X86_64_ASM) && defined(__GNUC__) && defined(GLX_USE_TLS)
# include "entry_x86-64_tls.h"
+#elif defined(USE_PPC64LE_ASM) && defined(__GNUC__) && defined(PIPE_ARCH_LITTLE_ENDIAN)
+# ifdef GLX_USE_TLS
+# include "entry_ppc64le_tls.h"
+# else
+# include "entry_ppc64le_tsd.h"
+# endif
#else
-#include <stdlib.h>
-
-static inline const struct mapi_table *
+static inline const struct _glapi_table *
entry_current_get(void)
{
#ifdef MAPI_MODE_BRIDGE
diff --git a/lib/mesa/src/mapi/entry_ppc64le_tls.h b/lib/mesa/src/mapi/entry_ppc64le_tls.h
new file mode 100644
index 000000000..e09a1178a
--- /dev/null
+++ b/lib/mesa/src/mapi/entry_ppc64le_tls.h
@@ -0,0 +1,152 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 2017 Red Hat
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is 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 Software.
+ *
+ * THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ * Ben Crocker <bcrocker@redhat.com>
+ */
+
+#ifdef HAVE_FUNC_ATTRIBUTE_VISIBILITY
+#define HIDDEN __attribute__((visibility("hidden")))
+#else
+#define HIDDEN
+#endif
+
+// NOTE: These must be powers of two:
+#define PPC64LE_ENTRY_SIZE 64
+#define PPC64LE_PAGE_ALIGN 65536
+#if ((PPC64LE_ENTRY_SIZE & (PPC64LE_ENTRY_SIZE - 1)) != 0)
+#error PPC64LE_ENTRY_SIZE must be a power of two!
+#endif
+#if ((PPC64LE_PAGE_ALIGN & (PPC64LE_PAGE_ALIGN - 1)) != 0)
+#error PPC64LE_PAGE_ALIGN must be a power of two!
+#endif
+
+__asm__(".text\n"
+ ".balign " U_STRINGIFY(PPC64LE_ENTRY_SIZE) "\n"
+ "ppc64le_entry_start:");
+
+#define STUB_ASM_ENTRY(func) \
+ ".globl " func "\n" \
+ ".type " func ", @function\n" \
+ ".balign " U_STRINGIFY(PPC64LE_ENTRY_SIZE) "\n" \
+ func ":\n\t" \
+ " addis 2, 12, .TOC.-" func "@ha\n\t" \
+ " addi 2, 2, .TOC.-" func "@l\n\t" \
+ " .localentry " func ", .-" func "\n\t"
+
+#define STUB_ASM_CODE(slot) \
+ " addis 11, 2, " ENTRY_CURRENT_TABLE "@got@tprel@ha\n\t" \
+ " ld 11, " ENTRY_CURRENT_TABLE "@got@tprel@l(11)\n\t" \
+ " add 11, 11," ENTRY_CURRENT_TABLE "@tls\n\t" \
+ " ld 11, 0(11)\n\t" \
+ " ld 12, " slot "*8(11)\n\t" \
+ " mtctr 12\n\t" \
+ " bctr\n" \
+
+#define MAPI_TMP_STUB_ASM_GCC
+#include "mapi_tmp.h"
+
+#ifndef MAPI_MODE_BRIDGE
+
+#include <string.h>
+#include "u_execmem.h"
+
+void
+entry_patch_public(void)
+{
+}
+
+extern char
+ppc64le_entry_start[] HIDDEN;
+
+mapi_func
+entry_get_public(int slot)
+{
+ return (mapi_func) (ppc64le_entry_start + slot * PPC64LE_ENTRY_SIZE);
+}
+
+__asm__(".text\n");
+
+__asm__("ppc64le_dispatch_tls:\n\t"
+ " addis 3, 2, " ENTRY_CURRENT_TABLE "@got@tprel@ha\n\t"
+ " ld 3, " ENTRY_CURRENT_TABLE "@got@tprel@l(3)\n\t"
+ " blr\n"
+ );
+
+extern uint64_t ppc64le_dispatch_tls();
+
+static const uint32_t code_templ[] = {
+ // This should be functionally the same code as would be generated from
+ // the STUB_ASM_CODE macro, but defined as a buffer.
+ // This is used to generate new dispatch stubs. Mesa will copy this
+ // data to the dispatch stub, and then it will patch the slot number and
+ // any addresses that it needs to.
+ // NOTE!!! NOTE!!! NOTE!!!
+ // This representation is correct for both little- and big-endian systems.
+ // However, more work needs to be done for big-endian Linux because it
+ // adheres to an older, AIX-compatible ABI that uses function descriptors.
+ // 1000:
+ 0x7C0802A6, // <ENTRY+00>: mflr 0
+ 0xF8010010, // <ENTRY+04>: std 0, 16(1)
+ 0xE96C0028, // <ENTRY+08>: ld 11, 9000f-1000b+0(12)
+ 0x7D6B6A14, // <ENTRY+12>: add 11, 11, 13
+ 0xE96B0000, // <ENTRY+16>: ld 11, 0(11)
+ 0xE80C0030, // <ENTRY+20>: ld 0, 9000f-1000b+8(12)
+ 0x7D8B002A, // <ENTRY+24>: ldx 12, 11, 0
+ 0x7D8903A6, // <ENTRY+28>: mtctr 12
+ 0x4E800420, // <ENTRY+32>: bctr
+ 0x60000000, // <ENTRY+36>: nop
+ // 9000:
+ 0, 0, // <ENTRY+40>: .quad _glapi_tls_Dispatch
+ 0, 0 // <ENTRY+48>: .quad <slot>*8
+};
+static const uint64_t TEMPLATE_OFFSET_TLS_ADDR = sizeof(code_templ) - 2*8;
+static const uint64_t TEMPLATE_OFFSET_SLOT = sizeof(code_templ) - 1*8;
+
+void
+entry_patch(mapi_func entry, int slot)
+{
+ char *code = (char *) entry;
+ *((uint64_t *) (code + TEMPLATE_OFFSET_TLS_ADDR)) = ppc64le_dispatch_tls();
+ *((uint64_t *) (code + TEMPLATE_OFFSET_SLOT)) = slot * sizeof(mapi_func);
+}
+
+mapi_func
+entry_generate(int slot)
+{
+ char *code;
+ mapi_func entry;
+
+ code = u_execmem_alloc(sizeof(code_templ));
+ if (!code)
+ return NULL;
+
+ memcpy(code, code_templ, sizeof(code_templ));
+
+ entry = (mapi_func) code;
+ entry_patch(entry, slot);
+
+ return entry;
+}
+
+#endif /* MAPI_MODE_BRIDGE */
diff --git a/lib/mesa/src/mapi/entry_ppc64le_tsd.h b/lib/mesa/src/mapi/entry_ppc64le_tsd.h
new file mode 100644
index 000000000..a583b93e5
--- /dev/null
+++ b/lib/mesa/src/mapi/entry_ppc64le_tsd.h
@@ -0,0 +1,210 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 2017 Red Hat
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is 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 Software.
+ *
+ * THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ * Ben Crocker <bcrocker@redhat.com>
+ */
+
+#ifdef HAVE_FUNC_ATTRIBUTE_VISIBILITY
+#define HIDDEN __attribute__((visibility("hidden")))
+#else
+#define HIDDEN
+#endif
+
+// NOTE: These must be powers of two:
+#define PPC64LE_ENTRY_SIZE 256
+#define PPC64LE_PAGE_ALIGN 65536
+#if ((PPC64LE_ENTRY_SIZE & (PPC64LE_ENTRY_SIZE - 1)) != 0)
+#error PPC64LE_ENTRY_SIZE must be a power of two!
+#endif
+#if ((PPC64LE_PAGE_ALIGN & (PPC64LE_PAGE_ALIGN - 1)) != 0)
+#error PPC64LE_PAGE_ALIGN must be a power of two!
+#endif
+
+__asm__(".text\n"
+ ".balign " U_STRINGIFY(PPC64LE_ENTRY_SIZE) "\n"
+ "ppc64le_entry_start:");
+
+#define STUB_ASM_ENTRY(func) \
+ ".globl " func "\n" \
+ ".type " func ", @function\n" \
+ ".balign " U_STRINGIFY(PPC64LE_ENTRY_SIZE) "\n" \
+ func ":\n\t" \
+ " addis 2, 12, .TOC.-" func "@ha\n\t" \
+ " addi 2, 2, .TOC.-" func "@l\n\t" \
+ " .localentry " func ", .-" func "\n\t"
+
+#define STUB_ASM_CODE(slot) \
+ " addis 11, 2, " ENTRY_CURRENT_TABLE "@got@ha\n\t" \
+ " ld 11, " ENTRY_CURRENT_TABLE "@got@l(11)\n\t" \
+ " ld 11, 0(11)\n\t" \
+ " cmpldi 11, 0\n\t" \
+ " beq 2000f\n" \
+ "1050:\n\t" \
+ " ld 12, " slot "*8(11)\n\t" \
+ " mtctr 12\n\t" \
+ " bctr\n" \
+ "2000:\n\t" \
+ " mflr 0\n\t" \
+ " std 0, 16(1)\n\t" \
+ " std 2, 40(1)\n\t" \
+ " stdu 1, -144(1)\n\t" \
+ " std 3, 56(1)\n\t" \
+ " std 4, 64(1)\n\t" \
+ " std 5, 72(1)\n\t" \
+ " std 6, 80(1)\n\t" \
+ " std 7, 88(1)\n\t" \
+ " std 8, 96(1)\n\t" \
+ " std 9, 104(1)\n\t" \
+ " std 10, 112(1)\n\t" \
+ " std 12, 128(1)\n\t" \
+ " addis 12, 2, " ENTRY_CURRENT_TABLE_GET "@got@ha\n\t" \
+ " ld 12, " ENTRY_CURRENT_TABLE_GET "@got@l(12)\n\t" \
+ " mtctr 12\n\t" \
+ " bctrl\n\t" \
+ " ld 2, 144+40(1)\n\t" \
+ " mr 11, 3\n\t" \
+ " ld 3, 56(1)\n\t" \
+ " ld 4, 64(1)\n\t" \
+ " ld 5, 72(1)\n\t" \
+ " ld 6, 80(1)\n\t" \
+ " ld 7, 88(1)\n\t" \
+ " ld 8, 96(1)\n\t" \
+ " ld 9, 104(1)\n\t" \
+ " ld 10, 112(1)\n\t" \
+ " ld 12, 128(1)\n\t" \
+ " addi 1, 1, 144\n\t" \
+ " ld 0, 16(1)\n\t" \
+ " mtlr 0\n\t" \
+ " b 1050b\n"
+
+#define MAPI_TMP_STUB_ASM_GCC
+#include "mapi_tmp.h"
+
+#ifndef MAPI_MODE_BRIDGE
+
+#include <string.h>
+#include "u_execmem.h"
+
+void
+entry_patch_public(void)
+{
+}
+
+extern char
+ppc64le_entry_start[] HIDDEN;
+
+mapi_func
+entry_get_public(int slot)
+{
+ return (mapi_func) (ppc64le_entry_start + slot * PPC64LE_ENTRY_SIZE);
+}
+
+static const uint32_t code_templ[] = {
+ // This should be functionally the same code as would be generated from
+ // the STUB_ASM_CODE macro, but defined as a buffer.
+ // This is used to generate new dispatch stubs. Mesa will copy this
+ // data to the dispatch stub, and then it will patch the slot number and
+ // any addresses that it needs to.
+ // NOTE!!! NOTE!!! NOTE!!!
+ // This representation is correct for both little- and big-endian systems.
+ // However, more work needs to be done for big-endian Linux because it
+ // adheres to an older, AIX-compatible ABI that uses function descriptors.
+ // 1000:
+ 0x7C0802A6, // <ENTRY+000>: mflr 0
+ 0xF8010010, // <ENTRY+004>: std 0, 16(1)
+ 0xE96C0098, // <ENTRY+008>: ld 11, 9000f-1000b+0(12)
+ 0xE96B0000, // <ENTRY+012>: ld 11, 0(11)
+ 0x282B0000, // <ENTRY+016>: cmpldi 11, 0
+ 0x41820014, // <ENTRY+020>: beq 2000f
+ // 1050:
+ 0xE80C00A8, // <ENTRY+024>: ld 0, 9000f-1000b+16(12)
+ 0x7D8B002A, // <ENTRY+028>: ldx 12, 11, 0
+ 0x7D8903A6, // <ENTRY+032>: mtctr 12
+ 0x4E800420, // <ENTRY+036>: bctr
+ // 2000:
+ 0xF8410028, // <ENTRY+040>: std 2, 40(1)
+ 0xF821FF71, // <ENTRY+044>: stdu 1, -144(1)
+ 0xF8610038, // <ENTRY+048>: std 3, 56(1)
+ 0xF8810040, // <ENTRY+052>: std 4, 64(1)
+ 0xF8A10048, // <ENTRY+056>: std 5, 72(1)
+ 0xF8C10050, // <ENTRY+060>: std 6, 80(1)
+ 0xF8E10058, // <ENTRY+064>: std 7, 88(1)
+ 0xF9010060, // <ENTRY+068>: std 8, 96(1)
+ 0xF9210068, // <ENTRY+072>: std 9, 104(1)
+ 0xF9410070, // <ENTRY+076>: std 10, 112(1)
+ 0xF9810080, // <ENTRY+080>: std 12, 128(1)
+ 0xE98C00A0, // <ENTRY+084>: ld 12, 9000f-1000b+8(12)
+ 0x7D8903A6, // <ENTRY+088>: mtctr 12
+ 0x4E800421, // <ENTRY+092>: bctrl
+ 0x7C6B1B78, // <ENTRY+096>: mr 11, 3
+ 0xE8610038, // <ENTRY+100>: ld 3, 56(1)
+ 0xE8810040, // <ENTRY+104>: ld 4, 64(1)
+ 0xE8A10048, // <ENTRY+108>: ld 5, 72(1)
+ 0xE8C10050, // <ENTRY+112>: ld 6, 80(1)
+ 0xE8E10058, // <ENTRY+116>: ld 7, 88(1)
+ 0xE9010060, // <ENTRY+120>: ld 8, 96(1)
+ 0xE9210068, // <ENTRY+124>: ld 9, 104(1)
+ 0xE9410070, // <ENTRY+128>: ld 10, 112(1)
+ 0xE9810080, // <ENTRY+132>: ld 12, 128(1)
+ 0x38210090, // <ENTRY+136>: addi 1, 1, 144
+ 0xE8010010, // <ENTRY+140>: ld 0, 16(1)
+ 0x7C0803A6, // <ENTRY+144>: mtlr 0
+ 0x4BFFFF84, // <ENTRY+148>: b 1050b
+ // 9000:
+ 0, 0, // <ENTRY+152>: .quad ENTRY_CURRENT_TABLE
+ 0, 0, // <ENTRY+160>: .quad ENTRY_CURRENT_TABLE_GET
+ 0, 0 // <ENTRY+168>: .quad <slot>*8
+};
+static const uint64_t TEMPLATE_OFFSET_CURRENT_TABLE = sizeof(code_templ) - 3*8;
+static const uint64_t TEMPLATE_OFFSET_CURRENT_TABLE_GET = sizeof(code_templ) - 2*8;
+static const uint64_t TEMPLATE_OFFSET_SLOT = sizeof(code_templ) - 1*8;
+
+void
+entry_patch(mapi_func entry, int slot)
+{
+ char *code = (char *) entry;
+ *((uint64_t *) (code + TEMPLATE_OFFSET_CURRENT_TABLE)) = (uint64_t) ENTRY_CURRENT_TABLE;
+ *((uint64_t *) (code + TEMPLATE_OFFSET_CURRENT_TABLE_GET)) = (uint64_t) ENTRY_CURRENT_TABLE_GET;
+ *((uint64_t *) (code + TEMPLATE_OFFSET_SLOT)) = slot * sizeof(mapi_func);
+}
+
+mapi_func
+entry_generate(int slot)
+{
+ char *code;
+ mapi_func entry;
+
+ code = u_execmem_alloc(sizeof(code_templ));
+ if (!code)
+ return NULL;
+
+ memcpy(code, code_templ, sizeof(code_templ));
+
+ entry = (mapi_func) code;
+ entry_patch(entry, slot);
+
+ return entry;
+}
+
+#endif /* MAPI_MODE_BRIDGE */
diff --git a/lib/mesa/src/mapi/glapi/gen/APPLE_vertex_array_object.xml b/lib/mesa/src/mapi/glapi/gen/APPLE_vertex_array_object.xml
index 7312f9b35..daf6990ea 100644
--- a/lib/mesa/src/mapi/glapi/gen/APPLE_vertex_array_object.xml
+++ b/lib/mesa/src/mapi/glapi/gen/APPLE_vertex_array_object.xml
@@ -5,21 +5,21 @@
<category name="GL_APPLE_vertex_array_object" number="273">
<enum name="VERTEX_ARRAY_BINDING_APPLE" value="0x85B5"/>
- <function name="BindVertexArrayAPPLE" deprecated="3.1">
+ <function name="BindVertexArrayAPPLE" deprecated="3.1" exec="skip">
<param name="array" type="GLuint"/>
</function>
- <function name="DeleteVertexArraysAPPLE" alias="DeleteVertexArrays">
+ <function name="DeleteVertexArraysAPPLE" exec="skip">
<param name="n" type="GLsizei"/>
<param name="arrays" type="const GLuint *"/>
</function>
- <function name="GenVertexArraysAPPLE" deprecated="3.1">
+ <function name="GenVertexArraysAPPLE" deprecated="3.1" exec="skip">
<param name="n" type="GLsizei"/>
<param name="arrays" type="GLuint *" count="n" output="true"/>
</function>
- <function name="IsVertexArrayAPPLE" alias="IsVertexArray">
+ <function name="IsVertexArrayAPPLE" exec="skip">
<param name="array" type="GLuint"/>
<return type="GLboolean"/>
</function>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_bindless_texture.xml b/lib/mesa/src/mapi/glapi/gen/ARB_bindless_texture.xml
new file mode 100644
index 000000000..762cadf6f
--- /dev/null
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_bindless_texture.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_ARB_bindless_texture" number="152">
+
+ <enum name="UNSIGNED_INT64_ARB" value="0x140F" />
+ <type name="uint64EXT" unsigned="true" size="8"/>
+
+ <function name="GetTextureHandleARB" no_error="true">
+ <return type="GLuint64"/>
+ <param name="texture" type="GLuint" />
+ </function>
+
+ <function name="GetTextureSamplerHandleARB" no_error="true">
+ <return type="GLuint64"/>
+ <param name="texture" type="GLuint" />
+ <param name="sampler" type="GLuint" />
+ </function>
+
+ <function name="MakeTextureHandleResidentARB" no_error="true">
+ <param name="handle" type="GLuint64" />
+ </function>
+
+ <function name="MakeTextureHandleNonResidentARB" no_error="true">
+ <param name="handle" type="GLuint64" />
+ </function>
+
+ <function name="GetImageHandleARB" no_error="true">
+ <return type="GLuint64"/>
+ <param name="texture" type="GLuint" />
+ <param name="level" type="GLint" />
+ <param name="layered" type="GLboolean" />
+ <param name="layer" type="GLint" />
+ <param name="format" type="GLenum" />
+ </function>
+
+ <function name="MakeImageHandleResidentARB" no_error="true">
+ <param name="handle" type="GLuint64" />
+ <param name="access" type="GLenum" />
+ </function>
+
+ <function name="MakeImageHandleNonResidentARB" no_error="true">
+ <param name="handle" type="GLuint64" />
+ </function>
+
+ <function name="UniformHandleui64ARB">
+ <param name="location" type="GLint" />
+ <param name="value" type="GLuint64" />
+ </function>
+
+ <function name="UniformHandleui64vARB">
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLuint64 *" />
+ </function>
+
+ <function name="ProgramUniformHandleui64ARB">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="value" type="GLuint64" />
+ </function>
+
+ <function name="ProgramUniformHandleui64vARB">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLuint64 *" />
+ </function>
+
+ <function name="IsTextureHandleResidentARB" no_error="true">
+ <return type="GLboolean"/>
+ <param name="handle" type="GLuint64" />
+ </function>
+
+ <function name="IsImageHandleResidentARB" no_error="true">
+ <return type="GLboolean"/>
+ <param name="handle" type="GLuint64" />
+ </function>
+
+ <function name="VertexAttribL1ui64ARB" exec="dynamic">
+ <param name="index" type="GLuint" />
+ <param name="x" type="GLuint64EXT" />
+ </function>
+
+ <function name="VertexAttribL1ui64vARB" exec="dynamic">
+ <param name="index" type="GLuint" />
+ <param name="v" type="const GLuint64EXT *" />
+ </function>
+
+ <function name="GetVertexAttribLui64vARB">
+ <param name="index" type="GLuint" />
+ <param name="pname" type="GLenum" />
+ <param name="params" type="GLuint64EXT *" />
+ </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_blend_func_extended.xml b/lib/mesa/src/mapi/glapi/gen/ARB_blend_func_extended.xml
index 406140f7d..10d85a766 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_blend_func_extended.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_blend_func_extended.xml
@@ -8,7 +8,7 @@
<category name="GL_ARB_blend_func_extended" number="78">
- <function name="BindFragDataLocationIndexed">
+ <function name="BindFragDataLocationIndexed" no_error="true">
<param name="program" type="GLuint"/>
<param name="colorNumber" type="GLuint"/>
<param name="index" type="GLuint"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_clip_control.xml b/lib/mesa/src/mapi/glapi/gen/ARB_clip_control.xml
index ecce133bb..051a64808 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_clip_control.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_clip_control.xml
@@ -14,7 +14,7 @@
<enum name="CLIP_ORIGIN" value = "0x935C"/>
<enum name="CLIP_DEPTH_MODE" value = "0x935D"/>
- <function name="ClipControl">
+ <function name="ClipControl" no_error="true">
<param name="origin" type="GLenum"/>
<param name="depth" type="GLenum"/>
<!-- <glx rop="1340"/> -->
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_compute_shader.xml b/lib/mesa/src/mapi/glapi/gen/ARB_compute_shader.xml
index c2ec842ef..84cbdf396 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_compute_shader.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_compute_shader.xml
@@ -26,13 +26,13 @@
<enum name="DISPATCH_INDIRECT_BUFFER_BINDING" value="0x90EF"/>
<enum name="COMPUTE_SHADER_BIT" value="0x00000020"/>
- <function name="DispatchCompute" es2="3.1">
+ <function name="DispatchCompute" es2="3.1" no_error="true">
<param name="num_groups_x" type="GLuint"/>
<param name="num_groups_y" type="GLuint"/>
<param name="num_groups_z" type="GLuint"/>
</function>
- <function name="DispatchComputeIndirect" es2="3.1">
+ <function name="DispatchComputeIndirect" es2="3.1" no_error="true">
<param name="indirect" type="GLintptr"/>
</function>
</category>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_compute_variable_group_size.xml b/lib/mesa/src/mapi/glapi/gen/ARB_compute_variable_group_size.xml
index b21c52fa1..a54c591a8 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_compute_variable_group_size.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_compute_variable_group_size.xml
@@ -12,7 +12,7 @@
<enum name="MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB" value="0x9345"/>
<enum name="MAX_COMPUTE_FIXED_GROUP_SIZE_ARB" value="0x91BF"/>
- <function name="DispatchComputeGroupSizeARB">
+ <function name="DispatchComputeGroupSizeARB" no_error="true">
<param name="num_groups_x" type="GLuint"/>
<param name="num_groups_y" type="GLuint"/>
<param name="num_groups_z" type="GLuint"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_copy_buffer.xml b/lib/mesa/src/mapi/glapi/gen/ARB_copy_buffer.xml
index d1c6f1fec..12e0c195d 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_copy_buffer.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_copy_buffer.xml
@@ -11,7 +11,7 @@
<enum name="COPY_READ_BUFFER" value="0x8F36"/>
<enum name="COPY_WRITE_BUFFER" value="0x8F37"/>
- <function name="CopyBufferSubData" es2="3.0">
+ <function name="CopyBufferSubData" es2="3.0" no_error="true">
<param name="readTarget" type="GLenum"/>
<param name="writeTarget" type="GLenum"/>
<param name="readOffset" type="GLintptr"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_copy_image.xml b/lib/mesa/src/mapi/glapi/gen/ARB_copy_image.xml
index 9ee2ba304..fb4c9b1c2 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_copy_image.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_copy_image.xml
@@ -5,7 +5,7 @@
<category name="GL_ARB_copy_image" number="123">
- <function name="CopyImageSubData" es2="3.2">
+ <function name="CopyImageSubData" es2="3.2" no_error="true">
<param name="srcName" type="GLuint"/>
<param name="srcTarget" type="GLenum"/>
<param name="srcLevel" type="GLint"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_direct_state_access.xml b/lib/mesa/src/mapi/glapi/gen/ARB_direct_state_access.xml
index 43841bb6c..0c34b6385 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_direct_state_access.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_direct_state_access.xml
@@ -49,33 +49,33 @@
<!-- Buffer object functions -->
- <function name="CreateBuffers">
+ <function name="CreateBuffers" no_error="true">
<param name="n" type="GLsizei" />
<param name="buffers" type="GLuint *" />
</function>
- <function name="NamedBufferStorage">
+ <function name="NamedBufferStorage" no_error="true">
<param name="buffer" type="GLuint" />
<param name="size" type="GLsizeiptr" />
<param name="data" type="const GLvoid *" />
<param name="flags" type="GLbitfield" />
</function>
- <function name="NamedBufferData">
+ <function name="NamedBufferData" marshal="custom">
<param name="buffer" type="GLuint" />
<param name="size" type="GLsizeiptr" />
<param name="data" type="const GLvoid *" />
<param name="usage" type="GLenum" />
</function>
- <function name="NamedBufferSubData">
+ <function name="NamedBufferSubData" no_error="true" marshal="custom">
<param name="buffer" type="GLuint" />
<param name="offset" type="GLintptr" />
<param name="size" type="GLsizeiptr" />
<param name="data" type="const GLvoid *" />
</function>
- <function name="CopyNamedBufferSubData">
+ <function name="CopyNamedBufferSubData" no_error="true">
<param name="readBuffer" type="GLuint" />
<param name="writeBuffer" type="GLuint" />
<param name="readOffset" type="GLintptr" />
@@ -101,13 +101,13 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="MapNamedBuffer">
+ <function name="MapNamedBuffer" no_error="true">
<return type="GLvoid *" />
<param name="buffer" type="GLuint" />
<param name="access" type="GLenum" />
</function>
- <function name="MapNamedBufferRange">
+ <function name="MapNamedBufferRange" no_error="true">
<return type="GLvoid *" />
<param name="buffer" type="GLuint" />
<param name="offset" type="GLintptr" />
@@ -115,12 +115,12 @@
<param name="access" type="GLbitfield" />
</function>
- <function name="UnmapNamedBuffer">
+ <function name="UnmapNamedBuffer" no_error="true">
<return type="GLboolean" />
<param name="buffer" type="GLuint" />
</function>
- <function name="FlushMappedNamedBufferRange">
+ <function name="FlushMappedNamedBufferRange" no_error="true">
<param name="buffer" type="GLuint" />
<param name="offset" type="GLintptr" />
<param name="length" type="GLsizeiptr" />
@@ -171,14 +171,14 @@
<param name="param" type="GLint" />
</function>
- <function name="NamedFramebufferTexture">
+ <function name="NamedFramebufferTexture" no_error="true">
<param name="framebuffer" type="GLuint" />
<param name="attachment" type="GLenum" />
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
</function>
- <function name="NamedFramebufferTextureLayer">
+ <function name="NamedFramebufferTextureLayer" no_error="true">
<param name="framebuffer" type="GLuint" />
<param name="attachment" type="GLenum" />
<param name="texture" type="GLuint" />
@@ -197,7 +197,7 @@
<param name="bufs" type="const GLenum *" />
</function>
- <function name="NamedFramebufferReadBuffer">
+ <function name="NamedFramebufferReadBuffer" no_error="true">
<param name="framebuffer" type="GLuint" />
<param name="buf" type="GLenum" />
</function>
@@ -247,7 +247,7 @@
<param name="stencil" type="GLint" />
</function>
- <function name="BlitNamedFramebuffer">
+ <function name="BlitNamedFramebuffer" no_error="true">
<param name="readFramebuffer" type="GLuint" />
<param name="drawFramebuffer" type="GLuint" />
<param name="srcX0" type="GLint" />
@@ -283,7 +283,7 @@
<!-- Renderbuffer object functions -->
- <function name="CreateRenderbuffers">
+ <function name="CreateRenderbuffers" no_error="true">
<param name="n" type="GLsizei" />
<param name="renderbuffers" type="GLuint *" />
</function>
@@ -311,7 +311,7 @@
<!-- Texture object functions -->
- <function name="CreateTextures">
+ <function name="CreateTextures" no_error="true">
<param name="target" type="GLenum" />
<param name="n" type="GLsizei" />
<param name="textures" type="GLuint *" />
@@ -410,7 +410,7 @@
<param name="pixels" type="const GLvoid *" />
</function>
- <function name="CompressedTextureSubImage1D">
+ <function name="CompressedTextureSubImage1D" no_error="true">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -420,7 +420,7 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedTextureSubImage2D">
+ <function name="CompressedTextureSubImage2D" no_error="true">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -432,7 +432,7 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedTextureSubImage3D">
+ <function name="CompressedTextureSubImage3D" no_error="true">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -446,7 +446,7 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CopyTextureSubImage1D">
+ <function name="CopyTextureSubImage1D" no_error="true">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -455,7 +455,7 @@
<param name="width" type="GLsizei" />
</function>
- <function name="CopyTextureSubImage2D">
+ <function name="CopyTextureSubImage2D" no_error="true">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -466,7 +466,7 @@
<param name="height" type="GLsizei" />
</function>
- <function name="CopyTextureSubImage3D">
+ <function name="CopyTextureSubImage3D" no_error="true">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -518,7 +518,7 @@
<param name="texture" type="GLuint" />
</function>
- <function name="BindTextureUnit">
+ <function name="BindTextureUnit" no_error="true">
<param name="unit" type="GLuint" />
<param name="texture" type="GLuint" />
</function>
@@ -584,12 +584,12 @@
<param name="arrays" type="GLuint *" />
</function>
- <function name="DisableVertexArrayAttrib">
+ <function name="DisableVertexArrayAttrib" no_error="true">
<param name="vaobj" type="GLuint" />
<param name="index" type="GLuint" />
</function>
- <function name="EnableVertexArrayAttrib">
+ <function name="EnableVertexArrayAttrib" no_error="true">
<param name="vaobj" type="GLuint" />
<param name="index" type="GLuint" />
</function>
@@ -599,7 +599,7 @@
<param name="buffer" type="GLuint" />
</function>
- <function name="VertexArrayVertexBuffer">
+ <function name="VertexArrayVertexBuffer" no_error="true">
<param name="vaobj" type="GLuint" />
<param name="bindingindex" type="GLuint" />
<param name="buffer" type="GLuint" />
@@ -607,7 +607,7 @@
<param name="stride" type="GLsizei" />
</function>
- <function name="VertexArrayVertexBuffers">
+ <function name="VertexArrayVertexBuffers" no_error="true">
<param name="vaobj" type="GLuint" />
<param name="first" type="GLuint" />
<param name="count" type="GLsizei" />
@@ -641,7 +641,7 @@
<param name="relativeoffset" type="GLuint" />
</function>
- <function name="VertexArrayAttribBinding">
+ <function name="VertexArrayAttribBinding" no_error="true">
<param name="vaobj" type="GLuint" />
<param name="attribindex" type="GLuint" />
<param name="bindingindex" type="GLuint" />
@@ -675,14 +675,14 @@
<!-- Sampler object functions -->
- <function name="CreateSamplers">
+ <function name="CreateSamplers" no_error="true">
<param name="n" type="GLsizei" />
<param name="samplers" type="GLuint *" />
</function>
<!-- Program Pipeline object functions -->
- <function name="CreateProgramPipelines">
+ <function name="CreateProgramPipelines" no_error="true">
<param name="n" type="GLsizei" />
<param name="pipelines" type="GLuint *" />
</function>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml b/lib/mesa/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml
index 8c33fbf89..1a44f38d1 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml
@@ -13,19 +13,19 @@
<param name="mode" type="GLenum"/>
</function>
- <function name="BlendEquationSeparateiARB">
+ <function name="BlendEquationSeparateiARB" no_error="true">
<param name="buf" type="GLuint"/>
<param name="modeRGB" type="GLenum"/>
<param name="modeA" type="GLenum"/>
</function>
- <function name="BlendFunciARB">
+ <function name="BlendFunciARB" no_error="true">
<param name="buf" type="GLuint"/>
<param name="src" type="GLenum"/>
<param name="dst" type="GLenum"/>
</function>
- <function name="BlendFuncSeparateiARB">
+ <function name="BlendFuncSeparateiARB" no_error="true">
<param name="buf" type="GLuint"/>
<param name="srcRGB" type="GLenum"/>
<param name="dstRGB" type="GLenum"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_framebuffer_object.xml b/lib/mesa/src/mapi/glapi/gen/ARB_framebuffer_object.xml
index 1573e7e96..b8fff9262 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_framebuffer_object.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_framebuffer_object.xml
@@ -158,7 +158,7 @@
<glx rop="4317"/>
</function>
- <function name="GenRenderbuffers" es2="2.0">
+ <function name="GenRenderbuffers" es2="2.0" no_error="true">
<param name="n" type="GLsizei" counter="true"/>
<param name="renderbuffers" type="GLuint *" count="n" output="true"/>
<glx vendorpriv="1423" always_array="true"/>
@@ -212,13 +212,13 @@
<glx vendorpriv="1426" always_array="true"/>
</function>
- <function name="CheckFramebufferStatus" es2="2.0">
+ <function name="CheckFramebufferStatus" es2="2.0" no_error="true">
<param name="target" type="GLenum"/>
<return type="GLenum"/>
<glx vendorpriv="1427"/>
</function>
- <function name="FramebufferTexture1D">
+ <function name="FramebufferTexture1D" no_error="true">
<param name="target" type="GLenum"/>
<param name="attachment" type="GLenum"/>
<param name="textarget" type="GLenum"/>
@@ -227,7 +227,7 @@
<glx rop="4321"/>
</function>
- <function name="FramebufferTexture2D" es2="2.0">
+ <function name="FramebufferTexture2D" es2="2.0" no_error="true">
<param name="target" type="GLenum"/>
<param name="attachment" type="GLenum"/>
<param name="textarget" type="GLenum"/>
@@ -236,7 +236,7 @@
<glx rop="4322"/>
</function>
- <function name="FramebufferTexture3D">
+ <function name="FramebufferTexture3D" no_error="true">
<param name="target" type="GLenum"/>
<param name="attachment" type="GLenum"/>
<param name="textarget" type="GLenum"/>
@@ -246,7 +246,7 @@
<glx rop="4323"/>
</function>
- <function name="FramebufferTextureLayer" es2="3.0">
+ <function name="FramebufferTextureLayer" es2="3.0" no_error="true">
<param name="target" type="GLenum"/>
<param name="attachment" type="GLenum"/>
<param name="texture" type="GLuint"/>
@@ -271,7 +271,7 @@
<glx vendorpriv="1428"/>
</function>
- <function name="BlitFramebuffer" es2="3.0">
+ <function name="BlitFramebuffer" es2="3.0" no_error="true">
<param name="srcX0" type="GLint"/>
<param name="srcY0" type="GLint"/>
<param name="srcX1" type="GLint"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_invalidate_subdata.xml b/lib/mesa/src/mapi/glapi/gen/ARB_invalidate_subdata.xml
index 052816ad7..2cbc4f63b 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_invalidate_subdata.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_invalidate_subdata.xml
@@ -19,13 +19,13 @@
<param name="level" type="GLint"/>
</function>
- <function name="InvalidateBufferSubData">
+ <function name="InvalidateBufferSubData" no_error="true">
<param name="buffer" type="GLuint"/>
<param name="offset" type="GLintptr"/>
<param name="length" type="GLsizeiptr"/>
</function>
- <function name="InvalidateBufferData">
+ <function name="InvalidateBufferData" no_error="true">
<param name="buffer" type="GLuint"/>
</function>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_map_buffer_range.xml b/lib/mesa/src/mapi/glapi/gen/ARB_map_buffer_range.xml
index cf7b21148..35a20bea6 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_map_buffer_range.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_map_buffer_range.xml
@@ -15,7 +15,7 @@
<enum name="MAP_FLUSH_EXPLICIT_BIT" value="0x0010"/>
<enum name="MAP_UNSYNCHRONIZED_BIT" value="0x0020"/>
- <function name="MapBufferRange" es2="3.0">
+ <function name="MapBufferRange" es2="3.0" no_error="true">
<param name="target" type="GLenum"/>
<param name="offset" type="GLintptr"/>
<param name="length" type="GLsizeiptr"/>
@@ -23,7 +23,7 @@
<return type="GLvoid *"/>
</function>
- <function name="FlushMappedBufferRange" es2="3.0">
+ <function name="FlushMappedBufferRange" es2="3.0" no_error="true">
<param name="target" type="GLenum"/>
<param name="offset" type="GLintptr"/>
<param name="length" type="GLsizeiptr"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_multi_bind.xml b/lib/mesa/src/mapi/glapi/gen/ARB_multi_bind.xml
index f42eaa28e..601680f30 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_multi_bind.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_multi_bind.xml
@@ -35,13 +35,13 @@
<param name="samplers" type="const GLuint *"/>
</function>
- <function name="BindImageTextures">
+ <function name="BindImageTextures" no_error="true">
<param name="first" type="GLuint"/>
<param name="count" type="GLsizei"/>
<param name="textures" type="const GLuint *"/>
</function>
- <function name="BindVertexBuffers">
+ <function name="BindVertexBuffers" no_error="true">
<param name="first" type="GLuint"/>
<param name="count" type="GLsizei"/>
<param name="buffers" type="const GLuint *"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_sampler_objects.xml b/lib/mesa/src/mapi/glapi/gen/ARB_sampler_objects.xml
index 20363f70b..9fe6c41c8 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_sampler_objects.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_sampler_objects.xml
@@ -7,7 +7,7 @@
<category name="GL_ARB_sampler_objects" number="81">
- <function name="GenSamplers" es2="3.0">
+ <function name="GenSamplers" es2="3.0" no_error="true">
<param name="count" type="GLsizei"/>
<param name="samplers" type="GLuint *"/>
</function>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_shader_image_load_store.xml b/lib/mesa/src/mapi/glapi/gen/ARB_shader_image_load_store.xml
index 178e930f1..6e9ee1fff 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_shader_image_load_store.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_shader_image_load_store.xml
@@ -70,7 +70,7 @@
<enum name="MAX_FRAGMENT_IMAGE_UNIFORMS" value="0x90CE"/>
<enum name="MAX_COMBINED_IMAGE_UNIFORMS" value="0x90CF"/>
-<function name="BindImageTexture" es2="3.1">
+<function name="BindImageTexture" es2="3.1" no_error="true">
<param name="unit" type="GLuint"/>
<param name="texture" type="GLuint"/>
<param name="level" type="GLint"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_shader_storage_buffer_object.xml b/lib/mesa/src/mapi/glapi/gen/ARB_shader_storage_buffer_object.xml
index 6901bdf6d..4d2288227 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_shader_storage_buffer_object.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_shader_storage_buffer_object.xml
@@ -25,7 +25,7 @@
<!-- Duplicated with GL3x.xml: BindBufferRange, BindBufferBase,
GetIntegeri_v -->
-<function name="ShaderStorageBlockBinding">
+<function name="ShaderStorageBlockBinding" no_error="true">
<param name="program" type="GLuint" />
<param name="shaderStorageBlockIndex" type="GLuint" />
<param name="shaderStorageBlockBinding" type="GLuint" />
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_sync.xml b/lib/mesa/src/mapi/glapi/gen/ARB_sync.xml
index d8a1c34e0..f1463f11a 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_sync.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_sync.xml
@@ -39,7 +39,7 @@
-->
- <function name="FenceSync" es2="3.0">
+ <function name="FenceSync" es2="3.0" no_error="true">
<param name="condition" type="GLenum"/>
<param name="flags" type="GLbitfield"/>
<return type="GLsync"/>
@@ -54,7 +54,7 @@
<param name="sync" type="GLsync"/>
</function>
- <function name="ClientWaitSync" es2="3.0">
+ <function name="ClientWaitSync" es2="3.0" no_error="true">
<param name="sync" type="GLsync"/>
<param name="flags" type="GLbitfield"/>
<param name="timeout" type="GLuint64"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_uniform_buffer_object.xml b/lib/mesa/src/mapi/glapi/gen/ARB_uniform_buffer_object.xml
index cf86bbb2f..47bb04725 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_uniform_buffer_object.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_uniform_buffer_object.xml
@@ -86,7 +86,7 @@
<!-- Duplicated with GL3x.xml: BindBufferRange, BindBufferBase,
GetIntegeri_v -->
-<function name="UniformBlockBinding" es2="3.0">
+<function name="UniformBlockBinding" es2="3.0" no_error="true">
<param name="program" type="GLuint" />
<param name="uniformBlockIndex" type="GLuint" />
<param name="uniformBlockBinding" type="GLuint" />
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_64bit.xml b/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_64bit.xml
index 211642fc3..6d76003fe 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_64bit.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_64bit.xml
@@ -51,7 +51,7 @@
<param name="v" type="const GLdouble *"/>
</function>
- <function name="VertexAttribLPointer">
+ <function name="VertexAttribLPointer" no_error="true">
<param name="index" type="GLuint"/>
<param name="size" type="GLint"/>
<param name="type" type="GLenum"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml b/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml
index ba9ca57bb..d1f8db90a 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml
@@ -7,7 +7,7 @@
<category name="GL_ARB_vertex_attrib_binding" number="125">
- <function name="BindVertexBuffer" es2="3.1">
+ <function name="BindVertexBuffer" es2="3.1" no_error="true">
<param name="bindingindex" type="GLuint"/>
<param name="buffer" type="GLuint"/>
<param name="offset" type="GLintptr"/>
@@ -36,7 +36,7 @@
<param name="relativeoffset" type="GLuint"/>
</function>
- <function name="VertexAttribBinding" es2="3.1">
+ <function name="VertexAttribBinding" es2="3.1" no_error="true">
<param name="attribindex" type="GLuint"/>
<param name="bindingindex" type="GLuint"/>
</function>
diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_viewport_array.xml b/lib/mesa/src/mapi/glapi/gen/ARB_viewport_array.xml
index ebd5b99c8..30c4bca31 100644
--- a/lib/mesa/src/mapi/glapi/gen/ARB_viewport_array.xml
+++ b/lib/mesa/src/mapi/glapi/gen/ARB_viewport_array.xml
@@ -29,44 +29,44 @@
<enum name="PROVOKING_VERTEX" value="0x8E4F"/>
<enum name="UNDEFINED_VERTEX" value="0x8260"/>
- <function name="ViewportArrayv">
+ <function name="ViewportArrayv" no_error="true">
<param name="first" type="GLuint"/>
<param name="count" type="GLsizei"/>
- <param name="v" type="const GLfloat *"/>
+ <param name="v" type="const GLfloat *" count="count" count_scale="4"/>
</function>
- <function name="ViewportIndexedf">
+ <function name="ViewportIndexedf" no_error="true">
<param name="index" type="GLuint"/>
<param name="x" type="GLfloat"/>
<param name="y" type="GLfloat"/>
<param name="w" type="GLfloat"/>
<param name="h" type="GLfloat"/>
</function>
- <function name="ViewportIndexedfv">
+ <function name="ViewportIndexedfv" no_error="true">
<param name="index" type="GLuint"/>
- <param name="v" type="const GLfloat *"/>
+ <param name="v" type="const GLfloat *" count="4"/>
</function>
- <function name="ScissorArrayv">
+ <function name="ScissorArrayv" no_error="true">
<param name="first" type="GLuint"/>
<param name="count" type="GLsizei"/>
- <param name="v" type="const int *"/>
+ <param name="v" type="const int *" count="count" count_scale="4"/>
</function>
- <function name="ScissorIndexed">
+ <function name="ScissorIndexed" no_error="true">
<param name="index" type="GLuint"/>
<param name="left" type="GLint"/>
<param name="bottom" type="GLint"/>
<param name="width" type="GLsizei"/>
<param name="height" type="GLsizei"/>
</function>
- <function name="ScissorIndexedv">
+ <function name="ScissorIndexedv" no_error="true">
<param name="index" type="GLuint"/>
- <param name="v" type="const GLint *"/>
+ <param name="v" type="const GLint *" count="4"/>
</function>
<function name="DepthRangeArrayv">
<param name="first" type="GLuint"/>
<param name="count" type="GLsizei"/>
- <param name="v" type="const GLclampd *"/>
+ <param name="v" type="const GLclampd *" count="count" count_scale="2"/>
</function>
- <function name="DepthRangeIndexed">
+ <function name="DepthRangeIndexed" no_error="true">
<param name="index" type="GLuint"/>
<param name="n" type="GLclampd"/>
<param name="f" type="GLclampd"/>
diff --git a/lib/mesa/src/mapi/glapi/gen/es_EXT.xml b/lib/mesa/src/mapi/glapi/gen/es_EXT.xml
index 3e705eb40..271f0c09c 100644
--- a/lib/mesa/src/mapi/glapi/gen/es_EXT.xml
+++ b/lib/mesa/src/mapi/glapi/gen/es_EXT.xml
@@ -318,7 +318,8 @@
<enum name="POINT_SIZE_ARRAY_OES" value="0x8B9C"/>
<enum name="POINT_SIZE_ARRAY_BUFFER_BINDING_OES" value="0x8B9F"/>
- <function name="PointSizePointerOES" es1="1.0" desktop="false">
+ <function name="PointSizePointerOES" es1="1.0" desktop="false"
+ no_error="true">
<param name="type" type="GLenum"/>
<param name="stride" type="GLsizei"/>
<param name="pointer" type="const GLvoid *"/>
diff --git a/lib/mesa/src/mapi/glapi/glapi.c b/lib/mesa/src/mapi/glapi/glapi.c
index 194b9ee86..55258a476 100644
--- a/lib/mesa/src/mapi/glapi/glapi.c
+++ b/lib/mesa/src/mapi/glapi/glapi.c
@@ -60,5 +60,5 @@ _glapi_set_context(void *context)
void
_glapi_set_dispatch(struct _glapi_table *dispatch)
{
- u_current_set_table((const struct mapi_table *) dispatch);
+ u_current_set_table((const struct _glapi_table *) dispatch);
}
diff --git a/lib/mesa/src/mapi/mapi_glapi.c b/lib/mesa/src/mapi/mapi_glapi.c
index 9f02edb7c..3a376e81b 100644
--- a/lib/mesa/src/mapi/mapi_glapi.c
+++ b/lib/mesa/src/mapi/mapi_glapi.c
@@ -65,7 +65,7 @@ _glapi_set_context(void *context)
void
_glapi_set_dispatch(struct _glapi_table *dispatch)
{
- u_current_set_table((const struct mapi_table *) dispatch);
+ u_current_set_table((const struct _glapi_table *) dispatch);
}
/**
diff --git a/lib/mesa/src/mapi/shared-glapi/SConscript b/lib/mesa/src/mapi/shared-glapi/SConscript
index e5d45db59..5d74bd681 100644
--- a/lib/mesa/src/mapi/shared-glapi/SConscript
+++ b/lib/mesa/src/mapi/shared-glapi/SConscript
@@ -32,7 +32,7 @@ def mapi_objects(env, printer, mode):
script = '../mapi_abi.py',
source = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml'),
command = python_cmd + ' $SCRIPT ' + \
- '--printer %s --mode lib $SOURCE > $TARGET' % (printer),
+ '--printer %s $SOURCE > $TARGET' % (printer),
)
cpppath = [
diff --git a/lib/mesa/src/mapi/table.h b/lib/mesa/src/mapi/table.h
index a1af40c6f..f488b6d8a 100644
--- a/lib/mesa/src/mapi/table.h
+++ b/lib/mesa/src/mapi/table.h
@@ -37,7 +37,7 @@
#define MAPI_TABLE_NUM_SLOTS (MAPI_TABLE_NUM_STATIC + MAPI_TABLE_NUM_DYNAMIC)
#define MAPI_TABLE_SIZE (MAPI_TABLE_NUM_SLOTS * sizeof(mapi_func))
-struct mapi_table;
+struct _glapi_table;
extern const mapi_func table_noop_array[];
@@ -52,17 +52,17 @@ table_set_noop_handler(nop_handler_proc func);
/**
* Get the no-op dispatch table.
*/
-static inline const struct mapi_table *
+static inline const struct _glapi_table *
table_get_noop(void)
{
- return (const struct mapi_table *) table_noop_array;
+ return (const struct _glapi_table *) table_noop_array;
}
/**
* Set the function of a slot.
*/
static inline void
-table_set_func(struct mapi_table *tbl, int slot, mapi_func func)
+table_set_func(struct _glapi_table *tbl, int slot, mapi_func func)
{
mapi_func *funcs = (mapi_func *) tbl;
funcs[slot] = func;
@@ -72,7 +72,7 @@ table_set_func(struct mapi_table *tbl, int slot, mapi_func func)
* Return the function of a slot.
*/
static inline mapi_func
-table_get_func(const struct mapi_table *tbl, int slot)
+table_get_func(const struct _glapi_table *tbl, int slot)
{
const mapi_func *funcs = (const mapi_func *) tbl;
return funcs[slot];
diff --git a/lib/mesa/src/mapi/u_current.c b/lib/mesa/src/mapi/u_current.c
index 7e7e275f2..1402cea45 100644
--- a/lib/mesa/src/mapi/u_current.c
+++ b/lib/mesa/src/mapi/u_current.c
@@ -99,17 +99,17 @@ extern void (*__glapi_noop_table[])(void);
/*@{*/
#if defined(GLX_USE_TLS)
-__thread struct mapi_table *u_current_table
+__thread struct _glapi_table *u_current_table
__attribute__((tls_model("initial-exec")))
- = (struct mapi_table *) table_noop_array;
+ = (struct _glapi_table *) table_noop_array;
__thread void *u_current_context
__attribute__((tls_model("initial-exec")));
#else
-struct mapi_table *u_current_table =
- (struct mapi_table *) table_noop_array;
+struct _glapi_table *u_current_table =
+ (struct _glapi_table *) table_noop_array;
void *u_current_context;
tss_t u_current_table_tsd;
@@ -259,17 +259,17 @@ u_current_get_context_internal(void)
* table (__glapi_noop_table).
*/
void
-u_current_set_table(const struct mapi_table *tbl)
+u_current_set_table(const struct _glapi_table *tbl)
{
u_current_init();
stub_init_once();
if (!tbl)
- tbl = (const struct mapi_table *) table_noop_array;
+ tbl = (const struct _glapi_table *) table_noop_array;
#if defined(GLX_USE_TLS)
- u_current_table = (struct mapi_table *) tbl;
+ u_current_table = (struct _glapi_table *) tbl;
#else
tss_set(u_current_table_tsd, (void *) tbl);
u_current_table = (ThreadSafe) ? NULL : (void *) tbl;
@@ -279,15 +279,15 @@ u_current_set_table(const struct mapi_table *tbl)
/**
* Return pointer to current dispatch table for calling thread.
*/
-struct mapi_table *
+struct _glapi_table *
u_current_get_table_internal(void)
{
#if defined(GLX_USE_TLS)
return u_current_table;
#else
if (ThreadSafe)
- return (struct mapi_table *) tss_get(u_current_table_tsd);
+ return (struct _glapi_table *) tss_get(u_current_table_tsd);
else
- return (struct mapi_table *) u_current_table;
+ return (struct _glapi_table *) u_current_table;
#endif
}
diff --git a/lib/mesa/src/mapi/u_current.h b/lib/mesa/src/mapi/u_current.h
index ea4f81723..3c9a414ee 100644
--- a/lib/mesa/src/mapi/u_current.h
+++ b/lib/mesa/src/mapi/u_current.h
@@ -10,9 +10,6 @@
#include "glapi/glapi.h"
-/* ugly renames to match glapi.h */
-#define mapi_table _glapi_table
-
#ifdef GLX_USE_TLS
#define u_current_table _glapi_tls_Dispatch
#define u_current_context _glapi_tls_Context
@@ -28,11 +25,11 @@
#else /* MAPI_MODE_UTIL || MAPI_MODE_GLAPI || MAPI_MODE_BRIDGE */
-struct mapi_table;
+struct _glapi_table;
#ifdef GLX_USE_TLS
-extern __thread struct mapi_table *u_current_table
+extern __thread struct _glapi_table *u_current_table
__attribute__((tls_model("initial-exec")));
extern __thread void *u_current_context
@@ -40,7 +37,7 @@ extern __thread void *u_current_context
#else /* GLX_USE_TLS */
-extern struct mapi_table *u_current_table;
+extern struct _glapi_table *u_current_table;
extern void *u_current_context;
#endif /* GLX_USE_TLS */
@@ -54,9 +51,9 @@ void
u_current_destroy(void);
void
-u_current_set_table(const struct mapi_table *tbl);
+u_current_set_table(const struct _glapi_table *tbl);
-struct mapi_table *
+struct _glapi_table *
u_current_get_table_internal(void);
void
@@ -65,7 +62,7 @@ u_current_set_context(const void *ptr);
void *
u_current_get_context_internal(void);
-static inline const struct mapi_table *
+static inline const struct _glapi_table *
u_current_get_table(void)
{
#ifdef GLX_USE_TLS