diff options
Diffstat (limited to 'src/mesa/glapi')
-rw-r--r-- | src/mesa/glapi/EXT_framebuffer_object.xml | 18 | ||||
-rw-r--r-- | src/mesa/glapi/Makefile | 135 | ||||
-rw-r--r-- | src/mesa/glapi/glX_API.xml | 2 | ||||
-rw-r--r-- | src/mesa/glapi/glX_XML.py | 91 | ||||
-rw-r--r-- | src/mesa/glapi/glX_proto_send.py | 24 | ||||
-rw-r--r-- | src/mesa/glapi/gl_API.xml | 106 | ||||
-rw-r--r-- | src/mesa/glapi/glapi.c | 40 | ||||
-rw-r--r-- | src/mesa/glapi/glthread.c | 3 | ||||
-rw-r--r-- | src/mesa/glapi/sources | 12 |
9 files changed, 275 insertions, 156 deletions
diff --git a/src/mesa/glapi/EXT_framebuffer_object.xml b/src/mesa/glapi/EXT_framebuffer_object.xml index 66f250c003..1b0de2ad23 100644 --- a/src/mesa/glapi/EXT_framebuffer_object.xml +++ b/src/mesa/glapi/EXT_framebuffer_object.xml @@ -59,12 +59,18 @@ <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT" value="0x8CDC"/> <enum name="FRAMEBUFFER_UNSUPPORTED_EXT" value="0x8CDD"/> <enum name="FRAMEBUFFER_STATUS_ERROR_EXT" value="0x8CDE"/> - - <enum name="FRAMEBUFFER_BINDING_EXT" value="0x8CA6"/> - <enum name="RENDERBUFFER_BINDING_EXT" value="0x8CA7"/> - <enum name="MAX_COLOR_ATTACHMENTS_EXT" value="0x8CDF"/> - <enum name="MAX_RENDERBUFFER_SIZE_EXT" value="0x84E8"/> - + <enum name="FRAMEBUFFER_BINDING_EXT" count="1" value="0x8CA6"> + <size name="Get" mode="get"/> + </enum> + <enum name="RENDERBUFFER_BINDING_EXT" count="1" value="0x8CA7"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_COLOR_ATTACHMENTS_EXT" count="1" value="0x8CDF"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_RENDERBUFFER_SIZE_EXT" count="1" value="0x84E8"> + <size name="Get" mode="get"/> + </enum> <enum name="INVALID_FRAMEBUFFER_OPERATION_EXT" value="0x0506"/> <function name="IsRenderbufferEXT" offset="assign"> diff --git a/src/mesa/glapi/Makefile b/src/mesa/glapi/Makefile index c52c090347..adc53d9249 100644 --- a/src/mesa/glapi/Makefile +++ b/src/mesa/glapi/Makefile @@ -20,17 +20,30 @@ OUTPUTS = glprocs.h glapitemp.h glapioffsets.h glapitable.h dispatch.h \ ../../glx/x11/indirect_size.c -#XORG_BASE = /home/idr/devel/graphics/Xorg/xserver/xorg -GLX_DIR = $(XORG_BASE)/GL/glx +GLX_DIR = $(XORG_BASE)/glx -SERVER_OUTPUTS = $(GLX_DIR)/indirect_dispatch.c \ +SERVER_GLAPI_FILES = \ + $(GLX_DIR)/glapi.h \ + $(GLX_DIR)/glapi.c \ + $(GLX_DIR)/glthread.c \ + $(GLX_DIR)/glthread.h + +SERVER_OUTPUTS = \ + $(GLX_DIR)/indirect_dispatch.c \ $(GLX_DIR)/indirect_dispatch_swap.c \ $(GLX_DIR)/indirect_dispatch.h \ $(GLX_DIR)/indirect_reqsize.c \ $(GLX_DIR)/indirect_reqsize.h \ + $(GLX_DIR)/indirect_size.h \ $(GLX_DIR)/indirect_size_get.c \ $(GLX_DIR)/indirect_size_get.h \ - $(GLX_DIR)/indirect_table.c + $(GLX_DIR)/indirect_table.c \ + $(GLX_DIR)/glapitemp.h \ + $(GLX_DIR)/glapitable.h \ + $(GLX_DIR)/glapioffsets.h \ + $(GLX_DIR)/glprocs.h \ + $(GLX_DIR)/dispatch.h \ + $(SERVER_GLAPI_FILES) API_XML = gl_API.xml \ EXT_framebuffer_object.xml \ @@ -39,82 +52,94 @@ API_XML = gl_API.xml \ COMMON = gl_XML.py glX_XML.py license.py $(API_XML) typeexpr.py COMMON_GLX = $(COMMON) glX_API.xml glX_XML.py glX_proto_common.py -INDENT_FLAGS = -i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool +all: check-xorg-source $(OUTPUTS) $(SERVER_OUTPUTS) + +check-xorg-source: + @if ! test -d $(GLX_DIR); then \ + echo "ERROR: Must specify path to xserver checkout; set XORG_BASE."; \ + exit 1; \ + fi -all: $(OUTPUTS) +$(GLX_DIR)/%.c: %.c + cp $< $@ -server: $(SERVER_OUTPUTS) +$(GLX_DIR)/%.h: %.h + cp $< $@ -glprocs.h: $(COMMON) gl_procs.py - $(PYTHON2) $(PYTHON_FLAGS) gl_procs.py > glprocs.h +glprocs.h $(GLX_DIR)/glprocs.h: gl_procs.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -glapitemp.h: $(COMMON) gl_apitemp.py - $(PYTHON2) $(PYTHON_FLAGS) gl_apitemp.py > glapitemp.h +glapitemp.h $(GLX_DIR)/glapitemp.h: gl_apitemp.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -glapioffsets.h: $(COMMON) gl_offsets.py - $(PYTHON2) $(PYTHON_FLAGS) gl_offsets.py > glapioffsets.h +glapioffsets.h $(GLX_DIR)/glapioffsets.h: gl_offsets.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -glapitable.h: $(COMMON) gl_table.py - $(PYTHON2) $(PYTHON_FLAGS) gl_table.py > glapitable.h +glapitable.h $(GLX_DIR)/glapitable.h: gl_table.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -dispatch.h: $(COMMON) gl_table.py - $(PYTHON2) $(PYTHON_FLAGS) gl_table.py -m remap_table > dispatch.h +dispatch.h $(GLX_DIR)/dispatch.h: gl_table.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< -m remap_table > $@ -../main/enums.c: $(COMMON) gl_enums.py - $(PYTHON2) $(PYTHON_FLAGS) gl_enums.py > ../main/enums.c +../main/enums.c: gl_enums.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -../x86/glapi_x86.S: $(COMMON) gl_x86_asm.py - $(PYTHON2) $(PYTHON_FLAGS) gl_x86_asm.py > ../x86/glapi_x86.S +../x86/glapi_x86.S: gl_x86_asm.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -../x86-64/glapi_x86-64.S: $(COMMON) gl_x86-64_asm.py - $(PYTHON2) $(PYTHON_FLAGS) gl_x86-64_asm.py > ../x86-64/glapi_x86-64.S +../x86-64/glapi_x86-64.S: gl_x86-64_asm.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -../sparc/glapi_sparc.S: $(COMMON) gl_SPARC_asm.py - $(PYTHON2) $(PYTHON_FLAGS) gl_SPARC_asm.py > ../sparc/glapi_sparc.S +../sparc/glapi_sparc.S: gl_SPARC_asm.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -../drivers/dri/common/extension_helper.h: $(COMMON) extension_helper.py - $(PYTHON2) $(PYTHON_FLAGS) extension_helper.py > ../drivers/dri/common/extension_helper.h +../drivers/dri/common/extension_helper.h: extension_helper.py $(COMMON) + $(PYTHON2) $(PYTHON_FLAGS) $< > $@ -../../glx/x11/indirect.c: $(COMMON_GLX) glX_proto_send.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_send.py -m proto | indent $(INDENT_FLAGS) > ../../glx/x11/indirect.c +../../glx/x11/indirect.c: glX_proto_send.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m proto | $(INDENT) $(INDENT_FLAGS) > $@ -../../glx/x11/indirect.h: $(COMMON_GLX) glX_proto_send.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_send.py -m init_h > ../../glx/x11/indirect.h +../../glx/x11/indirect.h: glX_proto_send.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m init_h > $@ -../../glx/x11/indirect_init.c: $(COMMON_GLX) glX_proto_send.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_send.py -m init_c > ../../glx/x11/indirect_init.c +../../glx/x11/indirect_init.c: glX_proto_send.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m init_c > $@ -../../glx/x11/indirect_size.h: $(COMMON_GLX) glX_proto_size.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_size.py -m size_h --only-set -h _INDIRECT_SIZE_H_ | indent $(INDENT_FLAGS) > ../../glx/x11/indirect_size.h +../../glx/x11/indirect_size.h $(GLX_DIR)/indirect_size.h: glX_proto_size.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m size_h --only-set -h _INDIRECT_SIZE_H_ \ + | $(INDENT) $(INDENT_FLAGS) > $@ -../../glx/x11/indirect_size.c: $(COMMON_GLX) glX_proto_size.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_size.py -m size_c --only-set | indent $(INDENT_FLAGS) > ../../glx/x11/indirect_size.c +../../glx/x11/indirect_size.c: glX_proto_size.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m size_c --only-set \ + | $(INDENT) $(INDENT_FLAGS) > $@ -$(GLX_DIR)/indirect_dispatch.c: $(COMMON_GLX) glX_proto_recv.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_recv.py -m dispatch_c > $@ +$(GLX_DIR)/indirect_dispatch.c: glX_proto_recv.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m dispatch_c > $@ -$(GLX_DIR)/indirect_dispatch_swap.c: $(COMMON_GLX) glX_proto_recv.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_recv.py -m dispatch_c -s > $@ +$(GLX_DIR)/indirect_dispatch_swap.c: glX_proto_recv.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m dispatch_c -s > $@ -$(GLX_DIR)/indirect_dispatch.h: $(COMMON_GLX) glX_proto_recv.py glX_API.xml - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_recv.py -m dispatch_h -f gl_and_glX_API.xml -s > $@ +$(GLX_DIR)/indirect_dispatch.h: glX_proto_recv.py gl_and_glX_API.xml $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m dispatch_h -f gl_and_glX_API.xml -s > $@ -$(GLX_DIR)/indirect_size_get.h: $(COMMON_GLX) glX_proto_size.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_size.py -m size_h --only-get -h '_INDIRECT_SIZE_GET_H_' | indent $(INDENT_FLAGS) > $@ +$(GLX_DIR)/indirect_size_get.h: glX_proto_size.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m size_h --only-get -h '_INDIRECT_SIZE_GET_H_' \ + | $(INDENT) $(INDENT_FLAGS) > $@ -$(GLX_DIR)/indirect_size_get.c: $(COMMON_GLX) glX_proto_size.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_size.py -m size_c | indent $(INDENT_FLAGS) > $@ +$(GLX_DIR)/indirect_size_get.c: glX_proto_size.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m size_c | $(INDENT) $(INDENT_FLAGS) > $@ -$(GLX_DIR)/indirect_reqsize.h: $(COMMON_GLX) glX_proto_size.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_size.py -m reqsize_h --only-get -h '_INDIRECT_SIZE_GET_H_' | indent $(INDENT_FLAGS) -l200 > $@ +$(GLX_DIR)/indirect_reqsize.h: glX_proto_size.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m reqsize_h --only-get -h '_INDIRECT_SIZE_GET_H_' \ + | $(INDENT) $(INDENT_FLAGS) -l200 > $@ -$(GLX_DIR)/indirect_reqsize.c: $(COMMON_GLX) glX_proto_size.py - $(PYTHON2) $(PYTHON_FLAGS) glX_proto_size.py -m reqsize_c | indent $(INDENT_FLAGS) > $@ +$(GLX_DIR)/indirect_reqsize.c: glX_proto_size.py $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -m reqsize_c | $(INDENT) $(INDENT_FLAGS) > $@ -$(GLX_DIR)/indirect_table.c: $(COMMON_GLX) glX_server_table.py glX_API.xml - $(PYTHON2) $(PYTHON_FLAGS) glX_server_table.py -f gl_and_glX_API.xml > $@ +$(GLX_DIR)/indirect_table.c: glX_server_table.py gl_and_glX_API.xml $(COMMON_GLX) + $(PYTHON2) $(PYTHON_FLAGS) $< -f gl_and_glX_API.xml > $@ clean: - rm -f *~ *.pyo - rm -f $(OUTPUTS) + -rm -f *~ *.pyo + -rm -f $(OUTPUTS) diff --git a/src/mesa/glapi/glX_API.xml b/src/mesa/glapi/glX_API.xml index 455fc6a567..9e02aa498e 100644 --- a/src/mesa/glapi/glX_API.xml +++ b/src/mesa/glapi/glX_API.xml @@ -183,7 +183,6 @@ </function> </category> -<!-- <category name="GLX_SGIX_pbuffer" number="50" window_system="glX"> <function name="CreateGLXPbufferSGIX"> <glx vendorpriv="65543"/> @@ -201,7 +200,6 @@ <glx vendorpriv="65546"/> </function> </category> ---> <category name="GLX_MESA_copy_sub_buffer" number="215"> <function name="CopySubBufferMESA"> diff --git a/src/mesa/glapi/glX_XML.py b/src/mesa/glapi/glX_XML.py index 1b5c3239e0..4c2e0f95bf 100644 --- a/src/mesa/glapi/glX_XML.py +++ b/src/mesa/glapi/glX_XML.py @@ -115,7 +115,12 @@ class glx_function(gl_XML.gl_function): def process_element(self, element): gl_XML.gl_function.process_element(self, element) - self.vectorequiv = element.nsProp( "vectorequiv", None ) + # If the function already has a vector equivalent set, don't + # set it again. This can happen if an alias to a function + # appears after the function that it aliases. + + if not self.vectorequiv: + self.vectorequiv = element.nsProp("vectorequiv", None) name = element.nsProp("name", None) @@ -132,48 +137,47 @@ class glx_function(gl_XML.gl_function): child = element.children while child: - if child.type == "element": - if child.name == "glx": - rop = child.nsProp( 'rop', None ) - sop = child.nsProp( 'sop', None ) - vop = child.nsProp( 'vendorpriv', None ) - - if rop: - self.glx_rop = int(rop) - - if sop: - self.glx_sop = int(sop) - - if vop: - self.glx_vendorpriv = int(vop) - self.glx_vendorpriv_names.append(name) - - self.img_reset = child.nsProp( 'img_reset', None ) - - # The 'handcode' attribute can be one of 'true', - # 'false', 'client', or 'server'. - - handcode = child.nsProp( 'handcode', None ) - if handcode == "false": - self.server_handcode = 0 - self.client_handcode = 0 - elif handcode == "true": - self.server_handcode = 1 - self.client_handcode = 1 - elif handcode == "client": - self.server_handcode = 0 - self.client_handcode = 1 - elif handcode == "server": - self.server_handcode = 1 - self.client_handcode = 0 - else: - raise RuntimeError('Invalid handcode mode "%s" in function "%s".' % (handcode, self.name)) - - self.ignore = gl_XML.is_attr_true( child, 'ignore' ) - self.can_be_large = gl_XML.is_attr_true( child, 'large' ) - self.glx_doubles_in_order = gl_XML.is_attr_true( child, 'doubles_in_order' ) - self.reply_always_array = gl_XML.is_attr_true( child, 'always_array' ) - self.dimensions_in_reply = gl_XML.is_attr_true( child, 'dimensions_in_reply' ) + if child.type == "element" and child.name == "glx": + rop = child.nsProp( 'rop', None ) + sop = child.nsProp( 'sop', None ) + vop = child.nsProp( 'vendorpriv', None ) + + if rop: + self.glx_rop = int(rop) + + if sop: + self.glx_sop = int(sop) + + if vop: + self.glx_vendorpriv = int(vop) + self.glx_vendorpriv_names.append(name) + + self.img_reset = child.nsProp( 'img_reset', None ) + + # The 'handcode' attribute can be one of 'true', + # 'false', 'client', or 'server'. + + handcode = child.nsProp( 'handcode', None ) + if handcode == "false": + self.server_handcode = 0 + self.client_handcode = 0 + elif handcode == "true": + self.server_handcode = 1 + self.client_handcode = 1 + elif handcode == "client": + self.server_handcode = 0 + self.client_handcode = 1 + elif handcode == "server": + self.server_handcode = 1 + self.client_handcode = 0 + else: + raise RuntimeError('Invalid handcode mode "%s" in function "%s".' % (handcode, self.name)) + + self.ignore = gl_XML.is_attr_true( child, 'ignore' ) + self.can_be_large = gl_XML.is_attr_true( child, 'large' ) + self.glx_doubles_in_order = gl_XML.is_attr_true( child, 'doubles_in_order' ) + self.reply_always_array = gl_XML.is_attr_true( child, 'always_array' ) + self.dimensions_in_reply = gl_XML.is_attr_true( child, 'dimensions_in_reply' ) child = child.next @@ -553,6 +557,7 @@ class glx_function_iterator: def next(self): f = self.iterator.next() + if f.client_supported_for_indirect(): return f else: diff --git a/src/mesa/glapi/glX_proto_send.py b/src/mesa/glapi/glX_proto_send.py index 1b6a5f3890..b00b8a1ba6 100644 --- a/src/mesa/glapi/glX_proto_send.py +++ b/src/mesa/glapi/glX_proto_send.py @@ -373,7 +373,7 @@ const GLuint __glXDefaultPixelStore[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 1 }; print '{' print ' __GLXcontext * const gc = __glXGetCurrentContext();' print '' - print ' if (gc->isDirect) {' + print ' if (gc->driContext) {' print ' %sCALL_%s(GET_DISPATCH(), (%s));' % (ret_string, func.name, func.get_called_parameter_string()) print ' } else {' footer = '}\n}\n' @@ -511,7 +511,7 @@ generic_%u_byte( GLint rop, const void * ptr ) return - def common_func_print_just_start(self, f): + def common_func_print_just_start(self, f, name): print ' __GLXcontext * const gc = __glXGetCurrentContext();' # The only reason that single and vendor private commands need @@ -529,7 +529,7 @@ generic_%u_byte( GLint rop, const void * ptr ) if not f.glx_rop: for p in f.parameterIterateOutputs(): - if p.is_image(): + if p.is_image() and (p.img_format != "GL_COLOR_INDEX" or p.img_type != "GL_BITMAP"): print ' const __GLXattribute * const state = gc->client_state_private;' break @@ -545,11 +545,23 @@ generic_%u_byte( GLint rop, const void * ptr ) print ' %s retval = (%s) 0;' % (f.return_type, f.return_type) + if name != None and name not in f.glx_vendorpriv_names: + print '#ifndef USE_XCB' self.emit_packet_size_calculation(f, 0) + if name != None and name not in f.glx_vendorpriv_names: + print '#endif' condition_list = [] for p in f.parameterIterateCounters(): condition_list.append( "%s >= 0" % (p.name) ) + # 'counter' parameters cannot be negative + print " if (%s < 0) {" % p.name + print " __glXSetError(gc, GL_INVALID_VALUE);" + if f.return_type != 'void': + print " return 0;" + else: + print " return;" + print " }" if skip_condition: condition_list.append( skip_condition ) @@ -567,7 +579,7 @@ generic_%u_byte( GLint rop, const void * ptr ) def printSingleFunction(self, f, name): - self.common_func_print_just_start(f) + self.common_func_print_just_start(f, name) if self.debug: print ' printf( "Enter %%s...\\n", "gl%s" );' % (f.name) @@ -739,7 +751,7 @@ generic_%u_byte( GLint rop, const void * ptr ) return - if self.common_func_print_just_start(f): + if self.common_func_print_just_start(f, None): trailer = " }" else: trailer = None @@ -791,7 +803,7 @@ generic_%u_byte( GLint rop, const void * ptr ) print ' generic_%u_byte( %s, %s );' % (cmdlen, f.opcode_real_name(), p.name) return - if self.common_func_print_just_start(f): + if self.common_func_print_just_start(f, None): trailer = " }" else: trailer = None diff --git a/src/mesa/glapi/gl_API.xml b/src/mesa/glapi/gl_API.xml index ef4a309cd6..2d8a967ba7 100644 --- a/src/mesa/glapi/gl_API.xml +++ b/src/mesa/glapi/gl_API.xml @@ -3380,7 +3380,9 @@ <size name="GetTexParameterfv" mode="get"/> <size name="GetTexParameteriv" mode="get"/> </enum> - <enum name="MAX_3D_TEXTURE_SIZE" value="0x8073"/> + <enum name="MAX_3D_TEXTURE_SIZE" count="1" value="0x8073"> + <size name="Get" mode="get"/> + </enum> <enum name="UNSIGNED_BYTE_2_3_3_REV" value="0x8362"/> <enum name="UNSIGNED_SHORT_5_6_5" value="0x8363"/> <enum name="UNSIGNED_SHORT_5_6_5_REV" value="0x8364"/> @@ -4527,15 +4529,19 @@ </enum> <enum name="POINT_SIZE_MIN" count="1" value="0x8126"> <size name="PointParameterfvEXT"/> + <size name="Get" mode="get"/> </enum> <enum name="POINT_SIZE_MAX" count="1" value="0x8127"> <size name="PointParameterfvEXT"/> + <size name="Get" mode="get"/> </enum> <enum name="POINT_FADE_THRESHOLD_SIZE" count="1" value="0x8128"> <size name="PointParameterfvEXT"/> + <size name="Get" mode="get"/> </enum> <enum name="POINT_DISTANCE_ATTENUATION" count="3" value="0x8129"> <size name="PointParameterfvEXT"/> + <size name="Get" mode="get"/> </enum> <enum name="GENERATE_MIPMAP" count="1" value="0x8191"> <size name="TexParameterfv"/> @@ -7285,27 +7291,59 @@ </category> <category name="GL_ARB_vertex_buffer_object" number="28"> - <enum name="BUFFER_SIZE_ARB" value="0x8764"/> - <enum name="BUFFER_USAGE_ARB" value="0x8765"/> - <enum name="ARRAY_BUFFER_ARB" value="0x8892"/> - <enum name="ELEMENT_ARRAY_BUFFER_ARB" value="0x8893"/> - <enum name="ARRAY_BUFFER_BINDING_ARB" value="0x8894"/> - <enum name="ELEMENT_ARRAY_BUFFER_BINDING_ARB" value="0x8895"/> - <enum name="VERTEX_ARRAY_BUFFER_BINDING_ARB" value="0x8896"/> - <enum name="NORMAL_ARRAY_BUFFER_BINDING_ARB" value="0x8897"/> - <enum name="COLOR_ARRAY_BUFFER_BINDING_ARB" value="0x8898"/> - <enum name="INDEX_ARRAY_BUFFER_BINDING_ARB" value="0x8899"/> - <enum name="TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB" value="0x889A"/> - <enum name="EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB" value="0x889B"/> - <enum name="SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB" value="0x889C"/> - <enum name="FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB" value="0x889D"/> - <enum name="WEIGHT_ARRAY_BUFFER_BINDING_ARB" value="0x889E"/> - <enum name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB" value="0x889F"/> + <enum name="BUFFER_SIZE_ARB" count="1" value="0x8764"> + <size name="GetBufferParameterivARB" mode="get"/> + </enum> + <enum name="BUFFER_USAGE_ARB" count="1" value="0x8765"> + <size name="GetBufferParameterivARB" mode="get"/> + </enum> + <enum name="ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8894"> + <size name="Get" mode="get"/> + </enum> + <enum name="ELEMENT_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8895"> + <size name="Get" mode="get"/> + </enum> + <enum name="VERTEX_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8896"> + <size name="Get" mode="get"/> + </enum> + <enum name="NORMAL_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8897"> + <size name="Get" mode="get"/> + </enum> + <enum name="COLOR_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8898"> + <size name="Get" mode="get"/> + </enum> + <enum name="INDEX_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8899"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889A"> + <size name="Get" mode="get"/> + </enum> + <enum name="EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889B"> + <size name="Get" mode="get"/> + </enum> + <enum name="SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889C"> + <size name="Get" mode="get"/> + </enum> + <enum name="FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889D"> + <size name="Get" mode="get"/> + </enum> + <enum name="WEIGHT_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889E"> + <size name="Get" mode="get"/> + </enum> + <enum name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889F"> + <size name="GetVertexAttribdvARB" mode="get"/> + <size name="GetVertexAttribfvARB" mode="get"/> + <size name="GetVertexAttribivARB" mode="get"/> + </enum> <enum name="READ_ONLY_ARB" value="0x88B8"/> <enum name="WRITE_ONLY_ARB" value="0x88B9"/> <enum name="READ_WRITE_ARB" value="0x88BA"/> - <enum name="BUFFER_ACCESS_ARB" value="0x88BB"/> - <enum name="BUFFER_MAPPED_ARB" value="0x88BC"/> + <enum name="BUFFER_ACCESS_ARB" count="1" value="0x88BB"> + <size name="GetBufferParameterivARB" mode="get"/> + </enum> + <enum name="BUFFER_MAPPED_ARB" count="1" value="0x88BC"> + <size name="GetBufferParameterivARB" mode="get"/> + </enum> <enum name="BUFFER_MAP_POINTER_ARB" value="0x88BD"/> <enum name="STREAM_DRAW_ARB" value="0x88E0"/> <enum name="STREAM_READ_ARB" value="0x88E1"/> @@ -7317,8 +7355,8 @@ <enum name="DYNAMIC_READ_ARB" value="0x88E9"/> <enum name="DYNAMIC_COPY_ARB" value="0x88EA"/> - <type name="intptrARB" size="4"/> - <type name="sizeiptrARB" unsigned="true" size="4"/> + <type name="intptrARB" size="4" glx_name="CARD32"/> + <type name="sizeiptrARB" size="4" unsigned="true" glx_name="CARD32"/> <function name="BindBufferARB" offset="assign"> <param name="target" type="GLenum"/> @@ -7328,8 +7366,8 @@ <function name="BufferDataARB" offset="assign"> <param name="target" type="GLenum"/> - <param name="size" type="GLsizeiptrARB"/> - <param name="data" type="const GLvoid *"/> + <param name="size" type="GLsizeiptrARB" counter="true"/> + <param name="data" type="const GLvoid *" count="size" img_null_flag="true"/> <param name="usage" type="GLenum"/> <glx ignore="true"/> </function> @@ -7337,14 +7375,14 @@ <function name="BufferSubDataARB" offset="assign"> <param name="target" type="GLenum"/> <param name="offset" type="GLintptrARB"/> - <param name="size" type="GLsizeiptrARB"/> - <param name="data" type="const GLvoid *"/> + <param name="size" type="GLsizeiptrARB" counter="true"/> + <param name="data" type="const GLvoid *" count="size"/> <glx ignore="true"/> </function> <function name="DeleteBuffersARB" offset="assign"> - <param name="n" type="GLsizei"/> - <param name="buffer" type="const GLuint *"/> + <param name="n" type="GLsizei" counter="true"/> + <param name="buffer" type="const GLuint *" count="n"/> <glx ignore="true"/> </function> @@ -7357,7 +7395,7 @@ <function name="GetBufferParameterivARB" offset="assign"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="GLint *" output="true"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> <glx ignore="true"/> </function> @@ -7371,8 +7409,8 @@ <function name="GetBufferSubDataARB" offset="assign"> <param name="target" type="GLenum"/> <param name="offset" type="GLintptrARB"/> - <param name="size" type="GLsizeiptrARB"/> - <param name="data" type="GLvoid *" output="true"/> + <param name="size" type="GLsizeiptrARB" counter="true"/> + <param name="data" type="GLvoid *" output="true" count="size"/> <glx ignore="true"/> </function> @@ -12129,8 +12167,12 @@ <category name="GL_EXT_framebuffer_blit" number="316"> <enum name="READ_FRAMEBUFFER_EXT" value="0x8CA8"/> <enum name="DRAW_FRAMEBUFFER_EXT" value="0x8CA9"/> - <enum name="DRAW_FRAMEBUFFER_BINDING_EXT" value="0x8CA6"/> - <enum name="READ_FRAMEBUFFER_BINDING_EXT" value="0x8CAA"/> + <enum name="DRAW_FRAMEBUFFER_BINDING_EXT" count="1" value="0x8CA6"> + <size name="Get" mode="get"/> + </enum> + <enum name="READ_FRAMEBUFFER_BINDING_EXT" count="1" value="0x8CAA"> + <size name="Get" mode="get"/> + </enum> <function name="BlitFramebufferEXT" offset="assign" static_dispatch="false"> <param name="srcX0" type="GLint"/> <param name="srcY0" type="GLint"/> diff --git a/src/mesa/glapi/glapi.c b/src/mesa/glapi/glapi.c index 53efd7eef4..9b5144a88b 100644 --- a/src/mesa/glapi/glapi.c +++ b/src/mesa/glapi/glapi.c @@ -50,7 +50,23 @@ +#ifdef HAVE_DIX_CONFIG_H + +#include <dix-config.h> +#define PUBLIC + +#else + #include "main/glheader.h" + +#endif + +#include <stdlib.h> +#include <string.h> +#ifdef DEBUG +#include <assert.h> +#endif + #include "glapi.h" #include "glapioffsets.h" #include "glapitable.h" @@ -278,8 +294,32 @@ _glapi_get_context(void) #endif } +#ifdef USE_X86_ASM + +#if defined( GLX_USE_TLS ) +extern GLubyte gl_dispatch_functions_start[]; +extern GLubyte gl_dispatch_functions_end[]; +#else +extern const GLubyte gl_dispatch_functions_start[]; +#endif + +#endif /* USE_X86_ASM */ +#if defined(USE_X64_64_ASM) && defined(GLX_USE_TLS) +# define DISPATCH_FUNCTION_SIZE 16 +#elif defined(USE_X86_ASM) +# if defined(THREADS) && !defined(GLX_USE_TLS) +# define DISPATCH_FUNCTION_SIZE 32 +# else +# define DISPATCH_FUNCTION_SIZE 16 +# endif +#endif + +#if !defined(DISPATCH_FUNCTION_SIZE) && !defined(XFree86Server) && !defined(XGLServer) +# define NEED_FUNCTION_POINTER +#endif + #if defined(PTHREADS) || defined(GLX_USE_TLS) /** * Perform platform-specific GL API entry-point fixups. diff --git a/src/mesa/glapi/glthread.c b/src/mesa/glapi/glthread.c index 09cc8cfcde..56ddf7c25a 100644 --- a/src/mesa/glapi/glthread.c +++ b/src/mesa/glapi/glthread.c @@ -28,6 +28,9 @@ * truly reusable outside of Mesa. First, the glheader.h include must go. */ +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif #include "main/glheader.h" #include "glthread.h" diff --git a/src/mesa/glapi/sources b/src/mesa/glapi/sources deleted file mode 100644 index 1d5c252821..0000000000 --- a/src/mesa/glapi/sources +++ /dev/null @@ -1,12 +0,0 @@ -MESA_GLAPI_SOURCES = \ -glapi.c \ -glthread.c - -MESA_GLAPI_HEADERS = \ -dispatch.h \ -glapi.h \ -glapioffsets.h \ -glapitable.h \ -glapitemp.h \ -glprocs.h \ -glthread.h |