diff options
Diffstat (limited to 'src/mesa/es')
32 files changed, 15046 insertions, 0 deletions
diff --git a/src/mesa/es/Makefile b/src/mesa/es/Makefile new file mode 100644 index 0000000000..b571eedecf --- /dev/null +++ b/src/mesa/es/Makefile @@ -0,0 +1,115 @@ +# src/mesa/es/Makefile +# +TOP := ../../.. +MESA := .. + +include $(TOP)/configs/current +include sources.mak + +# no libes1.a and libes2.a by default +ES1_LIBS := libes1.a libes1gallium.a libes1api.a +ES2_LIBS := libes2.a libes2gallium.a libes2api.a + +# Default rule: create ES1 and ES2 libs +.PHONY: default +default: subdirs $(ES1_LIBS) $(ES2_LIBS) + +# force the inclusion of es's mfeatures.h +ES1_CFLAGS := -include main/mfeatures.h -D__GL_EXPORTS -UIN_DRI_DRIVER +ES2_CFLAGS := $(ES1_CFLAGS) + +# rebuild when these files are changed +ES1_GLAPI_DEPS := glapi/headers-es1/glapi/dispatch.h +ES2_GLAPI_DEPS := glapi/headers-es2/glapi/dispatch.h + +ES1_OBJ_DIR := objs-es1 +ES2_OBJ_DIR := objs-es2 + +# adjust output dir +ES1_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(ES1_OBJECTS)) +ES1_GALLIUM_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(ES1_GALLIUM_OBJECTS)) +ES1_API_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(ES1_API_OBJECTS)) + +ES2_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(ES2_OBJECTS)) +ES2_GALLIUM_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(ES2_GALLIUM_OBJECTS)) +ES2_API_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(ES2_API_OBJECTS)) + +# specify prerequisites +$(foreach obj,$(ALL_LOCAL_OBJECTS), \ + $(eval $(ES1_OBJ_DIR)/$(obj): $(obj:.o=.c) $(ES1_GLAPI_DEPS)) \ + $(eval $(ES2_OBJ_DIR)/$(obj): $(obj:.o=.c) $(ES2_GLAPI_DEPS))) +$(foreach obj,$(ALL_MESA_OBJECTS), \ + $(eval $(ES1_OBJ_DIR)/$(obj): $(MESA)/$(obj:.o=.c) $(ES1_GLAPI_DEPS)) \ + $(eval $(ES2_OBJ_DIR)/$(obj): $(MESA)/$(obj:.o=.c) $(ES2_GLAPI_DEPS))) + +# sort to remove duplicates +ES1_ANY_OBJECTS := $(sort $(ES1_OBJECTS) $(ES1_GALLIUM_OBJECTS)) +ES2_ANY_OBJECTS := $(sort $(ES2_OBJECTS) $(ES2_GALLIUM_OBJECTS)) + +$(ES1_ANY_OBJECTS): + @mkdir -p $(dir $@) + $(CC) -c $(CFLAGS) $(ES1_CFLAGS) $(ES1_INCLUDES) $< -o $@ + +$(ES1_API_OBJECTS): + @mkdir -p $(dir $@) + $(CC) -c $(CFLAGS) $(ES1_CFLAGS) -UIN_DRI_DRIVER $(ES1_INCLUDES) $< -o $@ + +$(ES2_ANY_OBJECTS): + @mkdir -p $(dir $@) + $(CC) -c $(CFLAGS) $(ES2_CFLAGS) $(ES2_INCLUDES) $< -o $@ + +$(ES2_API_OBJECTS): + @mkdir -p $(dir $@) + $(CC) -c $(CFLAGS) $(ES2_CFLAGS) -UIN_DRI_DRIVER $(ES2_INCLUDES) $< -o $@ + +libes1.a: $(ES1_OBJECTS) + @echo "Making $@" + @$(TOP)/bin/mklib -o es1 -static $(ES1_OBJECTS) + +libes2.a: $(ES2_OBJECTS) + @echo "Making $@" + @$(TOP)/bin/mklib -o es2 -static $(ES1_OBJECTS) + +libes1gallium.a: $(ES1_GALLIUM_OBJECTS) + @echo "Making $@" + @$(TOP)/bin/mklib -o es1gallium -static $(ES1_GALLIUM_OBJECTS) + +libes2gallium.a: $(ES2_GALLIUM_OBJECTS) + @echo "Making $@" + @$(TOP)/bin/mklib -o es2gallium -static $(ES2_GALLIUM_OBJECTS) + +libes1api.a: $(ES1_API_OBJECTS) + @echo "Making $@" + @$(TOP)/bin/mklib -o es1api -static $(ES1_API_OBJECTS) + +libes2api.a: $(ES2_API_OBJECTS) + @echo "Making $@" + @$(TOP)/bin/mklib -o es2api -static $(ES2_API_OBJECTS) + +GENERATED_SOURCES := \ + main/api_exec_es1.c \ + main/api_exec_es2.c \ + main/get_es1.c \ + main/get_es2.c + +main/api_exec_es1.c: main/APIspec.txt main/es_generator.py main/apiutil.py main/es1_special + $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.txt -V GLES1.1 > $@ + +main/api_exec_es2.c: main/APIspec.txt main/es_generator.py main/apiutil.py main/es2_special + $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.txt -V GLES2.0 > $@ + +main/get_es1.c: main/get_gen.py + $(PYTHON2) $(PYTHON_FLAGS) $< 1 > $@ + +main/get_es2.c: main/get_gen.py + $(PYTHON2) $(PYTHON_FLAGS) $< 2 > $@ + +subdirs: + make -C glapi + +.PHONY: clean +clean: + -rm -f $(ES1_LIBS) $(ES2_LIBS) + -rm -rf $(ES1_OBJ_DIR) $(ES2_OBJ_DIR) + -rm -f $(GENERATED_SOURCES) + -rm -f *~ diff --git a/src/mesa/es/glapi/Makefile b/src/mesa/es/glapi/Makefile new file mode 100644 index 0000000000..a658bb1f0c --- /dev/null +++ b/src/mesa/es/glapi/Makefile @@ -0,0 +1,65 @@ +TOP = ../../../.. +GLAPI = ../../glapi +include $(TOP)/configs/current + +OUTPUTS := glprocs.h glapitemp.h glapioffsets.h glapitable.h dispatch.h + +COMMON = gl_XML.py glX_XML.py license.py typeexpr.py +COMMON := $(addprefix $(GLAPI)/, $(COMMON)) + +ES1_APIXML := es1_API.xml +ES2_APIXML := es2_API.xml +ES1_OUTPUT_DIR := headers-es1 +ES2_OUTPUT_DIR := headers-es2 + +ES1_DEPS = $(ES1_APIXML) base1_API.xml es1_EXT.xml es_EXT.xml \ + es1_COMPAT.xml es_COMPAT.xml +ES2_DEPS = $(ES2_APIXML) base2_API.xml es2_EXT.xml es_EXT.xml \ + es2_COMPAT.xml es_COMPAT.xml + +ES1_OUTPUTS := $(addprefix $(ES1_OUTPUT_DIR)/glapi/, $(OUTPUTS)) +ES2_OUTPUTS := $(addprefix $(ES2_OUTPUT_DIR)/glapi/, $(OUTPUTS)) + +all: $(ES1_OUTPUTS) $(ES2_OUTPUTS) + +$(ES1_OUTPUTS): APIXML := $(ES1_APIXML) +$(ES2_OUTPUTS): APIXML := $(ES2_APIXML) +$(ES1_OUTPUTS): $(ES1_DEPS) +$(ES2_OUTPUTS): $(ES2_DEPS) + +%/glprocs.h: $(GLAPI)/gl_procs.py $(COMMON) + @mkdir -p $(dir $@) + $(PYTHON2) $(PYTHON_FLAGS) $< -f $(APIXML) -c > $@ + +%/glapitemp.h: $(GLAPI)/gl_apitemp.py $(COMMON) + @mkdir -p $(dir $@) + $(PYTHON2) $(PYTHON_FLAGS) $< -f $(APIXML) > $@ + +%/glapioffsets.h: $(GLAPI)/gl_offsets.py $(COMMON) + @mkdir -p $(dir $@) + $(PYTHON2) $(PYTHON_FLAGS) $< -f $(APIXML) -c > $@ + +%/glapitable.h: $(GLAPI)/gl_table.py $(COMMON) + @mkdir -p $(dir $@) + $(PYTHON2) $(PYTHON_FLAGS) $< -f $(APIXML) -c > $@ + +%/dispatch.h: $(GLAPI)/gl_table.py $(COMMON) + @mkdir -p $(dir $@) + $(PYTHON2) $(PYTHON_FLAGS) $< -f $(APIXML) -m remap_table -c > $@ + +verify_xml: + @if [ ! -f gl.h ]; then \ + echo "Please copy gl.h and gl2.h to this directory"; \ + exit 1; \ + fi + @echo "Verifying that es1_API.xml covers OpenGL ES 1.1..." + @$(PYTHON2) $(PYTHON_FLAGS) gl_parse_header.py gl.h > tmp.xml + @$(PYTHON2) $(PYTHON_FLAGS) gl_compare.py difference tmp.xml es1_API.xml + @echo "Verifying that es2_API.xml covers OpenGL ES 2.0..." + @$(PYTHON2) $(PYTHON_FLAGS) gl_parse_header.py gl2.h > tmp.xml + @$(PYTHON2) $(PYTHON_FLAGS) gl_compare.py difference tmp.xml es2_API.xml + @rm -f tmp.xml + +clean: + -rm -rf $(ES1_OUTPUT_DIR) $(ES2_OUTPUT_DIR) + -rm -f *~ *.pyc *.pyo diff --git a/src/mesa/es/glapi/base1_API.xml b/src/mesa/es/glapi/base1_API.xml new file mode 100644 index 0000000000..a7c5264c88 --- /dev/null +++ b/src/mesa/es/glapi/base1_API.xml @@ -0,0 +1,760 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gl_API.dtd"> + +<!-- OpenGL and OpenGL ES 1.x APIs + This file defines the base categories that can be shared by all APIs. + They are defined in an incremental fashion. The "es" variant of a + category, if exists, is not usually used, except for OpenGL ES 1.0. +--> + +<OpenGLAPI> + +<!-- base subset of OpenGL 1.0, excluding those not in OpenGL ES 1.0 --> +<category name="base1.0es"> + <enum name="FALSE" value="0x0"/> + <enum name="TRUE" value="0x1"/> + <enum name="ZERO" value="0x0"/> + <enum name="ONE" value="0x1"/> + <enum name="NO_ERROR" value="0x0"/> + + <enum name="POINTS" value="0x0000"/> + <enum name="LINES" value="0x0001"/> + <enum name="LINE_LOOP" value="0x0002"/> + <enum name="LINE_STRIP" value="0x0003"/> + <enum name="TRIANGLES" value="0x0004"/> + <enum name="TRIANGLE_STRIP" value="0x0005"/> + <enum name="TRIANGLE_FAN" value="0x0006"/> + <enum name="NEVER" value="0x0200"/> + <enum name="LESS" value="0x0201"/> + <enum name="EQUAL" value="0x0202"/> + <enum name="LEQUAL" value="0x0203"/> + <enum name="GREATER" value="0x0204"/> + <enum name="NOTEQUAL" value="0x0205"/> + <enum name="GEQUAL" value="0x0206"/> + <enum name="ALWAYS" value="0x0207"/> + <enum name="SRC_COLOR" value="0x0300"/> + <enum name="ONE_MINUS_SRC_COLOR" value="0x0301"/> + <enum name="SRC_ALPHA" value="0x0302"/> + <enum name="ONE_MINUS_SRC_ALPHA" value="0x0303"/> + <enum name="DST_ALPHA" value="0x0304"/> + <enum name="ONE_MINUS_DST_ALPHA" value="0x0305"/> + <enum name="DST_COLOR" value="0x0306"/> + <enum name="ONE_MINUS_DST_COLOR" value="0x0307"/> + <enum name="SRC_ALPHA_SATURATE" value="0x0308"/> + <enum name="FRONT" value="0x0404"/> + <enum name="BACK" value="0x0405"/> + <enum name="FRONT_AND_BACK" value="0x0408"/> + <enum name="INVALID_ENUM" value="0x0500"/> + <enum name="INVALID_VALUE" value="0x0501"/> + <enum name="INVALID_OPERATION" value="0x0502"/> + <enum name="OUT_OF_MEMORY" value="0x0505"/> + <enum name="CW" value="0x0900"/> + <enum name="CCW" value="0x0901"/> + <enum name="CULL_FACE" count="1" value="0x0B44"> + <size name="Get" mode="get"/> + </enum> + <enum name="DEPTH_TEST" count="1" value="0x0B71"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_TEST" count="1" value="0x0B90"> + <size name="Get" mode="get"/> + </enum> + <enum name="DITHER" count="1" value="0x0BD0"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND" count="1" value="0x0BE2"> + <size name="Get" mode="get"/> + </enum> + <enum name="SCISSOR_TEST" count="1" value="0x0C11"> + <size name="Get" mode="get"/> + </enum> + <enum name="UNPACK_ALIGNMENT" count="1" value="0x0CF5"> + <size name="Get" mode="get"/> + </enum> + <enum name="PACK_ALIGNMENT" count="1" value="0x0D05"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_TEXTURE_SIZE" count="1" value="0x0D33"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_VIEWPORT_DIMS" count="2" value="0x0D3A"> + <size name="Get" mode="get"/> + </enum> + <enum name="SUBPIXEL_BITS" count="1" value="0x0D50"> + <size name="Get" mode="get"/> + </enum> + <enum name="RED_BITS" count="1" value="0x0D52"> + <size name="Get" mode="get"/> + </enum> + <enum name="GREEN_BITS" count="1" value="0x0D53"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLUE_BITS" count="1" value="0x0D54"> + <size name="Get" mode="get"/> + </enum> + <enum name="ALPHA_BITS" count="1" value="0x0D55"> + <size name="Get" mode="get"/> + </enum> + <enum name="DEPTH_BITS" count="1" value="0x0D56"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_BITS" count="1" value="0x0D57"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_2D" count="1" value="0x0DE1"> + <size name="Get" mode="get"/> + </enum> + <enum name="DONT_CARE" value="0x1100"/> + <enum name="FASTEST" value="0x1101"/> + <enum name="NICEST" value="0x1102"/> + <enum name="BYTE" count="1" value="0x1400"> + <size name="CallLists"/> + </enum> + <enum name="UNSIGNED_BYTE" count="1" value="0x1401"> + <size name="CallLists"/> + </enum> + <enum name="SHORT" count="2" value="0x1402"> + <size name="CallLists"/> + </enum> + <enum name="UNSIGNED_SHORT" count="2" value="0x1403"> + <size name="CallLists"/> + </enum> + <enum name="FLOAT" count="4" value="0x1406"> + <size name="CallLists"/> + </enum> + <enum name="INVERT" value="0x150A"/> + <enum name="TEXTURE" value="0x1702"/> + <enum name="ALPHA" value="0x1906"/> + <enum name="RGB" value="0x1907"/> + <enum name="RGBA" value="0x1908"/> + <enum name="LUMINANCE" value="0x1909"/> + <enum name="LUMINANCE_ALPHA" value="0x190A"/> + <enum name="KEEP" value="0x1E00"/> + <enum name="REPLACE" value="0x1E01"/> + <enum name="INCR" value="0x1E02"/> + <enum name="DECR" value="0x1E03"/> + <enum name="VENDOR" value="0x1F00"/> + <enum name="RENDERER" value="0x1F01"/> + <enum name="VERSION" value="0x1F02"/> + <enum name="EXTENSIONS" value="0x1F03"/> + <enum name="NEAREST" value="0x2600"/> + <enum name="LINEAR" value="0x2601"/> + <enum name="NEAREST_MIPMAP_NEAREST" value="0x2700"/> + <enum name="LINEAR_MIPMAP_NEAREST" value="0x2701"/> + <enum name="NEAREST_MIPMAP_LINEAR" value="0x2702"/> + <enum name="LINEAR_MIPMAP_LINEAR" value="0x2703"/> + <enum name="TEXTURE_MAG_FILTER" count="1" value="0x2800"> + <size name="TexParameterfv"/> + <size name="TexParameteriv"/> + <size name="GetTexParameterfv" mode="get"/> + <size name="GetTexParameteriv" mode="get"/> + </enum> + <enum name="TEXTURE_MIN_FILTER" count="1" value="0x2801"> + <size name="TexParameterfv"/> + <size name="TexParameteriv"/> + <size name="GetTexParameterfv" mode="get"/> + <size name="GetTexParameteriv" mode="get"/> + </enum> + <enum name="TEXTURE_WRAP_S" count="1" value="0x2802"> + <size name="TexParameterfv"/> + <size name="TexParameteriv"/> + <size name="GetTexParameterfv" mode="get"/> + <size name="GetTexParameteriv" mode="get"/> + </enum> + <enum name="TEXTURE_WRAP_T" count="1" value="0x2803"> + <size name="TexParameterfv"/> + <size name="TexParameteriv"/> + <size name="GetTexParameterfv" mode="get"/> + <size name="GetTexParameteriv" mode="get"/> + </enum> + <enum name="REPEAT" value="0x2901"/> + + <enum name="DEPTH_BUFFER_BIT" value="0x00000100"/> + <enum name="STENCIL_BUFFER_BIT" value="0x00000400"/> + <enum name="COLOR_BUFFER_BIT" value="0x00004000"/> + + <type name="float" size="4" float="true" glx_name="FLOAT32"/> + <type name="clampf" size="4" float="true" glx_name="FLOAT32"/> + + <type name="int" size="4" glx_name="CARD32"/> + <type name="uint" size="4" unsigned="true" glx_name="CARD32"/> + <type name="sizei" size="4" glx_name="CARD32"/> + <type name="enum" size="4" unsigned="true" glx_name="ENUM"/> + <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/> + + <type name="short" size="2" glx_name="CARD16"/> + <type name="ushort" size="2" unsigned="true" glx_name="CARD16"/> + + <type name="byte" size="1" glx_name="CARD8"/> + <type name="ubyte" size="1" unsigned="true" glx_name="CARD8"/> + <type name="boolean" size="1" unsigned="true" glx_name="CARD8"/> + + <type name="void" size="1"/> + + <function name="BlendFunc" offset="241"> + <param name="sfactor" type="GLenum"/> + <param name="dfactor" type="GLenum"/> + <glx rop="160"/> + </function> + + <function name="Clear" offset="203"> + <param name="mask" type="GLbitfield"/> + <glx rop="127"/> + </function> + + <function name="ClearColor" offset="206"> + <param name="red" type="GLclampf"/> + <param name="green" type="GLclampf"/> + <param name="blue" type="GLclampf"/> + <param name="alpha" type="GLclampf"/> + <glx rop="130"/> + </function> + + <function name="ClearStencil" offset="207"> + <param name="s" type="GLint"/> + <glx rop="131"/> + </function> + + <function name="ColorMask" offset="210"> + <param name="red" type="GLboolean"/> + <param name="green" type="GLboolean"/> + <param name="blue" type="GLboolean"/> + <param name="alpha" type="GLboolean"/> + <glx rop="134"/> + </function> + + <function name="CullFace" offset="152"> + <param name="mode" type="GLenum"/> + <glx rop="79"/> + </function> + + <function name="DepthFunc" offset="245"> + <param name="func" type="GLenum"/> + <glx rop="164"/> + </function> + + <function name="DepthMask" offset="211"> + <param name="flag" type="GLboolean"/> + <glx rop="135"/> + </function> + + <function name="Disable" offset="214"> + <param name="cap" type="GLenum"/> + <glx rop="138" handcode="client"/> + </function> + + <function name="Enable" offset="215"> + <param name="cap" type="GLenum"/> + <glx rop="139" handcode="client"/> + </function> + + <function name="Finish" offset="216"> + <glx sop="108" handcode="true"/> + </function> + + <function name="Flush" offset="217"> + <glx sop="142" handcode="true"/> + </function> + + <function name="FrontFace" offset="157"> + <param name="mode" type="GLenum"/> + <glx rop="84"/> + </function> + + <function name="GetError" offset="261"> + <return type="GLenum"/> + <glx sop="115" handcode="client"/> + </function> + + <function name="GetIntegerv" offset="263"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="117" handcode="client"/> + </function> + + <function name="GetString" offset="275"> + <param name="name" type="GLenum"/> + <return type="const GLubyte *"/> + <glx sop="129" handcode="true"/> + </function> + + <function name="Hint" offset="158"> + <param name="target" type="GLenum"/> + <param name="mode" type="GLenum"/> + <glx rop="85"/> + </function> + + <function name="LineWidth" offset="168"> + <param name="width" type="GLfloat"/> + <glx rop="95"/> + </function> + + <function name="PixelStorei" offset="250"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx sop="110" handcode="client"/> + </function> + + <function name="ReadPixels" offset="256"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/> + <glx sop="111"/> + </function> + + <function name="Scissor" offset="176"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="103"/> + </function> + + <function name="StencilFunc" offset="243"> + <param name="func" type="GLenum"/> + <param name="ref" type="GLint"/> + <param name="mask" type="GLuint"/> + <glx rop="162"/> + </function> + + <function name="StencilMask" offset="209"> + <param name="mask" type="GLuint"/> + <glx rop="133"/> + </function> + + <function name="StencilOp" offset="244"> + <param name="fail" type="GLenum"/> + <param name="zfail" type="GLenum"/> + <param name="zpass" type="GLenum"/> + <glx rop="163"/> + </function> + + <function name="TexParameterf" offset="178"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="105"/> + </function> + + <function name="Viewport" offset="305"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="191"/> + </function> +</category> + +<!-- base subset of OpenGL 1.1, excluding those not in OpenGL ES 1.0 --> +<category name="base1.1es"> + <enum name="POLYGON_OFFSET_FILL" value="0x8037"/> + + <function name="BindTexture" offset="307"> + <param name="target" type="GLenum"/> + <param name="texture" type="GLuint"/> + <glx rop="4117"/> + </function> + + <function name="CopyTexImage2D" offset="324"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLenum"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="border" type="GLint"/> + <glx rop="4120"/> + </function> + + <function name="CopyTexSubImage2D" offset="326"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="4122"/> + </function> + + <function name="DeleteTextures" offset="327"> + <param name="n" type="GLsizei" counter="true"/> + <param name="textures" type="const GLuint *" count="n"/> + <glx sop="144"/> + </function> + + <function name="DrawArrays" offset="310"> + <param name="mode" type="GLenum"/> + <param name="first" type="GLint"/> + <param name="count" type="GLsizei"/> + <glx rop="193" handcode="true"/> + </function> + + <function name="DrawElements" offset="311"> + <param name="mode" type="GLenum"/> + <param name="count" type="GLsizei"/> + <param name="type" type="GLenum"/> + <param name="indices" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="GenTextures" offset="328"> + <param name="n" type="GLsizei" counter="true"/> + <param name="textures" type="GLuint *" output="true" count="n"/> + <glx sop="145" always_array="true"/> + </function> + + <function name="PolygonOffset" offset="319"> + <param name="factor" type="GLfloat"/> + <param name="units" type="GLfloat"/> + <glx rop="192"/> + </function> + + <function name="TexSubImage2D" offset="333"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="UNUSED" type="GLuint" padding="true"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_xoff="xoffset" img_yoff="yoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/> + <glx rop="4100" large="true"/> + </function> +</category> + +<!-- base subset of OpenGL 1.2, excluding those not in OpenGL ES 1.0 --> +<category name="base1.2es"> + <enum name="UNSIGNED_SHORT_4_4_4_4" value="0x8033"/> + <enum name="UNSIGNED_SHORT_5_5_5_1" value="0x8034"/> + <enum name="CLAMP_TO_EDGE" value="0x812F"/> + <enum name="UNSIGNED_SHORT_5_6_5" value="0x8363"/> + <enum name="ALIASED_POINT_SIZE_RANGE" count="2" value="0x846D"> + <size name="Get" mode="get"/> + </enum> + <enum name="ALIASED_LINE_WIDTH_RANGE" count="2" value="0x846E"> + <size name="Get" mode="get"/> + </enum> +</category> + +<!-- base subset of OpenGL 1.3, excluding those not in OpenGL ES 1.0 --> +<category name="base1.3es"> + <enum name="SAMPLE_ALPHA_TO_COVERAGE" count="1" value="0x809E"> + <size name="Get" mode="get"/> + </enum> + <enum name="SAMPLE_COVERAGE" count="1" value="0x80A0"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE0" value="0x84C0"/> + <enum name="TEXTURE1" value="0x84C1"/> + <enum name="TEXTURE2" value="0x84C2"/> + <enum name="TEXTURE3" value="0x84C3"/> + <enum name="TEXTURE4" value="0x84C4"/> + <enum name="TEXTURE5" value="0x84C5"/> + <enum name="TEXTURE6" value="0x84C6"/> + <enum name="TEXTURE7" value="0x84C7"/> + <enum name="TEXTURE8" value="0x84C8"/> + <enum name="TEXTURE9" value="0x84C9"/> + <enum name="TEXTURE10" value="0x84CA"/> + <enum name="TEXTURE11" value="0x84CB"/> + <enum name="TEXTURE12" value="0x84CC"/> + <enum name="TEXTURE13" value="0x84CD"/> + <enum name="TEXTURE14" value="0x84CE"/> + <enum name="TEXTURE15" value="0x84CF"/> + <enum name="TEXTURE16" value="0x84D0"/> + <enum name="TEXTURE17" value="0x84D1"/> + <enum name="TEXTURE18" value="0x84D2"/> + <enum name="TEXTURE19" value="0x84D3"/> + <enum name="TEXTURE20" value="0x84D4"/> + <enum name="TEXTURE21" value="0x84D5"/> + <enum name="TEXTURE22" value="0x84D6"/> + <enum name="TEXTURE23" value="0x84D7"/> + <enum name="TEXTURE24" value="0x84D8"/> + <enum name="TEXTURE25" value="0x84D9"/> + <enum name="TEXTURE26" value="0x84DA"/> + <enum name="TEXTURE27" value="0x84DB"/> + <enum name="TEXTURE28" value="0x84DC"/> + <enum name="TEXTURE29" value="0x84DD"/> + <enum name="TEXTURE30" value="0x84DE"/> + <enum name="TEXTURE31" value="0x84DF"/> + <enum name="NUM_COMPRESSED_TEXTURE_FORMATS" count="1" value="0x86A2"> + <size name="Get" mode="get"/> + </enum> + <enum name="COMPRESSED_TEXTURE_FORMATS" count="-1" value="0x86A3"> + <size name="Get" mode="get"/> + </enum> + + <function name="ActiveTexture" offset="374"> + <param name="texture" type="GLenum"/> + <glx rop="197"/> + </function> + + <function name="CompressedTexImage2D" offset="assign"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLenum"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="imageSize" type="GLsizei" counter="true"/> + <param name="data" type="const GLvoid *" count="imageSize"/> + <glx rop="215" handcode="client"/> + </function> + + <function name="CompressedTexSubImage2D" offset="assign"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="imageSize" type="GLsizei" counter="true"/> + <param name="data" type="const GLvoid *" count="imageSize"/> + <glx rop="218" handcode="client"/> + </function> + + <function name="SampleCoverage" offset="assign"> + <param name="value" type="GLclampf"/> + <param name="invert" type="GLboolean"/> + <glx rop="229"/> + </function> +</category> + +<!-- base subset of OpenGL 1.0 --> +<category name="base1.0"> + <!-- addition to base1.0es --> + <enum name="LINE_WIDTH" count="1" value="0x0B21"> + <size name="Get" mode="get"/> + </enum> + <enum name="CULL_FACE_MODE" count="1" value="0x0B45"> + <size name="Get" mode="get"/> + </enum> + <enum name="FRONT_FACE" count="1" value="0x0B46"> + <size name="Get" mode="get"/> + </enum> + <enum name="DEPTH_RANGE" count="2" value="0x0B70"> + <size name="Get" mode="get"/> + </enum> + <enum name="DEPTH_WRITEMASK" count="1" value="0x0B72"> + <size name="Get" mode="get"/> + </enum> + <enum name="DEPTH_CLEAR_VALUE" count="1" value="0x0B73"> + <size name="Get" mode="get"/> + </enum> + <enum name="DEPTH_FUNC" count="1" value="0x0B74"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_CLEAR_VALUE" count="1" value="0x0B91"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_FUNC" count="1" value="0x0B92"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_VALUE_MASK" count="1" value="0x0B93"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_FAIL" count="1" value="0x0B94"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_PASS_DEPTH_FAIL" count="1" value="0x0B95"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_PASS_DEPTH_PASS" count="1" value="0x0B96"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_REF" count="1" value="0x0B97"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_WRITEMASK" count="1" value="0x0B98"> + <size name="Get" mode="get"/> + </enum> + <enum name="VIEWPORT" count="4" value="0x0BA2"> + <size name="Get" mode="get"/> + </enum> + <enum name="SCISSOR_BOX" count="4" value="0x0C10"> + <size name="Get" mode="get"/> + </enum> + <enum name="COLOR_CLEAR_VALUE" count="4" value="0x0C22"> + <size name="Get" mode="get"/> + </enum> + <enum name="COLOR_WRITEMASK" count="4" value="0x0C23"> + <size name="Get" mode="get"/> + </enum> + + <function name="TexParameterfv" offset="179"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="106"/> + </function> + + <function name="TexParameteri" offset="180"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="107"/> + </function> + + <function name="TexParameteriv" offset="181"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="108"/> + </function> + + <function name="GetBooleanv" offset="258"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLboolean *" output="true" variable_param="pname"/> + <glx sop="112" handcode="client"/> + </function> + + <function name="GetFloatv" offset="262"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="116" handcode="client"/> + </function> + + <function name="GetTexParameterfv" offset="282"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="136"/> + </function> + + <function name="GetTexParameteriv" offset="283"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="137"/> + </function> + + <function name="IsEnabled" offset="286"> + <param name="cap" type="GLenum"/> + <return type="GLboolean"/> + <glx sop="140" handcode="client"/> + </function> +</category> + +<!-- base subset of OpenGL 1.1 --> +<category name="base1.1"> + <!-- addition to base1.1es --> + <enum name="POLYGON_OFFSET_UNITS" count="1" value="0x2A00"> + <size name="Get" mode="get"/> + </enum> + <enum name="POLYGON_OFFSET_FACTOR" count="1" value="0x8038"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_BINDING_2D" count="1" value="0x8069"> + <size name="Get" mode="get"/> + </enum> + + <function name="IsTexture" offset="330"> + <param name="texture" type="GLuint"/> + <return type="GLboolean"/> + <glx sop="146"/> + </function> +</category> + +<!-- base subset of OpenGL 1.2 --> +<category name="base1.2"> + <!-- addition to base1.2es --> + <!-- No new functions, types, enums. --> +</category> + +<!-- base subset of OpenGL 1.3 --> +<category name="base1.3"> + <!-- addition to base1.3es --> + <enum name="SAMPLE_BUFFERS" count="1" value="0x80A8"> + <size name="Get" mode="get"/> + </enum> + <enum name="SAMPLES" count="1" value="0x80A9"> + <size name="Get" mode="get"/> + </enum> + <enum name="SAMPLE_COVERAGE_VALUE" count="1" value="0x80AA"> + <size name="Get" mode="get"/> + </enum> + <enum name="SAMPLE_COVERAGE_INVERT" count="1" value="0x80AB"> + <size name="Get" mode="get"/> + </enum> + <enum name="ACTIVE_TEXTURE" count="1" value="0x84E0"> + <size name="Get" mode="get"/> + </enum> +</category> + +<!-- base subset of OpenGL 1.4 --> +<category name="base1.4"> + <enum name="GENERATE_MIPMAP_HINT" value="0x8192"/> +</category> + +<!-- base subset of OpenGL 1.5 --> +<category name="base1.5"> + <enum name="BUFFER_SIZE" value="0x8764"/> + <enum name="BUFFER_USAGE" value="0x8765"/> + <enum name="ARRAY_BUFFER" value="0x8892"/> + <enum name="ELEMENT_ARRAY_BUFFER" value="0x8893"/> + <enum name="ARRAY_BUFFER_BINDING" value="0x8894"/> + <enum name="ELEMENT_ARRAY_BUFFER_BINDING" value="0x8895"/> + <enum name="STATIC_DRAW" value="0x88E4"/> + <enum name="DYNAMIC_DRAW" value="0x88E8"/> + + <type name="intptr" size="4" glx_name="CARD32"/> + <type name="sizeiptr" size="4" glx_name="CARD32"/> + + <function name="BindBuffer" offset="assign"> + <param name="target" type="GLenum"/> + <param name="buffer" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="BufferData" offset="assign"> + <param name="target" type="GLenum"/> + <param name="size" type="GLsizeiptr" counter="true"/> + <param name="data" type="const GLvoid *" count="size" img_null_flag="true"/> + <param name="usage" type="GLenum"/> + <glx ignore="true"/> + </function> + + <function name="BufferSubData" offset="assign"> + <param name="target" type="GLenum"/> + <param name="offset" type="GLintptr"/> + <param name="size" type="GLsizeiptr" counter="true"/> + <param name="data" type="const GLvoid *" count="size"/> + <glx ignore="true"/> + </function> + + <function name="DeleteBuffers" offset="assign"> + <param name="n" type="GLsizei" counter="true"/> + <param name="buffer" type="const GLuint *" count="n"/> + <glx ignore="true"/> + </function> + + <function name="GenBuffers" offset="assign"> + <param name="n" type="GLsizei" counter="true"/> + <param name="buffer" type="GLuint *" output="true" count="n"/> + <glx ignore="true"/> + </function> + + <function name="GetBufferParameteriv" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx ignore="true"/> + </function> + + <function name="IsBuffer" offset="assign"> + <param name="buffer" type="GLuint"/> + <return type="GLboolean"/> + <glx ignore="true"/> + </function> +</category> + +</OpenGLAPI> diff --git a/src/mesa/es/glapi/base2_API.xml b/src/mesa/es/glapi/base2_API.xml new file mode 100644 index 0000000000..6aa43b728a --- /dev/null +++ b/src/mesa/es/glapi/base2_API.xml @@ -0,0 +1,533 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gl_API.dtd"> + +<!-- OpenGL and OpenGL ES 2.x APIs --> + +<OpenGLAPI> + +<xi:include href="base1_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<!-- base subset of OpenGL 2.0 --> +<category name="base2.0"> + <enum name="BLEND_EQUATION_RGB" count="1" value="0x8009"> <!-- same as BLEND_EQUATION --> + <size name="Get" mode="get"/> + </enum> + <enum name="VERTEX_ATTRIB_ARRAY_ENABLED" count="1" value="0x8622"> + <size name="GetVertexAttribdv" mode="get"/> + <size name="GetVertexAttribfv" mode="get"/> + <size name="GetVertexAttribiv" mode="get"/> + </enum> + <enum name="VERTEX_ATTRIB_ARRAY_SIZE" count="1" value="0x8623"> + <size name="GetVertexAttribdv" mode="get"/> + <size name="GetVertexAttribfv" mode="get"/> + <size name="GetVertexAttribiv" mode="get"/> + </enum> + <enum name="VERTEX_ATTRIB_ARRAY_STRIDE" count="1" value="0x8624"> + <size name="GetVertexAttribdv" mode="get"/> + <size name="GetVertexAttribfv" mode="get"/> + <size name="GetVertexAttribiv" mode="get"/> + </enum> + <enum name="VERTEX_ATTRIB_ARRAY_TYPE" count="1" value="0x8625"> + <size name="GetVertexAttribdv" mode="get"/> + <size name="GetVertexAttribfv" mode="get"/> + <size name="GetVertexAttribiv" mode="get"/> + </enum> + <enum name="CURRENT_VERTEX_ATTRIB" count="1" value="0x8626"> + <size name="GetVertexAttribdv" mode="get"/> + <size name="GetVertexAttribfv" mode="get"/> + <size name="GetVertexAttribiv" mode="get"/> + </enum> + <enum name="VERTEX_ATTRIB_ARRAY_POINTER" value="0x8645"/> + <enum name="STENCIL_BACK_FUNC" count="1" value="0x8800"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_BACK_FAIL" count="1" value="0x8801"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_BACK_PASS_DEPTH_FAIL" count="1" value="0x8802"> + <size name="Get" mode="get"/> + </enum> + <enum name="STENCIL_BACK_PASS_DEPTH_PASS" count="1" value="0x8803"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND_EQUATION_ALPHA" count="1" value="0x883D"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_VERTEX_ATTRIBS" count="1" value="0x8869"> + <size name="Get" mode="get"/> + </enum> + <enum name="VERTEX_ATTRIB_ARRAY_NORMALIZED" value="0x886A"/> + <enum name="MAX_TEXTURE_IMAGE_UNITS" count="1" value="0x8872"> + <size name="Get" mode="get"/> + </enum> + <enum name="FRAGMENT_SHADER" value="0x8B30"/> + <enum name="VERTEX_SHADER" value="0x8B31"/> + <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS" value="0x8B4C"/> + <enum name="MAX_COMBINED_TEXTURE_IMAGE_UNITS" value="0x8B4D"/> + <enum name="SHADER_TYPE" value="0x8B4F"/> + <enum name="FLOAT_VEC2" value="0x8B50"/> + <enum name="FLOAT_VEC3" value="0x8B51"/> + <enum name="FLOAT_VEC4" value="0x8B52"/> + <enum name="INT_VEC2" value="0x8B53"/> + <enum name="INT_VEC3" value="0x8B54"/> + <enum name="INT_VEC4" value="0x8B55"/> + <enum name="BOOL" value="0x8B56"/> + <enum name="BOOL_VEC2" value="0x8B57"/> + <enum name="BOOL_VEC3" value="0x8B58"/> + <enum name="BOOL_VEC4" value="0x8B59"/> + <enum name="FLOAT_MAT2" value="0x8B5A"/> + <enum name="FLOAT_MAT3" value="0x8B5B"/> + <enum name="FLOAT_MAT4" value="0x8B5C"/> + <enum name="SAMPLER_2D" value="0x8B5E"/> + <enum name="SAMPLER_CUBE" value="0x8B60"/> + <enum name="DELETE_STATUS" value="0x8B80"/> + <enum name="COMPILE_STATUS" value="0x8B81"/> + <enum name="LINK_STATUS" value="0x8B82"/> + <enum name="VALIDATE_STATUS" value="0x8B83"/> + <enum name="INFO_LOG_LENGTH" value="0x8B84"/> + <enum name="ATTACHED_SHADERS" value="0x8B85"/> + <enum name="ACTIVE_UNIFORMS" value="0x8B86"/> + <enum name="ACTIVE_UNIFORM_MAX_LENGTH" value="0x8B87"/> + <enum name="SHADER_SOURCE_LENGTH" value="0x8B88"/> + <enum name="ACTIVE_ATTRIBUTES" value="0x8B89"/> + <enum name="ACTIVE_ATTRIBUTE_MAX_LENGTH" value="0x8B8A"/> + <enum name="SHADING_LANGUAGE_VERSION" value="0x8B8C"/> + <enum name="CURRENT_PROGRAM" value="0x8B8D"/> + <enum name="STENCIL_BACK_REF" value="0x8CA3"/> + <enum name="STENCIL_BACK_VALUE_MASK" value="0x8CA4"/> + <enum name="STENCIL_BACK_WRITEMASK" value="0x8CA5"/> + + <type name="char" size="1" glx_name="CARD8"/> + + <function name="AttachShader" offset="assign"> + <param name="program" type="GLuint"/> + <param name="shader" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="BindAttribLocation" offset="assign"> + <param name="program" type="GLuint"/> + <param name="index" type="GLuint"/> + <param name="name" type="const GLchar *"/> + <glx ignore="true"/> + </function> + + <function name="BlendEquationSeparate" offset="assign"> + <param name="modeRGB" type="GLenum"/> + <param name="modeA" type="GLenum"/> + <glx rop="4228"/> + </function> + + <function name="CompileShader" offset="assign"> + <param name="shader" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="CreateProgram" offset="assign"> + <return type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="CreateShader" offset="assign"> + <param name="type" type="GLenum"/> + <return type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="DeleteProgram" offset="assign"> + <param name="program" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="DeleteShader" offset="assign"> + <param name="program" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="DetachShader" offset="assign"> + <param name="program" type="GLuint"/> + <param name="shader" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="DisableVertexAttribArray" offset="assign"> + <param name="index" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="EnableVertexAttribArray" offset="assign"> + <param name="index" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="GetActiveAttrib" offset="assign"> + <param name="program" type="GLuint"/> + <param name="index" type="GLuint"/> + <param name="bufSize" type="GLsizei "/> + <param name="length" type="GLsizei *" output="true"/> + <param name="size" type="GLint *" output="true"/> + <param name="type" type="GLenum *" output="true"/> + <param name="name" type="GLchar *" output="true"/> + <glx ignore="true"/> + </function> + + <function name="GetActiveUniform" offset="assign"> + <param name="program" type="GLuint"/> + <param name="index" type="GLuint"/> + <param name="bufSize" type="GLsizei"/> + <param name="length" type="GLsizei *" output="true"/> + <param name="size" type="GLint *" output="true"/> + <param name="type" type="GLenum *" output="true"/> + <param name="name" type="GLchar *" output="true"/> + <glx ignore="true"/> + </function> + + <function name="GetAttachedShaders" offset="assign"> + <param name="program" type="GLuint"/> + <param name="maxCount" type="GLsizei"/> + <param name="count" type="GLsizei *" output="true"/> + <param name="obj" type="GLuint *" output="true"/> + <glx ignore="true"/> + </function> + + <function name="GetAttribLocation" offset="assign"> + <param name="program" type="GLuint"/> + <param name="name" type="const GLchar *"/> + <return type="GLint"/> + <glx ignore="true"/> + </function> + + <function name="GetProgramiv" offset="assign"> + <param name="program" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *"/> + <glx ignore="true"/> + </function> + + <function name="GetProgramInfoLog" offset="assign"> + <param name="program" type="GLuint"/> + <param name="bufSize" type="GLsizei"/> + <param name="length" type="GLsizei *"/> + <param name="infoLog" type="GLchar *"/> + <glx ignore="true"/> + </function> + + <function name="GetShaderiv" offset="assign"> + <param name="shader" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *"/> + <glx ignore="true"/> + </function> + + <function name="GetShaderInfoLog" offset="assign"> + <param name="shader" type="GLuint"/> + <param name="bufSize" type="GLsizei"/> + <param name="length" type="GLsizei *"/> + <param name="infoLog" type="GLchar *"/> + <glx ignore="true"/> + </function> + + <function name="GetShaderSource" offset="assign"> + <param name="shader" type="GLuint"/> + <param name="bufSize" type="GLsizei"/> + <param name="length" type="GLsizei *" output="true"/> + <param name="source" type="GLchar *" output="true"/> + <glx ignore="true"/> + </function> + + <function name="GetUniformfv" offset="assign"> + <param name="program" type="GLuint"/> + <param name="location" type="GLint"/> + <param name="params" type="GLfloat *" output="true"/> + <glx ignore="true"/> + </function> + + <function name="GetUniformiv" offset="assign"> + <param name="program" type="GLuint"/> + <param name="location" type="GLint"/> + <param name="params" type="GLint *"/> + <glx ignore="true"/> + </function> + + <function name="GetUniformLocation" offset="assign"> + <param name="program" type="GLuint"/> + <param name="name" type="const GLchar *"/> + <return type="GLint"/> + <glx ignore="true"/> + </function> + + <function name="GetVertexAttribfv" offset="assign"> + <param name="index" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx ignore="true"/> + </function> + + <function name="GetVertexAttribiv" offset="assign"> + <param name="index" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx ignore="true"/> + </function> + + <function name="GetVertexAttribPointerv" offset="assign"> + <param name="index" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="pointer" type="GLvoid **" output="true"/> + <glx ignore="true"/> + </function> + + <function name="IsProgram" offset="assign"> + <param name="program" type="GLuint"/> + <return type="GLboolean"/> + <glx ignore="true"/> + </function> + + <function name="IsShader" offset="assign"> + <param name="shader" type="GLuint"/> + <return type="GLboolean"/> + <glx ignore="true"/> + </function> + + <function name="LinkProgram" offset="assign"> + <param name="program" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="ShaderSource" offset="assign"> + <param name="shader" type="GLuint"/> + <param name="count" type="GLsizei"/> + <param name="string" type="const GLchar **"/> + <param name="length" type="const GLint *"/> + <glx ignore="true"/> + </function> + + <function name="StencilFuncSeparate" offset="assign"> + <param name="face" type="GLenum"/> + <param name="func" type="GLenum"/> + <param name="ref" type="GLint"/> + <param name="mask" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="StencilOpSeparate" offset="assign"> + <param name="face" type="GLenum"/> + <param name="sfail" type="GLenum"/> + <param name="zfail" type="GLenum"/> + <param name="zpass" type="GLenum"/> + <glx ignore="true"/> + </function> + + <function name="StencilMaskSeparate" offset="assign"> + <param name="face" type="GLenum"/> + <param name="mask" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="Uniform1f" offset="assign"> + <param name="location" type="GLint"/> + <param name="v0" type="GLfloat"/> + <glx ignore="true"/> + </function> + + <function name="Uniform1fv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLfloat *"/> + <glx ignore="true"/> + </function> + + <function name="Uniform1i" offset="assign"> + <param name="location" type="GLint"/> + <param name="v0" type="GLint"/> + <glx ignore="true"/> + </function> + + <function name="Uniform1iv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLint *"/> + <glx ignore="true"/> + </function> + + <function name="Uniform2f" offset="assign"> + <param name="location" type="GLint"/> + <param name="v0" type="GLfloat"/> + <param name="v1" type="GLfloat"/> + <glx ignore="true"/> + </function> + + <function name="Uniform2fv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLfloat *"/> + <glx ignore="true"/> + </function> + + <function name="Uniform2i" offset="assign"> + <param name="location" type="GLint"/> + <param name="v0" type="GLint"/> + <param name="v1" type="GLint"/> + <glx ignore="true"/> + </function> + + <function name="Uniform2iv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLint *"/> + <glx ignore="true"/> + </function> + + <function name="Uniform3f" offset="assign"> + <param name="location" type="GLint"/> + <param name="v0" type="GLfloat"/> + <param name="v1" type="GLfloat"/> + <param name="v2" type="GLfloat"/> + <glx ignore="true"/> + </function> + + <function name="Uniform3fv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLfloat *"/> + <glx ignore="true"/> + </function> + + <function name="Uniform3i" offset="assign"> + <param name="location" type="GLint"/> + <param name="v0" type="GLint"/> + <param name="v1" type="GLint"/> + <param name="v2" type="GLint"/> + <glx ignore="true"/> + </function> + + <function name="Uniform3iv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLint *"/> + <glx ignore="true"/> + </function> + + <function name="Uniform4f" offset="assign"> + <param name="location" type="GLint"/> + <param name="v0" type="GLfloat"/> + <param name="v1" type="GLfloat"/> + <param name="v2" type="GLfloat"/> + <param name="v3" type="GLfloat"/> + <glx ignore="true"/> + </function> + + <function name="Uniform4fv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLfloat *"/> + <glx ignore="true"/> + </function> + + <function name="Uniform4i" offset="assign"> + <param name="location" type="GLint"/> + <param name="v0" type="GLint"/> + <param name="v1" type="GLint"/> + <param name="v2" type="GLint"/> + <param name="v3" type="GLint"/> + <glx ignore="true"/> + </function> + + <function name="Uniform4iv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLint *"/> + <glx ignore="true"/> + </function> + + <function name="UniformMatrix2fv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="transpose" type="GLboolean"/> + <param name="value" type="const GLfloat *"/> + <glx ignore="true"/> + </function> + + <function name="UniformMatrix3fv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="transpose" type="GLboolean"/> + <param name="value" type="const GLfloat *"/> + <glx ignore="true"/> + </function> + + <function name="UniformMatrix4fv" offset="assign"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="transpose" type="GLboolean"/> + <param name="value" type="const GLfloat *"/> + <glx ignore="true"/> + </function> + + <function name="UseProgram" offset="assign"> + <param name="program" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="ValidateProgram" offset="assign"> + <param name="program" type="GLuint"/> + <glx ignore="true"/> + </function> + + <function name="VertexAttrib1f" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLfloat"/> + </function> + + <function name="VertexAttrib1fv" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLfloat *"/> + </function> + + <function name="VertexAttrib2f" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + </function> + + <function name="VertexAttrib2fv" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLfloat *"/> + </function> + + <function name="VertexAttrib3f" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + </function> + + <function name="VertexAttrib3fv" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLfloat *"/> + </function> + + <function name="VertexAttrib4f" offset="assign"> + <param name="index" type="GLuint"/> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <param name="w" type="GLfloat"/> + </function> + + <function name="VertexAttrib4fv" offset="assign"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLfloat *"/> + </function> + + <function name="VertexAttribPointer" offset="assign"> + <param name="index" type="GLuint"/> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="normalized" type="GLboolean"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + </function> +</category> + +</OpenGLAPI> diff --git a/src/mesa/es/glapi/es1_API.xml b/src/mesa/es/glapi/es1_API.xml new file mode 100644 index 0000000000..4ecd99e9c1 --- /dev/null +++ b/src/mesa/es/glapi/es1_API.xml @@ -0,0 +1,1100 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gl_API.dtd"> + +<!-- OpenGL ES 1.x API --> + +<OpenGLAPI> + +<xi:include href="base1_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<!-- subset of OpenGL 1.3 defined by OpenGL ES 1.0 --> +<category name="es1.0core"> + <!-- addition to base1.0es --> + <enum name="ADD" value="0x0104"/> + <enum name="STACK_OVERFLOW" value="0x0503"/> + <enum name="STACK_UNDERFLOW" value="0x0504"/> + <enum name="EXP" value="0x0800"/> + <enum name="EXP2" value="0x0801"/> + <enum name="POINT_SMOOTH" count="1" value="0x0B10"> + <size name="Get" mode="get"/> + </enum> + <enum name="LINE_SMOOTH" count="1" value="0x0B20"> + <size name="Get" mode="get"/> + </enum> + <enum name="LIGHTING" count="1" value="0x0B50"> + <size name="Get" mode="get"/> + </enum> + <enum name="LIGHT_MODEL_TWO_SIDE" count="1" value="0x0B52"> + <size name="LightModelfv"/> + <size name="LightModeliv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="LIGHT_MODEL_AMBIENT" count="4" value="0x0B53"> + <size name="LightModelfv"/> + <size name="LightModeliv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="COLOR_MATERIAL" count="1" value="0x0B57"> + <size name="Get" mode="get"/> + </enum> + <enum name="FOG" count="1" value="0x0B60"> + <size name="Get" mode="get"/> + </enum> + <enum name="FOG_DENSITY" count="1" value="0x0B62"> + <size name="Fogfv"/> + <size name="Fogiv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="FOG_START" count="1" value="0x0B63"> + <size name="Fogfv"/> + <size name="Fogiv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="FOG_END" count="1" value="0x0B64"> + <size name="Fogfv"/> + <size name="Fogiv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="FOG_MODE" count="1" value="0x0B65"> + <size name="Fogfv"/> + <size name="Fogiv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="FOG_COLOR" count="4" value="0x0B66"> + <size name="Fogfv"/> + <size name="Fogiv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="NORMALIZE" count="1" value="0x0BA1"> + <size name="Get" mode="get"/> + </enum> + <enum name="ALPHA_TEST" count="1" value="0x0BC0"> + <size name="Get" mode="get"/> + </enum> + <enum name="PERSPECTIVE_CORRECTION_HINT" count="1" value="0x0C50"> + <size name="Get" mode="get"/> + </enum> + <enum name="POINT_SMOOTH_HINT" count="1" value="0x0C51"> + <size name="Get" mode="get"/> + </enum> + <enum name="LINE_SMOOTH_HINT" count="1" value="0x0C52"> + <size name="Get" mode="get"/> + </enum> + <enum name="POLYGON_SMOOTH_HINT" count="1" value="0x0C53"> + <size name="Get" mode="get"/> + </enum> + <enum name="FOG_HINT" count="1" value="0x0C54"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_LIGHTS" count="1" value="0x0D31"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_MODELVIEW_STACK_DEPTH" count="1" value="0x0D36"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_PROJECTION_STACK_DEPTH" count="1" value="0x0D38"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_TEXTURE_STACK_DEPTH" count="1" value="0x0D39"> + <size name="Get" mode="get"/> + </enum> + <enum name="AMBIENT" count="4" value="0x1200"> + <size name="Materialfv"/> + <size name="Materialiv"/> + <size name="Lightfv"/> + <size name="Lightiv"/> + <size name="GetMaterialfv" mode="get"/> + <size name="GetMaterialiv" mode="get"/> + <size name="GetLightfv" mode="get"/> + <size name="GetLightiv" mode="get"/> + </enum> + <enum name="DIFFUSE" count="4" value="0x1201"> + <size name="Materialfv"/> + <size name="Materialiv"/> + <size name="Lightfv"/> + <size name="Lightiv"/> + <size name="GetMaterialfv" mode="get"/> + <size name="GetMaterialiv" mode="get"/> + <size name="GetLightfv" mode="get"/> + <size name="GetLightiv" mode="get"/> + </enum> + <enum name="SPECULAR" count="4" value="0x1202"> + <size name="Materialfv"/> + <size name="Materialiv"/> + <size name="Lightfv"/> + <size name="Lightiv"/> + <size name="GetMaterialfv" mode="get"/> + <size name="GetMaterialiv" mode="get"/> + <size name="GetLightfv" mode="get"/> + <size name="GetLightiv" mode="get"/> + </enum> + <enum name="POSITION" count="4" value="0x1203"> + <size name="Lightfv"/> + <size name="Lightiv"/> + <size name="GetLightfv" mode="get"/> + <size name="GetLightiv" mode="get"/> + </enum> + <enum name="SPOT_DIRECTION" count="3" value="0x1204"> + <size name="Lightfv"/> + <size name="Lightiv"/> + <size name="GetLightfv" mode="get"/> + <size name="GetLightiv" mode="get"/> + </enum> + <enum name="SPOT_EXPONENT" count="1" value="0x1205"> + <size name="Lightfv"/> + <size name="Lightiv"/> + <size name="GetLightfv" mode="get"/> + <size name="GetLightiv" mode="get"/> + </enum> + <enum name="SPOT_CUTOFF" count="1" value="0x1206"> + <size name="Lightfv"/> + <size name="Lightiv"/> + <size name="GetLightfv" mode="get"/> + <size name="GetLightiv" mode="get"/> + </enum> + <enum name="CONSTANT_ATTENUATION" count="1" value="0x1207"> + <size name="Lightfv"/> + <size name="Lightiv"/> + <size name="GetLightfv" mode="get"/> + <size name="GetLightiv" mode="get"/> + </enum> + <enum name="LINEAR_ATTENUATION" count="1" value="0x1208"> + <size name="Lightfv"/> + <size name="Lightiv"/> + <size name="GetLightfv" mode="get"/> + <size name="GetLightiv" mode="get"/> + </enum> + <enum name="QUADRATIC_ATTENUATION" count="1" value="0x1209"> + <size name="Lightfv"/> + <size name="Lightiv"/> + <size name="GetLightfv" mode="get"/> + <size name="GetLightiv" mode="get"/> + </enum> + <enum name="CLEAR" value="0x1500"/> + <enum name="AND" value="0x1501"/> + <enum name="AND_REVERSE" value="0x1502"/> + <enum name="COPY" value="0x1503"/> + <enum name="AND_INVERTED" value="0x1504"/> + <enum name="NOOP" value="0x1505"/> + <enum name="XOR" value="0x1506"/> + <enum name="OR" value="0x1507"/> + <enum name="NOR" value="0x1508"/> + <enum name="EQUIV" value="0x1509"/> + <enum name="OR_REVERSE" value="0x150B"/> + <enum name="COPY_INVERTED" value="0x150C"/> + <enum name="OR_INVERTED" value="0x150D"/> + <enum name="NAND" value="0x150E"/> + <enum name="SET" value="0x150F"/> + <enum name="EMISSION" count="4" value="0x1600"> + <size name="Materialfv"/> + <size name="Materialiv"/> + <size name="GetMaterialfv" mode="get"/> + <size name="GetMaterialiv" mode="get"/> + </enum> + <enum name="SHININESS" count="1" value="0x1601"> + <size name="Materialfv"/> + <size name="Materialiv"/> + <size name="GetMaterialfv" mode="get"/> + <size name="GetMaterialiv" mode="get"/> + </enum> + <enum name="AMBIENT_AND_DIFFUSE" count="4" value="0x1602"> + <size name="Materialfv"/> + <size name="Materialiv"/> + <size name="GetMaterialfv" mode="get"/> + <size name="GetMaterialiv" mode="get"/> + </enum> + <enum name="MODELVIEW" value="0x1700"/> + <enum name="PROJECTION" value="0x1701"/> + <enum name="FLAT" value="0x1D00"/> + <enum name="SMOOTH" value="0x1D01"/> + <enum name="MODULATE" value="0x2100"/> + <enum name="DECAL" value="0x2101"/> + <enum name="TEXTURE_ENV_MODE" count="1" value="0x2200"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="TEXTURE_ENV_COLOR" count="4" value="0x2201"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="TEXTURE_ENV" value="0x2300"/> + <enum name="LIGHT0" count="1" value="0x4000"> + <size name="Get" mode="get"/> + </enum> + <enum name="LIGHT1" count="1" value="0x4001"> + <size name="Get" mode="get"/> + </enum> + <enum name="LIGHT2" count="1" value="0x4002"> + <size name="Get" mode="get"/> + </enum> + <enum name="LIGHT3" count="1" value="0x4003"> + <size name="Get" mode="get"/> + </enum> + <enum name="LIGHT4" count="1" value="0x4004"> + <size name="Get" mode="get"/> + </enum> + <enum name="LIGHT5" count="1" value="0x4005"> + <size name="Get" mode="get"/> + </enum> + <enum name="LIGHT6" count="1" value="0x4006"> + <size name="Get" mode="get"/> + </enum> + <enum name="LIGHT7" count="1" value="0x4007"> + <size name="Get" mode="get"/> + </enum> + + <function name="AlphaFunc" offset="240"> + <param name="func" type="GLenum"/> + <param name="ref" type="GLclampf"/> + <glx rop="159"/> + </function> + + <function name="Color4f" offset="29" vectorequiv="Color4fv"> + <param name="red" type="GLfloat"/> + <param name="green" type="GLfloat"/> + <param name="blue" type="GLfloat"/> + <param name="alpha" type="GLfloat"/> + </function> + + <function name="Fogf" offset="153"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="80"/> + </function> + + <function name="Fogfv" offset="154"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="81"/> + </function> + + <function name="Lightf" offset="159"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="86"/> + </function> + + <function name="Lightfv" offset="160"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="87"/> + </function> + + <function name="LightModelf" offset="163"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="90"/> + </function> + + <function name="LightModelfv" offset="164"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="91"/> + </function> + + <function name="LoadIdentity" offset="290"> + <glx rop="176"/> + </function> + + <function name="LoadMatrixf" offset="291"> + <param name="m" type="const GLfloat *" count="16"/> + <glx rop="177"/> + </function> + + <function name="LogicOp" offset="242"> + <param name="opcode" type="GLenum"/> + <glx rop="161"/> + </function> + + <function name="Materialf" offset="169"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="96"/> + </function> + + <function name="Materialfv" offset="170"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="97"/> + </function> + + <function name="MatrixMode" offset="293"> + <param name="mode" type="GLenum"/> + <glx rop="179"/> + </function> + + <function name="MultMatrixf" offset="294"> + <param name="m" type="const GLfloat *" count="16"/> + <glx rop="180"/> + </function> + + <function name="Normal3f" offset="56" vectorequiv="Normal3fv"> + <param name="nx" type="GLfloat"/> + <param name="ny" type="GLfloat"/> + <param name="nz" type="GLfloat"/> + </function> + + <function name="PointSize" offset="173"> + <param name="size" type="GLfloat"/> + <glx rop="100"/> + </function> + + <function name="PopMatrix" offset="297"> + <glx rop="183"/> + </function> + + <function name="PushMatrix" offset="298"> + <glx rop="184"/> + </function> + + <function name="Rotatef" offset="300"> + <param name="angle" type="GLfloat"/> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <glx rop="186"/> + </function> + + <function name="Scalef" offset="302"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <glx rop="188"/> + </function> + + <function name="ShadeModel" offset="177"> + <param name="mode" type="GLenum"/> + <glx rop="104"/> + </function> + + <function name="TexEnvf" offset="184"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="111"/> + </function> + + <function name="TexEnvfv" offset="185"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="112"/> + </function> + + <function name="TexImage2D" offset="183"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/> + <glx rop="110" large="true"/> + </function> + + <function name="Translatef" offset="304"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <glx rop="190"/> + </function> + + <!-- addition to base1.1es --> + <enum name="COLOR_LOGIC_OP" value="0x0BF2"/> + <enum name="VERTEX_ARRAY" count="1" value="0x8074"> + <size name="Get" mode="get"/> + </enum> + <enum name="NORMAL_ARRAY" count="1" value="0x8075"> + <size name="Get" mode="get"/> + </enum> + <enum name="COLOR_ARRAY" count="1" value="0x8076"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_COORD_ARRAY" count="1" value="0x8078"> + <size name="Get" mode="get"/> + </enum> + + <function name="ColorPointer" offset="308"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="DisableClientState" offset="309"> + <param name="array" type="GLenum"/> + <glx handcode="true"/> + </function> + + <function name="EnableClientState" offset="313"> + <param name="array" type="GLenum"/> + <glx handcode="true"/> + </function> + + <function name="NormalPointer" offset="318"> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="TexCoordPointer" offset="320"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="VertexPointer" offset="321"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <!-- addition to base1.2es --> + <enum name="SMOOTH_POINT_SIZE_RANGE" count="2" value="0x0B12"> + <size name="Get" mode="get"/> + </enum> + <enum name="SMOOTH_LINE_WIDTH_RANGE" count="2" value="0x0B22"> + <size name="Get" mode="get"/> + </enum> + <enum name="RESCALE_NORMAL" count="1" value="0x803A"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_ELEMENTS_VERTICES" count="1" value="0x80E8"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_ELEMENTS_INDICES" count="1" value="0x80E9"> + <size name="Get" mode="get"/> + </enum> + + <!-- addition to base1.3es --> + <enum name="MULTISAMPLE" count="1" value="0x809D"> + <size name="Get" mode="get"/> + </enum> + <enum name="SAMPLE_ALPHA_TO_ONE" count="1" value="0x809F"> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_TEXTURE_UNITS" count="1" value="0x84E2"> + <size name="Get" mode="get"/> + </enum> + + <function name="ClientActiveTexture" offset="375"> + <param name="texture" type="GLenum"/> + <glx handcode="true"/> + </function> + + <function name="MultiTexCoord4f" offset="402" vectorequiv="MultiTexCoord4fv"> + <param name="target" type="GLenum"/> + <param name="s" type="GLfloat"/> + <param name="t" type="GLfloat"/> + <param name="r" type="GLfloat"/> + <param name="q" type="GLfloat"/> + </function> +</category> + +<!-- subset of OpenGL 1.5 defined by OpenGL ES 1.1 --> +<category name="es1.1core"> + <!-- addition to base1.0 --> + <enum name="CURRENT_COLOR" count="4" value="0x0B00"> + <size name="Get" mode="get"/> + </enum> + <enum name="CURRENT_NORMAL" count="3" value="0x0B02"> + <size name="Get" mode="get"/> + </enum> + <enum name="CURRENT_TEXTURE_COORDS" count="4" value="0x0B03"> + <size name="Get" mode="get"/> + </enum> + <enum name="POINT_SIZE" count="1" value="0x0B11"> + <size name="Get" mode="get"/> + </enum> + <enum name="SHADE_MODEL" count="1" value="0x0B54"> + <size name="Get" mode="get"/> + </enum> + <enum name="MATRIX_MODE" count="1" value="0x0BA0"> + <size name="Get" mode="get"/> + </enum> + <enum name="MODELVIEW_STACK_DEPTH" count="1" value="0x0BA3"> + <size name="Get" mode="get"/> + </enum> + <enum name="PROJECTION_STACK_DEPTH" count="1" value="0x0BA4"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_STACK_DEPTH" count="1" value="0x0BA5"> + <size name="Get" mode="get"/> + </enum> + <enum name="MODELVIEW_MATRIX" count="16" value="0x0BA6"> + <size name="Get" mode="get"/> + </enum> + <enum name="PROJECTION_MATRIX" count="16" value="0x0BA7"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_MATRIX" count="16" value="0x0BA8"> + <size name="Get" mode="get"/> + </enum> + <enum name="ALPHA_TEST_FUNC" count="1" value="0x0BC1"> + <size name="Get" mode="get"/> + </enum> + <enum name="ALPHA_TEST_REF" count="1" value="0x0BC2"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND_DST" count="1" value="0x0BE0"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND_SRC" count="1" value="0x0BE1"> + <size name="Get" mode="get"/> + </enum> + <enum name="LOGIC_OP_MODE" count="1" value="0x0BF0"> + <size name="Get" mode="get"/> + </enum> + <enum name="ALPHA_SCALE" count="1" value="0x0D1C"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + <size name="Get" mode="get"/> + </enum> + <enum name="MAX_CLIP_PLANES" count="1" value="0x0D32"> + <size name="Get" mode="get"/> + </enum> + <enum name="CLIP_PLANE0" count="1" value="0x3000"> + <size name="Get" mode="get"/> + </enum> + <enum name="CLIP_PLANE1" count="1" value="0x3001"> + <size name="Get" mode="get"/> + </enum> + <enum name="CLIP_PLANE2" count="1" value="0x3002"> + <size name="Get" mode="get"/> + </enum> + <enum name="CLIP_PLANE3" count="1" value="0x3003"> + <size name="Get" mode="get"/> + </enum> + <enum name="CLIP_PLANE4" count="1" value="0x3004"> + <size name="Get" mode="get"/> + </enum> + <enum name="CLIP_PLANE5" count="1" value="0x3005"> + <size name="Get" mode="get"/> + </enum> + + <function name="Color4ub" offset="35" vectorequiv="Color4ubv"> + <param name="red" type="GLubyte"/> + <param name="green" type="GLubyte"/> + <param name="blue" type="GLubyte"/> + <param name="alpha" type="GLubyte"/> + </function> + + <function name="GetLightfv" offset="264"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="118"/> + </function> + + <function name="GetMaterialfv" offset="269"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="123"/> + </function> + + <function name="GetTexEnvfv" offset="276"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="130"/> + </function> + + <function name="GetTexEnviv" offset="277"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="131"/> + </function> + + <function name="TexEnvi" offset="186"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="113"/> + </function> + + <function name="TexEnviv" offset="187"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="114"/> + </function> + + <!-- addition to base1.1 --> + <enum name="VERTEX_ARRAY_SIZE" count="1" value="0x807A"> + <size name="Get" mode="get"/> + </enum> + <enum name="VERTEX_ARRAY_TYPE" count="1" value="0x807B"> + <size name="Get" mode="get"/> + </enum> + <enum name="VERTEX_ARRAY_STRIDE" count="1" value="0x807C"> + <size name="Get" mode="get"/> + </enum> + <enum name="NORMAL_ARRAY_TYPE" count="1" value="0x807E"> + <size name="Get" mode="get"/> + </enum> + <enum name="NORMAL_ARRAY_STRIDE" count="1" value="0x807F"> + <size name="Get" mode="get"/> + </enum> + <enum name="COLOR_ARRAY_SIZE" count="1" value="0x8081"> + <size name="Get" mode="get"/> + </enum> + <enum name="COLOR_ARRAY_TYPE" count="1" value="0x8082"> + <size name="Get" mode="get"/> + </enum> + <enum name="COLOR_ARRAY_STRIDE" count="1" value="0x8083"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_COORD_ARRAY_SIZE" count="1" value="0x8088"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_COORD_ARRAY_TYPE" count="1" value="0x8089"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_COORD_ARRAY_STRIDE" count="1" value="0x808A"> + <size name="Get" mode="get"/> + </enum> + <enum name="VERTEX_ARRAY_POINTER" value="0x808E"/> + <enum name="NORMAL_ARRAY_POINTER" value="0x808F"/> + <enum name="COLOR_ARRAY_POINTER" value="0x8090"/> + <enum name="TEXTURE_COORD_ARRAY_POINTER" value="0x8092"/> + + <function name="GetPointerv" offset="329"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLvoid **" output="true"/> + <glx handcode="true"/> + </function> + + <!-- addition to base1.2 --> + + <!-- addition to base1.3 --> + <enum name="CLIENT_ACTIVE_TEXTURE" count="1" value="0x84E1"> + <size name="Get" mode="get"/> + </enum> + <enum name="SUBTRACT" value="0x84E7"/> + <enum name="COMBINE" value="0x8570"/> + <enum name="COMBINE_RGB" count="1" value="0x8571"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="COMBINE_ALPHA" count="1" value="0x8572"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="RGB_SCALE" count="1" value="0x8573"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="ADD_SIGNED" value="0x8574"/> + <enum name="INTERPOLATE" value="0x8575"/> + <enum name="CONSTANT" value="0x8576"/> + <enum name="PRIMARY_COLOR" value="0x8577"/> + <enum name="PREVIOUS" value="0x8578"/> + <enum name="OPERAND0_RGB" count="1" value="0x8590"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="OPERAND1_RGB" count="1" value="0x8591"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="OPERAND2_RGB" count="1" value="0x8592"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="OPERAND0_ALPHA" count="1" value="0x8598"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="OPERAND1_ALPHA" count="1" value="0x8599"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="OPERAND2_ALPHA" count="1" value="0x859A"> + <size name="TexEnvfv"/> + <size name="TexEnviv"/> + <size name="GetTexEnvfv" mode="get"/> + <size name="GetTexEnviv" mode="get"/> + </enum> + <enum name="DOT3_RGB" value="0x86AE"/> + <enum name="DOT3_RGBA" value="0x86AF"/> + + <!-- addition to base1.4 --> + <enum name="POINT_SIZE_MIN" count="1" value="0x8126"> + <size name="PointParameterfv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="POINT_SIZE_MAX" count="1" value="0x8127"> + <size name="PointParameterfv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="POINT_FADE_THRESHOLD_SIZE" count="1" value="0x8128"> + <size name="PointParameterfv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="POINT_DISTANCE_ATTENUATION" count="3" value="0x8129"> + <size name="PointParameterfv"/> + <size name="Get" mode="get"/> + </enum> + <enum name="GENERATE_MIPMAP" count="1" value="0x8191"> + <size name="TexParameterfv"/> + <size name="TexParameteriv"/> + <size name="GetTexParameterfv" mode="get"/> + <size name="GetTexParameteriv" mode="get"/> + </enum> + + <function name="PointParameterf" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="2065"/> + </function> + + <function name="PointParameterfv" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="2066"/> + </function> + + <!-- addition to base1.5 --> + <enum name="SRC0_RGB" value="0x8580"/> + <enum name="SRC1_RGB" value="0x8581"/> + <enum name="SRC2_RGB" value="0x8582"/> + <enum name="SRC0_ALPHA" value="0x8588"/> + <enum name="SRC1_ALPHA" value="0x8589"/> + <enum name="SRC2_ALPHA" value="0x858A"/> + <enum name="VERTEX_ARRAY_BUFFER_BINDING" count="1" value="0x8896"> + <size name="Get" mode="get"/> + </enum> + <enum name="NORMAL_ARRAY_BUFFER_BINDING" count="1" value="0x8897"> + <size name="Get" mode="get"/> + </enum> + <enum name="COLOR_ARRAY_BUFFER_BINDING" count="1" value="0x8898"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_COORD_ARRAY_BUFFER_BINDING" count="1" value="0x889A"> + <size name="Get" mode="get"/> + </enum> +</category> + +<!-- OpenGL ES 1.0 --> +<category name="es1.0"> + <!-- addition to es1.0core --> + + <!-- from GL_OES_fixed_point --> + <enum name="FIXED" value="0x140C"/> + + <type name="fixed" size="4" /> + <type name="clampx" size="4" /> + + <function name="AlphaFuncx" offset="assign"> + <param name="func" type="GLenum"/> + <param name="ref" type="GLclampx"/> + </function> + + <function name="ClearColorx" offset="assign"> + <param name="red" type="GLclampx"/> + <param name="green" type="GLclampx"/> + <param name="blue" type="GLclampx"/> + <param name="alpha" type="GLclampx"/> + </function> + + <function name="ClearDepthx" offset="assign"> + <param name="depth" type="GLclampx"/> + </function> + + <function name="Color4x" offset="assign"> + <param name="red" type="GLfixed"/> + <param name="green" type="GLfixed"/> + <param name="blue" type="GLfixed"/> + <param name="alpha" type="GLfixed"/> + </function> + + <function name="DepthRangex" offset="assign"> + <param name="zNear" type="GLclampx"/> + <param name="zFar" type="GLclampx"/> + </function> + + <function name="Fogx" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="Fogxv" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <function name="Frustumx" offset="assign"> + <param name="left" type="GLfixed"/> + <param name="right" type="GLfixed"/> + <param name="bottom" type="GLfixed"/> + <param name="top" type="GLfixed"/> + <param name="zNear" type="GLfixed"/> + <param name="zFar" type="GLfixed"/> + </function> + + <function name="LightModelx" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="LightModelxv" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <function name="Lightx" offset="assign"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="Lightxv" offset="assign"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <function name="LineWidthx" offset="assign"> + <param name="width" type="GLfixed"/> + </function> + + <function name="LoadMatrixx" offset="assign"> + <param name="m" type="const GLfixed *" count="16"/> + </function> + + <function name="Materialx" offset="assign"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="Materialxv" offset="assign"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <function name="MultMatrixx" offset="assign"> + <param name="m" type="const GLfixed *" count="16"/> + </function> + + <function name="MultiTexCoord4x" offset="assign"> + <param name="target" type="GLenum"/> + <param name="s" type="GLfixed"/> + <param name="t" type="GLfixed"/> + <param name="r" type="GLfixed"/> + <param name="q" type="GLfixed"/> + </function> + + <function name="Normal3x" offset="assign"> + <param name="nx" type="GLfixed"/> + <param name="ny" type="GLfixed"/> + <param name="nz" type="GLfixed"/> + </function> + + <function name="Orthox" offset="assign"> + <param name="left" type="GLfixed"/> + <param name="right" type="GLfixed"/> + <param name="bottom" type="GLfixed"/> + <param name="top" type="GLfixed"/> + <param name="zNear" type="GLfixed"/> + <param name="zFar" type="GLfixed"/> + </function> + + <function name="PointSizex" offset="assign"> + <param name="size" type="GLfixed"/> + </function> + + <function name="PolygonOffsetx" offset="assign"> + <param name="factor" type="GLfixed"/> + <param name="units" type="GLfixed"/> + </function> + + <function name="Rotatex" offset="assign"> + <param name="angle" type="GLfixed"/> + <param name="x" type="GLfixed"/> + <param name="y" type="GLfixed"/> + <param name="z" type="GLfixed"/> + </function> + + <function name="SampleCoveragex" offset="assign"> + <param name="value" type="GLclampx"/> + <param name="invert" type="GLboolean"/> + </function> + + <function name="Scalex" offset="assign"> + <param name="x" type="GLfixed"/> + <param name="y" type="GLfixed"/> + <param name="z" type="GLfixed"/> + </function> + + <function name="TexEnvx" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="TexEnvxv" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <function name="TexParameterx" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="Translatex" offset="assign"> + <param name="x" type="GLfixed"/> + <param name="y" type="GLfixed"/> + <param name="z" type="GLfixed"/> + </function> + + <!-- from GL_OES_single_precision --> + <function name="ClearDepthf" offset="assign"> + <param name="depth" type="GLclampf"/> + </function> + + <function name="DepthRangef" offset="assign"> + <param name="zNear" type="GLclampf"/> + <param name="zFar" type="GLclampf"/> + </function> + + <function name="Frustumf" offset="assign"> + <param name="left" type="GLfloat"/> + <param name="right" type="GLfloat"/> + <param name="bottom" type="GLfloat"/> + <param name="top" type="GLfloat"/> + <param name="zNear" type="GLfloat"/> + <param name="zFar" type="GLfloat"/> + </function> + + <function name="Orthof" offset="assign"> + <param name="left" type="GLfloat"/> + <param name="right" type="GLfloat"/> + <param name="bottom" type="GLfloat"/> + <param name="top" type="GLfloat"/> + <param name="zNear" type="GLfloat"/> + <param name="zFar" type="GLfloat"/> + </function> +</category> + +<!-- OpenGL ES 1.1 --> +<category name="es1.1"> + <!-- addition to es1.1core --> + + <!-- from GL_OES_fixed_point --> + <function name="ClipPlanex" offset="assign"> + <param name="plane" type="GLenum"/> + <param name="equation" type="const GLfixed *" count="4"/> + </function> + + <function name="GetClipPlanex" offset="assign"> + <param name="plane" type="GLenum"/> + <param name="equation" type="GLfixed *" output="true" count="4"/> + </function> + + <function name="GetFixedv" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="GetLightxv" offset="assign"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="GetMaterialxv" offset="assign"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="GetTexEnvxv" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="GetTexParameterxv" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="PointParameterx" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="PointParameterxv" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *"/> + </function> + + <function name="TexParameterxv" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <!-- from GL_OES_matrix_get --> + <enum name="MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898D"/> + <enum name="PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898E"/> + <enum name="TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898F"/> + + <!-- from GL_OES_single_precision --> + <function name="ClipPlanef" offset="assign"> + <param name="plane" type="GLenum"/> + <param name="equation" type="const GLfloat *" count="4"/> + </function> + + <function name="GetClipPlanef" offset="assign"> + <param name="plane" type="GLenum"/> + <param name="equation" type="GLfloat *" output="true" count="4"/> + </function> +</category> + +<xi:include href="es1_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="es1_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +</OpenGLAPI> diff --git a/src/mesa/es/glapi/es1_COMPAT.xml b/src/mesa/es/glapi/es1_COMPAT.xml new file mode 100644 index 0000000000..305a645223 --- /dev/null +++ b/src/mesa/es/glapi/es1_COMPAT.xml @@ -0,0 +1,130 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gl_API.dtd"> + +<OpenGLAPI> + +<xi:include href="es_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<!-- these functions are also missing in es1_API.xml or es1_EXT.xml --> +<category name="es1compat"> + <!-- OpenGL 1.0 --> + <function name="TexGenf" alias="TexGenfOES" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="117"/> + </function> + + <function name="TexGenfv" alias="TexGenfvOES" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="118"/> + </function> + + <function name="TexGeni" alias="TexGeniOES" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="119"/> + </function> + + <function name="TexGeniv" alias="TexGenivOES" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="120"/> + </function> + + <function name="GetTexGenfv" alias="GetTexGenfvOES" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="133"/> + </function> + + <function name="GetTexGeniv" alias="GetTexGenivOES" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="134"/> + </function> + + <!-- OpenGL 1.2 --> + <function name="BlendColor" offset="336" static_dispatch="false"> + <param name="red" type="GLclampf"/> + <param name="green" type="GLclampf"/> + <param name="blue" type="GLclampf"/> + <param name="alpha" type="GLclampf"/> + <glx rop="4096"/> + </function> + + <function name="BlendEquation" alias="BlendEquationOES" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="4097"/> + </function> + + <function name="TexImage3D" offset="371" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/> + <glx rop="4114" large="true"/> + </function> + + <function name="TexSubImage3D" offset="372" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="zoffset" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="UNUSED" type="GLuint" padding="true"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/> + <glx rop="4115" large="true"/> + </function> + + <function name="CopyTexSubImage3D" offset="373" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="zoffset" type="GLint"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="4123"/> + </function> + + <!-- GL_ARB_multitexture --> + <function name="ActiveTextureARB" alias="ActiveTexture" static_dispatch="false"> + <param name="texture" type="GLenum"/> + <glx rop="197"/> + </function> + + <function name="ClientActiveTextureARB" alias="ClientActiveTexture" static_dispatch="false"> + <param name="texture" type="GLenum"/> + <glx handcode="true"/> + </function> + + <function name="MultiTexCoord4fARB" alias="MultiTexCoord4f" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLfloat"/> + <param name="t" type="GLfloat"/> + <param name="r" type="GLfloat"/> + <param name="q" type="GLfloat"/> + </function> +</category> + +</OpenGLAPI> diff --git a/src/mesa/es/glapi/es1_EXT.xml b/src/mesa/es/glapi/es1_EXT.xml new file mode 100644 index 0000000000..7c7c585736 --- /dev/null +++ b/src/mesa/es/glapi/es1_EXT.xml @@ -0,0 +1,693 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gl_API.dtd"> + +<!-- OpenGL ES 1.x extensions --> + +<OpenGLAPI> + +<xi:include href="es_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<!-- part of es1.1 extension pack --> +<category name="GL_OES_blend_equation_separate" number="1"> + <enum name="BLEND_EQUATION_RGB_OES" count="1" value="0x8009"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND_EQUATION_ALPHA_OES" count="1" value="0x883D"> + <size name="Get" mode="get"/> + </enum> + + <function name="BlendEquationSeparateOES" offset="assign"> + <param name="modeRGB" type="GLenum"/> + <param name="modeA" type="GLenum"/> + <glx rop="4228"/> + </function> +</category> + +<!-- part of es1.1 extension pack --> +<category name="GL_OES_blend_func_separate" number="2"> + <enum name="BLEND_DST_RGB_OES" count="1" value="0x80C8"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND_SRC_RGB_OES" count="1" value="0x80C9"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND_DST_ALPHA_OES" count="1" value="0x80CA"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND_SRC_ALPHA_OES" count="1" value="0x80CB"> + <size name="Get" mode="get"/> + </enum> + + <function name="BlendFuncSeparateOES" offset="assign"> + <param name="sfactorRGB" type="GLenum"/> + <param name="dfactorRGB" type="GLenum"/> + <param name="sfactorAlpha" type="GLenum"/> + <param name="dfactorAlpha" type="GLenum"/> + <glx rop="4134"/> + </function> +</category> + +<!-- part of es1.1 extension pack --> +<category name="GL_OES_blend_subtract" number="3"> + <enum name="FUNC_ADD_OES" value="0x8006"/> + <enum name="BLEND_EQUATION_OES" count="1" value="0x8009"> + <size name="Get" mode="get"/> + </enum> + <enum name="FUNC_SUBTRACT_OES" value="0x800A"/> + <enum name="FUNC_REVERSE_SUBTRACT_OES" value="0x800B"/> + + <function name="BlendEquationOES" offset="337"> + <param name="mode" type="GLenum"/> + <glx rop="4097"/> + </function> +</category> + +<!-- core addition to es1.0 and later --> +<category name="GL_OES_byte_coordinates" number="4"> + <enum name="BYTE" value="0x1400"/> +</category> + +<!-- optional for es1.1 --> +<category name="GL_OES_draw_texture" number="7"> + <enum name="TEXTURE_CROP_RECT_OES" value="0x8B9D"/> + + <function name="DrawTexiOES" offset="assign"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="z" type="GLint"/> + <param name="width" type="GLint"/> + <param name="height" type="GLint"/> + </function> + + <function name="DrawTexivOES" offset="assign"> + <param name="coords" type="const GLint *" count="5"/> + </function> + + <function name="DrawTexfOES" offset="assign"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <param name="width" type="GLfloat"/> + <param name="height" type="GLfloat"/> + </function> + + <function name="DrawTexfvOES" offset="assign"> + <param name="coords" type="const GLfloat *" count="5"/> + </function> + + <function name="DrawTexsOES" offset="assign"> + <param name="x" type="GLshort"/> + <param name="y" type="GLshort"/> + <param name="z" type="GLshort"/> + <param name="width" type="GLshort"/> + <param name="height" type="GLshort"/> + </function> + + <function name="DrawTexsvOES" offset="assign"> + <param name="coords" type="const GLshort *" count="5"/> + </function> + + <function name="DrawTexxOES" offset="assign"> + <param name="x" type="GLfixed"/> + <param name="y" type="GLfixed"/> + <param name="z" type="GLfixed"/> + <param name="width" type="GLfixed"/> + <param name="height" type="GLfixed"/> + </function> + + <function name="DrawTexxvOES" offset="assign"> + <param name="coords" type="const GLfixed *" count="5"/> + </function> + + <!-- TexParameter{ifx}v is skipped here --> +</category> + +<!-- core addition to es1.0 and later --> +<category name="GL_OES_fixed_point" number="9"> + <enum name="FIXED_OES" value="0x140C"/> + + <!-- additon to es1.0 --> + <function name="AlphaFuncxOES" alias="AlphaFuncx"> + <param name="func" type="GLenum"/> + <param name="ref" type="GLclampx"/> + </function> + + <function name="ClearColorxOES" alias="ClearColorx"> + <param name="red" type="GLclampx"/> + <param name="green" type="GLclampx"/> + <param name="blue" type="GLclampx"/> + <param name="alpha" type="GLclampx"/> + </function> + + <function name="ClearDepthxOES" alias="ClearDepthx"> + <param name="depth" type="GLclampx"/> + </function> + + <function name="Color4xOES" alias="Color4x"> + <param name="red" type="GLfixed"/> + <param name="green" type="GLfixed"/> + <param name="blue" type="GLfixed"/> + <param name="alpha" type="GLfixed"/> + </function> + + <function name="DepthRangexOES" alias="DepthRangex"> + <param name="zNear" type="GLclampx"/> + <param name="zFar" type="GLclampx"/> + </function> + + <function name="FogxOES" alias="Fogx"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="FogxvOES" alias="Fogxv"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <function name="FrustumxOES" alias="Frustumx"> + <param name="left" type="GLfixed"/> + <param name="right" type="GLfixed"/> + <param name="bottom" type="GLfixed"/> + <param name="top" type="GLfixed"/> + <param name="zNear" type="GLfixed"/> + <param name="zFar" type="GLfixed"/> + </function> + + <function name="LightModelxOES" alias="LightModelx"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="LightModelxvOES" alias="LightModelxv"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <function name="LightxOES" alias="Lightx"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="LightxvOES" alias="Lightxv"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <function name="LineWidthxOES" alias="LineWidthx"> + <param name="width" type="GLfixed"/> + </function> + + <function name="LoadMatrixxOES" alias="LoadMatrixx"> + <param name="m" type="const GLfixed *" count="16"/> + </function> + + <function name="MaterialxOES" alias="Materialx"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="MaterialxvOES" alias="Materialxv"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <function name="MultiTexCoord4xOES" alias="MultiTexCoord4x"> + <param name="target" type="GLenum"/> + <param name="s" type="GLfixed"/> + <param name="t" type="GLfixed"/> + <param name="r" type="GLfixed"/> + <param name="q" type="GLfixed"/> + </function> + + <function name="MultMatrixxOES" alias="MultMatrixx"> + <param name="m" type="const GLfixed *" count="16"/> + </function> + + <function name="Normal3xOES" alias="Normal3x"> + <param name="nx" type="GLfixed"/> + <param name="ny" type="GLfixed"/> + <param name="nz" type="GLfixed"/> + </function> + + <function name="OrthoxOES" alias="Orthox"> + <param name="left" type="GLfixed"/> + <param name="right" type="GLfixed"/> + <param name="bottom" type="GLfixed"/> + <param name="top" type="GLfixed"/> + <param name="zNear" type="GLfixed"/> + <param name="zFar" type="GLfixed"/> + </function> + + <function name="PointSizexOES" alias="PointSizex"> + <param name="size" type="GLfixed"/> + </function> + + <function name="PolygonOffsetxOES" alias="PolygonOffsetx"> + <param name="factor" type="GLfixed"/> + <param name="units" type="GLfixed"/> + </function> + + <function name="RotatexOES" alias="Rotatex"> + <param name="angle" type="GLfixed"/> + <param name="x" type="GLfixed"/> + <param name="y" type="GLfixed"/> + <param name="z" type="GLfixed"/> + </function> + + <function name="SampleCoveragexOES" alias="SampleCoveragex"> + <param name="value" type="GLclampx"/> + <param name="invert" type="GLboolean"/> + </function> + + <function name="ScalexOES" alias="Scalex"> + <param name="x" type="GLfixed"/> + <param name="y" type="GLfixed"/> + <param name="z" type="GLfixed"/> + </function> + + <function name="TexEnvxOES" alias="TexEnvx"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="TexEnvxvOES" alias="TexEnvxv"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> + + <function name="TexParameterxOES" alias="TexParameterx"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="TranslatexOES" alias="Translatex"> + <param name="x" type="GLfixed"/> + <param name="y" type="GLfixed"/> + <param name="z" type="GLfixed"/> + </function> + + <!-- additon to es1.1 --> + <function name="ClipPlanexOES" alias="ClipPlanex"> + <param name="plane" type="GLenum"/> + <param name="equation" type="const GLfixed *" count="4"/> + </function> + + <function name="GetClipPlanexOES" alias="GetClipPlanex"> + <param name="plane" type="GLenum"/> + <param name="equation" type="GLfixed *" output="true" count="4"/> + </function> + + <function name="GetFixedvOES" alias="GetFixedv"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="GetLightxvOES" alias="GetLightxv"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="GetMaterialxvOES" alias="GetMaterialxv"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="GetTexEnvxvOES" alias="GetTexEnvxv"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="GetTexParameterxvOES" alias="GetTexParameterxv"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="PointParameterxOES" alias="PointParameterx"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfixed"/> + </function> + + <function name="PointParameterxvOES" alias="PointParameterxv"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *"/> + </function> + + <function name="TexParameterxvOES" alias="TexParameterxv"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> +</category> + +<!-- part of es1.1 extension pack --> +<category name="GL_OES_framebuffer_object" number="10"> + <enum name="NONE_OES" value="0"/> + <enum name="INVALID_FRAMEBUFFER_OPERATION_OES" value="0x0506"/> + <enum name="RGBA4_OES" value="0x8056"/> + <enum name="RGB5_A1_OES" value="0x8057"/> + <enum name="DEPTH_COMPONENT16_OES" value="0x81A5"/> + + <enum name="MAX_RENDERBUFFER_SIZE_OES" value="0x84E8"/> + <enum name="FRAMEBUFFER_BINDING_OES" value="0x8CA6"/> + <enum name="RENDERBUFFER_BINDING_OES" value="0x8CA7"/> + <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES" value="0x8CD0"/> + <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES" value="0x8CD1"/> + <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" value="0x8CD2"/> + <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" value="0x8CD3"/> + <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" value="0x8CD4"/> + <enum name="FRAMEBUFFER_COMPLETE_OES" value="0x8CD5"/> + <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES" value="0x8CD6"/> + <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES" value="0x8CD7"/> + <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES" value="0x8CD9"/> + <enum name="FRAMEBUFFER_INCOMPLETE_FORMATS_OES" value="0x8CDA"/> + <enum name="FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES" value="0x8CDB"/> + <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES" value="0x8CDC"/> + <enum name="FRAMEBUFFER_UNSUPPORTED_OES" value="0x8CDD"/> + <enum name="COLOR_ATTACHMENT0_OES" value="0x8CE0"/> + <enum name="DEPTH_ATTACHMENT_OES" value="0x8D00"/> + <enum name="STENCIL_ATTACHMENT_OES" value="0x8D20"/> + <enum name="FRAMEBUFFER_OES" value="0x8D40"/> + <enum name="RENDERBUFFER_OES" value="0x8D41"/> + <enum name="RENDERBUFFER_WIDTH_OES" value="0x8D42"/> + <enum name="RENDERBUFFER_HEIGHT_OES" value="0x8D43"/> + <enum name="RENDERBUFFER_INTERNAL_FORMAT_OES" value="0x8D44"/> + <enum name="STENCIL_INDEX1_OES" value="0x8D46"/> + <enum name="STENCIL_INDEX4_OES" value="0x8D47"/> + <enum name="STENCIL_INDEX8_OES" value="0x8D48"/> + <enum name="RENDERBUFFER_RED_SIZE_OES" value="0x8D50"/> + <enum name="RENDERBUFFER_GREEN_SIZE_OES" value="0x8D51"/> + <enum name="RENDERBUFFER_BLUE_SIZE_OES" value="0x8D52"/> + <enum name="RENDERBUFFER_ALPHA_SIZE_OES" value="0x8D53"/> + <enum name="RENDERBUFFER_DEPTH_SIZE_OES" value="0x8D54"/> + <enum name="RENDERBUFFER_STENCIL_SIZE_OES" value="0x8D55"/> + <enum name="RGB565_OES" value="0x8D62"/> + + <function name="BindFramebufferOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="framebuffer" type="GLuint"/> + </function> + + <function name="BindRenderbufferOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="renderbuffer" type="GLuint"/> + </function> + + <function name="CheckFramebufferStatusOES" offset="assign"> + <param name="target" type="GLenum"/> + <return type="GLenum"/> + </function> + + <function name="DeleteFramebuffersOES" offset="assign"> + <param name="n" type="GLsizei" counter="true"/> + <param name="framebuffers" type="const GLuint *" count="n"/> + </function> + + <function name="DeleteRenderbuffersOES" offset="assign"> + <param name="n" type="GLsizei" counter="true"/> + <param name="renderbuffers" type="const GLuint *" count="n"/> + </function> + + <function name="FramebufferRenderbufferOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="attachment" type="GLenum"/> + <param name="renderbuffertarget" type="GLenum"/> + <param name="renderbuffer" type="GLuint"/> + </function> + + <function name="FramebufferTexture2DOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="attachment" type="GLenum"/> + <param name="textarget" type="GLenum"/> + <param name="texture" type="GLuint"/> + <param name="level" type="GLint"/> + </function> + + <function name="GenerateMipmapOES" offset="assign"> + <param name="target" type="GLenum"/> + </function> + + <function name="GenFramebuffersOES" offset="assign"> + <param name="n" type="GLsizei" counter="true"/> + <param name="framebuffers" type="GLuint *" count="n" output="true"/> + </function> + + <function name="GenRenderbuffersOES" offset="assign"> + <param name="n" type="GLsizei" counter="true"/> + <param name="renderbuffers" type="GLuint *" count="n" output="true"/> + </function> + + <function name="GetFramebufferAttachmentParameterivOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="attachment" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true"/> + </function> + + <function name="GetRenderbufferParameterivOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true"/> + </function> + + <function name="IsFramebufferOES" offset="assign"> + <param name="framebuffer" type="GLuint"/> + <return type="GLboolean"/> + </function> + + <function name="IsRenderbufferOES" offset="assign"> + <param name="renderbuffer" type="GLuint"/> + <return type="GLboolean"/> + </function> + + <function name="RenderbufferStorageOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="internalformat" type="GLenum"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + </function> +</category> + +<!-- core addition to es1.1 --> +<category name="GL_OES_matrix_get" number="11"> + <enum name="MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898D"/> + <enum name="PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898E"/> + <enum name="TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898F"/> +</category> + +<!-- optional for es1.1 --> +<category name="GL_OES_matrix_palette" number="12"> + <enum name="MAX_VERTEX_UNITS_OES" value="0x86A4"/> + <enum name="WEIGHT_ARRAY_TYPE_OES" value="0x86A9"/> + <enum name="WEIGHT_ARRAY_STRIDE_OES" value="0x86AA"/> + <enum name="WEIGHT_ARRAY_SIZE_OES" value="0x86AB"/> + <enum name="WEIGHT_ARRAY_POINTER_OES" value="0x86AC"/> + <enum name="WEIGHT_ARRAY_OES" value="0x86AD"/> + <enum name="MATRIX_PALETTE_OES" value="0x8840"/> + <enum name="MAX_PALETTE_MATRICES_OES" value="0x8842"/> + <enum name="CURRENT_PALETTE_MATRIX_OES" value="0x8843"/> + <enum name="MATRIX_INDEX_ARRAY_OES" value="0x8844"/> + <enum name="MATRIX_INDEX_ARRAY_SIZE_OES" value="0x8846"/> + <enum name="MATRIX_INDEX_ARRAY_TYPE_OES" value="0x8847"/> + <enum name="MATRIX_INDEX_ARRAY_STRIDE_OES" value="0x8848"/> + <enum name="MATRIX_INDEX_ARRAY_POINTER_OES" value="0x8849"/> + <enum name="WEIGHT_ARRAY_BUFFER_BINDING_OES" value="0x889E"/> + <enum name="MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES" value="0x8B9E"/> + + <function name="CurrentPaletteMatrixOES"> + <param name="matrixpaletteindex" type="GLuint"/> + </function> + + <function name="LoadPaletteFromModelViewMatrixOES"> + </function> + + <function name="MatrixIndexPointerOES"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + </function> + + <function name="WeightPointerOES"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + </function> +</category> + +<!-- required for es1.1 --> +<category name="GL_OES_point_size_array" number="14"> + <enum name="POINT_SIZE_ARRAY_TYPE_OES" value="0x898A"/> + <enum name="POINT_SIZE_ARRAY_STRIDE_OES" value="0x898B"/> + <enum name="POINT_SIZE_ARRAY_POINTER_OES" value="0x898C"/> + <enum name="POINT_SIZE_ARRAY_OES" value="0x8B9C"/> + <enum name="POINT_SIZE_ARRAY_BUFFER_BINDING_OES" value="0x8B9F"/> + + <function name="PointSizePointerOES" offset="assign"> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + </function> +</category> + +<!-- required for es1.1 --> +<category name="GL_OES_point_sprite" number="15"> + <enum name="POINT_SPRITE_OES" value="0x8861"/> + <enum name="COORD_REPLACE_OES" value="0x8862"/> +</category> + +<!-- optional for es1.0 --> +<category name="GL_OES_query_matrix" number="16"> + <function name="QueryMatrixxOES" offset="assign"> + <param name="mantissa" type="GLfixed *" count="16" /> + <param name="exponent" type="GLint *" count="16" /> + <return type="GLbitfield"/> + </function> +</category> + +<!-- required for es1.0 and later --> +<category name="GL_OES_read_format" number="17"> + <enum name="IMPLEMENTATION_COLOR_READ_TYPE_OES" value="0x8B9A"/> + <enum name="IMPLEMENTATION_COLOR_READ_FORMAT_OES" value="0x8B9B"/> +</category> + +<!-- core addition to es1.0 and later --> +<category name="GL_OES_single_precision" number="18"> + <!-- additon to es1.0 --> + <function name="ClearDepthfOES" alias="ClearDepthf"> + <param name="depth" type="GLclampf"/> + </function> + + <function name="DepthRangefOES" alias="DepthRangef"> + <param name="zNear" type="GLclampf"/> + <param name="zFar" type="GLclampf"/> + </function> + + <function name="FrustumfOES" alias="Frustumf"> + <param name="left" type="GLfloat"/> + <param name="right" type="GLfloat"/> + <param name="bottom" type="GLfloat"/> + <param name="top" type="GLfloat"/> + <param name="zNear" type="GLfloat"/> + <param name="zFar" type="GLfloat"/> + </function> + + <function name="OrthofOES" alias="Orthof"> + <param name="left" type="GLfloat"/> + <param name="right" type="GLfloat"/> + <param name="bottom" type="GLfloat"/> + <param name="top" type="GLfloat"/> + <param name="zNear" type="GLfloat"/> + <param name="zFar" type="GLfloat"/> + </function> + + <!-- additon to es1.1 --> + <function name="ClipPlanefOES" alias="ClipPlanef"> + <param name="plane" type="GLenum"/> + <param name="equation" type="const GLfloat *" count="4"/> + </function> + + <function name="GetClipPlanefOES" alias="GetClipPlanef"> + <param name="plane" type="GLenum"/> + <param name="equation" type="GLfloat *" output="true" count="4"/> + </function> +</category> + +<!-- part of es1.1 extension pack --> +<category name="GL_OES_texture_cube_map" number="20"> + <enum name="GL_TEXTURE_GEN_MODE_OES" value="0x2500"/> + <enum name="GL_NORMAL_MAP_OES" value="0x8511"/> + <enum name="GL_REFLECTION_MAP_OES" value="0x8512"/> + <enum name="GL_TEXTURE_CUBE_MAP_OES" value="0x8513"/> + <enum name="GL_TEXTURE_BINDING_CUBE_MAP_OES" value="0x8514"/> + <enum name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" value="0x8515"/> + <enum name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" value="0x8516"/> + <enum name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" value="0x8517"/> + <enum name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" value="0x8518"/> + <enum name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" value="0x8519"/> + <enum name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" value="0x851A"/> + <enum name="GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES" value="0x851C"/> + <enum name="GL_TEXTURE_GEN_STR_OES" value="0x8D60"/> + + <function name="GetTexGenfvOES" offset="279"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="133"/> + </function> + + <function name="GetTexGenivOES" offset="280"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="134"/> + </function> + + <function name="GetTexGenxvOES" offset="assign"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfixed *" output="true" variable_param="pname"/> + </function> + + <function name="TexGenfOES" offset="190"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="117"/> + </function> + + <function name="TexGenfvOES" offset="191"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="118"/> + </function> + + <function name="TexGeniOES" offset="192"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="119"/> + </function> + + <function name="TexGenivOES" offset="193"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="120"/> + </function> + + <function name="TexGenxOES" offset="assign"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + </function> + + <function name="TexGenxvOES" offset="assign"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfixed *" variable_param="pname"/> + </function> +</category> + +<category name="GL_OES_texture_env_crossbar" number="21"> + <!-- No new functions, types, enums. --> +</category> + +<category name="GL_OES_texture_mirrored_repeat" number="22"> + <!-- No new functions, types, enums. --> +</category> + +</OpenGLAPI> diff --git a/src/mesa/es/glapi/es2_API.xml b/src/mesa/es/glapi/es2_API.xml new file mode 100644 index 0000000000..ef5eb0b5da --- /dev/null +++ b/src/mesa/es/glapi/es2_API.xml @@ -0,0 +1,294 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gl_API.dtd"> + +<!-- OpenGL ES 2.x API --> + +<OpenGLAPI> + +<xi:include href="base2_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<!-- subset of OpenGL 2.0 defined by OpenGL ES 2.0 --> +<category name="es2.0core"> + <!-- addition to base1.0 --> + <enum name="NONE" value="0x0"/> + <enum name="INT" count="4" value="0x1404"> + <size name="CallLists"/> + </enum> + <enum name="UNSIGNED_INT" count="4" value="0x1405"> + <size name="CallLists"/> + </enum> + <enum name="STENCIL_INDEX" value="0x1901"/> + <enum name="DEPTH_COMPONENT" value="0x1902"/> + + <function name="TexImage2D" offset="183"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLint"/> <!-- XXX the actual type is GLenum... --> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/> + <glx rop="110" large="true"/> + </function> + + <!-- addition to base1.1 --> + <enum name="RGBA4" value="0x8056"/> + <enum name="RGB5_A1" value="0x8057"/> + + <!-- addition to base1.2 --> + <enum name="CONSTANT_COLOR" value="0x8001"/> + <enum name="ONE_MINUS_CONSTANT_COLOR" value="0x8002"/> + <enum name="CONSTANT_ALPHA" value="0x8003"/> + <enum name="ONE_MINUS_CONSTANT_ALPHA" value="0x8004"/> + <enum name="BLEND_COLOR" count="4" value="0x8005"> + <size name="Get" mode="get"/> + </enum> + <enum name="FUNC_ADD" value="0x8006"/> + <enum name="BLEND_EQUATION" count="1" value="0x8009"> + <size name="Get" mode="get"/> + </enum> + <enum name="FUNC_SUBTRACT" value="0x800A"/> + <enum name="FUNC_REVERSE_SUBTRACT" value="0x800B"/> + + <function name="BlendColor" offset="336"> + <param name="red" type="GLclampf"/> + <param name="green" type="GLclampf"/> + <param name="blue" type="GLclampf"/> + <param name="alpha" type="GLclampf"/> + <glx rop="4096"/> + </function> + + <function name="BlendEquation" offset="337"> + <param name="mode" type="GLenum"/> + <glx rop="4097"/> + </function> + + <!-- addition to base1.3 --> + <enum name="TEXTURE_CUBE_MAP" count="1" value="0x8513"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_BINDING_CUBE_MAP" count="1" value="0x8514"> + <size name="Get" mode="get"/> + </enum> + <enum name="TEXTURE_CUBE_MAP_POSITIVE_X" value="0x8515"/> + <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X" value="0x8516"/> + <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y" value="0x8517"/> + <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y" value="0x8518"/> + <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z" value="0x8519"/> + <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z" value="0x851A"/> + <enum name="MAX_CUBE_MAP_TEXTURE_SIZE" count="1" value="0x851C"> + <size name="Get" mode="get"/> + </enum> + + <!-- addition to base1.4 --> + <enum name="BLEND_DST_RGB" count="1" value="0x80C8"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND_SRC_RGB" count="1" value="0x80C9"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND_DST_ALPHA" count="1" value="0x80CA"> + <size name="Get" mode="get"/> + </enum> + <enum name="BLEND_SRC_ALPHA" count="1" value="0x80CB"> + <size name="Get" mode="get"/> + </enum> + <enum name="DEPTH_COMPONENT16" value="0x81A5"/> + <enum name="MIRRORED_REPEAT" value="0x8370"/> + <enum name="INCR_WRAP" value="0x8507"/> + <enum name="DECR_WRAP" value="0x8508"/> + + <function name="BlendFuncSeparate" offset="assign"> + <param name="sfactorRGB" type="GLenum"/> + <param name="dfactorRGB" type="GLenum"/> + <param name="sfactorAlpha" type="GLenum"/> + <param name="dfactorAlpha" type="GLenum"/> + <glx rop="4134"/> + </function> + + <!-- addition to base1.5 --> + <enum name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING" count="1" value="0x889F"> + <size name="GetVertexAttribdv" mode="get"/> + <size name="GetVertexAttribfv" mode="get"/> + <size name="GetVertexAttribiv" mode="get"/> + </enum> + <enum name="STREAM_DRAW" value="0x88E0"/> + + <!-- addition to base2.0 --> + <!-- base2.0 should have everything defined --> +</category> + +<!-- OpenGL ES 2.0 --> +<category name="es2.0"> + <!-- addition to es2.0core --> + <enum name="LOW_FLOAT" value="0x8DF0"/> + <enum name="MEDIUM_FLOAT" value="0x8DF1"/> + <enum name="HIGH_FLOAT" value="0x8DF2"/> + <enum name="LOW_INT" value="0x8DF3"/> + <enum name="MEDIUM_INT" value="0x8DF4"/> + <enum name="HIGH_INT" value="0x8DF5"/> + <enum name="SHADER_BINARY_FORMATS" value="0x8DF8"/> + <enum name="NUM_SHADER_BINARY_FORMATS" value="0x8DF9"/> + <enum name="SHADER_COMPILER" value="0x8DFA"/> + <enum name="MAX_VERTEX_UNIFORM_VECTORS" value="0x8DFB"/> + <enum name="MAX_VARYING_VECTORS" value="0x8DFC"/> + <enum name="MAX_FRAGMENT_UNIFORM_VECTORS" value="0x8DFD"/> + + <function name="GetShaderPrecisionFormat" offset="assign"> + <param name="shadertype" type="GLenum"/> + <param name="precisiontype" type="GLenum"/> + <param name="range" type="GLint *"/> + <param name="precision" type="GLint *"/> + </function> + + <function name="ReleaseShaderCompiler" offset="assign"> + </function> + + <function name="ShaderBinary" offset="assign"> + <param name="n" type="GLsizei"/> + <param name="shaders" type="const GLuint *"/> + <param name="binaryformat" type="GLenum"/> + <param name="binary" type="const GLvoid *"/> + <param name="length" type="GLsizei"/> + </function> + + <!-- from GL_OES_fixed_point --> + <enum name="FIXED" value="0x140C"/> + <type name="fixed" size="4" /> + + <!-- from GL_OES_framebuffer_object --> + <enum name="INVALID_FRAMEBUFFER_OPERATION" value="0x0506"/> + <enum name="MAX_RENDERBUFFER_SIZE" value="0x84E8"/> + <enum name="FRAMEBUFFER_BINDING" value="0x8CA6"/> + <enum name="RENDERBUFFER_BINDING" value="0x8CA7"/> + <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE" value="0x8CD0"/> + <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME" value="0x8CD1"/> + <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL" value="0x8CD2"/> + <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE" value="0x8CD3"/> + <enum name="FRAMEBUFFER_COMPLETE" value="0x8CD5"/> + <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT" value="0x8CD6"/> + <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT" value="0x8CD7"/> + <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS" value="0x8CD9"/> + <enum name="FRAMEBUFFER_UNSUPPORTED" value="0x8CDD"/> + <enum name="COLOR_ATTACHMENT0" value="0x8CE0"/> + <enum name="DEPTH_ATTACHMENT" value="0x8D00"/> + <enum name="STENCIL_ATTACHMENT" value="0x8D20"/> + <enum name="FRAMEBUFFER" value="0x8D40"/> + <enum name="RENDERBUFFER" value="0x8D41"/> + <enum name="RENDERBUFFER_WIDTH" value="0x8D42"/> + <enum name="RENDERBUFFER_HEIGHT" value="0x8D43"/> + <enum name="RENDERBUFFER_INTERNAL_FORMAT" value="0x8D44"/> + <enum name="STENCIL_INDEX8" value="0x8D48"/> + <enum name="RENDERBUFFER_RED_SIZE" value="0x8D50"/> + <enum name="RENDERBUFFER_GREEN_SIZE" value="0x8D51"/> + <enum name="RENDERBUFFER_BLUE_SIZE" value="0x8D52"/> + <enum name="RENDERBUFFER_ALPHA_SIZE" value="0x8D53"/> + <enum name="RENDERBUFFER_DEPTH_SIZE" value="0x8D54"/> + <enum name="RENDERBUFFER_STENCIL_SIZE" value="0x8D55"/> + <enum name="RGB565" value="0x8D62"/> + + <function name="BindFramebuffer" offset="assign"> + <param name="target" type="GLenum"/> + <param name="framebuffer" type="GLuint"/> + </function> + + <function name="BindRenderbuffer" offset="assign"> + <param name="target" type="GLenum"/> + <param name="renderbuffer" type="GLuint"/> + </function> + + <function name="CheckFramebufferStatus" offset="assign"> + <param name="target" type="GLenum"/> + <return type="GLenum"/> + </function> + + <function name="DeleteFramebuffers" offset="assign"> + <param name="n" type="GLsizei" counter="true"/> + <param name="framebuffers" type="const GLuint *" count="n"/> + </function> + + <function name="DeleteRenderbuffers" offset="assign"> + <param name="n" type="GLsizei" counter="true"/> + <param name="renderbuffers" type="const GLuint *" count="n"/> + </function> + + <function name="FramebufferRenderbuffer" offset="assign"> + <param name="target" type="GLenum"/> + <param name="attachment" type="GLenum"/> + <param name="renderbuffertarget" type="GLenum"/> + <param name="renderbuffer" type="GLuint"/> + </function> + + <function name="FramebufferTexture2D" offset="assign"> + <param name="target" type="GLenum"/> + <param name="attachment" type="GLenum"/> + <param name="textarget" type="GLenum"/> + <param name="texture" type="GLuint"/> + <param name="level" type="GLint"/> + </function> + + <function name="GenerateMipmap" offset="assign"> + <param name="target" type="GLenum"/> + </function> + + <function name="GenFramebuffers" offset="assign"> + <param name="n" type="GLsizei" counter="true"/> + <param name="framebuffers" type="GLuint *" count="n" output="true"/> + </function> + + <function name="GenRenderbuffers" offset="assign"> + <param name="n" type="GLsizei" counter="true"/> + <param name="renderbuffers" type="GLuint *" count="n" output="true"/> + </function> + + <function name="GetFramebufferAttachmentParameteriv" offset="assign"> + <param name="target" type="GLenum"/> + <param name="attachment" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true"/> + </function> + + <function name="GetRenderbufferParameteriv" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true"/> + </function> + + <function name="IsFramebuffer" offset="assign"> + <param name="framebuffer" type="GLuint"/> + <return type="GLboolean"/> + </function> + + <function name="IsRenderbuffer" offset="assign"> + <param name="renderbuffer" type="GLuint"/> + <return type="GLboolean"/> + </function> + + <function name="RenderbufferStorage" offset="assign"> + <param name="target" type="GLenum"/> + <param name="internalformat" type="GLenum"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + </function> + + <!-- from GL_OES_read_format --> + <enum name="IMPLEMENTATION_COLOR_READ_TYPE" value="0x8B9A"/> + <enum name="IMPLEMENTATION_COLOR_READ_FORMAT" value="0x8B9B"/> + + <!-- from GL_OES_single_precision --> + <function name="ClearDepthf" offset="assign"> + <param name="depth" type="GLclampf"/> + </function> + + <function name="DepthRangef" offset="assign"> + <param name="zNear" type="GLclampf"/> + <param name="zFar" type="GLclampf"/> + </function> +</category> + +<xi:include href="es2_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="es2_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +</OpenGLAPI> diff --git a/src/mesa/es/glapi/es2_COMPAT.xml b/src/mesa/es/glapi/es2_COMPAT.xml new file mode 100644 index 0000000000..a6bcf4d894 --- /dev/null +++ b/src/mesa/es/glapi/es2_COMPAT.xml @@ -0,0 +1,363 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gl_API.dtd"> + +<OpenGLAPI> + +<xi:include href="es_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<!-- these functions are also missing in es2_API.xml --> +<category name="es2compat"> + <!-- OpenGL 1.0 --> + <function name="Color4f" offset="29" vectorequiv="Color4fv" static_dispatch="false"> + <param name="red" type="GLfloat"/> + <param name="green" type="GLfloat"/> + <param name="blue" type="GLfloat"/> + <param name="alpha" type="GLfloat"/> + </function> + + <function name="Color4ub" offset="35" vectorequiv="Color4ubv" static_dispatch="false"> + <param name="red" type="GLubyte"/> + <param name="green" type="GLubyte"/> + <param name="blue" type="GLubyte"/> + <param name="alpha" type="GLubyte"/> + </function> + + <function name="Normal3f" offset="56" vectorequiv="Normal3fv" static_dispatch="false"> + <param name="nx" type="GLfloat"/> + <param name="ny" type="GLfloat"/> + <param name="nz" type="GLfloat"/> + </function> + + <function name="Fogf" offset="153" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="80"/> + </function> + + <function name="Fogfv" offset="154" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="81"/> + </function> + + <function name="Lightf" offset="159" static_dispatch="false"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="86"/> + </function> + + <function name="Lightfv" offset="160" static_dispatch="false"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="87"/> + </function> + + <function name="LightModelf" offset="163" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="90"/> + </function> + + <function name="LightModelfv" offset="164" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="91"/> + </function> + + <function name="Materialf" offset="169" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="96"/> + </function> + + <function name="Materialfv" offset="170" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="97"/> + </function> + + <function name="PointSize" offset="173" static_dispatch="false"> + <param name="size" type="GLfloat"/> + <glx rop="100"/> + </function> + + <function name="ShadeModel" offset="177" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="104"/> + </function> + + <function name="TexEnvf" offset="184" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="111"/> + </function> + + <function name="TexEnvfv" offset="185" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="112"/> + </function> + + <function name="TexEnvi" offset="186" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="113"/> + </function> + + <function name="TexEnviv" offset="187" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="114"/> + </function> + + <function name="TexGenf" offset="190" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="117"/> + </function> + + <function name="TexGenfv" offset="191" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="118"/> + </function> + + <function name="TexGeni" offset="192" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="119"/> + </function> + + <function name="TexGeniv" offset="193" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="120"/> + </function> + + <function name="AlphaFunc" offset="240" static_dispatch="false"> + <param name="func" type="GLenum"/> + <param name="ref" type="GLclampf"/> + <glx rop="159"/> + </function> + + <function name="LogicOp" offset="242" static_dispatch="false"> + <param name="opcode" type="GLenum"/> + <glx rop="161"/> + </function> + + <function name="GetLightfv" offset="264" static_dispatch="false"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="118"/> + </function> + + <function name="GetMaterialfv" offset="269" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="123"/> + </function> + + <function name="GetTexEnvfv" offset="276" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="130"/> + </function> + + <function name="GetTexEnviv" offset="277" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="131"/> + </function> + + <function name="GetTexGenfv" offset="279" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="133"/> + </function> + + <function name="GetTexGeniv" offset="280" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="134"/> + </function> + + <function name="LoadIdentity" offset="290" static_dispatch="false"> + <glx rop="176"/> + </function> + + <function name="LoadMatrixf" offset="291" static_dispatch="false"> + <param name="m" type="const GLfloat *" count="16"/> + <glx rop="177"/> + </function> + + <function name="MatrixMode" offset="293" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="179"/> + </function> + + <function name="MultMatrixf" offset="294" static_dispatch="false"> + <param name="m" type="const GLfloat *" count="16"/> + <glx rop="180"/> + </function> + + <function name="PopMatrix" offset="297" static_dispatch="false"> + <glx rop="183"/> + </function> + + <function name="PushMatrix" offset="298" static_dispatch="false"> + <glx rop="184"/> + </function> + + <function name="Rotatef" offset="300" static_dispatch="false"> + <param name="angle" type="GLfloat"/> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <glx rop="186"/> + </function> + + <function name="Scalef" offset="302" static_dispatch="false"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <glx rop="188"/> + </function> + + <function name="Translatef" offset="304" static_dispatch="false"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <glx rop="190"/> + </function> + + <!-- OpenGL 1.1 --> + <function name="ColorPointer" offset="308" static_dispatch="false"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="DisableClientState" offset="309" static_dispatch="false"> + <param name="array" type="GLenum"/> + <glx handcode="true"/> + </function> + + <function name="EnableClientState" offset="313" static_dispatch="false"> + <param name="array" type="GLenum"/> + <glx handcode="true"/> + </function> + + <function name="NormalPointer" offset="318" static_dispatch="false"> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="TexCoordPointer" offset="320" static_dispatch="false"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="VertexPointer" offset="321" static_dispatch="false"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="GetPointerv" offset="329" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLvoid **" output="true"/> + <glx handcode="true"/> + </function> + + <!-- OpenGL 1.2 --> + <function name="TexImage3D" alias="TexImage3DOES" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/> + <glx rop="4114" large="true"/> + </function> + + <function name="TexSubImage3D" alias="TexSubImage3DOES" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="zoffset" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="UNUSED" type="GLuint" padding="true"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/> + <glx rop="4115" large="true"/> + </function> + + <function name="CopyTexSubImage3D" alias="CopyTexSubImage3DOES" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="zoffset" type="GLint"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="4123"/> + </function> + + <!-- GL_ARB_multitexture --> + <function name="ActiveTextureARB" alias="ActiveTexture" static_dispatch="false"> + <param name="texture" type="GLenum"/> + <glx rop="197"/> + </function> + + <function name="ClientActiveTextureARB" offset="375" static_dispatch="false"> + <param name="texture" type="GLenum"/> + <glx handcode="true"/> + </function> + + <function name="MultiTexCoord4fARB" offset="402" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLfloat"/> + <param name="t" type="GLfloat"/> + <param name="r" type="GLfloat"/> + <param name="q" type="GLfloat"/> + </function> +</category> + +</OpenGLAPI> diff --git a/src/mesa/es/glapi/es2_EXT.xml b/src/mesa/es/glapi/es2_EXT.xml new file mode 100644 index 0000000000..fef6368022 --- /dev/null +++ b/src/mesa/es/glapi/es2_EXT.xml @@ -0,0 +1,122 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gl_API.dtd"> + +<!-- OpenGL ES 2.x extensions --> + +<OpenGLAPI> + +<xi:include href="es_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<category name="GL_OES_texture_3D" number="34"> + <enum name="TEXTURE_BINDING_3D_OES" value="0x806A"/> + <enum name="TEXTURE_3D_OES" value="0x806F"/> + <enum name="TEXTURE_WRAP_R_OES" value="0x8072"/> + <enum name="MAX_3D_TEXTURE_SIZE_OES" value="0x8073"/> + <enum name="SAMPLER_3D_OES" value="0x8B5F"/> + <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" value="0x8CD4"/> + + <function name="CompressedTexImage3DOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLenum"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="imageSize" type="GLsizei" counter="true"/> + <param name="data" type="const GLvoid *" count="imageSize"/> + <glx rop="216" handcode="client"/> + </function> + + <function name="CompressedTexSubImage3DOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="zoffset" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="imageSize" type="GLsizei" counter="true"/> + <param name="data" type="const GLvoid *" count="imageSize"/> + <glx rop="219" handcode="client"/> + </function> + + <function name="CopyTexSubImage3DOES" offset="373"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="zoffset" type="GLint"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="4123"/> + </function> + + <function name="FramebufferTexture3DOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="attachment" type="GLenum"/> + <param name="textarget" type="GLenum"/> + <param name="texture" type="GLuint"/> + <param name="level" type="GLint"/> + <param name="zoffset" type="GLint"/> + <glx rop="4323"/> + </function> + + <function name="TexImage3DOES" offset="371"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLenum"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/> + <glx rop="4114" large="true"/> + </function> + + <function name="TexSubImage3DOES" offset="372"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="zoffset" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="UNUSED" type="GLuint" padding="true"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/> + <glx rop="4115" large="true"/> + </function> +</category> + +<category name="GL_OES_texture_npot" number="37"> + <!-- No new functions, types, enums. --> +</category> + +<category name="GL_EXT_texture_type_2_10_10_10_REV" number="42"> + <enum name="UNSIGNED_INT_2_10_10_10_REV_EXT" value="0x8368"/> +</category> + +<category name="GL_OES_packed_depth_stencil" number="43"> + <enum name="DEPTH_STENCIL_OES" value="0x84F9"/> + <enum name="UNSIGNED_INT_24_8_OES" value="0x84FA"/> + <enum name="DEPTH24_STENCIL8_OES" value="0x88F0"/> +</category> + +<category name="GL_OES_depth_texture" number="44"> + <!-- No new functions, types, enums. --> +</category> + +<category name="GL_OES_standard_derivatives" number="45"> + <enum name="FRAGMENT_SHADER_DERIVATIVE_HINT_OES" value="0x8B8B"/> +</category> + +</OpenGLAPI> diff --git a/src/mesa/es/glapi/es_COMPAT.xml b/src/mesa/es/glapi/es_COMPAT.xml new file mode 100644 index 0000000000..6e3acaa66c --- /dev/null +++ b/src/mesa/es/glapi/es_COMPAT.xml @@ -0,0 +1,2650 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gl_API.dtd"> + +<OpenGLAPI> + +<!-- This file defines the following categories + + a subset of 1.0 + a subset of 1.1 + a subset of 1.2 + a subset of GL_ARB_multitexture + GL_APPLE_vertex_array_object + + to keep compatibility with Mesa. It is included by es1_COMPAT.xml + and es2_COMPAT.xml. When a function is later defined, it should be + commented out from this file. Take BlendEquation for example. It + is defined in OpenGL ES 2.0, and is defined as BlendEquationOES in + GL_OES_blend_subtract. Thus, it is commented out from this file, + and has an alias in es1_COMPAT.xml. +--> + +<category name="1.0"> + <type name="double" size="8" float="true" glx_name="FLOAT64"/> + <type name="clampd" size="8" float="true" glx_name="FLOAT64"/> + + <type name="float" size="4" float="true" glx_name="FLOAT32"/> + <type name="clampf" size="4" float="true" glx_name="FLOAT32"/> + + <type name="int" size="4" glx_name="CARD32"/> + <type name="uint" size="4" unsigned="true" glx_name="CARD32"/> + <type name="sizei" size="4" unsigned="true" glx_name="CARD32"/> + <type name="enum" size="4" unsigned="true" glx_name="ENUM"/> + <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/> + + <type name="short" size="2" glx_name="CARD16"/> + <type name="ushort" size="2" unsigned="true" glx_name="CARD16"/> + + <type name="byte" size="1" glx_name="CARD8"/> + <type name="ubyte" size="1" unsigned="true" glx_name="CARD8"/> + <type name="boolean" size="1" unsigned="true" glx_name="CARD8"/> + + <type name="void" size="1"/> + + <function name="NewList" offset="0" static_dispatch="false"> + <param name="list" type="GLuint"/> + <param name="mode" type="GLenum"/> + <glx sop="101"/> + </function> + + <function name="EndList" offset="1" static_dispatch="false"> + <glx sop="102"/> + </function> + + <function name="CallList" offset="2" static_dispatch="false"> + <param name="list" type="GLuint"/> + <glx rop="1"/> + </function> + + <function name="CallLists" offset="3" static_dispatch="false"> + <param name="n" type="GLsizei" counter="true"/> + <param name="type" type="GLenum"/> + <param name="lists" type="const GLvoid *" variable_param="type" count="n"/> + <glx rop="2" large="true"/> + </function> + + <function name="DeleteLists" offset="4" static_dispatch="false"> + <param name="list" type="GLuint"/> + <param name="range" type="GLsizei"/> + <glx sop="103"/> + </function> + + <function name="GenLists" offset="5" static_dispatch="false"> + <param name="range" type="GLsizei"/> + <return type="GLuint"/> + <glx sop="104"/> + </function> + + <function name="ListBase" offset="6" static_dispatch="false"> + <param name="base" type="GLuint"/> + <glx rop="3"/> + </function> + + <function name="Begin" offset="7" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="4"/> + </function> + + <function name="Bitmap" offset="8" static_dispatch="false"> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="xorig" type="GLfloat"/> + <param name="yorig" type="GLfloat"/> + <param name="xmove" type="GLfloat"/> + <param name="ymove" type="GLfloat"/> + <param name="bitmap" type="const GLubyte *" img_width="width" img_height="height" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/> + <glx rop="5" large="true"/> + </function> + + <function name="Color3b" offset="9" vectorequiv="Color3bv" static_dispatch="false"> + <param name="red" type="GLbyte"/> + <param name="green" type="GLbyte"/> + <param name="blue" type="GLbyte"/> + </function> + + <function name="Color3bv" offset="10" static_dispatch="false"> + <param name="v" type="const GLbyte *" count="3"/> + <glx rop="6"/> + </function> + + <function name="Color3d" offset="11" vectorequiv="Color3dv" static_dispatch="false"> + <param name="red" type="GLdouble"/> + <param name="green" type="GLdouble"/> + <param name="blue" type="GLdouble"/> + </function> + + <function name="Color3dv" offset="12" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="3"/> + <glx rop="7"/> + </function> + + <function name="Color3f" offset="13" vectorequiv="Color3fv" static_dispatch="false"> + <param name="red" type="GLfloat"/> + <param name="green" type="GLfloat"/> + <param name="blue" type="GLfloat"/> + </function> + + <function name="Color3fv" offset="14" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="3"/> + <glx rop="8"/> + </function> + + <function name="Color3i" offset="15" vectorequiv="Color3iv" static_dispatch="false"> + <param name="red" type="GLint"/> + <param name="green" type="GLint"/> + <param name="blue" type="GLint"/> + </function> + + <function name="Color3iv" offset="16" static_dispatch="false"> + <param name="v" type="const GLint *" count="3"/> + <glx rop="9"/> + </function> + + <function name="Color3s" offset="17" vectorequiv="Color3sv" static_dispatch="false"> + <param name="red" type="GLshort"/> + <param name="green" type="GLshort"/> + <param name="blue" type="GLshort"/> + </function> + + <function name="Color3sv" offset="18" static_dispatch="false"> + <param name="v" type="const GLshort *" count="3"/> + <glx rop="10"/> + </function> + + <function name="Color3ub" offset="19" vectorequiv="Color3ubv" static_dispatch="false"> + <param name="red" type="GLubyte"/> + <param name="green" type="GLubyte"/> + <param name="blue" type="GLubyte"/> + </function> + + <function name="Color3ubv" offset="20" static_dispatch="false"> + <param name="v" type="const GLubyte *" count="3"/> + <glx rop="11"/> + </function> + + <function name="Color3ui" offset="21" vectorequiv="Color3uiv" static_dispatch="false"> + <param name="red" type="GLuint"/> + <param name="green" type="GLuint"/> + <param name="blue" type="GLuint"/> + </function> + + <function name="Color3uiv" offset="22" static_dispatch="false"> + <param name="v" type="const GLuint *" count="3"/> + <glx rop="12"/> + </function> + + <function name="Color3us" offset="23" vectorequiv="Color3usv" static_dispatch="false"> + <param name="red" type="GLushort"/> + <param name="green" type="GLushort"/> + <param name="blue" type="GLushort"/> + </function> + + <function name="Color3usv" offset="24" static_dispatch="false"> + <param name="v" type="const GLushort *" count="3"/> + <glx rop="13"/> + </function> + + <function name="Color4b" offset="25" vectorequiv="Color4bv" static_dispatch="false"> + <param name="red" type="GLbyte"/> + <param name="green" type="GLbyte"/> + <param name="blue" type="GLbyte"/> + <param name="alpha" type="GLbyte"/> + </function> + + <function name="Color4bv" offset="26" static_dispatch="false"> + <param name="v" type="const GLbyte *" count="4"/> + <glx rop="14"/> + </function> + + <function name="Color4d" offset="27" vectorequiv="Color4dv" static_dispatch="false"> + <param name="red" type="GLdouble"/> + <param name="green" type="GLdouble"/> + <param name="blue" type="GLdouble"/> + <param name="alpha" type="GLdouble"/> + </function> + + <function name="Color4dv" offset="28" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="4"/> + <glx rop="15"/> + </function> + + <!--function name="Color4f" offset="29" vectorequiv="Color4fv" static_dispatch="false"> + <param name="red" type="GLfloat"/> + <param name="green" type="GLfloat"/> + <param name="blue" type="GLfloat"/> + <param name="alpha" type="GLfloat"/> + </function--> + + <function name="Color4fv" offset="30" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="4"/> + <glx rop="16"/> + </function> + + <function name="Color4i" offset="31" vectorequiv="Color4iv" static_dispatch="false"> + <param name="red" type="GLint"/> + <param name="green" type="GLint"/> + <param name="blue" type="GLint"/> + <param name="alpha" type="GLint"/> + </function> + + <function name="Color4iv" offset="32" static_dispatch="false"> + <param name="v" type="const GLint *" count="4"/> + <glx rop="17"/> + </function> + + <function name="Color4s" offset="33" vectorequiv="Color4sv" static_dispatch="false"> + <param name="red" type="GLshort"/> + <param name="green" type="GLshort"/> + <param name="blue" type="GLshort"/> + <param name="alpha" type="GLshort"/> + </function> + + <function name="Color4sv" offset="34" static_dispatch="false"> + <param name="v" type="const GLshort *" count="4"/> + <glx rop="18"/> + </function> + + <!--function name="Color4ub" offset="35" vectorequiv="Color4ubv" static_dispatch="false"> + <param name="red" type="GLubyte"/> + <param name="green" type="GLubyte"/> + <param name="blue" type="GLubyte"/> + <param name="alpha" type="GLubyte"/> + </function--> + + <function name="Color4ubv" offset="36" static_dispatch="false"> + <param name="v" type="const GLubyte *" count="4"/> + <glx rop="19"/> + </function> + + <function name="Color4ui" offset="37" vectorequiv="Color4uiv" static_dispatch="false"> + <param name="red" type="GLuint"/> + <param name="green" type="GLuint"/> + <param name="blue" type="GLuint"/> + <param name="alpha" type="GLuint"/> + </function> + + <function name="Color4uiv" offset="38" static_dispatch="false"> + <param name="v" type="const GLuint *" count="4"/> + <glx rop="20"/> + </function> + + <function name="Color4us" offset="39" vectorequiv="Color4usv" static_dispatch="false"> + <param name="red" type="GLushort"/> + <param name="green" type="GLushort"/> + <param name="blue" type="GLushort"/> + <param name="alpha" type="GLushort"/> + </function> + + <function name="Color4usv" offset="40" static_dispatch="false"> + <param name="v" type="const GLushort *" count="4"/> + <glx rop="21"/> + </function> + + <function name="EdgeFlag" offset="41" vectorequiv="EdgeFlagv" static_dispatch="false"> + <param name="flag" type="GLboolean"/> + </function> + + <function name="EdgeFlagv" offset="42" static_dispatch="false"> + <param name="flag" type="const GLboolean *" count="1"/> + <glx rop="22"/> + </function> + + <function name="End" offset="43" static_dispatch="false"> + <glx rop="23"/> + </function> + + <function name="Indexd" offset="44" vectorequiv="Indexdv" static_dispatch="false"> + <param name="c" type="GLdouble"/> + </function> + + <function name="Indexdv" offset="45" static_dispatch="false"> + <param name="c" type="const GLdouble *" count="1"/> + <glx rop="24"/> + </function> + + <function name="Indexf" offset="46" vectorequiv="Indexfv" static_dispatch="false"> + <param name="c" type="GLfloat"/> + </function> + + <function name="Indexfv" offset="47" static_dispatch="false"> + <param name="c" type="const GLfloat *" count="1"/> + <glx rop="25"/> + </function> + + <function name="Indexi" offset="48" vectorequiv="Indexiv" static_dispatch="false"> + <param name="c" type="GLint"/> + </function> + + <function name="Indexiv" offset="49" static_dispatch="false"> + <param name="c" type="const GLint *" count="1"/> + <glx rop="26"/> + </function> + + <function name="Indexs" offset="50" vectorequiv="Indexsv" static_dispatch="false"> + <param name="c" type="GLshort"/> + </function> + + <function name="Indexsv" offset="51" static_dispatch="false"> + <param name="c" type="const GLshort *" count="1"/> + <glx rop="27"/> + </function> + + <function name="Normal3b" offset="52" vectorequiv="Normal3bv" static_dispatch="false"> + <param name="nx" type="GLbyte"/> + <param name="ny" type="GLbyte"/> + <param name="nz" type="GLbyte"/> + </function> + + <function name="Normal3bv" offset="53" static_dispatch="false"> + <param name="v" type="const GLbyte *" count="3"/> + <glx rop="28"/> + </function> + + <function name="Normal3d" offset="54" vectorequiv="Normal3dv" static_dispatch="false"> + <param name="nx" type="GLdouble"/> + <param name="ny" type="GLdouble"/> + <param name="nz" type="GLdouble"/> + </function> + + <function name="Normal3dv" offset="55" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="3"/> + <glx rop="29"/> + </function> + + <!--function name="Normal3f" offset="56" vectorequiv="Normal3fv" static_dispatch="false"> + <param name="nx" type="GLfloat"/> + <param name="ny" type="GLfloat"/> + <param name="nz" type="GLfloat"/> + </function--> + + <function name="Normal3fv" offset="57" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="3"/> + <glx rop="30"/> + </function> + + <function name="Normal3i" offset="58" vectorequiv="Normal3iv" static_dispatch="false"> + <param name="nx" type="GLint"/> + <param name="ny" type="GLint"/> + <param name="nz" type="GLint"/> + </function> + + <function name="Normal3iv" offset="59" static_dispatch="false"> + <param name="v" type="const GLint *" count="3"/> + <glx rop="31"/> + </function> + + <function name="Normal3s" offset="60" vectorequiv="Normal3sv" static_dispatch="false"> + <param name="nx" type="GLshort"/> + <param name="ny" type="GLshort"/> + <param name="nz" type="GLshort"/> + </function> + + <function name="Normal3sv" offset="61" static_dispatch="false"> + <param name="v" type="const GLshort *" count="3"/> + <glx rop="32"/> + </function> + + <function name="RasterPos2d" offset="62" vectorequiv="RasterPos2dv" static_dispatch="false"> + <param name="x" type="GLdouble"/> + <param name="y" type="GLdouble"/> + </function> + + <function name="RasterPos2dv" offset="63" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="2"/> + <glx rop="33"/> + </function> + + <function name="RasterPos2f" offset="64" vectorequiv="RasterPos2fv" static_dispatch="false"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + </function> + + <function name="RasterPos2fv" offset="65" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="2"/> + <glx rop="34"/> + </function> + + <function name="RasterPos2i" offset="66" vectorequiv="RasterPos2iv" static_dispatch="false"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + </function> + + <function name="RasterPos2iv" offset="67" static_dispatch="false"> + <param name="v" type="const GLint *" count="2"/> + <glx rop="35"/> + </function> + + <function name="RasterPos2s" offset="68" vectorequiv="RasterPos2sv" static_dispatch="false"> + <param name="x" type="GLshort"/> + <param name="y" type="GLshort"/> + </function> + + <function name="RasterPos2sv" offset="69" static_dispatch="false"> + <param name="v" type="const GLshort *" count="2"/> + <glx rop="36"/> + </function> + + <function name="RasterPos3d" offset="70" vectorequiv="RasterPos3dv" static_dispatch="false"> + <param name="x" type="GLdouble"/> + <param name="y" type="GLdouble"/> + <param name="z" type="GLdouble"/> + </function> + + <function name="RasterPos3dv" offset="71" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="3"/> + <glx rop="37"/> + </function> + + <function name="RasterPos3f" offset="72" vectorequiv="RasterPos3fv" static_dispatch="false"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + </function> + + <function name="RasterPos3fv" offset="73" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="3"/> + <glx rop="38"/> + </function> + + <function name="RasterPos3i" offset="74" vectorequiv="RasterPos3iv" static_dispatch="false"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="z" type="GLint"/> + </function> + + <function name="RasterPos3iv" offset="75" static_dispatch="false"> + <param name="v" type="const GLint *" count="3"/> + <glx rop="39"/> + </function> + + <function name="RasterPos3s" offset="76" vectorequiv="RasterPos3sv" static_dispatch="false"> + <param name="x" type="GLshort"/> + <param name="y" type="GLshort"/> + <param name="z" type="GLshort"/> + </function> + + <function name="RasterPos3sv" offset="77" static_dispatch="false"> + <param name="v" type="const GLshort *" count="3"/> + <glx rop="40"/> + </function> + + <function name="RasterPos4d" offset="78" vectorequiv="RasterPos4dv" static_dispatch="false"> + <param name="x" type="GLdouble"/> + <param name="y" type="GLdouble"/> + <param name="z" type="GLdouble"/> + <param name="w" type="GLdouble"/> + </function> + + <function name="RasterPos4dv" offset="79" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="4"/> + <glx rop="41"/> + </function> + + <function name="RasterPos4f" offset="80" vectorequiv="RasterPos4fv" static_dispatch="false"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <param name="w" type="GLfloat"/> + </function> + + <function name="RasterPos4fv" offset="81" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="4"/> + <glx rop="42"/> + </function> + + <function name="RasterPos4i" offset="82" vectorequiv="RasterPos4iv" static_dispatch="false"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="z" type="GLint"/> + <param name="w" type="GLint"/> + </function> + + <function name="RasterPos4iv" offset="83" static_dispatch="false"> + <param name="v" type="const GLint *" count="4"/> + <glx rop="43"/> + </function> + + <function name="RasterPos4s" offset="84" vectorequiv="RasterPos4sv" static_dispatch="false"> + <param name="x" type="GLshort"/> + <param name="y" type="GLshort"/> + <param name="z" type="GLshort"/> + <param name="w" type="GLshort"/> + </function> + + <function name="RasterPos4sv" offset="85" static_dispatch="false"> + <param name="v" type="const GLshort *" count="4"/> + <glx rop="44"/> + </function> + + <function name="Rectd" offset="86" vectorequiv="Rectdv" static_dispatch="false"> + <param name="x1" type="GLdouble"/> + <param name="y1" type="GLdouble"/> + <param name="x2" type="GLdouble"/> + <param name="y2" type="GLdouble"/> + </function> + + <function name="Rectdv" offset="87" static_dispatch="false"> + <param name="v1" type="const GLdouble *" count="2"/> + <param name="v2" type="const GLdouble *" count="2"/> + <glx rop="45"/> + </function> + + <function name="Rectf" offset="88" vectorequiv="Rectfv" static_dispatch="false"> + <param name="x1" type="GLfloat"/> + <param name="y1" type="GLfloat"/> + <param name="x2" type="GLfloat"/> + <param name="y2" type="GLfloat"/> + </function> + + <function name="Rectfv" offset="89" static_dispatch="false"> + <param name="v1" type="const GLfloat *" count="2"/> + <param name="v2" type="const GLfloat *" count="2"/> + <glx rop="46"/> + </function> + + <function name="Recti" offset="90" vectorequiv="Rectiv" static_dispatch="false"> + <param name="x1" type="GLint"/> + <param name="y1" type="GLint"/> + <param name="x2" type="GLint"/> + <param name="y2" type="GLint"/> + </function> + + <function name="Rectiv" offset="91" static_dispatch="false"> + <param name="v1" type="const GLint *" count="2"/> + <param name="v2" type="const GLint *" count="2"/> + <glx rop="47"/> + </function> + + <function name="Rects" offset="92" vectorequiv="Rectsv" static_dispatch="false"> + <param name="x1" type="GLshort"/> + <param name="y1" type="GLshort"/> + <param name="x2" type="GLshort"/> + <param name="y2" type="GLshort"/> + </function> + + <function name="Rectsv" offset="93" static_dispatch="false"> + <param name="v1" type="const GLshort *" count="2"/> + <param name="v2" type="const GLshort *" count="2"/> + <glx rop="48"/> + </function> + + <function name="TexCoord1d" offset="94" vectorequiv="TexCoord1dv" static_dispatch="false"> + <param name="s" type="GLdouble"/> + </function> + + <function name="TexCoord1dv" offset="95" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="1"/> + <glx rop="49"/> + </function> + + <function name="TexCoord1f" offset="96" vectorequiv="TexCoord1fv" static_dispatch="false"> + <param name="s" type="GLfloat"/> + </function> + + <function name="TexCoord1fv" offset="97" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="1"/> + <glx rop="50"/> + </function> + + <function name="TexCoord1i" offset="98" vectorequiv="TexCoord1iv" static_dispatch="false"> + <param name="s" type="GLint"/> + </function> + + <function name="TexCoord1iv" offset="99" static_dispatch="false"> + <param name="v" type="const GLint *" count="1"/> + <glx rop="51"/> + </function> + + <function name="TexCoord1s" offset="100" vectorequiv="TexCoord1sv" static_dispatch="false"> + <param name="s" type="GLshort"/> + </function> + + <function name="TexCoord1sv" offset="101" static_dispatch="false"> + <param name="v" type="const GLshort *" count="1"/> + <glx rop="52"/> + </function> + + <function name="TexCoord2d" offset="102" vectorequiv="TexCoord2dv" static_dispatch="false"> + <param name="s" type="GLdouble"/> + <param name="t" type="GLdouble"/> + </function> + + <function name="TexCoord2dv" offset="103" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="2"/> + <glx rop="53"/> + </function> + + <function name="TexCoord2f" offset="104" vectorequiv="TexCoord2fv" static_dispatch="false"> + <param name="s" type="GLfloat"/> + <param name="t" type="GLfloat"/> + </function> + + <function name="TexCoord2fv" offset="105" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="2"/> + <glx rop="54"/> + </function> + + <function name="TexCoord2i" offset="106" vectorequiv="TexCoord2iv" static_dispatch="false"> + <param name="s" type="GLint"/> + <param name="t" type="GLint"/> + </function> + + <function name="TexCoord2iv" offset="107" static_dispatch="false"> + <param name="v" type="const GLint *" count="2"/> + <glx rop="55"/> + </function> + + <function name="TexCoord2s" offset="108" vectorequiv="TexCoord2sv" static_dispatch="false"> + <param name="s" type="GLshort"/> + <param name="t" type="GLshort"/> + </function> + + <function name="TexCoord2sv" offset="109" static_dispatch="false"> + <param name="v" type="const GLshort *" count="2"/> + <glx rop="56"/> + </function> + + <function name="TexCoord3d" offset="110" vectorequiv="TexCoord3dv" static_dispatch="false"> + <param name="s" type="GLdouble"/> + <param name="t" type="GLdouble"/> + <param name="r" type="GLdouble"/> + </function> + + <function name="TexCoord3dv" offset="111" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="3"/> + <glx rop="57"/> + </function> + + <function name="TexCoord3f" offset="112" vectorequiv="TexCoord3fv" static_dispatch="false"> + <param name="s" type="GLfloat"/> + <param name="t" type="GLfloat"/> + <param name="r" type="GLfloat"/> + </function> + + <function name="TexCoord3fv" offset="113" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="3"/> + <glx rop="58"/> + </function> + + <function name="TexCoord3i" offset="114" vectorequiv="TexCoord3iv" static_dispatch="false"> + <param name="s" type="GLint"/> + <param name="t" type="GLint"/> + <param name="r" type="GLint"/> + </function> + + <function name="TexCoord3iv" offset="115" static_dispatch="false"> + <param name="v" type="const GLint *" count="3"/> + <glx rop="59"/> + </function> + + <function name="TexCoord3s" offset="116" vectorequiv="TexCoord3sv" static_dispatch="false"> + <param name="s" type="GLshort"/> + <param name="t" type="GLshort"/> + <param name="r" type="GLshort"/> + </function> + + <function name="TexCoord3sv" offset="117" static_dispatch="false"> + <param name="v" type="const GLshort *" count="3"/> + <glx rop="60"/> + </function> + + <function name="TexCoord4d" offset="118" vectorequiv="TexCoord4dv" static_dispatch="false"> + <param name="s" type="GLdouble"/> + <param name="t" type="GLdouble"/> + <param name="r" type="GLdouble"/> + <param name="q" type="GLdouble"/> + </function> + + <function name="TexCoord4dv" offset="119" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="4"/> + <glx rop="61"/> + </function> + + <function name="TexCoord4f" offset="120" vectorequiv="TexCoord4fv" static_dispatch="false"> + <param name="s" type="GLfloat"/> + <param name="t" type="GLfloat"/> + <param name="r" type="GLfloat"/> + <param name="q" type="GLfloat"/> + </function> + + <function name="TexCoord4fv" offset="121" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="4"/> + <glx rop="62"/> + </function> + + <function name="TexCoord4i" offset="122" vectorequiv="TexCoord4iv" static_dispatch="false"> + <param name="s" type="GLint"/> + <param name="t" type="GLint"/> + <param name="r" type="GLint"/> + <param name="q" type="GLint"/> + </function> + + <function name="TexCoord4iv" offset="123" static_dispatch="false"> + <param name="v" type="const GLint *" count="4"/> + <glx rop="63"/> + </function> + + <function name="TexCoord4s" offset="124" vectorequiv="TexCoord4sv" static_dispatch="false"> + <param name="s" type="GLshort"/> + <param name="t" type="GLshort"/> + <param name="r" type="GLshort"/> + <param name="q" type="GLshort"/> + </function> + + <function name="TexCoord4sv" offset="125" static_dispatch="false"> + <param name="v" type="const GLshort *" count="4"/> + <glx rop="64"/> + </function> + + <function name="Vertex2d" offset="126" vectorequiv="Vertex2dv" static_dispatch="false"> + <param name="x" type="GLdouble"/> + <param name="y" type="GLdouble"/> + </function> + + <function name="Vertex2dv" offset="127" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="2"/> + <glx rop="65"/> + </function> + + <function name="Vertex2f" offset="128" vectorequiv="Vertex2fv" static_dispatch="false"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + </function> + + <function name="Vertex2fv" offset="129" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="2"/> + <glx rop="66"/> + </function> + + <function name="Vertex2i" offset="130" vectorequiv="Vertex2iv" static_dispatch="false"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + </function> + + <function name="Vertex2iv" offset="131" static_dispatch="false"> + <param name="v" type="const GLint *" count="2"/> + <glx rop="67"/> + </function> + + <function name="Vertex2s" offset="132" vectorequiv="Vertex2sv" static_dispatch="false"> + <param name="x" type="GLshort"/> + <param name="y" type="GLshort"/> + </function> + + <function name="Vertex2sv" offset="133" static_dispatch="false"> + <param name="v" type="const GLshort *" count="2"/> + <glx rop="68"/> + </function> + + <function name="Vertex3d" offset="134" vectorequiv="Vertex3dv" static_dispatch="false"> + <param name="x" type="GLdouble"/> + <param name="y" type="GLdouble"/> + <param name="z" type="GLdouble"/> + </function> + + <function name="Vertex3dv" offset="135" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="3"/> + <glx rop="69"/> + </function> + + <function name="Vertex3f" offset="136" vectorequiv="Vertex3fv" static_dispatch="false"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + </function> + + <function name="Vertex3fv" offset="137" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="3"/> + <glx rop="70"/> + </function> + + <function name="Vertex3i" offset="138" vectorequiv="Vertex3iv" static_dispatch="false"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="z" type="GLint"/> + </function> + + <function name="Vertex3iv" offset="139" static_dispatch="false"> + <param name="v" type="const GLint *" count="3"/> + <glx rop="71"/> + </function> + + <function name="Vertex3s" offset="140" vectorequiv="Vertex3sv" static_dispatch="false"> + <param name="x" type="GLshort"/> + <param name="y" type="GLshort"/> + <param name="z" type="GLshort"/> + </function> + + <function name="Vertex3sv" offset="141" static_dispatch="false"> + <param name="v" type="const GLshort *" count="3"/> + <glx rop="72"/> + </function> + + <function name="Vertex4d" offset="142" vectorequiv="Vertex4dv" static_dispatch="false"> + <param name="x" type="GLdouble"/> + <param name="y" type="GLdouble"/> + <param name="z" type="GLdouble"/> + <param name="w" type="GLdouble"/> + </function> + + <function name="Vertex4dv" offset="143" static_dispatch="false"> + <param name="v" type="const GLdouble *" count="4"/> + <glx rop="73"/> + </function> + + <function name="Vertex4f" offset="144" vectorequiv="Vertex4fv" static_dispatch="false"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <param name="w" type="GLfloat"/> + </function> + + <function name="Vertex4fv" offset="145" static_dispatch="false"> + <param name="v" type="const GLfloat *" count="4"/> + <glx rop="74"/> + </function> + + <function name="Vertex4i" offset="146" vectorequiv="Vertex4iv" static_dispatch="false"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="z" type="GLint"/> + <param name="w" type="GLint"/> + </function> + + <function name="Vertex4iv" offset="147" static_dispatch="false"> + <param name="v" type="const GLint *" count="4"/> + <glx rop="75"/> + </function> + + <function name="Vertex4s" offset="148" vectorequiv="Vertex4sv" static_dispatch="false"> + <param name="x" type="GLshort"/> + <param name="y" type="GLshort"/> + <param name="z" type="GLshort"/> + <param name="w" type="GLshort"/> + </function> + + <function name="Vertex4sv" offset="149" static_dispatch="false"> + <param name="v" type="const GLshort *" count="4"/> + <glx rop="76"/> + </function> + + <function name="ClipPlane" offset="150" static_dispatch="false"> + <param name="plane" type="GLenum"/> + <param name="equation" type="const GLdouble *" count="4"/> + <glx rop="77"/> + </function> + + <function name="ColorMaterial" offset="151" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="mode" type="GLenum"/> + <glx rop="78"/> + </function> + + <!--function name="CullFace" offset="152" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="79"/> + </function> + + <function name="Fogf" offset="153" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="80"/> + </function> + + <function name="Fogfv" offset="154" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="81"/> + </function--> + + <function name="Fogi" offset="155" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="82"/> + </function> + + <function name="Fogiv" offset="156" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="83"/> + </function> + + <!--function name="FrontFace" offset="157" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="84"/> + </function> + + <function name="Hint" offset="158" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="mode" type="GLenum"/> + <glx rop="85"/> + </function> + + <function name="Lightf" offset="159" static_dispatch="false"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="86"/> + </function> + + <function name="Lightfv" offset="160" static_dispatch="false"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="87"/> + </function--> + + <function name="Lighti" offset="161" static_dispatch="false"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="88"/> + </function> + + <function name="Lightiv" offset="162" static_dispatch="false"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="89"/> + </function> + + <!--function name="LightModelf" offset="163" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="90"/> + </function> + + <function name="LightModelfv" offset="164" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="91"/> + </function--> + + <function name="LightModeli" offset="165" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="92"/> + </function> + + <function name="LightModeliv" offset="166" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="93"/> + </function> + + <function name="LineStipple" offset="167" static_dispatch="false"> + <param name="factor" type="GLint"/> + <param name="pattern" type="GLushort"/> + <glx rop="94"/> + </function> + + <!--function name="LineWidth" offset="168" static_dispatch="false"> + <param name="width" type="GLfloat"/> + <glx rop="95"/> + </function> + + <function name="Materialf" offset="169" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="96"/> + </function> + + <function name="Materialfv" offset="170" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="97"/> + </function--> + + <function name="Materiali" offset="171" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="98"/> + </function> + + <function name="Materialiv" offset="172" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="99"/> + </function> + + <!--function name="PointSize" offset="173" static_dispatch="false"> + <param name="size" type="GLfloat"/> + <glx rop="100"/> + </function--> + + <function name="PolygonMode" offset="174" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="mode" type="GLenum"/> + <glx rop="101"/> + </function> + + <function name="PolygonStipple" offset="175" static_dispatch="false"> + <param name="mask" type="const GLubyte *" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/> + <glx rop="102"/> + </function> + + <!--function name="Scissor" offset="176" static_dispatch="false"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="103"/> + </function> + + <function name="ShadeModel" offset="177" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="104"/> + </function> + + <function name="TexParameterf" offset="178" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="105"/> + </function> + + <function name="TexParameterfv" offset="179" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="106"/> + </function> + + <function name="TexParameteri" offset="180" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="107"/> + </function> + + <function name="TexParameteriv" offset="181" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="108"/> + </function--> + + <function name="TexImage1D" offset="182" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/> + <glx rop="109" large="true"/> + </function> + + <!--function name="TexImage2D" offset="183" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/> + <glx rop="110" large="true"/> + </function> + + <function name="TexEnvf" offset="184" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="111"/> + </function> + + <function name="TexEnvfv" offset="185" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="112"/> + </function> + + <function name="TexEnvi" offset="186" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="113"/> + </function> + + <function name="TexEnviv" offset="187" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="114"/> + </function--> + + <function name="TexGend" offset="188" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLdouble"/> + <glx rop="115"/> + </function> + + <function name="TexGendv" offset="189" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLdouble *" variable_param="pname"/> + <glx rop="116"/> + </function> + + <!--function name="TexGenf" offset="190" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="117"/> + </function> + + <function name="TexGenfv" offset="191" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="118"/> + </function> + + <function name="TexGeni" offset="192" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="119"/> + </function> + + <function name="TexGeniv" offset="193" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="120"/> + </function--> + + <function name="FeedbackBuffer" offset="194" static_dispatch="false"> + <param name="size" type="GLsizei"/> + <param name="type" type="GLenum"/> + <param name="buffer" type="GLfloat *" output="true"/> + <glx sop="105" handcode="true"/> + </function> + + <function name="SelectBuffer" offset="195" static_dispatch="false"> + <param name="size" type="GLsizei"/> + <param name="buffer" type="GLuint *" output="true"/> + <glx sop="106" handcode="true"/> + </function> + + <function name="RenderMode" offset="196" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <return type="GLint"/> + <glx sop="107" handcode="true"/> + </function> + + <function name="InitNames" offset="197" static_dispatch="false"> + <glx rop="121"/> + </function> + + <function name="LoadName" offset="198" static_dispatch="false"> + <param name="name" type="GLuint"/> + <glx rop="122"/> + </function> + + <function name="PassThrough" offset="199" static_dispatch="false"> + <param name="token" type="GLfloat"/> + <glx rop="123"/> + </function> + + <function name="PopName" offset="200" static_dispatch="false"> + <glx rop="124"/> + </function> + + <function name="PushName" offset="201" static_dispatch="false"> + <param name="name" type="GLuint"/> + <glx rop="125"/> + </function> + + <function name="DrawBuffer" offset="202" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="126"/> + </function> + + <!--function name="Clear" offset="203" static_dispatch="false"> + <param name="mask" type="GLbitfield"/> + <glx rop="127"/> + </function--> + + <function name="ClearAccum" offset="204" static_dispatch="false"> + <param name="red" type="GLfloat"/> + <param name="green" type="GLfloat"/> + <param name="blue" type="GLfloat"/> + <param name="alpha" type="GLfloat"/> + <glx rop="128"/> + </function> + + <function name="ClearIndex" offset="205" static_dispatch="false"> + <param name="c" type="GLfloat"/> + <glx rop="129"/> + </function> + + <!--function name="ClearColor" offset="206" static_dispatch="false"> + <param name="red" type="GLclampf"/> + <param name="green" type="GLclampf"/> + <param name="blue" type="GLclampf"/> + <param name="alpha" type="GLclampf"/> + <glx rop="130"/> + </function> + + <function name="ClearStencil" offset="207" static_dispatch="false"> + <param name="s" type="GLint"/> + <glx rop="131"/> + </function--> + + <function name="ClearDepth" offset="208" static_dispatch="false"> + <param name="depth" type="GLclampd"/> + <glx rop="132"/> + </function> + + <!--function name="StencilMask" offset="209" static_dispatch="false"> + <param name="mask" type="GLuint"/> + <glx rop="133"/> + </function> + + <function name="ColorMask" offset="210" static_dispatch="false"> + <param name="red" type="GLboolean"/> + <param name="green" type="GLboolean"/> + <param name="blue" type="GLboolean"/> + <param name="alpha" type="GLboolean"/> + <glx rop="134"/> + </function> + + <function name="DepthMask" offset="211" static_dispatch="false"> + <param name="flag" type="GLboolean"/> + <glx rop="135"/> + </function--> + + <function name="IndexMask" offset="212" static_dispatch="false"> + <param name="mask" type="GLuint"/> + <glx rop="136"/> + </function> + + <function name="Accum" offset="213" static_dispatch="false"> + <param name="op" type="GLenum"/> + <param name="value" type="GLfloat"/> + <glx rop="137"/> + </function> + + <!--function name="Disable" offset="214" static_dispatch="false"> + <param name="cap" type="GLenum"/> + <glx rop="138" handcode="client"/> + </function> + + <function name="Enable" offset="215" static_dispatch="false"> + <param name="cap" type="GLenum"/> + <glx rop="139" handcode="client"/> + </function> + + <function name="Finish" offset="216" static_dispatch="false"> + <glx sop="108" handcode="true"/> + </function> + + <function name="Flush" offset="217" static_dispatch="false"> + <glx sop="142" handcode="true"/> + </function--> + + <function name="PopAttrib" offset="218" static_dispatch="false"> + <glx rop="141"/> + </function> + + <function name="PushAttrib" offset="219" static_dispatch="false"> + <param name="mask" type="GLbitfield"/> + <glx rop="142"/> + </function> + + <function name="Map1d" offset="220" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="u1" type="GLdouble"/> + <param name="u2" type="GLdouble"/> + <param name="stride" type="GLint" client_only="true"/> + <param name="order" type="GLint"/> + <param name="points" type="const GLdouble *" variable_param="order"/> + <glx rop="143" handcode="true"/> + </function> + + <function name="Map1f" offset="221" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="u1" type="GLfloat"/> + <param name="u2" type="GLfloat"/> + <param name="stride" type="GLint" client_only="true"/> + <param name="order" type="GLint"/> + <param name="points" type="const GLfloat *" variable_param="order"/> + <glx rop="144" handcode="true"/> + </function> + + <function name="Map2d" offset="222" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="u1" type="GLdouble"/> + <param name="u2" type="GLdouble"/> + <param name="ustride" type="GLint" client_only="true"/> + <param name="uorder" type="GLint"/> + <param name="v1" type="GLdouble"/> + <param name="v2" type="GLdouble"/> + <param name="vstride" type="GLint" client_only="true"/> + <param name="vorder" type="GLint"/> + <param name="points" type="const GLdouble *" variable_param="uorder"/> + <glx rop="145" handcode="true"/> + </function> + + <function name="Map2f" offset="223" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="u1" type="GLfloat"/> + <param name="u2" type="GLfloat"/> + <param name="ustride" type="GLint" client_only="true"/> + <param name="uorder" type="GLint"/> + <param name="v1" type="GLfloat"/> + <param name="v2" type="GLfloat"/> + <param name="vstride" type="GLint" client_only="true"/> + <param name="vorder" type="GLint"/> + <param name="points" type="const GLfloat *" variable_param="uorder"/> + <glx rop="146" handcode="true"/> + </function> + + <function name="MapGrid1d" offset="224" static_dispatch="false"> + <param name="un" type="GLint"/> + <param name="u1" type="GLdouble"/> + <param name="u2" type="GLdouble"/> + <glx rop="147"/> + </function> + + <function name="MapGrid1f" offset="225" static_dispatch="false"> + <param name="un" type="GLint"/> + <param name="u1" type="GLfloat"/> + <param name="u2" type="GLfloat"/> + <glx rop="148"/> + </function> + + <function name="MapGrid2d" offset="226" static_dispatch="false"> + <param name="un" type="GLint"/> + <param name="u1" type="GLdouble"/> + <param name="u2" type="GLdouble"/> + <param name="vn" type="GLint"/> + <param name="v1" type="GLdouble"/> + <param name="v2" type="GLdouble"/> + <glx rop="149"/> + </function> + + <function name="MapGrid2f" offset="227" static_dispatch="false"> + <param name="un" type="GLint"/> + <param name="u1" type="GLfloat"/> + <param name="u2" type="GLfloat"/> + <param name="vn" type="GLint"/> + <param name="v1" type="GLfloat"/> + <param name="v2" type="GLfloat"/> + <glx rop="150"/> + </function> + + <function name="EvalCoord1d" offset="228" vectorequiv="EvalCoord1dv" static_dispatch="false"> + <param name="u" type="GLdouble"/> + </function> + + <function name="EvalCoord1dv" offset="229" static_dispatch="false"> + <param name="u" type="const GLdouble *" count="1"/> + <glx rop="151"/> + </function> + + <function name="EvalCoord1f" offset="230" vectorequiv="EvalCoord1fv" static_dispatch="false"> + <param name="u" type="GLfloat"/> + </function> + + <function name="EvalCoord1fv" offset="231" static_dispatch="false"> + <param name="u" type="const GLfloat *" count="1"/> + <glx rop="152"/> + </function> + + <function name="EvalCoord2d" offset="232" vectorequiv="EvalCoord2dv" static_dispatch="false"> + <param name="u" type="GLdouble"/> + <param name="v" type="GLdouble"/> + </function> + + <function name="EvalCoord2dv" offset="233" static_dispatch="false"> + <param name="u" type="const GLdouble *" count="2"/> + <glx rop="153"/> + </function> + + <function name="EvalCoord2f" offset="234" vectorequiv="EvalCoord2fv" static_dispatch="false"> + <param name="u" type="GLfloat"/> + <param name="v" type="GLfloat"/> + </function> + + <function name="EvalCoord2fv" offset="235" static_dispatch="false"> + <param name="u" type="const GLfloat *" count="2"/> + <glx rop="154"/> + </function> + + <function name="EvalMesh1" offset="236" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <param name="i1" type="GLint"/> + <param name="i2" type="GLint"/> + <glx rop="155"/> + </function> + + <function name="EvalPoint1" offset="237" static_dispatch="false"> + <param name="i" type="GLint"/> + <glx rop="156"/> + </function> + + <function name="EvalMesh2" offset="238" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <param name="i1" type="GLint"/> + <param name="i2" type="GLint"/> + <param name="j1" type="GLint"/> + <param name="j2" type="GLint"/> + <glx rop="157"/> + </function> + + <function name="EvalPoint2" offset="239" static_dispatch="false"> + <param name="i" type="GLint"/> + <param name="j" type="GLint"/> + <glx rop="158"/> + </function> + + <!--function name="AlphaFunc" offset="240" static_dispatch="false"> + <param name="func" type="GLenum"/> + <param name="ref" type="GLclampf"/> + <glx rop="159"/> + </function> + + <function name="BlendFunc" offset="241" static_dispatch="false"> + <param name="sfactor" type="GLenum"/> + <param name="dfactor" type="GLenum"/> + <glx rop="160"/> + </function> + + <function name="LogicOp" offset="242" static_dispatch="false"> + <param name="opcode" type="GLenum"/> + <glx rop="161"/> + </function> + + <function name="StencilFunc" offset="243" static_dispatch="false"> + <param name="func" type="GLenum"/> + <param name="ref" type="GLint"/> + <param name="mask" type="GLuint"/> + <glx rop="162"/> + </function> + + <function name="StencilOp" offset="244" static_dispatch="false"> + <param name="fail" type="GLenum"/> + <param name="zfail" type="GLenum"/> + <param name="zpass" type="GLenum"/> + <glx rop="163"/> + </function> + + <function name="DepthFunc" offset="245" static_dispatch="false"> + <param name="func" type="GLenum"/> + <glx rop="164"/> + </function--> + + <function name="PixelZoom" offset="246" static_dispatch="false"> + <param name="xfactor" type="GLfloat"/> + <param name="yfactor" type="GLfloat"/> + <glx rop="165"/> + </function> + + <function name="PixelTransferf" offset="247" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx rop="166"/> + </function> + + <function name="PixelTransferi" offset="248" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx rop="167"/> + </function> + + <function name="PixelStoref" offset="249" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + <glx sop="109" handcode="client"/> + </function> + + <!--function name="PixelStorei" offset="250" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + <glx sop="110" handcode="client"/> + </function--> + + <function name="PixelMapfv" offset="251" static_dispatch="false"> + <param name="map" type="GLenum"/> + <param name="mapsize" type="GLsizei" counter="true"/> + <param name="values" type="const GLfloat *" count="mapsize"/> + <glx rop="168" large="true"/> + </function> + + <function name="PixelMapuiv" offset="252" static_dispatch="false"> + <param name="map" type="GLenum"/> + <param name="mapsize" type="GLsizei" counter="true"/> + <param name="values" type="const GLuint *" count="mapsize"/> + <glx rop="169" large="true"/> + </function> + + <function name="PixelMapusv" offset="253" static_dispatch="false"> + <param name="map" type="GLenum"/> + <param name="mapsize" type="GLsizei" counter="true"/> + <param name="values" type="const GLushort *" count="mapsize"/> + <glx rop="170" large="true"/> + </function> + + <function name="ReadBuffer" offset="254" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="171"/> + </function> + + <function name="CopyPixels" offset="255" static_dispatch="false"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="type" type="GLenum"/> + <glx rop="172"/> + </function> + + <!--function name="ReadPixels" offset="256" static_dispatch="false"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/> + <glx sop="111"/> + </function--> + + <function name="DrawPixels" offset="257" static_dispatch="false"> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0" img_pad_dimensions="false"/> + <glx rop="173" large="true"/> + </function> + + <!--function name="GetBooleanv" offset="258" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLboolean *" output="true" variable_param="pname"/> + <glx sop="112" handcode="client"/> + </function--> + + <function name="GetClipPlane" offset="259" static_dispatch="false"> + <param name="plane" type="GLenum"/> + <param name="equation" type="GLdouble *" output="true" count="4"/> + <glx sop="113" always_array="true"/> + </function> + + <function name="GetDoublev" offset="260" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLdouble *" output="true" variable_param="pname"/> + <glx sop="114" handcode="client"/> + </function> + + <!--function name="GetError" offset="261" static_dispatch="false"> + <return type="GLenum"/> + <glx sop="115" handcode="client"/> + </function> + + <function name="GetFloatv" offset="262" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="116" handcode="client"/> + </function> + + <function name="GetIntegerv" offset="263" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="117" handcode="client"/> + </function> + + <function name="GetLightfv" offset="264" static_dispatch="false"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="118"/> + </function--> + + <function name="GetLightiv" offset="265" static_dispatch="false"> + <param name="light" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="119"/> + </function> + + <function name="GetMapdv" offset="266" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="query" type="GLenum"/> + <param name="v" type="GLdouble *" output="true" variable_param="target query"/> + <glx sop="120"/> + </function> + + <function name="GetMapfv" offset="267" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="query" type="GLenum"/> + <param name="v" type="GLfloat *" output="true" variable_param="target query"/> + <glx sop="121"/> + </function> + + <function name="GetMapiv" offset="268" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="query" type="GLenum"/> + <param name="v" type="GLint *" output="true" variable_param="target query"/> + <glx sop="122"/> + </function> + + <!--function name="GetMaterialfv" offset="269" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="123"/> + </function--> + + <function name="GetMaterialiv" offset="270" static_dispatch="false"> + <param name="face" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="124"/> + </function> + + <function name="GetPixelMapfv" offset="271" static_dispatch="false"> + <param name="map" type="GLenum"/> + <param name="values" type="GLfloat *" output="true" variable_param="map"/> + <glx sop="125"/> + </function> + + <function name="GetPixelMapuiv" offset="272" static_dispatch="false"> + <param name="map" type="GLenum"/> + <param name="values" type="GLuint *" output="true" variable_param="map"/> + <glx sop="126"/> + </function> + + <function name="GetPixelMapusv" offset="273" static_dispatch="false"> + <param name="map" type="GLenum"/> + <param name="values" type="GLushort *" output="true" variable_param="map"/> + <glx sop="127"/> + </function> + + <function name="GetPolygonStipple" offset="274" static_dispatch="false"> + <param name="mask" type="GLubyte *" output="true" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP"/> + <glx sop="128"/> + </function> + + <!--function name="GetString" offset="275" static_dispatch="false"> + <param name="name" type="GLenum"/> + <return type="const GLubyte *"/> + <glx sop="129" handcode="true"/> + </function> + + <function name="GetTexEnvfv" offset="276" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="130"/> + </function> + + <function name="GetTexEnviv" offset="277" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="131"/> + </function--> + + <function name="GetTexGendv" offset="278" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLdouble *" output="true" variable_param="pname"/> + <glx sop="132"/> + </function> + + <!--function name="GetTexGenfv" offset="279" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="133"/> + </function> + + <function name="GetTexGeniv" offset="280" static_dispatch="false"> + <param name="coord" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="134"/> + </function--> + + <function name="GetTexImage" offset="281" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type"/> + <glx sop="135" dimensions_in_reply="true"/> + </function> + + <!--function name="GetTexParameterfv" offset="282" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="136"/> + </function> + + <function name="GetTexParameteriv" offset="283" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="137"/> + </function--> + + <function name="GetTexLevelParameterfv" offset="284" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="138"/> + </function> + + <function name="GetTexLevelParameteriv" offset="285" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="139"/> + </function> + + <!--function name="IsEnabled" offset="286" static_dispatch="false"> + <param name="cap" type="GLenum"/> + <return type="GLboolean"/> + <glx sop="140" handcode="client"/> + </function--> + + <function name="IsList" offset="287" static_dispatch="false"> + <param name="list" type="GLuint"/> + <return type="GLboolean"/> + <glx sop="141"/> + </function> + + <function name="DepthRange" offset="288" static_dispatch="false"> + <param name="zNear" type="GLclampd"/> + <param name="zFar" type="GLclampd"/> + <glx rop="174"/> + </function> + + <function name="Frustum" offset="289" static_dispatch="false"> + <param name="left" type="GLdouble"/> + <param name="right" type="GLdouble"/> + <param name="bottom" type="GLdouble"/> + <param name="top" type="GLdouble"/> + <param name="zNear" type="GLdouble"/> + <param name="zFar" type="GLdouble"/> + <glx rop="175"/> + </function> + + <!--function name="LoadIdentity" offset="290" static_dispatch="false"> + <glx rop="176"/> + </function> + + <function name="LoadMatrixf" offset="291" static_dispatch="false"> + <param name="m" type="const GLfloat *" count="16"/> + <glx rop="177"/> + </function--> + + <function name="LoadMatrixd" offset="292" static_dispatch="false"> + <param name="m" type="const GLdouble *" count="16"/> + <glx rop="178"/> + </function> + + <!--function name="MatrixMode" offset="293" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="179"/> + </function> + + <function name="MultMatrixf" offset="294" static_dispatch="false"> + <param name="m" type="const GLfloat *" count="16"/> + <glx rop="180"/> + </function--> + + <function name="MultMatrixd" offset="295" static_dispatch="false"> + <param name="m" type="const GLdouble *" count="16"/> + <glx rop="181"/> + </function> + + <function name="Ortho" offset="296" static_dispatch="false"> + <param name="left" type="GLdouble"/> + <param name="right" type="GLdouble"/> + <param name="bottom" type="GLdouble"/> + <param name="top" type="GLdouble"/> + <param name="zNear" type="GLdouble"/> + <param name="zFar" type="GLdouble"/> + <glx rop="182"/> + </function> + + <!--function name="PopMatrix" offset="297" static_dispatch="false"> + <glx rop="183"/> + </function> + + <function name="PushMatrix" offset="298" static_dispatch="false"> + <glx rop="184"/> + </function--> + + <function name="Rotated" offset="299" static_dispatch="false"> + <param name="angle" type="GLdouble"/> + <param name="x" type="GLdouble"/> + <param name="y" type="GLdouble"/> + <param name="z" type="GLdouble"/> + <glx rop="185"/> + </function> + + <!--function name="Rotatef" offset="300" static_dispatch="false"> + <param name="angle" type="GLfloat"/> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <glx rop="186"/> + </function--> + + <function name="Scaled" offset="301" static_dispatch="false"> + <param name="x" type="GLdouble"/> + <param name="y" type="GLdouble"/> + <param name="z" type="GLdouble"/> + <glx rop="187"/> + </function> + + <!--function name="Scalef" offset="302" static_dispatch="false"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <glx rop="188"/> + </function--> + + <function name="Translated" offset="303" static_dispatch="false"> + <param name="x" type="GLdouble"/> + <param name="y" type="GLdouble"/> + <param name="z" type="GLdouble"/> + <glx rop="189"/> + </function> + + <!--function name="Translatef" offset="304" static_dispatch="false"> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + <glx rop="190"/> + </function> + + <function name="Viewport" offset="305" static_dispatch="false"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="191"/> + </function--> +</category> + +<category name="1.1"> + <function name="ArrayElement" offset="306" static_dispatch="false"> + <param name="i" type="GLint"/> + <glx handcode="true"/> + </function> + + <!--function name="ColorPointer" offset="308" static_dispatch="false"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="DisableClientState" offset="309" static_dispatch="false"> + <param name="array" type="GLenum"/> + <glx handcode="true"/> + </function> + + <function name="DrawArrays" offset="310" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <param name="first" type="GLint"/> + <param name="count" type="GLsizei"/> + <glx rop="193" handcode="true"/> + </function> + + <function name="DrawElements" offset="311" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <param name="count" type="GLsizei"/> + <param name="type" type="GLenum"/> + <param name="indices" type="const GLvoid *"/> + <glx handcode="true"/> + </function--> + + <function name="EdgeFlagPointer" offset="312" static_dispatch="false"> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <!--function name="EnableClientState" offset="313" static_dispatch="false"> + <param name="array" type="GLenum"/> + <glx handcode="true"/> + </function> + + <function name="GetPointerv" offset="329" static_dispatch="false"> + <param name="pname" type="GLenum"/> + <param name="params" type="GLvoid **" output="true"/> + <glx handcode="true"/> + </function--> + + <function name="IndexPointer" offset="314" static_dispatch="false"> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="InterleavedArrays" offset="317" static_dispatch="false"> + <param name="format" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <!--function name="NormalPointer" offset="318" static_dispatch="false"> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="TexCoordPointer" offset="320" static_dispatch="false"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="VertexPointer" offset="321" static_dispatch="false"> + <param name="size" type="GLint"/> + <param name="type" type="GLenum"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="PolygonOffset" offset="319" static_dispatch="false"> + <param name="factor" type="GLfloat"/> + <param name="units" type="GLfloat"/> + <glx rop="192"/> + </function--> + + <function name="CopyTexImage1D" offset="323" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLenum"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="border" type="GLint"/> + <glx rop="4119"/> + </function> + + <!--function name="CopyTexImage2D" offset="324" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLenum"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="border" type="GLint"/> + <glx rop="4120"/> + </function--> + + <function name="CopyTexSubImage1D" offset="325" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <glx rop="4121"/> + </function> + + <!--function name="CopyTexSubImage2D" offset="326" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="4122"/> + </function--> + + <function name="TexSubImage1D" offset="332" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="UNUSED" type="GLuint" padding="true"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_xoff="xoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/> + <glx rop="4099" large="true"/> + </function> + + <!--function name="TexSubImage2D" offset="333" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="UNUSED" type="GLuint" padding="true"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_xoff="xoffset" img_yoff="yoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/> + <glx rop="4100" large="true"/> + </function--> + + <function name="AreTexturesResident" offset="322" static_dispatch="false"> + <param name="n" type="GLsizei" counter="true"/> + <param name="textures" type="const GLuint *" count="n"/> + <param name="residences" type="GLboolean *" output="true" count="n"/> + <return type="GLboolean"/> + <glx sop="143" handcode="client" always_array="true"/> + </function> + + <!--function name="BindTexture" offset="307" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="texture" type="GLuint"/> + <glx rop="4117"/> + </function> + + <function name="DeleteTextures" offset="327" static_dispatch="false"> + <param name="n" type="GLsizei" counter="true"/> + <param name="textures" type="const GLuint *" count="n"/> + <glx sop="144"/> + </function> + + <function name="GenTextures" offset="328" static_dispatch="false"> + <param name="n" type="GLsizei" counter="true"/> + <param name="textures" type="GLuint *" output="true" count="n"/> + <glx sop="145" always_array="true"/> + </function> + + <function name="IsTexture" offset="330" static_dispatch="false"> + <param name="texture" type="GLuint"/> + <return type="GLboolean"/> + <glx sop="146"/> + </function--> + + <function name="PrioritizeTextures" offset="331" static_dispatch="false"> + <param name="n" type="GLsizei" counter="true"/> + <param name="textures" type="const GLuint *" count="n"/> + <param name="priorities" type="const GLclampf *" count="n"/> + <glx rop="4118"/> + </function> + + <function name="Indexub" offset="315" vectorequiv="Indexubv" static_dispatch="false"> + <param name="c" type="GLubyte"/> + </function> + + <function name="Indexubv" offset="316" static_dispatch="false"> + <param name="c" type="const GLubyte *" count="1"/> + <glx rop="194"/> + </function> + + <function name="PopClientAttrib" offset="334" static_dispatch="false"> + <glx handcode="true"/> + </function> + + <function name="PushClientAttrib" offset="335" static_dispatch="false"> + <param name="mask" type="GLbitfield"/> + <glx handcode="true"/> + </function> +</category> + +<category name="1.2"> + <!--function name="BlendColor" offset="336" static_dispatch="false"> + <param name="red" type="GLclampf"/> + <param name="green" type="GLclampf"/> + <param name="blue" type="GLclampf"/> + <param name="alpha" type="GLclampf"/> + <glx rop="4096"/> + </function> + + <function name="BlendEquation" offset="337" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <glx rop="4097"/> + </function--> + + <function name="DrawRangeElements" offset="338" static_dispatch="false"> + <param name="mode" type="GLenum"/> + <param name="start" type="GLuint"/> + <param name="end" type="GLuint"/> + <param name="count" type="GLsizei"/> + <param name="type" type="GLenum"/> + <param name="indices" type="const GLvoid *"/> + <glx handcode="true"/> + </function> + + <function name="ColorTable" offset="339" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="internalformat" type="GLenum"/> + <param name="width" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="table" type="const GLvoid *" img_width="width" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/> + <glx rop="2053" large="true"/> + </function> + + <function name="ColorTableParameterfv" offset="340" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="2054"/> + </function> + + <function name="ColorTableParameteriv" offset="341" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="2055"/> + </function> + + <function name="CopyColorTable" offset="342" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="internalformat" type="GLenum"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <glx rop="2056"/> + </function> + + <function name="GetColorTable" offset="343" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="table" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/> + <glx sop="147" dimensions_in_reply="true"/> + </function> + + <function name="GetColorTableParameterfv" offset="344" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="148"/> + </function> + + <function name="GetColorTableParameteriv" offset="345" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="149"/> + </function> + + <function name="ColorSubTable" offset="346" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="start" type="GLsizei"/> + <param name="count" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="data" type="const GLvoid *" img_width="count" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/> + <glx rop="195" large="true"/> + </function> + + <function name="CopyColorSubTable" offset="347" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="start" type="GLsizei"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <glx rop="196"/> + </function> + + <function name="ConvolutionFilter1D" offset="348" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="internalformat" type="GLenum"/> + <param name="width" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="image" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/> + <glx rop="4101" large="true"/> + </function> + + <function name="ConvolutionFilter2D" offset="349" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="internalformat" type="GLenum"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="image" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/> + <glx rop="4102" large="true"/> + </function> + + <function name="ConvolutionParameterf" offset="350" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat"/> + <glx rop="4103"/> + </function> + + <function name="ConvolutionParameterfv" offset="351" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + <glx rop="4104"/> + </function> + + <function name="ConvolutionParameteri" offset="352" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint"/> + <glx rop="4105"/> + </function> + + <function name="ConvolutionParameteriv" offset="353" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *" variable_param="pname"/> + <glx rop="4106"/> + </function> + + <function name="CopyConvolutionFilter1D" offset="354" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="internalformat" type="GLenum"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <glx rop="4107"/> + </function> + + <function name="CopyConvolutionFilter2D" offset="355" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="internalformat" type="GLenum"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="4108"/> + </function> + + <function name="GetConvolutionFilter" offset="356" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="image" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type"/> + <glx sop="150" dimensions_in_reply="true"/> + </function> + + <function name="GetConvolutionParameterfv" offset="357" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="151"/> + </function> + + <function name="GetConvolutionParameteriv" offset="358" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="152"/> + </function> + + <function name="GetSeparableFilter" offset="359" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="row" type="GLvoid *" output="true"/> + <param name="column" type="GLvoid *" output="true"/> + <param name="span" type="GLvoid *" output="true"/> + <glx sop="153" handcode="true"/> + </function> + + <function name="SeparableFilter2D" offset="360" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="internalformat" type="GLenum"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="row" type="const GLvoid *"/> + <param name="column" type="const GLvoid *"/> + <glx rop="4109" handcode="true"/> + </function> + + <function name="GetHistogram" offset="361" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="reset" type="GLboolean"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="values" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/> + <glx sop="154" dimensions_in_reply="true" img_reset="reset"/> + </function> + + <function name="GetHistogramParameterfv" offset="362" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="155"/> + </function> + + <function name="GetHistogramParameteriv" offset="363" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="156"/> + </function> + + <function name="GetMinmax" offset="364" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="reset" type="GLboolean"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="values" type="GLvoid *" output="true" img_width="2" img_format="format" img_type="type"/> + <glx sop="157" img_reset="reset"/> + </function> + + <function name="GetMinmaxParameterfv" offset="365" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + <glx sop="158"/> + </function> + + <function name="GetMinmaxParameteriv" offset="366" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + <glx sop="159"/> + </function> + + <function name="Histogram" offset="367" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="width" type="GLsizei"/> + <param name="internalformat" type="GLenum"/> + <param name="sink" type="GLboolean"/> + <glx rop="4110"/> + </function> + + <function name="Minmax" offset="368" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="internalformat" type="GLenum"/> + <param name="sink" type="GLboolean"/> + <glx rop="4111"/> + </function> + + <function name="ResetHistogram" offset="369" static_dispatch="false"> + <param name="target" type="GLenum"/> + <glx rop="4112"/> + </function> + + <function name="ResetMinmax" offset="370" static_dispatch="false"> + <param name="target" type="GLenum"/> + <glx rop="4113"/> + </function> + + <!--function name="TexImage3D" offset="371" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/> + <glx rop="4114" large="true"/> + </function> + + <function name="TexSubImage3D" offset="372" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="zoffset" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + <param name="format" type="GLenum"/> + <param name="type" type="GLenum"/> + <param name="UNUSED" type="GLuint" padding="true"/> + <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/> + <glx rop="4115" large="true"/> + </function> + + <function name="CopyTexSubImage3D" offset="373" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="level" type="GLint"/> + <param name="xoffset" type="GLint"/> + <param name="yoffset" type="GLint"/> + <param name="zoffset" type="GLint"/> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <glx rop="4123"/> + </function--> +</category> + +<category name="GL_ARB_multitexture" number="1"> + <!--function name="ActiveTextureARB" offset="374" static_dispatch="false"> + <param name="texture" type="GLenum"/> + <glx rop="197"/> + </function> + + <function name="ClientActiveTextureARB" offset="375" static_dispatch="false"> + <param name="texture" type="GLenum"/> + <glx handcode="true"/> + </function--> + + <function name="MultiTexCoord1dARB" offset="376" vectorequiv="MultiTexCoord1dvARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLdouble"/> + </function> + + <function name="MultiTexCoord1dvARB" offset="377" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLdouble *" count="1"/> + <glx rop="198"/> + </function> + + <function name="MultiTexCoord1fARB" offset="378" vectorequiv="MultiTexCoord1fvARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLfloat"/> + </function> + + <function name="MultiTexCoord1fvARB" offset="379" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLfloat *" count="1"/> + <glx rop="199"/> + </function> + + <function name="MultiTexCoord1iARB" offset="380" vectorequiv="MultiTexCoord1ivARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLint"/> + </function> + + <function name="MultiTexCoord1ivARB" offset="381" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLint *" count="1"/> + <glx rop="200"/> + </function> + + <function name="MultiTexCoord1sARB" offset="382" vectorequiv="MultiTexCoord1svARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLshort"/> + </function> + + <function name="MultiTexCoord1svARB" offset="383" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLshort *" count="1"/> + <glx rop="201"/> + </function> + + <function name="MultiTexCoord2dARB" offset="384" vectorequiv="MultiTexCoord2dvARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLdouble"/> + <param name="t" type="GLdouble"/> + </function> + + <function name="MultiTexCoord2dvARB" offset="385" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLdouble *" count="2"/> + <glx rop="202"/> + </function> + + <function name="MultiTexCoord2fARB" offset="386" vectorequiv="MultiTexCoord2fvARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLfloat"/> + <param name="t" type="GLfloat"/> + </function> + + <function name="MultiTexCoord2fvARB" offset="387" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLfloat *" count="2"/> + <glx rop="203"/> + </function> + + <function name="MultiTexCoord2iARB" offset="388" vectorequiv="MultiTexCoord2ivARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLint"/> + <param name="t" type="GLint"/> + </function> + + <function name="MultiTexCoord2ivARB" offset="389" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLint *" count="2"/> + <glx rop="204"/> + </function> + + <function name="MultiTexCoord2sARB" offset="390" vectorequiv="MultiTexCoord2svARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLshort"/> + <param name="t" type="GLshort"/> + </function> + + <function name="MultiTexCoord2svARB" offset="391" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLshort *" count="2"/> + <glx rop="205"/> + </function> + + <function name="MultiTexCoord3dARB" offset="392" vectorequiv="MultiTexCoord3dvARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLdouble"/> + <param name="t" type="GLdouble"/> + <param name="r" type="GLdouble"/> + </function> + + <function name="MultiTexCoord3dvARB" offset="393" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLdouble *" count="3"/> + <glx rop="206"/> + </function> + + <function name="MultiTexCoord3fARB" offset="394" vectorequiv="MultiTexCoord3fvARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLfloat"/> + <param name="t" type="GLfloat"/> + <param name="r" type="GLfloat"/> + </function> + + <function name="MultiTexCoord3fvARB" offset="395" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLfloat *" count="3"/> + <glx rop="207"/> + </function> + + <function name="MultiTexCoord3iARB" offset="396" vectorequiv="MultiTexCoord3ivARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLint"/> + <param name="t" type="GLint"/> + <param name="r" type="GLint"/> + </function> + + <function name="MultiTexCoord3ivARB" offset="397" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLint *" count="3"/> + <glx rop="208"/> + </function> + + <function name="MultiTexCoord3sARB" offset="398" vectorequiv="MultiTexCoord3svARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLshort"/> + <param name="t" type="GLshort"/> + <param name="r" type="GLshort"/> + </function> + + <function name="MultiTexCoord3svARB" offset="399" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLshort *" count="3"/> + <glx rop="209"/> + </function> + + <function name="MultiTexCoord4dARB" offset="400" vectorequiv="MultiTexCoord4dvARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLdouble"/> + <param name="t" type="GLdouble"/> + <param name="r" type="GLdouble"/> + <param name="q" type="GLdouble"/> + </function> + + <function name="MultiTexCoord4dvARB" offset="401" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLdouble *" count="4"/> + <glx rop="210"/> + </function> + + <!--function name="MultiTexCoord4fARB" offset="402" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLfloat"/> + <param name="t" type="GLfloat"/> + <param name="r" type="GLfloat"/> + <param name="q" type="GLfloat"/> + </function--> + + <function name="MultiTexCoord4fvARB" offset="403" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLfloat *" count="4"/> + <glx rop="211"/> + </function> + + <function name="MultiTexCoord4iARB" offset="404" vectorequiv="MultiTexCoord4ivARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLint"/> + <param name="t" type="GLint"/> + <param name="r" type="GLint"/> + <param name="q" type="GLint"/> + </function> + + <function name="MultiTexCoord4ivARB" offset="405" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLint *" count="4"/> + <glx rop="212"/> + </function> + + <function name="MultiTexCoord4sARB" offset="406" vectorequiv="MultiTexCoord4svARB" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="s" type="GLshort"/> + <param name="t" type="GLshort"/> + <param name="r" type="GLshort"/> + <param name="q" type="GLshort"/> + </function> + + <function name="MultiTexCoord4svARB" offset="407" static_dispatch="false"> + <param name="target" type="GLenum"/> + <param name="v" type="const GLshort *" count="4"/> + <glx rop="213"/> + </function> +</category> + +<xi:include href="../../glapi/APPLE_vertex_array_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +</OpenGLAPI> diff --git a/src/mesa/es/glapi/es_EXT.xml b/src/mesa/es/glapi/es_EXT.xml new file mode 100644 index 0000000000..8878b54141 --- /dev/null +++ b/src/mesa/es/glapi/es_EXT.xml @@ -0,0 +1,97 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gl_API.dtd"> + +<!-- OpenGL ES extensions --> + +<OpenGLAPI> + +<category name="GL_OES_compressed_paletted_texture" number="6"> + <enum name="PALETTE4_RGB8_OES" value="0x8B90"/> + <enum name="PALETTE4_RGBA8_OES" value="0x8B91"/> + <enum name="PALETTE4_R5_G6_B5_OES" value="0x8B92"/> + <enum name="PALETTE4_RGBA4_OES" value="0x8B93"/> + <enum name="PALETTE4_RGB5_A1_OES" value="0x8B94"/> + <enum name="PALETTE8_RGB8_OES" value="0x8B95"/> + <enum name="PALETTE8_RGBA8_OES" value="0x8B96"/> + <enum name="PALETTE8_R5_G6_B5_OES" value="0x8B97"/> + <enum name="PALETTE8_RGBA4_OES" value="0x8B98"/> + <enum name="PALETTE8_RGB5_A1_OES" value="0x8B99"/> +</category> + +<category name="GL_OES_EGL_image" number="23"> + <type name="eglImageOES" size="4" /> + + <function name="EGLImageTargetTexture2DOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="image" type="GLeglImageOES"/> + </function> + + <function name="EGLImageTargetRenderbufferStorageOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="image" type="GLeglImageOES"/> + </function> +</category> + +<category name="GL_OES_depth24" number="24"> + <enum name="DEPTH_COMPONENT24_OES" value="0x81A6"/> +</category> + +<category name="GL_OES_depth32" number="25"> + <enum name="DEPTH_COMPONENT32_OES" value="0x81A7"/> +</category> + +<category name="GL_OES_element_index_uint" number="26"> + <!-- No new functions, types, enums. --> +</category> + +<category name="GL_OES_fbo_render_mipmap" number="27"> + <!-- No new functions, types, enums. --> +</category> + +<category name="GL_OES_mapbuffer" number="29"> + <enum name="WRITE_ONLY_OES" value="0x88B9"/> + <enum name="BUFFER_ACCESS_OES" value="0x88BB"/> + <enum name="BUFFER_MAPPED_OES" value="0x88BC"/> + <enum name="BUFFER_MAP_POINTER_OES" value="0x88BD"/> + + <function name="GetBufferPointervOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLvoid **"/> + </function> + + <function name="MapBufferOES" offset="assign"> + <param name="target" type="GLenum"/> + <param name="access" type="GLenum"/> + <return type="GLvoid *"/> + </function> + + <function name="UnmapBufferOES" offset="assign"> + <param name="target" type="GLenum"/> + <return type="GLboolean"/> + </function> +</category> + +<category name="GL_OES_rgb8_rgba8" number="30"> + <enum name="RGB8_OES" value="0x8051"/> + <enum name="RGBA8_OES" value="0x8058"/> +</category> + +<category name="GL_OES_stencil1" number="31"> + <enum name="STENCIL_INDEX1_OES" value="0x8D46"/> +</category> + +<category name="GL_OES_stencil4" number="32"> + <enum name="STENCIL_INDEX4_OES" value="0x8D47"/> +</category> + +<category name="GL_OES_stencil8" number="33"> + <enum name="STENCIL_INDEX8_OES" value="0x8D48"/> +</category> + +<category name="GL_EXT_texture_filter_anisotropic" number="41"> + <enum name="TEXTURE_MAX_ANISOTROPY_EXT" value="0x84FE"/> + <enum name="MAX_TEXTURE_MAX_ANISOTROPY_EXT" value="0x84FF"/> +</category> + +</OpenGLAPI> diff --git a/src/mesa/es/glapi/gl_compare.py b/src/mesa/es/glapi/gl_compare.py new file mode 100644 index 0000000000..ae286e3621 --- /dev/null +++ b/src/mesa/es/glapi/gl_compare.py @@ -0,0 +1,354 @@ +#!/usr/bin/python +# +# Copyright (C) Chia-I Wu <olvaffe@gmail.com> +# +# 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 +# on the rights to use, copy, modify, merge, publish, distribute, sub +# license, 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 (including the next +# paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL +# IBM AND/OR ITS SUPPLIERS 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. + +import sys +import os.path +import getopt + +GLAPI = "../../glapi" +sys.path.append(GLAPI) + +import gl_XML +import glX_XML + +class ApiSet(object): + def __init__(self, api, elts=["enum", "type", "function"]): + self.api = api + self.elts = elts + + def _check_enum(self, e1, e2, strict=True): + if e1.name != e2.name: + raise ValueError("%s: name mismatch" % e1.name) + if e1.value != e2.value: + raise ValueError("%s: value 0x%04x != 0x%04x" + % (e1.name, e1.value, e2.value)) + + def _check_type(self, t1, t2, strict=True): + if t1.name != t2.name: + raise ValueError("%s: name mismatch" % t1.name) + if t1.type_expr.string() != t2.type_expr.string(): + raise ValueError("%s: type %s != %s" + % (t1.name, t1.type_expr.string(), t2.type_expr.string())) + + def _check_function(self, f1, f2, strict=True): + if f1.name != f2.name: + raise ValueError("%s: name mismatch" % f1.name) + if f1.return_type != f2.return_type: + raise ValueError("%s: return type %s != %s" + % (f1.name, f1.return_type, f2.return_type)) + # there might be padded parameters + if strict and len(f1.parameters) != len(f2.parameters): + raise ValueError("%s: parameter length %d != %d" + % (f1.name, len(f1.parameters), len(f2.parameters))) + if f1.assign_offset != f2.assign_offset: + if ((f1.assign_offset and f2.offset < 0) or + (f2.assign_offset and f1.offset < 0)): + raise ValueError("%s: assign offset %d != %d" + % (f1.name, f1.assign_offset, f2.assign_offset)) + elif not f1.assign_offset: + if f1.offset != f2.offset: + raise ValueError("%s: offset %d != %d" + % (f1.name, f1.offset, f2.offset)) + + if strict: + l1 = f1.entry_points + l2 = f2.entry_points + l1.sort() + l2.sort() + if l1 != l2: + raise ValueError("%s: entry points %s != %s" + % (f1.name, l1, l2)) + + l1 = f1.static_entry_points + l2 = f2.static_entry_points + l1.sort() + l2.sort() + if l1 != l2: + raise ValueError("%s: static entry points %s != %s" + % (f1.name, l1, l2)) + + pad = 0 + for i in xrange(len(f1.parameters)): + p1 = f1.parameters[i] + p2 = f2.parameters[i + pad] + + if not strict and p1.is_padding != p2.is_padding: + if p1.is_padding: + pad -= 1 + continue + else: + pad += 1 + p2 = f2.parameters[i + pad] + + if strict and p1.name != p2.name: + raise ValueError("%s: parameter %d name %s != %s" + % (f1.name, i, p1.name, p2.name)) + if p1.type_expr.string() != p2.type_expr.string(): + if (strict or + # special case + f1.name == "TexImage2D" and p1.name != "internalformat"): + raise ValueError("%s: parameter %s type %s != %s" + % (f1.name, p1.name, p1.type_expr.string(), + p2.type_expr.string())) + + def union(self, other): + union = gl_XML.gl_api(None) + + if "enum" in self.elts: + union.enums_by_name = other.enums_by_name.copy() + for key, val in self.api.enums_by_name.iteritems(): + if key not in union.enums_by_name: + union.enums_by_name[key] = val + else: + self._check_enum(val, other.enums_by_name[key]) + + if "type" in self.elts: + union.types_by_name = other.types_by_name.copy() + for key, val in self.api.types_by_name.iteritems(): + if key not in union.types_by_name: + union.types_by_name[key] = val + else: + self._check_type(val, other.types_by_name[key]) + + if "function" in self.elts: + union.functions_by_name = other.functions_by_name.copy() + for key, val in self.api.functions_by_name.iteritems(): + if key not in union.functions_by_name: + union.functions_by_name[key] = val + else: + self._check_function(val, other.functions_by_name[key]) + + return union + + def intersection(self, other): + intersection = gl_XML.gl_api(None) + + if "enum" in self.elts: + for key, val in self.api.enums_by_name.iteritems(): + if key in other.enums_by_name: + self._check_enum(val, other.enums_by_name[key]) + intersection.enums_by_name[key] = val + + if "type" in self.elts: + for key, val in self.api.types_by_name.iteritems(): + if key in other.types_by_name: + self._check_type(val, other.types_by_name[key]) + intersection.types_by_name[key] = val + + if "function" in self.elts: + for key, val in self.api.functions_by_name.iteritems(): + if key in other.functions_by_name: + self._check_function(val, other.functions_by_name[key]) + intersection.functions_by_name[key] = val + + return intersection + + def difference(self, other): + difference = gl_XML.gl_api(None) + + if "enum" in self.elts: + for key, val in self.api.enums_by_name.iteritems(): + if key not in other.enums_by_name: + difference.enums_by_name[key] = val + else: + self._check_enum(val, other.enums_by_name[key]) + + if "type" in self.elts: + for key, val in self.api.types_by_name.iteritems(): + if key not in other.types_by_name: + difference.types_by_name[key] = val + else: + self._check_type(val, other.types_by_name[key]) + + if "function" in self.elts: + for key, val in self.api.functions_by_name.iteritems(): + if key not in other.functions_by_name: + difference.functions_by_name[key] = val + else: + self._check_function(val, other.functions_by_name[key], False) + + return difference + +def cmp_enum(e1, e2): + if e1.value < e2.value: + return -1 + elif e1.value > e2.value: + return 1 + else: + return 0 + +def cmp_type(t1, t2): + return t1.size - t2.size + +def cmp_function(f1, f2): + if f1.name > f2.name: + return 1 + elif f1.name < f2.name: + return -1 + else: + return 0 + +def spaces(n, str=""): + spaces = n - len(str) + if spaces < 1: + spaces = 1 + return " " * spaces + +def output_enum(e, indent=0): + attrs = 'name="%s"' % e.name + if e.default_count > 0: + tab = spaces(37, attrs) + attrs += '%scount="%d"' % (tab, e.default_count) + tab = spaces(48, attrs) + val = "%04x" % e.value + val = "0x" + val.upper() + attrs += '%svalue="%s"' % (tab, val) + + # no child + if not e.functions: + print '%s<enum %s/>' % (spaces(indent), attrs) + return + + print '%s<enum %s>' % (spaces(indent), attrs) + for key, val in e.functions.iteritems(): + attrs = 'name="%s"' % key + if val[0] != e.default_count: + attrs += ' count="%d"' % val[0] + if not val[1]: + attrs += ' mode="get"' + + print '%s<size %s/>' % (spaces(indent * 2), attrs) + + print '%s</enum>' % spaces(indent) + +def output_type(t, indent=0): + tab = spaces(16, t.name) + attrs = 'name="%s"%ssize="%d"' % (t.name, tab, t.size) + ctype = t.type_expr.string() + if ctype.find("unsigned") != -1: + attrs += ' unsigned="true"' + elif ctype.find("signed") == -1: + attrs += ' float="true"' + print '%s<type %s/>' % (spaces(indent), attrs) + +def output_function(f, indent=0): + attrs = 'name="%s"' % f.name + if f.offset > 0: + if f.assign_offset: + attrs += ' offset="assign"' + else: + attrs += ' offset="%d"' % f.offset + print '%s<function %s>' % (spaces(indent), attrs) + + for p in f.parameters: + attrs = 'name="%s" type="%s"' \ + % (p.name, p.type_expr.original_string) + print '%s<param %s/>' % (spaces(indent * 2), attrs) + if f.return_type != "void": + attrs = 'type="%s"' % f.return_type + print '%s<return %s/>' % (spaces(indent * 2), attrs) + + print '%s</function>' % spaces(indent) + +def output_category(api, indent=0): + enums = api.enums_by_name.values() + enums.sort(cmp_enum) + types = api.types_by_name.values() + types.sort(cmp_type) + functions = api.functions_by_name.values() + functions.sort(cmp_function) + + for e in enums: + output_enum(e, indent) + if enums and types: + print + for t in types: + output_type(t, indent) + if enums or types: + print + for f in functions: + output_function(f, indent) + if f != functions[-1]: + print + +def is_api_empty(api): + return bool(not api.enums_by_name and + not api.types_by_name and + not api.functions_by_name) + +def show_usage(ops): + print "Usage: %s [-k elts] <%s> <file1> <file2>" % (sys.argv[0], "|".join(ops)) + print " -k elts A comma separated string of types of elements to" + print " skip. Possible types are enum, type, and function." + sys.exit(1) + +def main(): + ops = ["union", "intersection", "difference"] + elts = ["enum", "type", "function"] + + try: + options, args = getopt.getopt(sys.argv[1:], "k:") + except Exception, e: + show_usage(ops) + + if len(args) != 3: + show_usage(ops) + op, file1, file2 = args + if op not in ops: + show_usage(ops) + + skips = [] + for opt, val in options: + if opt == "-k": + skips = val.split(",") + + for elt in skips: + try: + elts.remove(elt) + except ValueError: + show_usage(ops) + + api1 = gl_XML.parse_GL_API(file1, glX_XML.glx_item_factory()) + api2 = gl_XML.parse_GL_API(file2, glX_XML.glx_item_factory()) + + set = ApiSet(api1, elts) + func = getattr(set, op) + result = func(api2) + + if not is_api_empty(result): + cat_name = "%s_of_%s_and_%s" \ + % (op, os.path.basename(file1), os.path.basename(file2)) + + print '<?xml version="1.0"?>' + print '<!DOCTYPE OpenGLAPI SYSTEM "%s/gl_API.dtd">' % GLAPI + print + print '<OpenGLAPI>' + print + print '<category name="%s">' % (cat_name) + output_category(result, 4) + print '</category>' + print + print '</OpenGLAPI>' + +if __name__ == "__main__": + main() diff --git a/src/mesa/es/glapi/gl_parse_header.py b/src/mesa/es/glapi/gl_parse_header.py new file mode 100644 index 0000000000..897bc2b3c3 --- /dev/null +++ b/src/mesa/es/glapi/gl_parse_header.py @@ -0,0 +1,450 @@ +#!/usr/bin/python +# +# Copyright (C) Chia-I Wu <olvaffe@gmail.com> +# +# 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 +# on the rights to use, copy, modify, merge, publish, distribute, sub +# license, 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 (including the next +# paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL +# IBM AND/OR ITS SUPPLIERS 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. + +import sys +import os.path +import getopt +import re + +GLAPI = "../../glapi" +sys.path.append(GLAPI) + +class HeaderParser(object): + """Parser for GL header files.""" + + def __init__(self, verbose=0): + # match #if and #ifdef + self.IFDEF = re.compile('#\s*if(n?def\s+(?P<ifdef>\w+)|\s+(?P<if>.+))') + # match #endif + self.ENDIF = re.compile('#\s*endif') + # match typedef abc def; + self.TYPEDEF = re.compile('typedef\s+(?P<from>[\w ]+)\s+(?P<to>\w+);') + # match #define XYZ VAL + self.DEFINE = re.compile('#\s*define\s+(?P<key>\w+)(?P<value>\s+[\w"]*)?') + # match GLAPI + self.GLAPI = re.compile('^GL_?API(CALL)?\s+(?P<return>[\w\s*]+[\w*])\s+(GL)?_?APIENTRY\s+(?P<name>\w+)\s*\((?P<params>[\w\s(,*\[\])]+)\)\s*;') + + self.split_params = re.compile('\s*,\s*') + self.split_ctype = re.compile('(\W)') + # ignore GL_VERSION_X_Y + self.ignore_enum = re.compile('GL(_ES)?_VERSION(_ES_C[ML])?_\d_\d') + + self.verbose = verbose + self._reset() + + def _reset(self): + """Reset to initial state.""" + self.ifdef_levels = [] + self.need_char = False + + # use typeexpr? + def _format_ctype(self, ctype, fix=True): + """Format a ctype string, optionally fix it.""" + # split the type string + tmp = self.split_ctype.split(ctype) + tmp = [s for s in tmp if s and s != " "] + + pretty = "" + for i in xrange(len(tmp)): + # add missing GL prefix + if (fix and tmp[i] != "const" and tmp[i] != "*" and + not tmp[i].startswith("GL")): + tmp[i] = "GL" + tmp[i] + + if i == 0: + pretty = tmp[i] + else: + sep = " " + if tmp[i - 1] == "*": + sep = "" + pretty += sep + tmp[i] + return pretty + + # use typeexpr? + def _get_ctype_attrs(self, ctype): + """Get the attributes of a ctype.""" + is_float = (ctype.find("float") != -1 or ctype.find("double") != -1) + is_signed = not (ctype.find("unsigned") != -1) + + size = 0 + if ctype.find("char") != -1: + size = 1 + elif ctype.find("short") != -1: + size = 2 + elif ctype.find("int") != -1: + size = 4 + elif is_float: + if ctype.find("float") != -1: + size = 4 + else: + size = 8 + + return (size, is_float, is_signed) + + def _parse_define(self, line): + """Parse a #define line for an <enum>.""" + m = self.DEFINE.search(line) + if not m: + if self.verbose and line.find("#define") >= 0: + print "ignore %s" % (line) + return None + + key = m.group("key").strip() + val = m.group("value").strip() + + # enum must begin with GL_ and be all uppercase + if ((not (key.startswith("GL_") and key.isupper())) or + (self.ignore_enum.match(key) and val == "1")): + if self.verbose: + print "ignore enum %s" % (key) + return None + + return (key, val) + + def _parse_typedef(self, line): + """Parse a typedef line for a <type>.""" + m = self.TYPEDEF.search(line) + if not m: + if self.verbose and line.find("typedef") >= 0: + print "ignore %s" % (line) + return None + + f = m.group("from").strip() + t = m.group("to").strip() + if not t.startswith("GL"): + if self.verbose: + print "ignore type %s" % (t) + return None + attrs = self._get_ctype_attrs(f) + + return (f, t, attrs) + + def _parse_gl_api(self, line): + """Parse a GLAPI line for a <function>.""" + m = self.GLAPI.search(line) + if not m: + if self.verbose and line.find("APIENTRY") >= 0: + print "ignore %s" % (line) + return None + + rettype = m.group("return") + rettype = self._format_ctype(rettype) + if rettype == "GLvoid": + rettype = "" + + name = m.group("name") + + param_str = m.group("params") + chunks = self.split_params.split(param_str) + chunks = [s.strip() for s in chunks] + if len(chunks) == 1 and (chunks[0] == "void" or chunks[0] == "GLvoid"): + chunks = [] + + params = [] + for c in chunks: + # split type and variable name + idx = c.rfind("*") + if idx < 0: + idx = c.rfind(" ") + if idx >= 0: + idx += 1 + ctype = c[:idx] + var = c[idx:] + else: + ctype = c + var = "unnamed" + + # convert array to pointer + idx = var.find("[") + if idx >= 0: + var = var[:idx] + ctype += "*" + + ctype = self._format_ctype(ctype) + var = var.strip() + + if not self.need_char and ctype.find("GLchar") >= 0: + self.need_char = True + + params.append((ctype, var)) + + return (rettype, name, params) + + def _change_level(self, line): + """Parse a #ifdef line and change level.""" + m = self.IFDEF.search(line) + if m: + ifdef = m.group("ifdef") + if not ifdef: + ifdef = m.group("if") + self.ifdef_levels.append(ifdef) + return True + m = self.ENDIF.search(line) + if m: + self.ifdef_levels.pop() + return True + return False + + def _read_header(self, header): + """Open a header file and read its contents.""" + lines = [] + try: + fp = open(header, "rb") + lines = fp.readlines() + fp.close() + except IOError, e: + print "failed to read %s: %s" % (header, e) + return lines + + def _cmp_enum(self, enum1, enum2): + """Compare two enums.""" + # sort by length of the values as strings + val1 = enum1[1] + val2 = enum2[1] + ret = len(val1) - len(val2) + # sort by the values + if not ret: + val1 = int(val1, 16) + val2 = int(val2, 16) + ret = val1 - val2 + # in case int cannot hold the result + if ret > 0: + ret = 1 + elif ret < 0: + ret = -1 + # sort by the names + if not ret: + if enum1[0] < enum2[0]: + ret = -1 + elif enum1[0] > enum2[0]: + ret = 1 + return ret + + def _cmp_type(self, type1, type2): + """Compare two types.""" + attrs1 = type1[2] + attrs2 = type2[2] + # sort by type size + ret = attrs1[0] - attrs2[0] + # float is larger + if not ret: + ret = attrs1[1] - attrs2[1] + # signed is larger + if not ret: + ret = attrs1[2] - attrs2[2] + # reverse + ret = -ret + return ret + + def _cmp_function(self, func1, func2): + """Compare two functions.""" + name1 = func1[1] + name2 = func2[1] + ret = 0 + # sort by the names + if name1 < name2: + ret = -1 + elif name1 > name2: + ret = 1 + return ret + + def _postprocess_dict(self, hdict): + """Post-process a header dict and return an ordered list.""" + hlist = [] + largest = 0 + for key, cat in hdict.iteritems(): + size = len(cat["enums"]) + len(cat["types"]) + len(cat["functions"]) + # ignore empty category + if not size: + continue + + cat["enums"].sort(self._cmp_enum) + # remove duplicates + dup = [] + for i in xrange(1, len(cat["enums"])): + if cat["enums"][i] == cat["enums"][i - 1]: + dup.insert(0, i) + for i in dup: + e = cat["enums"].pop(i) + if self.verbose: + print "remove duplicate enum %s" % e[0] + + cat["types"].sort(self._cmp_type) + cat["functions"].sort(self._cmp_function) + + # largest category comes first + if size > largest: + hlist.insert(0, (key, cat)) + largest = size + else: + hlist.append((key, cat)) + return hlist + + def parse(self, header): + """Parse a header file.""" + self._reset() + + if self.verbose: + print "Parsing %s" % (header) + + hdict = {} + lines = self._read_header(header) + for line in lines: + if self._change_level(line): + continue + + # skip until the first ifdef (i.e. __gl_h_) + if not self.ifdef_levels: + continue + + cat_name = os.path.basename(header) + # check if we are in an extension + if (len(self.ifdef_levels) > 1 and + self.ifdef_levels[-1].startswith("GL_")): + cat_name = self.ifdef_levels[-1] + + try: + cat = hdict[cat_name] + except KeyError: + cat = { + "enums": [], + "types": [], + "functions": [] + } + hdict[cat_name] = cat + + key = "enums" + elem = self._parse_define(line) + if not elem: + key = "types" + elem = self._parse_typedef(line) + if not elem: + key = "functions" + elem = self._parse_gl_api(line) + + if elem: + cat[key].append(elem) + + if self.need_char: + if self.verbose: + print "define GLchar" + elem = self._parse_typedef("typedef char GLchar;") + cat["types"].append(elem) + return self._postprocess_dict(hdict) + +def spaces(n, str=""): + spaces = n - len(str) + if spaces < 1: + spaces = 1 + return " " * spaces + +def output_xml(name, hlist): + """Output a parsed header in OpenGLAPI XML.""" + + for i in xrange(len(hlist)): + cat_name, cat = hlist[i] + + print '<category name="%s">' % (cat_name) + indent = 4 + + for enum in cat["enums"]: + name = enum[0][3:] + value = enum[1] + tab = spaces(41, name) + attrs = 'name="%s"%svalue="%s"' % (name, tab, value) + print '%s<enum %s/>' % (spaces(indent), attrs) + + if cat["enums"] and cat["types"]: + print + + for type in cat["types"]: + ctype = type[0] + size, is_float, is_signed = type[2] + + attrs = 'name="%s"' % (type[1][2:]) + attrs += spaces(16, attrs) + 'size="%d"' % (size) + if is_float: + attrs += ' float="true"' + elif not is_signed: + attrs += ' unsigned="true"' + + print '%s<type %s/>' % (spaces(indent), attrs) + + for func in cat["functions"]: + print + ret = func[0] + name = func[1][2:] + params = func[2] + + attrs = 'name="%s" offset="assign"' % name + print '%s<function %s>' % (spaces(indent), attrs) + + for param in params: + attrs = 'name="%s" type="%s"' % (param[1], param[0]) + print '%s<param %s/>' % (spaces(indent * 2), attrs) + if ret: + attrs = 'type="%s"' % ret + print '%s<return %s/>' % (spaces(indent * 2), attrs) + + print '%s</function>' % spaces(indent) + + print '</category>' + print + +def show_usage(): + print "Usage: %s [-v] <header> ..." % sys.argv[0] + sys.exit(1) + +def main(): + try: + args, headers = getopt.getopt(sys.argv[1:], "v") + except Exception, e: + show_usage() + if not headers: + show_usage() + + verbose = 0 + for arg in args: + if arg[0] == "-v": + verbose += 1 + + need_xml_header = True + parser = HeaderParser(verbose) + for h in headers: + h = os.path.abspath(h) + hlist = parser.parse(h) + + if need_xml_header: + print '<?xml version="1.0"?>' + print '<!DOCTYPE OpenGLAPI SYSTEM "%s/gl_API.dtd">' % GLAPI + need_xml_header = False + + print + print '<!-- %s -->' % (h) + print '<OpenGLAPI>' + print + output_xml(h, hlist) + print '</OpenGLAPI>' + +if __name__ == '__main__': + main() diff --git a/src/mesa/es/main/APIspec.txt b/src/mesa/es/main/APIspec.txt new file mode 100644 index 0000000000..08ce699696 --- /dev/null +++ b/src/mesa/es/main/APIspec.txt @@ -0,0 +1,2974 @@ +## Adapted from Mesa and Chromium. +# Python scripts read this file and generate various C files. + +# Possible lines: +# name Name of the function (without "gl" prefix). Required. +# +# return Datatype of returned value, or void. Required. +# +# param Zero or more of these lines may be present. Each describes a +# function parameter. Two fields follow: parameter name and the +# parameter type (which may be several tokens like "const GLvoid *"). +# +# vector Used to indicate the size of constant arrays referenced by +# the given parameter. (If the number of elements in the +# array is dependent on another parameter, use "dependentvector" +# (below) instead.) +# Two fields follow: the parameter name (previously defined by a +# 'param' line) and a number indicating how may elements are +# referenced by the vector. If the number is unknown, don't use +# a vector line. Example for glGetClipPlane: +# vector equation 4 +# +# dependentvector Used to indicate how many elements are referenced by +# pointer params, if the number depends on the value of another +# parameter. It is followed by the parameter name of the vector +# parameter (previously defined by a 'param' line, one of the +# potential sizes of the array, the name of the controlling +# parameter, and a list (one or more) of parameter values of the +# controlling parameter that are associated with the given size. +# There will always be more than one line of this type (or otherwise +# you could have used the "vector" specifier above). +# As a convenience, each parameter value named in a +# "dependentvector" specifier will also be considered as a +# "paramprop" specifier. +# Example for glLightfv: +# dependentvector params 4 pname GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_POSITION +# dependentvector params 3 pname GL_SPOT_DIRECTION +# dependentvector params 1 pname GL_SPOT_EXPONENT GL_SPOT_CUTOFF GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION +# +# category May be 1.x to indicate that the function belongs to OpenGL +# version 1.x. Or may be the name of an extension such as +# GL_ARB_multitexture. Or may be GLES1.x to indicate +# that the function belongs to GLES version 1.x. Required. +# May have more than one token to indicate that a function +# belongs to more than one category. +# +# alias Names the Mesa function _mesa_<alias> that will be called. +# Mostly used when the function was originally defined and +# introduced into Mesa as an extension function (i.e. <func>ARB); +# even though the function loses the extension as it is adopted +# into the core, the Mesa support remains named the same +# (for compatibility). +# +# aliasprefix May be used to change the default Mesa support functional +# prefix on a per-function basis. By default, it's "_mesa_"; +# but this allows it to be changed (e.g. to "_vbo_" for many +# of the core functions). +# +# props An optional list of properties for this function. Possible +# properties include: +# get - the function is a state-getter +# +# convertalias +# +# convertparams +# +# checkparam +# +# checkdependentparam + +name Color4f +aliasprefix _vbo_ +return void +param red GLfloat +param green GLfloat +param blue GLfloat +param alpha GLfloat +category 1.0 GLES1.1 + +name Color4ub +return void +param red GLubyte +param green GLubyte +param blue GLubyte +param alpha GLubyte +aliasprefix _vbo_ +convertalias Color4f +convertparams GLfloat red green blue alpha +category 1.0 GLES1.1 + +name Color4x +return void +param red GLfixed +param green GLfixed +param blue GLfixed +param alpha GLfixed +aliasprefix _vbo_ +convertalias Color4f +convertparams GLfloat red green blue alpha +category GLES1.1 GLES1.1:OES_fixed_point + +name ClipPlane +return void +param plane GLenum +checkparam plane GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 +param equation const GLdouble * +vector equation 4 +category 1.0 + +name ClipPlanef +return void +param plane GLenum +checkparam plane GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 +param equation const GLfloat * +vector equation 4 +convertalias ClipPlane +convertparams GLdouble equation +category GLES1.1 GLES1.1:OES_single_precision + +name ClipPlanex +return void +param plane GLenum +checkparam plane GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 +param equation const GLfixed * +vector equation 4 +convertalias ClipPlane +convertparams GLdouble equation +category GLES1.1 GLES1.1:OES_fixed_point + +name CullFace +return void +param mode GLenum +checkparam mode GL_FRONT GL_BACK GL_FRONT_AND_BACK +category 1.0 GLES1.1 GLES2.0 + +name Fogf +return void +param pname GLenum +checkparam pname GL_FOG_MODE GL_FOG_DENSITY GL_FOG_START GL_FOG_END +param param GLfloat +checkdependentparam pname GL_FOG_MODE param GL_EXP GL_EXP2 GL_LINEAR +category 1.0 GLES1.1 + +name Fogfv +return void +param pname GLenum +param params const GLfloat * +paramvec params GL_LINEAR +dependentvector params 4 pname GL_FOG_COLOR +dependentvector params 1 pname GL_FOG_DENSITY GL_FOG_START GL_FOG_END +dependentvector params 1 pname GL_FOG_MODE +checkdependentparam pname GL_FOG_MODE params GL_EXP GL_EXP2 GL_LINEAR +category 1.0 GLES1.1 + +name Fogx +return void +param pname GLenum +checkparam pname GL_FOG_MODE GL_FOG_DENSITY GL_FOG_START GL_FOG_END +param param GLfixed +checkdependentparam pname GL_FOG_MODE param GL_EXP GL_EXP2 GL_LINEAR +convertalias Fogf +convertparams GLfloat param +category GLES1.1 GLES1.1:OES_fixed_point + +name Fogxv +return void +param pname GLenum +param params const GLfixed * +dependentvector params 4 pname GL_FOG_COLOR +dependentvector params 1 pname GL_FOG_DENSITY GL_FOG_START GL_FOG_END +dependentvector params 1 pname GL_FOG_MODE +checkdependentparam pname GL_FOG_MODE params GL_EXP GL_EXP2 GL_LINEAR +convertalias Fogfv +convertparams GLfloat params +category GLES1.1 GLES1.1:OES_fixed_point + +name FrontFace +return void +param mode GLenum +checkparam mode GL_CW GL_CCW +category 1.0 GLES1.1 GLES2.0 + +name Hint +return void +param target GLenum +param mode GLenum +checkparam target GLES1.1:GL_FOG_HINT GLES1.1:GL_LINE_SMOOTH_HINT GLES1.1:GL_PERSPECTIVE_CORRECTION_HINT GLES1.1:GL_POINT_SMOOTH_HINT +checkparam target GL_GENERATE_MIPMAP_HINT +checkparam mode GL_FASTEST GL_NICEST GL_DONT_CARE +# OES_standard_derivatives +checkparam target GLES2.0:GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES +category GLES1.1 GLES2.0 + +name Lightf +return void +param light GLenum +checkparam light GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 +param pname GLenum +checkparam pname GL_SPOT_EXPONENT GL_SPOT_CUTOFF GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION +param param GLfloat +category 1.0 GLES1.1 + +name Lightfv +return void +param light GLenum +checkparam light GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 +param pname GLenum +param params const GLfloat * +paramvec params 0.0 1.0 1.0 0.0 +dependentvector params 4 pname GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_POSITION +dependentvector params 3 pname GL_SPOT_DIRECTION +dependentvector params 1 pname GL_SPOT_EXPONENT GL_SPOT_CUTOFF GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION +category 1.0 1.1 GLES1.1 + +name Lightx +return void +param light GLenum +checkparam light GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 +param pname GLenum +checkparam pname GL_SPOT_EXPONENT GL_SPOT_CUTOFF GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION +param param GLfixed +convertalias Lightf +convertparams GLfloat param +category GLES1.1 GLES1.1:OES_fixed_point + +name Lightxv +return void +param light GLenum +checkparam light GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 +param pname GLenum +param params const GLfixed * +dependentvector params 4 pname GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_POSITION +dependentvector params 3 pname GL_SPOT_DIRECTION +dependentvector params 1 pname GL_SPOT_EXPONENT GL_SPOT_CUTOFF GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION +convertalias Lightfv +convertparams GLfloat params +category GLES1.1 GLES1.1:OES_fixed_point + +name LightModelf +return void +param pname GLenum +checkparam pname GL_LIGHT_MODEL_TWO_SIDE +param param GLfloat +checkdependentparam pname GL_LIGHT_MODEL_TWO_SIDE param GL_TRUE GL_FALSE +category 1.0 GLES1.1 + +name LightModelfv +return void +param pname GLenum +param params const GLfloat * +dependentvector params 4 pname GL_LIGHT_MODEL_AMBIENT +dependentvector params 1 pname GL_LIGHT_MODEL_TWO_SIDE +category 1.0 GLES1.1 + +name LightModelx +return void +param pname GLenum +checkparam pname GL_LIGHT_MODEL_TWO_SIDE +param param GLfixed +checkdependentparam pname GL_LIGHT_MODEL_TWO_SIDE param GL_TRUE GL_FALSE +convertalias LightModelf +convertparams GLfloat param +category GLES1.1 GLES1.1:OES_fixed_point + +name LightModelxv +return void +param pname GLenum +param params const GLfixed * +dependentvector params 4 pname GL_LIGHT_MODEL_AMBIENT +dependentvector params 1 pname GL_LIGHT_MODEL_TWO_SIDE +checkdependentparam pname GL_LIGHT_MODEL_TWO_SIDE params GL_TRUE GL_FALSE +convertalias LightModelfv +convertparams GLfloat params +category GLES1.1 GLES1.1:OES_fixed_point + +name LineWidth +return void +param width GLfloat +category 1.0 GLES1.1 GLES2.0 + +name LineWidthx +return void +param width GLfixed +convertalias LineWidth +convertparams GLfloat width +category GLES1.1 GLES1.1:OES_fixed_point + +name Materialf +aliasprefix _vbo_ +return void +param face GLenum +checkparam face GL_FRONT_AND_BACK +param pname GLenum +checkparam pname GL_SHININESS +param param GLfloat +category 1.0 GLES1.1 + +name Materialfv +aliasprefix _vbo_ +return void +param face GLenum +checkparam face GL_FRONT_AND_BACK +param pname GLenum +param params const GLfloat * +paramvec params 0.8 0.8 0.5 0.1 +dependentvector params 4 pname GL_AMBIENT GL_DIFFUSE GL_AMBIENT_AND_DIFFUSE GL_SPECULAR GL_EMISSION +dependentvector params 1 pname GL_SHININESS +category 1.0 GLES1.1 + +name Materialx +return void +param face GLenum +checkparam face GL_FRONT_AND_BACK +param pname GLenum +checkparam pname GL_SHININESS +param param GLfixed +aliasprefix _vbo_ +convertalias Materialf +convertparams GLfloat param +category GLES1.1 GLES1.1:OES_fixed_point + +name Materialxv +return void +param face GLenum +checkparam face GL_FRONT_AND_BACK +param pname GLenum +param params const GLfixed * +dependentvector params 4 pname GL_AMBIENT GL_DIFFUSE GL_AMBIENT_AND_DIFFUSE GL_SPECULAR GL_EMISSION +dependentvector params 1 pname GL_SHININESS +aliasprefix _vbo_ +convertalias Materialfv +convertparams GLfloat params +category GLES1.1 GLES1.1:OES_fixed_point + +name PointSize +return void +param size GLfloat +category 1.0 GLES1.1 + +name PointSizex +return void +param size GLfixed +convertalias PointSize +convertparams GLfloat size +category GLES1.1 GLES1.1:OES_fixed_point + +name PointSizePointer +return void +param type GLenum +checkparam type GL_FIXED GL_FLOAT +param stride GLsizei +param pointer const GLvoid * +props setclient +# OES_vertex_half_float - not in glext.h +#checkparam type GL_HALF_FLOAT_OES +category GLES1.1:OES_point_size_array + +name Scissor +return void +param x GLint +param y GLint +param width GLsizei +param height GLsizei +category 1.0 GLES1.1 GLES2.0 + +name ShadeModel +return void +param mode GLenum +checkparam mode GL_FLAT GL_SMOOTH +category 1.0 GLES1.1 + +name TexParameterf +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP +param pname GLenum +param param GLfloat +checkdependentparam pname GL_TEXTURE_WRAP_S param GL_CLAMP_TO_EDGE GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +checkdependentparam pname GL_TEXTURE_WRAP_T param GL_CLAMP_TO_EDGE GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +checkdependentparam pname GL_TEXTURE_MIN_FILTER param GL_NEAREST GL_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR +checkdependentparam pname GL_TEXTURE_MAG_FILTER param GL_NEAREST GL_LINEAR +checkdependentparam pname GL_GENERATE_MIPMAP param GLES1.1:GL_TRUE GLES1.1:GL_FALSE +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_OES +# OES_texture_mirrored_repeat +checkdependentparam pname GL_TEXTURE_WRAP_S param GLES1.1:GL_MIRRORED_REPEAT_OES +checkdependentparam pname GL_TEXTURE_WRAP_T param GLES1.1:GL_MIRRORED_REPEAT_OES +# EXT_texture_filter_anisotropic +checkparam pname GL_TEXTURE_MAX_ANISOTROPY_EXT +# OES_texture_3D +checkdependentparam pname GL_TEXTURE_WRAP_R_OES param GLES2.0:GL_CLAMP_TO_EDGE GLES2.0:GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +category GLES1.1 GLES2.0 + +name TexParameterfv +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP +param pname GLenum +param params const GLfloat * +dependentvector params 1 pname GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GLES1.1:GL_GENERATE_MIPMAP +checkdependentparam pname GL_TEXTURE_WRAP_S params GL_CLAMP_TO_EDGE GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +checkdependentparam pname GL_TEXTURE_WRAP_T params GL_CLAMP_TO_EDGE GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +checkdependentparam pname GL_TEXTURE_MIN_FILTER params GL_NEAREST GL_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR +checkdependentparam pname GL_TEXTURE_MAG_FILTER params GL_NEAREST GL_LINEAR +checkdependentparam pname GL_GENERATE_MIPMAP params GLES1.1:GL_TRUE GLES1.1:GL_FALSE +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_OES +# OES_texture_mirrored_repeat +checkdependentparam pname GL_TEXTURE_WRAP_S params GLES1.1:GL_MIRRORED_REPEAT_OES +checkdependentparam pname GL_TEXTURE_WRAP_T params GLES1.1:GL_MIRRORED_REPEAT_OES +# EXT_texture_filter_anisotropic +dependentvector params 1 pname GL_TEXTURE_MAX_ANISOTROPY_EXT +# OES_texture_3D +checkdependentparam pname GL_TEXTURE_WRAP_R_OES params GLES2.0:GL_CLAMP_TO_EDGE GLES2.0:GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +# OES_draw_texture - not in gl2ext.h yet, not supported in Mesa yet +#dependentvector params 4 pname GLES1.1:GL_TEXTURE_CROP_RECT_OES +category GLES1.1 GLES2.0 + +name TexParameteri +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP +param pname GLenum +param param GLint +checkdependentparam pname GL_TEXTURE_WRAP_S param GL_CLAMP_TO_EDGE GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +checkdependentparam pname GL_TEXTURE_WRAP_T param GL_CLAMP_TO_EDGE GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +checkdependentparam pname GL_TEXTURE_MIN_FILTER param GL_NEAREST GL_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR +checkdependentparam pname GL_TEXTURE_MAG_FILTER param GL_NEAREST GL_LINEAR +checkdependentparam pname GL_GENERATE_MIPMAP param GLES1.1:GL_TRUE GLES1.1:GL_FALSE +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_OES +# OES_texture_mirrored_repeat +checkdependentparam pname GL_TEXTURE_WRAP_S param GLES1.1:GL_MIRRORED_REPEAT_OES +checkdependentparam pname GL_TEXTURE_WRAP_T param GLES1.1:GL_MIRRORED_REPEAT_OES +# EXT_texture_filter_anisotropic +checkparam pname GL_TEXTURE_MAX_ANISOTROPY_EXT +# OES_texture_3D +checkdependentparam pname GL_TEXTURE_WRAP_R_OES param GLES2.0:GL_CLAMP_TO_EDGE GLES2.0:GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +category GLES1.1 GLES2.0 + +name TexParameteriv +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP +param pname GLenum +param params const GLint * +dependentvector params 1 pname GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GLES1.1:GL_GENERATE_MIPMAP +checkdependentparam pname GL_TEXTURE_WRAP_S params GL_CLAMP_TO_EDGE GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +checkdependentparam pname GL_TEXTURE_WRAP_T params GL_CLAMP_TO_EDGE GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +checkdependentparam pname GL_TEXTURE_MIN_FILTER params GL_NEAREST GL_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR +checkdependentparam pname GL_TEXTURE_MAG_FILTER params GL_NEAREST GL_LINEAR +checkdependentparam pname GL_GENERATE_MIPMAP params GLES1.1:GL_TRUE GLES1.1:GL_FALSE +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_OES +# OES_texture_mirrored_repeat +checkdependentparam pname GL_TEXTURE_WRAP_S params GLES1.1:GL_MIRRORED_REPEAT_OES +checkdependentparam pname GL_TEXTURE_WRAP_T params GLES1.1:GL_MIRRORED_REPEAT_OES +# EXT_texture_filter_anisotropic +dependentvector params 1 pname GL_TEXTURE_MAX_ANISOTROPY_EXT +# OES_texture_3D +checkdependentparam pname GL_TEXTURE_WRAP_R_OES params GLES2.0:GL_CLAMP_TO_EDGE GLES2.0:GL_REPEAT GLES2.0:GL_MIRRORED_REPEAT +# OES_draw_texture - not in gl2ext.h yet +dependentvector params 4 pname GLES1.1:GL_TEXTURE_CROP_RECT_OES +category GLES1.1 GLES2.0 + +name TexParameterx +return void +param target GLenum +checkparam target GL_TEXTURE_2D +param pname GLenum +param param GLfixed +checkdependentparam pname GL_TEXTURE_WRAP_S param GL_CLAMP_TO_EDGE GL_REPEAT +checkdependentparam pname GL_TEXTURE_WRAP_T param GL_CLAMP_TO_EDGE GL_REPEAT +checkdependentparam pname GL_TEXTURE_MIN_FILTER param GL_NEAREST GL_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR +checkdependentparam pname GL_TEXTURE_MAG_FILTER param GL_NEAREST GL_LINEAR +checkdependentparam pname GL_GENERATE_MIPMAP param GL_TRUE GL_FALSE +convertalias TexParameterf +convertparams GLfloat param +# OES_texture_cube_map +checkparam target GL_TEXTURE_CUBE_MAP_OES +# OES_texture_mirrored_repeat +checkdependentparam pname GL_TEXTURE_WRAP_S param GL_MIRRORED_REPEAT_OES +checkdependentparam pname GL_TEXTURE_WRAP_T param GL_MIRRORED_REPEAT_OES +# EXT_texture_filter_anisotropic +checkparam pname GL_TEXTURE_MAX_ANISOTROPY_EXT +category GLES1.1 GLES1.1:OES_fixed_point + + +# Same is true for this function. +name TexParameterxv +return void +param target GLenum +checkparam target GL_TEXTURE_2D GL_TEXTURE_CUBE_MAP_OES +param pname GLenum +param params const GLfixed * +vector params 1 +dependentvector params 1 pname GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_GENERATE_MIPMAP +checkdependentparam pname GL_TEXTURE_WRAP_S params GL_CLAMP_TO_EDGE GL_REPEAT +checkdependentparam pname GL_TEXTURE_WRAP_T params GL_CLAMP_TO_EDGE GL_REPEAT +checkdependentparam pname GL_TEXTURE_MIN_FILTER params GL_NEAREST GL_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR +checkdependentparam pname GL_TEXTURE_MAG_FILTER params GL_NEAREST GL_LINEAR +checkdependentparam pname GL_GENERATE_MIPMAP params GL_TRUE GL_FALSE +convertalias TexParameterfv +convertparams GLfloat params +# OES_draw_texture - not supported in Mesa yet +dependentvector params 4 pname GL_TEXTURE_CROP_RECT_OES +# OES_texture_cube_map +checkparam target GL_TEXTURE_CUBE_MAP_OES +# OES_texture_mirrored_repeat +checkdependentparam pname GL_TEXTURE_WRAP_S params GL_MIRRORED_REPEAT_OES +checkdependentparam pname GL_TEXTURE_WRAP_T params GL_MIRRORED_REPEAT_OES +# EXT_texture_filter_anisotropic +dependentvector params 1 pname GL_TEXTURE_MAX_ANISOTROPY_EXT +category GLES1.1 GLES1.1:OES_fixed_point + +# TexImage2D has *different* versions for GLES1 and GLES2, strangely, +# with different types for "internalFormat". There's also a few +# tokens with different spellings. +name TexImage2D +return void +param target GLenum +checkparam target GL_TEXTURE_2D +param level GLint +param internalFormat GLint +param width GLsizei +param height GLsizei +param border GLint +param format GLenum +param type GLenum +param pixels const GLvoid * +checkparam internalFormat /GL_INVALID_VALUE GL_ALPHA GL_LUMINANCE GL_LUMINANCE_ALPHA GL_RGB GL_RGBA +checkparam border /GL_INVALID_VALUE 0 +# OES_texture_cube_map +checkparam target GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES +## OES_packed_depth_stencil - only appears in GLES2 header files? +#checkdependentparam format GL_DEPTH_STENCIL_OES internalFormat GL_UNSIGNED_INT_24_8_OES +category 1.0 GLES1.1 + +name TexImage2D +return void +param target GLenum +param level GLint +# it is compiled with OpenGL header +#param internalFormat GLenum +param internalFormat GLint +param width GLsizei +param height GLsizei +param border GLint +param format GLenum +param type GLenum +param pixels const GLvoid * +checkparam target GL_TEXTURE_2D GL_TEXTURE_CUBE_MAP_POSITIVE_X GL_TEXTURE_CUBE_MAP_POSITIVE_Y GL_TEXTURE_CUBE_MAP_POSITIVE_Z GL_TEXTURE_CUBE_MAP_NEGATIVE_X GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GL_TEXTURE_CUBE_MAP_NEGATIVE_Z +checkparam internalFormat /GL_INVALID_VALUE GL_ALPHA GL_LUMINANCE GL_LUMINANCE_ALPHA GL_RGB GL_RGBA +checkparam border /GL_INVALID_VALUE 0 +checkdependentparam format GL_ALPHA type GL_UNSIGNED_BYTE +checkdependentparam format GL_RGB type GL_UNSIGNED_BYTE GL_UNSIGNED_SHORT_5_6_5 +checkdependentparam format GL_RGBA type GL_UNSIGNED_BYTE GL_UNSIGNED_SHORT_4_4_4_4 GL_UNSIGNED_SHORT_5_5_5_1 +checkdependentparam format GL_LUMINANCE type GL_UNSIGNED_BYTE +checkdependentparam format GL_LUMINANCE_ALPHA type GL_UNSIGNED_BYTE +# OES_texture_float +checkdependentparam format GL_ALPHA type GL_FLOAT +checkdependentparam format GL_RGB type GL_FLOAT +checkdependentparam format GL_RGBA type GL_FLOAT +checkdependentparam format GL_LUMINANCE type GL_FLOAT +checkdependentparam format GL_LUMINANCE_ALPHA type GL_FLOAT +# OES_texture_half_float +checkdependentparam format GL_ALPHA type GL_HALF_FLOAT_OES +checkdependentparam format GL_RGB type GL_HALF_FLOAT_OES +checkdependentparam format GL_RGBA type GL_HALF_FLOAT_OES +checkdependentparam format GL_LUMINANCE type GL_HALF_FLOAT_OES +checkdependentparam format GL_LUMINANCE_ALPHA type GL_HALF_FLOAT_OES +# EXT_texture_type_2_10_10_10_REV +checkdependentparam format GL_RGBA type GL_UNSIGNED_INT_2_10_10_10_REV_EXT +# OES_depth_texture +checkdependentparam format GL_DEPTH_COMPONENT type GL_UNSIGNED_SHORT GL_UNSIGNED_INT +checkparam internalFormat GL_DEPTH_COMPONENT +category GLES2.0 + +name TexEnvf +return void +param target GLenum +param pname GLenum +param param GLfloat +checkdependentparam target GL_TEXTURE_ENV pname GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_RGB_SCALE GL_ALPHA_SCALE GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +checkdependentparam pname GL_TEXTURE_ENV_MODE param GL_REPLACE GL_MODULATE GL_DECAL GL_BLEND GL_ADD GL_COMBINE +checkdependentparam pname GL_COMBINE_RGB param GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT GL_DOT3_RGB GL_DOT3_RGBA +checkdependentparam pname GL_COMBINE_ALPHA param GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT +checkdependentparam pname GL_RGB_SCALE param /GL_INVALID_VALUE 1.0 2.0 4.0 +checkdependentparam pname GL_ALPHA_SCALE param /GL_INVALID_VALUE 1.0 2.0 4.0 +checkdependentparam pname GL_SRC0_RGB param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_RGB param GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC0_ALPHA param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_ALPHA param GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_RGB param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_RGB param GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_ALPHA param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_ALPHA param GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_RGB param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_RGB param GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_ALPHA param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_ALPHA param GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +# OES_texture_env_crossbar +checkdependentparam pname GL_SRC0_RGB param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_RGB param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_RGB param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC0_ALPHA param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_ALPHA param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_ALPHA param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +# OES_point_sprite +checkdependentparam target GL_POINT_SPRITE_OES pname GL_COORD_REPLACE_OES +checkdependentparam pname GL_COORD_REPLACE_OES param GL_TRUE GL_FALSE +category 1.0 GLES1.1 + +name TexEnvfv +return void +param target GLenum +param pname GLenum +param params const GLfloat * +checkdependentparam target GL_POINT_SPRITE_OES pname GL_COORD_REPLACE_OES +checkdependentparam pname GL_COORD_REPLACE_OES params GL_TRUE GL_FALSE +checkdependentparam target GL_TEXTURE_ENV pname GL_TEXTURE_ENV_MODE GL_TEXTURE_ENV_COLOR GL_COMBINE_RGB GL_COMBINE_ALPHA GL_RGB_SCALE GL_ALPHA_SCALE GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +checkdependentparam pname GL_TEXTURE_ENV_MODE params GL_REPLACE GL_MODULATE GL_DECAL GL_BLEND GL_ADD GL_COMBINE +checkdependentparam pname GL_COMBINE_RGB params GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT GL_DOT3_RGB GL_DOT3_RGBA +checkdependentparam pname GL_COMBINE_ALPHA params GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT +checkdependentparam pname GL_SRC0_RGB params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_RGB params GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC0_ALPHA params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_ALPHA params GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_RGB params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_RGB params GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_ALPHA params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_ALPHA params GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_RGB params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_RGB params GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_ALPHA params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_ALPHA params GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_RGB_SCALE params /GL_INVALID_VALUE 1.0 2.0 4.0 +checkdependentparam pname GL_ALPHA_SCALE params /GL_INVALID_VALUE 1.0 2.0 4.0 +dependentvector params 4 pname GL_TEXTURE_ENV_COLOR +dependentvector params 1 pname GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_COORD_REPLACE_OES GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +dependentvector params 1 pname GL_RGB_SCALE GL_ALPHA_SCALE +# OES_texture_env_crossbar +dependentvector params 1 pname GL_SRC0_RGB GL_SRC1_RGB GL_SRC2_RGB GL_SRC0_ALPHA GL_SRC1_ALPHA GL_SRC2_ALPHA +checkdependentparam pname GL_SRC0_RGB params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_RGB params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_RGB params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC0_ALPHA params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_ALPHA params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_ALPHA params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +category 1.0 GLES1.1 + +name TexEnvi +return void +param target GLenum +param pname GLenum +param param GLint +checkdependentparam target GL_POINT_SPRITE_OES pname GL_COORD_REPLACE_OES +checkdependentparam pname GL_COORD_REPLACE_OES param GL_TRUE GL_FALSE +checkdependentparam target GL_TEXTURE_ENV pname GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_RGB_SCALE GL_ALPHA_SCALE GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +checkdependentparam pname GL_TEXTURE_ENV_MODE param GL_REPLACE GL_MODULATE GL_DECAL GL_BLEND GL_ADD GL_COMBINE +checkdependentparam pname GL_COMBINE_RGB param GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT GL_DOT3_RGB GL_DOT3_RGBA +checkdependentparam pname GL_COMBINE_ALPHA param GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT +checkdependentparam pname GL_RGB_SCALE param /GL_INVALID_VALUE 1.0 2.0 4.0 +checkdependentparam pname GL_ALPHA_SCALE param /GL_INVALID_VALUE 1.0 2.0 4.0 +checkdependentparam pname GL_SRC0_RGB param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_RGB param GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC0_ALPHA param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_ALPHA param GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_RGB param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_RGB param GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_ALPHA param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_ALPHA param GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_RGB param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_RGB param GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_ALPHA param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_ALPHA param GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +# OES_texture_env_crossbar +checkdependentparam pname GL_SRC0_RGB param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_RGB param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_RGB param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC0_ALPHA param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_ALPHA param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_ALPHA param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +category 1.0 GLES1.1 + +name TexEnviv +return void +param target GLenum +param pname GLenum +param params const GLint * +checkdependentparam target GL_POINT_SPRITE_OES pname GL_COORD_REPLACE_OES +checkdependentparam pname GL_COORD_REPLACE_OES params GL_TRUE GL_FALSE +checkdependentparam target GL_TEXTURE_ENV pname GL_TEXTURE_ENV_MODE GL_TEXTURE_ENV_COLOR GL_COMBINE_RGB GL_COMBINE_ALPHA GL_RGB_SCALE GL_ALPHA_SCALE GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +checkdependentparam pname GL_TEXTURE_ENV_MODE params GL_REPLACE GL_MODULATE GL_DECAL GL_BLEND GL_ADD GL_COMBINE +checkdependentparam pname GL_COMBINE_RGB params GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT GL_DOT3_RGB GL_DOT3_RGBA +checkdependentparam pname GL_COMBINE_ALPHA params GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT +checkdependentparam pname GL_SRC0_RGB params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_RGB params GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC0_ALPHA params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_ALPHA params GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_RGB params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_RGB params GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_ALPHA params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_ALPHA params GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_RGB params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_RGB params GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_ALPHA params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_ALPHA params GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_RGB_SCALE params /GL_INVALID_VALUE 1.0 2.0 4.0 +checkdependentparam pname GL_ALPHA_SCALE params /GL_INVALID_VALUE 1.0 2.0 4.0 +dependentvector params 4 pname GL_TEXTURE_ENV_COLOR +dependentvector params 1 pname GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_COORD_REPLACE_OES GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +dependentvector params 1 pname GL_RGB_SCALE GL_ALPHA_SCALE +# OES_texture_env_crossbar +checkdependentparam pname GL_SRC0_RGB params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_RGB params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_RGB params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC0_ALPHA params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_ALPHA params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_ALPHA params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +category 1.0 GLES1.1 + +name TexEnvx +return void +param target GLenum +param pname GLenum +param param GLfixed +checkdependentparam target GL_POINT_SPRITE_OES pname GL_COORD_REPLACE_OES +checkdependentparam pname GL_COORD_REPLACE_OES param GL_TRUE GL_FALSE +checkdependentparam target GL_TEXTURE_ENV pname GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_RGB_SCALE GL_ALPHA_SCALE GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +checkdependentparam pname GL_TEXTURE_ENV_MODE param GL_REPLACE GL_MODULATE GL_DECAL GL_BLEND GL_ADD GL_COMBINE +checkdependentparam pname GL_COMBINE_RGB param GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT GL_DOT3_RGB GL_DOT3_RGBA +checkdependentparam pname GL_COMBINE_ALPHA param GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT +checkdependentparam pname GL_RGB_SCALE param /GL_INVALID_VALUE 1.0 2.0 4.0 +checkdependentparam pname GL_ALPHA_SCALE param /GL_INVALID_VALUE 1.0 2.0 4.0 +checkdependentparam pname GL_SRC0_RGB param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_RGB param GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC0_ALPHA param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_ALPHA param GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_RGB param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_RGB param GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_ALPHA param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_ALPHA param GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_RGB param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_RGB param GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_ALPHA param GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_ALPHA param GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +convertalias TexEnvf +convertparams GLfloat param +# OES_texture_env_crossbar +checkdependentparam pname GL_SRC0_RGB param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_RGB param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_RGB param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC0_ALPHA param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_ALPHA param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_ALPHA param GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +category 1.0 GLES1.1 GLES1.1:OES_fixed_point + +name TexEnvxv +return void +param target GLenum +param pname GLenum +param params const GLfixed * +checkdependentparam target GL_POINT_SPRITE_OES pname GL_COORD_REPLACE_OES +checkdependentparam pname GL_COORD_REPLACE_OES params GL_TRUE GL_FALSE +checkdependentparam target GL_TEXTURE_ENV pname GL_TEXTURE_ENV_MODE GL_TEXTURE_ENV_COLOR GL_COMBINE_RGB GL_COMBINE_ALPHA GL_RGB_SCALE GL_ALPHA_SCALE GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +checkdependentparam pname GL_TEXTURE_ENV_MODE params GL_REPLACE GL_MODULATE GL_DECAL GL_BLEND GL_ADD GL_COMBINE +checkdependentparam pname GL_COMBINE_RGB params GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT GL_DOT3_RGB GL_DOT3_RGBA +checkdependentparam pname GL_COMBINE_ALPHA params GL_REPLACE GL_MODULATE GL_ADD GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT +checkdependentparam pname GL_SRC0_RGB params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_RGB params GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC0_ALPHA params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND0_ALPHA params GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_RGB params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_RGB params GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC1_ALPHA params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND1_ALPHA params GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_RGB params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_RGB params GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_SRC2_ALPHA params GL_TEXTURE GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS +checkdependentparam pname GL_OPERAND2_ALPHA params GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +checkdependentparam pname GL_RGB_SCALE params /GL_INVALID_VALUE 1.0 2.0 4.0 +checkdependentparam pname GL_ALPHA_SCALE params /GL_INVALID_VALUE 1.0 2.0 4.0 +dependentvector params 4 pname GL_TEXTURE_ENV_COLOR +dependentvector params 1 pname GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_COORD_REPLACE_OES GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +dependentvector params 1 pname GL_RGB_SCALE GL_ALPHA_SCALE +convertalias TexEnvfv +convertparams GLfloat params +# OES_texture_env_crossbar +dependentvector params 1 pname GL_SRC0_RGB GL_SRC1_RGB GL_SRC2_RGB GL_SRC0_ALPHA GL_SRC1_ALPHA GL_SRC2_ALPHA +checkdependentparam pname GL_SRC0_RGB params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_RGB params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_RGB params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC0_ALPHA params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC1_ALPHA params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +checkdependentparam pname GL_SRC2_ALPHA params GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +category GLES1.1 GLES1.1:OES_fixed_point + +name TexGenx +return void +param coord GLenum +checkparam coord GL_TEXTURE_GEN_STR_OES +param pname GLenum +param param GLfixed +checkdependentparam pname GL_TEXTURE_GEN_MODE_OES param GL_NORMAL_MAP_OES GL_REFLECTION_MAP_OES +convertalias TexGenf +convertparams GLfloat param +category GLES1.1:OES_texture_cube_map + +name TexGenxv +return void +param coord GLenum +checkparam coord GL_TEXTURE_GEN_STR_OES +param pname GLenum +param params const GLfixed * +dependentvector params 1 pname GL_TEXTURE_GEN_MODE_OES +checkdependentparam pname GL_TEXTURE_GEN_MODE_OES params GL_NORMAL_MAP_OES GL_REFLECTION_MAP_OES +convertalias TexGenfv +convertparams GLfloat params +category GLES1.1:OES_texture_cube_map + +name TexGenf +return void +param coord GLenum +checkparam coord GL_TEXTURE_GEN_STR_OES +param pname GLenum +checkparam pname GL_TEXTURE_GEN_MODE_OES +param param GLfloat +checkdependentparam pname GL_TEXTURE_GEN_MODE_OES param GL_NORMAL_MAP_OES GL_REFLECTION_MAP_OES +category 1.0 GLES1.1:OES_texture_cube_map + +name TexGenfv +return void +param coord GLenum +checkparam coord GL_TEXTURE_GEN_STR_OES +param pname GLenum +param params const GLfloat * +dependentvector params 1 pname GL_TEXTURE_GEN_MODE_OES +checkdependentparam pname GL_TEXTURE_GEN_MODE_OES params GL_NORMAL_MAP_OES GL_REFLECTION_MAP_OES +category 1.0 GLES1.1:OES_texture_cube_map + +name TexGeni +return void +param coord GLenum +checkparam coord GL_TEXTURE_GEN_STR_OES +param pname GLenum +checkparam pname GL_TEXTURE_GEN_MODE_OES +param param GLint +checkdependentparam pname GL_TEXTURE_GEN_MODE_OES param GL_NORMAL_MAP_OES GL_REFLECTION_MAP_OES +category 1.0 GLES1.1:OES_texture_cube_map + +name TexGeniv +return void +param coord GLenum +checkparam coord GL_TEXTURE_GEN_STR_OES +param pname GLenum +checkparam pname GL_TEXTURE_GEN_MODE_OES +param params const GLint * +dependentvector params 1 pname GL_TEXTURE_GEN_MODE_OES +checkdependentparam pname GL_TEXTURE_GEN_MODE_OES params GL_NORMAL_MAP_OES GL_REFLECTION_MAP_OES +category 1.0 GLES1.1:OES_texture_cube_map + +name Clear +return void +param mask GLbitfield +checkparam mask /GL_INVALID_VALUE 0 (GL_COLOR_BUFFER_BIT) (GL_DEPTH_BUFFER_BIT) (GL_STENCIL_BUFFER_BIT) (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) (GL_COLOR_BUFFER_BIT|GL_STENCIL_BUFFER_BIT) (GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT) (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT) +category 1.0 GLES1.1 GLES2.0 + +name ClearColor +return void +param red GLclampf +param green GLclampf +param blue GLclampf +param alpha GLclampf +category 1.0 GLES1.1 GLES2.0 + +name ClearColorx +return void +param red GLclampx +param green GLclampx +param blue GLclampx +param alpha GLclampx +convertalias ClearColor +convertparams GLclampf red green blue alpha +category GLES1.1 GLES1.1:OES_fixed_point + +name ClearStencil +return void +param s GLint +category 1.0 GLES1.1 GLES2.0 + +name ClearDepthf +return void +param depth GLclampf +convertalias ClearDepth +convertparams GLclampd depth +category GLES1.1 GLES1.1:OES_single_precision GLES2.0 + +name ClearDepthx +return void +param depth GLclampx +convertalias ClearDepth +convertparams GLclampd depth +category GLES1.1 GLES1.1:OES_fixed_point + +name StencilMask +return void +param mask GLuint +category 1.0 GLES1.1 GLES2.0 + +name StencilMaskSeparate +return void +param face GLenum +param mask GLuint +checkparam face GL_FRONT GL_BACK GL_FRONT_AND_BACK +category GLES2.0 + +name ColorMask +return void +param red GLboolean +param green GLboolean +param blue GLboolean +param alpha GLboolean +category 1.0 GLES1.1 GLES2.0 + +name DepthMask +return void +param flag GLboolean +category 1.0 GLES1.1 GLES2.0 + +# Two versions, as GLES2 has a vastly different set of enable/disable capabilities +name Disable +return void +param cap GLenum +checkparam cap GL_VERTEX_ARRAY GL_NORMAL_ARRAY GL_COLOR_ARRAY GL_TEXTURE_COORD_ARRAY GL_NORMALIZE GL_RESCALE_NORMAL GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_FOG GL_LIGHTING GL_COLOR_MATERIAL GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_POINT_SMOOTH GL_LINE_SMOOTH GL_CULL_FACE GL_POLYGON_OFFSET_FILL GL_MULTISAMPLE GL_SAMPLE_ALPHA_TO_COVERAGE GL_SAMPLE_ALPHA_TO_ONE GL_SAMPLE_COVERAGE GL_TEXTURE_2D GL_SCISSOR_TEST GL_ALPHA_TEST GL_STENCIL_TEST GL_DEPTH_TEST GL_BLEND GL_DITHER GL_COLOR_LOGIC_OP +# OES_matrix_palette +checkparam cap GL_MATRIX_INDEX_ARRAY_OES GL_WEIGHT_ARRAY_OES +# OES_point_size_array +checkparam cap GL_POINT_SIZE_ARRAY_OES +# OES_point_sprite +checkparam cap GL_POINT_SPRITE_OES +# OES_texture_cube_map +checkparam cap GL_TEXTURE_CUBE_MAP_OES GL_TEXTURE_GEN_STR_OES +category GLES1.1 + +name Disable +return void +param cap GLenum +checkparam cap GL_CULL_FACE GL_SCISSOR_TEST GL_POLYGON_OFFSET_FILL GL_SAMPLE_ALPHA_TO_COVERAGE GL_SAMPLE_COVERAGE GL_STENCIL_TEST GL_DEPTH_TEST GL_DITHER GL_BLEND +category GLES2.0 + +# Two versions, as GLES2 has a vastly different set of enable/disable capabilities +name Enable +return void +param cap GLenum +checkparam cap GL_VERTEX_ARRAY GL_NORMAL_ARRAY GL_COLOR_ARRAY GL_TEXTURE_COORD_ARRAY GL_NORMALIZE GL_RESCALE_NORMAL GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_FOG GL_LIGHTING GL_COLOR_MATERIAL GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_POINT_SMOOTH GL_LINE_SMOOTH GL_CULL_FACE GL_POLYGON_OFFSET_FILL GL_MULTISAMPLE GL_SAMPLE_ALPHA_TO_COVERAGE GL_SAMPLE_ALPHA_TO_ONE GL_SAMPLE_COVERAGE GL_TEXTURE_2D GL_SCISSOR_TEST GL_ALPHA_TEST GL_STENCIL_TEST GL_DEPTH_TEST GL_BLEND GL_DITHER GL_COLOR_LOGIC_OP +# OES_matrix_palette +checkparam cap GL_MATRIX_INDEX_ARRAY_OES GL_WEIGHT_ARRAY_OES +# OES_point_size_array +checkparam cap GL_POINT_SIZE_ARRAY_OES +# OES_point_sprite +checkparam cap GL_POINT_SPRITE_OES +# OES_texture_cube_map +checkparam cap GL_TEXTURE_CUBE_MAP_OES GL_TEXTURE_GEN_STR_OES +category GLES1.1 + +name Enable +return void +param cap GLenum +checkparam cap GL_CULL_FACE GL_SCISSOR_TEST GL_POLYGON_OFFSET_FILL GL_SAMPLE_ALPHA_TO_COVERAGE GL_SAMPLE_COVERAGE GL_STENCIL_TEST GL_DEPTH_TEST GL_DITHER GL_BLEND +category GLES2.0 + +name Finish +return void +category 1.0 GLES1.1 GLES2.0 + +name Flush +return void +category 1.0 GLES1.1 GLES2.0 + +name AlphaFunc +return void +param func GLenum +checkparam func GL_NEVER GL_LESS GL_EQUAL GL_LEQUAL GL_GREATER GL_NOTEQUAL GL_GEQUAL GL_ALWAYS +param ref GLclampf +category 1.0 GLES1.1 + +name AlphaFuncx +return void +param func GLenum +checkparam func GL_NEVER GL_LESS GL_EQUAL GL_LEQUAL GL_GREATER GL_NOTEQUAL GL_GEQUAL GL_ALWAYS +param ref GLclampx +convertalias AlphaFunc +convertparams GLclampf ref +category GLES1.1 GLES1.1:OES_fixed_point + +name BlendFunc +return void +param sfactor GLenum +checkparam sfactor GL_ZERO GL_ONE GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_DST_COLOR GL_ONE_MINUS_DST_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA GL_DST_COLOR GL_DST_ALPHA GL_ONE_MINUS_DST_COLOR GL_ONE_MINUS_DST_ALPHA GL_SRC_ALPHA_SATURATE +checkparam sfactor GLES2.0:GL_CONSTANT_COLOR GLES2.0:GL_CONSTANT_ALPHA GLES2.0:GL_ONE_MINUS_CONSTANT_COLOR GLES2.0:GL_ONE_MINUS_CONSTANT_ALPHA +param dfactor GLenum +checkparam dfactor GL_ZERO GL_ONE GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA GL_DST_COLOR GL_DST_ALPHA GL_ONE_MINUS_DST_COLOR GL_ONE_MINUS_DST_ALPHA +checkparam dfactor GLES2.0:GL_CONSTANT_COLOR GLES2.0:GL_CONSTANT_ALPHA GLES2.0:GL_ONE_MINUS_CONSTANT_COLOR GLES2.0:GL_ONE_MINUS_CONSTANT_ALPHA +category 1.0 GLES1.1 GLES2.0 + +name LogicOp +return void +param opcode GLenum +checkparam opcode GL_CLEAR GL_SET GL_COPY GL_COPY_INVERTED GL_NOOP GL_INVERT GL_AND GL_NAND GL_OR GL_NOR GL_XOR GL_EQUIV GL_AND_REVERSE GL_AND_INVERTED GL_OR_REVERSE GL_OR_INVERTED +category 1.0 GLES1.1 + +name StencilFunc +return void +param func GLenum +param ref GLint +param mask GLuint +checkparam func GL_NEVER GL_LESS GL_LEQUAL GL_GREATER GL_GEQUAL GL_EQUAL GL_NOTEQUAL GL_ALWAYS +category 1.0 GLES1.1 GLES2.0 + +name StencilFuncSeparate +return void +param face GLenum +param func GLenum +param ref GLint +param mask GLuint +checkparam face GL_FRONT GL_BACK GL_FRONT_AND_BACK +checkparam func GL_NEVER GL_LESS GL_LEQUAL GL_GREATER GL_GEQUAL GL_EQUAL GL_NOTEQUAL GL_ALWAYS +category GLES2.0 + +name StencilOp +return void +param fail GLenum +param zfail GLenum +param zpass GLenum +checkparam fail GL_KEEP GL_ZERO GL_REPLACE GL_INCR GL_DECR GL_INVERT GLES2.0:GL_INCR_WRAP GLES2.0:GL_DECR_WRAP +checkparam zfail GL_KEEP GL_ZERO GL_REPLACE GL_INCR GL_DECR GL_INVERT GLES2.0:GL_INCR_WRAP GLES2.0:GL_DECR_WRAP +checkparam zpass GL_KEEP GL_ZERO GL_REPLACE GL_INCR GL_DECR GL_INVERT GLES2.0:GL_INCR_WRAP GLES2.0:GL_DECR_WRAP +# OES_stencil_wrap +checkparam fail GLES1.1:GL_INCR_WRAP_OES GLES1.1:GL_DECR_WRAP_OES +checkparam zfail GLES1.1:GL_INCR_WRAP_OES GLES1.1:GL_DECR_WRAP_OES +checkparam zpass GLES1.1:GL_INCR_WRAP_OES GLES1.1:GL_DECR_WRAP_OES +category GLES1.1 GLES2.0 + +name StencilOpSeparate +return void +param face GLenum +param fail GLenum +param zfail GLenum +param zpass GLenum +checkparam face GL_FRONT GL_BACK GL_FRONT_AND_BACK +checkparam fail GL_KEEP GL_ZERO GL_REPLACE GL_INCR GL_DECR GL_INVERT GL_INCR_WRAP GL_DECR_WRAP +checkparam zfail GL_KEEP GL_ZERO GL_REPLACE GL_INCR GL_DECR GL_INVERT GL_INCR_WRAP GL_DECR_WRAP +checkparam zpass GL_KEEP GL_ZERO GL_REPLACE GL_INCR GL_DECR GL_INVERT GL_INCR_WRAP GL_DECR_WRAP +category GLES2.0 + +name DepthFunc +return void +param func GLenum +checkparam func GL_NEVER GL_LESS GL_EQUAL GL_LEQUAL GL_GREATER GL_NOTEQUAL GL_GEQUAL GL_ALWAYS +category 1.0 GLES1.1 GLES2.0 + +name PixelStorei +return void +param pname GLenum +checkparam pname GL_PACK_ALIGNMENT GL_UNPACK_ALIGNMENT +param param GLint +checkparam param /GL_INVALID_VALUE 1 2 4 8 +category 1.0 GLES1.1 GLES2.0 + +name ReadPixels +return void +param x GLint +param y GLint +param width GLsizei +param height GLsizei +param format GLenum +param type GLenum +param pixels GLvoid * +# Technically, only two combinations are actually allowed: +# GL_RGBA/GL_UNSIGNED_BYTE, and some implementation-specific internal +# preferred combination. I don't know what that is, so I'm allowing +# any valid combination for now; the underlying support should fail +# when necessary. +checkdependentparam format GL_RGBA type GL_UNSIGNED_BYTE +checkdependentparam format GL_RGBA type GL_UNSIGNED_BYTE GL_UNSIGNED_SHORT_4_4_4_4 GL_UNSIGNED_SHORT_5_5_5_1 +checkdependentparam format GL_RGB type GL_UNSIGNED_BYTE GL_UNSIGNED_SHORT_5_6_5 +checkdependentparam format GL_LUMINANCE_ALPHA format GL_UNSIGNED_BYTE +checkdependentparam format GL_LUMINANCE format GL_UNSIGNED_BYTE +checkdependentparam format GL_ALPHA format GL_UNSIGNED_BYTE +props get +category 1.0 GLES1.1 GLES2.0 + +# Note: glGetBooleanv param checking done inside Mesa +name GetBooleanv +return void +param pname GLenum +param params GLboolean * +props get +category GLES1.1 GLES2.0 + +name GetClipPlanef +return void +param plane GLenum +checkparam plane GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 +param equation GLfloat * +paramvec equation 0.0 0.0 0.0 0.0 +vector equation 4 +convertalias GetClipPlane +convertparams GLdouble equation +props get +category GLES1.1 GLES1.1:OES_single_precision + +name GetClipPlanex +return void +param plane GLenum +checkparam plane GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 +param equation GLfixed * +paramvec equation 0.0 0.0 0.0 0.0 +vector equation 4 +convertalias GetClipPlane +convertparams GLdouble equation +props get +category GLES1.1 GLES1.1:OES_fixed_point + +name GetError +return GLenum +props get +category 1.0 GLES1.1 GLES2.0 + +# Note: glGetFloatv param checking done inside Mesa +name GetFloatv +return void +param pname GLenum +param params GLfloat * +props get +category GLES1.1 GLES2.0 + +name GetFixedv +return void +param pname GLenum +param params GLfixed * +convertalias GetFloatv +convertparams GLfloat params +props get +dependentvector params 1 pname GL_CLIENT_ACTIVE_TEXTURE GL_VERTEX_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_TYPE GL_VERTEX_ARRAY_STRIDE GL_NORMAL_ARRAY GL_NORMAL_ARRAY_TYPE GL_NORMAL_ARRAY_STRIDE GL_COLOR_ARRAY GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_TYPE +dependentvector params 1 pname GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_COORD_ARRAY_STRIDE GL_POINT_SIZE_ARRAY_OES GL_POINT_SIZE_ARRAY_STRIDE_OES GL_ARRAY_BUFFER_BINDING GL_VERTEX_ARRAY_BUFFER_BINDING GL_NORMAL_ARRAY_BUFFER_BINDING GL_COLOR_ARRAY_BUFFER_BINDING GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES GL_ELEMENT_ARRAY_BUFFER_BINDING +dependentvector params 1 pname GL_MODELVIEW_STACK_DEPTH GL_PROJECTION_STACK_DEPTH GL_TEXTURE_STACK_DEPTH GL_MATRIX_MODE GL_NORMALIZE GL_RESCALE_NORMAL GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 +dependentvector params 1 pname GL_FOG_DENSITY GL_FOG_START GL_FOG_END GL_FOG_MODE GL_FOG GL_SHADE_MODEL +dependentvector params 1 pname GL_LIGHTING GL_COLOR_MATERIAL GL_LIGHT_MODEL_TWO_SIDE +dependentvector params 1 pname GL_POINT_SIZE GL_POINT_SMOOTH GL_POINT_SIZE_MIN GL_POINT_SIZE_MAX GL_POINT_FADE_THRESHOLD_SIZE GL_POINT_SPRITE_OES GL_LINE_WIDTH GL_LINE_SMOOTH GL_CULL_FACE GL_CULL_FACE_MODE GL_FRONT_FACE GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_UNITS GL_POLYGON_OFFSET_FILL +dependentvector params 1 pname GL_MULTISAMPLE GL_SAMPLE_ALPHA_TO_COVERAGE GL_SAMPLE_ALPHA_TO_ONE GL_SAMPLE_COVERAGE GL_SAMPLE_COVERAGE_VALUE +dependentvector params 1 pname GL_TEXTURE_2D GL_TEXTURE_BINDING_2D +dependentvector params 1 pname GL_ACTIVE_TEXTURE +dependentvector params 1 pname GL_SCISSOR_TEST GL_ALPHA_TEST_FUNC GL_ALPHA_TEST_REF GL_STENCIL_TEST GL_STENCIL_FUNC GL_STENCIL_VALUE_MASK GL_STENCIL_REF GL_STENCIL_FAIL GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_DEPTH_TEST GL_DEPTH_FUNC GL_BLEND GL_BLEND_SRC GL_BLEND_DST GL_DITHER GL_COLOR_LOGIC_OP GL_LOGIC_OP_MODE +dependentvector params 1 pname GL_DEPTH_WRITEMASK GL_STENCIL_WRITEMASK GL_DEPTH_CLEAR_VALUE GL_STENCIL_CLEAR_VALUE +dependentvector params 1 pname GL_UNPACK_ALIGNMENT GL_PACK_ALIGNMENT +dependentvector params 1 pname GL_PERSPECTIVE_CORRECTION_HINT GL_POINT_SMOOTH_HINT GL_LINE_SMOOTH_HINT GL_FOG_HINT GL_GENERATE_MIPMAP_HINT +dependentvector params 1 pname GL_MAX_LIGHTS GL_MAX_CLIP_PLANES GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_PROJECTION_STACK_DEPTH GL_MAX_TEXTURE_STACK_DEPTH GL_SUBPIXEL_BITS GL_MAX_TEXTURE_SIZE GL_MAX_TEXTURE_UNITS GL_SAMPLE_BUFFERS GL_SAMPLES GL_NUM_COMPRESSED_TEXTURE_FORMATS GL_RED_BITS GL_GREEN_BITS GL_BLUE_BITS GL_ALPHA_BITS GL_DEPTH_BITS GL_STENCIL_BITS +dependentvector params 2 pname GL_MAX_VIEWPORT_DIMS GL_ALIASED_POINT_SIZE_RANGE GL_SMOOTH_POINT_SIZE_RANGE GL_ALIASED_LINE_WIDTH_RANGE GL_SMOOTH_LINE_WIDTH_RANGE +dependentvector params 2 pname GL_DEPTH_RANGE +dependentvector params 3 pname GL_CURRENT_NORMAL +dependentvector params 3 pname GL_POINT_DISTANCE_ATTENUATION +dependentvector params 4 pname GL_CURRENT_COLOR GL_CURRENT_TEXTURE_COORDS +dependentvector params 4 pname GL_SCISSOR_BOX +dependentvector params 4 pname GL_COLOR_WRITEMASK GL_COLOR_CLEAR_VALUE +dependentvector params 4 pname GL_LIGHT_MODEL_AMBIENT +dependentvector params 4 pname GL_VIEWPORT +dependentvector params 4 pname GL_FOG_COLOR +dependentvector params 16 pname GL_MODELVIEW_MATRIX GL_PROJECTION_MATRIX GL_TEXTURE_MATRIX +dependentvector params _get_size(GL_NUM_COMPRESSED_TEXTURE_FORMATS) pname GL_COMPRESSED_TEXTURE_FORMATS +# OES_blend_subtract +dependentvector params 1 pname GL_BLEND_SRC_RGB_OES GL_BLEND_DST_RGB_OES GL_BLEND_SRC_ALPHA_OES GL_BLEND_DST_ALPHA_OES +# OES_blend_equation_separate +dependentvector params 1 pname GL_BLEND_EQUATION_RGB_OES GL_BLEND_EQUATION_ALPHA_OES +# OES_framebuffer_object +dependentvector params 1 pname GL_FRAMEBUFFER_BINDING_OES GL_RENDERBUFFER_BINDING_OES GL_MAX_RENDERBUFFER_SIZE_OES +# OES_matrix_get +dependentvector params 16 pname GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES +# OES_matrix_palette +dependentvector params 1 pname GL_MAX_PALETTE_MATRICES_OES GL_MAX_VERTEX_UNITS_OES GL_CURRENT_PALETTE_MATRIX_OES +dependentvector params 1 pname GL_MATRIX_INDEX_ARRAY_SIZE_OES GL_MATRIX_INDEX_ARRAY_TYPE_OES GL_MATRIX_INDEX_ARRAY_STRIDE_OES GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES GL_WEIGHT_ARRAY_SIZE_OES GL_WEIGHT_ARRAY_TYPE_OES GL_WEIGHT_ARRAY_STRIDE_OES GL_WEIGHT_ARRAY_BUFFER_BINDING_OES +# OES_point_size_array +dependentvector params 1 pname GL_POINT_SIZE_ARRAY_TYPE_OES GL_POINT_SIZE_ARRAY_STRIDE_OES GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES +# OES_read_format +dependentvector params 1 pname GL_IMPLEMENTATION_COLOR_READ_TYPE_OES GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES +# OES_texture_cube_map +dependentvector params 1 pname GL_TEXTURE_CUBE_MAP_OES GL_TEXTURE_BINDING_CUBE_MAP_OES GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES +# EXT_texture_filter_anisotropic +dependentvector params 1 pname GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT +# These values return booleans or GLenums, and should not have their +# value converted when used with glGetFixed() +dependentnovalueconvert params pname GL_VERTEX_ARRAY GL_VERTEX_ARRAY_TYPE GL_NORMAL_ARRAY GL_NORMAL_ARRAY_TYPE GL_COLOR_ARRAY GL_COLOR_ARRAY_TYPE GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_TYPE GL_POINT_SIZE_ARRAY_OES GL_MATRIX_MODE GL_NORMALIZE GL_RESCALE_NORMAL GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_FOG_MODE GL_FOG GL_SHADE_MODEL GL_LIGHTING GL_COLOR_MATERIAL GL_LIGHT_MODEL_TWO_SIDE GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_POINT_SMOOTH GL_POINT_SPRITE_OES GL_LINE_SMOOTH GL_CULL_FACE GL_CULL_FACE_MODE GL_FRONT_FACE GL_POLYGON_OFFSET_FILL GL_MULTISAMPLE GL_SAMPLE_ALPHA_TO_COVERAGE GL_SAMPLE_ALPHA_TO_ONE GL_SAMPLE_COVERAGE GL_TEXTURE_2D GL_ACTIVE_TEXTURE GL_SCISSOR_TEST GL_ALPHA_TEST GL_ALPHA_TEST_FUNC GL_STENCIL_TEST GL_STENCIL_FUNC GL_STENCIL_FAIL GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_DEPTH_TEST GL_DEPTH_FUNC GL_BLEND GL_BLEND_SRC GL_BLEND_DST GL_DITHER GL_COLOR_LOGIC_OP GL_LOGIC_OP_MODE GL_DEPTH_WRITEMASK GL_PERSPECTIVE_CORRECTION_HINT GL_POINT_SMOOTH_HINT GL_LINE_SMOOTH_HINT GL_FOG_HINT GL_GENERATE_MIPMAP_HINT GL_COMPRESSED_TEXTURE_FORMATS GL_IMPLEMENTATION_COLOR_READ_TYPE_OES GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES GL_BLEND_SRC_RGB_OES GL_BLEND_DST_RGB_OES GL_BLEND_SRC_ALPHA_OES GL_BLEND_DST_ALPHA_OES GL_BLEND_EQUATION_RGB_OES GL_BLEND_EQUATION_ALPHA_OES GL_MATRIX_INDEX_ARRAY_TYPE_OES GL_WEIGHT_ARRAY_TYPE_OES GL_POINT_SIZE_ARRAY_TYPE_OES GL_TEXTURE_CUBE_MAP_OES +category GLES1.1 GLES1.1:OES_fixed_point + +# Note: glGetIntegerv param checking done inside Mesa +name GetIntegerv +return void +param pname GLenum +param params GLint * +props get +category GLES1.1 GLES2.0 + + +# This does *not* specify dependent vectors because everything is just +# passed down to Mesa - no copy or conversion is done. +name GetLightfv +return void +param light GLenum +checkparam light GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 +param pname GLenum +checkparam pname GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_POSITION GL_SPOT_DIRECTION GL_SPOT_EXPONENT GL_SPOT_CUTOFF GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION +param params GLfloat * +props get +category 1.0 GLES1.1 + +name GetLightxv +return void +param light GLenum +checkparam light GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 +param pname GLenum +param params GLfixed * +dependentvector params 4 pname GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_POSITION +dependentvector params 3 pname GL_SPOT_DIRECTION +dependentvector params 1 pname GL_SPOT_EXPONENT GL_SPOT_CUTOFF GL_CONSTANT_ATTENUATION GL_QUADRATIC_ATTENUATION +convertalias GetLightfv +convertparams GLfloat params +props get +category GLES1.1 GLES1.1:OES_fixed_point + +name GetMaterialfv +return void +param face GLenum +checkparam face GL_FRONT GL_BACK +param pname GLenum +checkparam pname GL_AMBIENT GL_DIFFUSE GL_AMBIENT_AND_DIFFUSE GL_SPECULAR GL_EMISSION GL_SHININESS +param params GLfloat * +props get +category 1.0 GLES1.1 + +name GetMaterialiv +return void +param face GLenum +checkparam face GL_FRONT GL_BACK +param pname GLenum +checkparam pname GL_AMBIENT GL_DIFFUSE GL_AMBIENT_AND_DIFFUSE GL_SPECULAR GL_EMISSION GL_SHININESS +param params GLint * +category 1.0 +props get + +name GetMaterialxv +return void +param face GLenum +checkparam face GL_FRONT GL_BACK +param pname GLenum +param params GLfixed * +props get +dependentvector params 1 pname GL_SHININESS +dependentvector params 4 pname GL_AMBIENT GL_DIFFUSE GL_AMBIENT_AND_DIFFUSE GL_SPECULAR GL_EMISSION +convertalias GetMaterialfv +convertparams GLfloat params +category GLES1.1 GLES1.1:OES_fixed_point + +name GetString +return const GLubyte * +param name GLenum +checkparam name GL_VENDOR GL_RENDERER GL_VERSION GL_EXTENSIONS +props get +category 1.0 GLES1.1 GLES2.0 + +name GetTexEnvfv +return void +param target GLenum +param pname GLenum +param params GLfloat * +checkdependentparam target GL_POINT_SPRITE_OES pname GL_COORD_REPLACE_OES +checkdependentparam target GL_TEXTURE_ENV pname GL_TEXTURE_ENV_MODE GL_TEXTURE_ENV_COLOR GL_COMBINE_RGB GL_COMBINE_ALPHA GL_RGB_SCALE GL_ALPHA_SCALE GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +dependentvector params 4 pname GL_TEXTURE_ENV_COLOR +dependentvector params 1 pname GL_RGB_SCALE GL_ALPHA_SCALE +dependentvector params 1 pname GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_SRC0_RGB GL_SRC1_RGB GL_SRC2_RGB GL_SRC0_ALPHA GL_SRC1_ALPHA GL_SRC2_ALPHA GL_OPERAND0_RGB GL_OPERAND1_RGB GL_OPERAND2_RGB GL_OPERAND0_ALPHA GL_OPERAND1_ALPHA GL_OPERAND2_ALPHA GL_COORD_REPLACE_OES +dependentnovalueconvert params pname GL_COORD_REPLACE_OES GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +props get +category 1.0 GLES1.1 + +name GetTexEnviv +return void +param target GLenum +param pname GLenum +param params GLint * +props get +checkdependentparam target GL_POINT_SPRITE_OES pname GL_COORD_REPLACE_OES +checkdependentparam target GL_TEXTURE_ENV pname GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_RGB_SCALE GL_ALPHA_SCALE GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +category 1.0 GLES1.1 +dependentvector params 4 pname GL_TEXTURE_ENV_COLOR +dependentvector params 1 pname GL_RGB_SCALE GL_ALPHA_SCALE +dependentvector params 1 pname GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_SRC0_RGB GL_SRC1_RGB GL_SRC2_RGB GL_SRC0_ALPHA GL_SRC1_ALPHA GL_SRC2_ALPHA GL_OPERAND0_RGB GL_OPERAND1_RGB GL_OPERAND2_RGB GL_OPERAND0_ALPHA GL_OPERAND1_ALPHA GL_OPERAND2_ALPHA GL_COORD_REPLACE_OES +dependentnovalueconvert params pname GL_COORD_REPLACE_OES GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA + +name GetTexEnvxv +return void +param target GLenum +param pname GLenum +param params GLfixed * +checkdependentparam target GL_POINT_SPRITE_OES pname GL_COORD_REPLACE_OES +checkdependentparam target GL_TEXTURE_ENV pname GL_TEXTURE_ENV_MODE GL_TEXTURE_ENV_COLOR GL_COMBINE_RGB GL_COMBINE_ALPHA GL_RGB_SCALE GL_ALPHA_SCALE GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +dependentvector params 4 pname GL_TEXTURE_ENV_COLOR +dependentvector params 1 pname GL_RGB_SCALE GL_ALPHA_SCALE +dependentvector params 1 pname GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_SRC0_RGB GL_SRC1_RGB GL_SRC2_RGB GL_SRC0_ALPHA GL_SRC1_ALPHA GL_SRC2_ALPHA GL_OPERAND0_RGB GL_OPERAND1_RGB GL_OPERAND2_RGB GL_OPERAND0_ALPHA GL_OPERAND1_ALPHA GL_OPERAND2_ALPHA GL_COORD_REPLACE_OES +dependentnovalueconvert params pname GL_COORD_REPLACE_OES GL_TEXTURE_ENV_MODE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_SRC0_RGB GL_OPERAND0_RGB GL_SRC0_ALPHA GL_OPERAND0_ALPHA GL_SRC1_RGB GL_OPERAND1_RGB GL_SRC1_ALPHA GL_OPERAND1_ALPHA GL_SRC2_RGB GL_OPERAND2_RGB GL_SRC2_ALPHA GL_OPERAND2_ALPHA +convertalias GetTexEnvfv +convertparams GLfloat params +props get +category GLES1.1 GLES1.1:OES_fixed_point + +name GetTexGenfv +return void +param coord GLenum +checkparam coord GL_TEXTURE_GEN_STR_OES +param pname GLenum +param params GLfloat * +dependentvector params 1 pname GL_TEXTURE_GEN_MODE_OES +props get +category 1.0 GLES1.1:OES_texture_cube_map + +name GetTexGenxv +return void +param coord GLenum +checkparam coord GL_TEXTURE_GEN_STR_OES +param pname GLenum +param params GLfixed * +dependentvector params 1 pname GL_TEXTURE_GEN_MODE_OES +convertalias GetTexGenfv +convertparams GLfloat params +dependentnovalueconvert params pname GL_TEXTURE_GEN_MODE_OES +props get +category 1.0 GLES1.1:OES_texture_cube_map + +name GetTexGeniv +return void +param coord GLenum +checkparam coord GL_TEXTURE_GEN_STR_OES +param pname GLenum +param params GLint * +dependentvector params 1 pname GL_TEXTURE_GEN_MODE_OES +props get +category 1.0 GLES1.1:OES_texture_cube_map + +name GetTexParameterfv +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP +param pname GLenum +param params GLfloat * +dependentvector params 1 pname GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GLES1.1:GL_GENERATE_MIPMAP +props get +# OES_draw_texture - not in gl2ext.h yet +dependentvector params 4 pname GLES1.1:GL_TEXTURE_CROP_RECT_OES +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_OES +category GLES1.1 GLES2.0 + +name GetTexParameteriv +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP +param pname GLenum +param params GLint * +dependentvector params 1 pname GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GLES1.1:GL_GENERATE_MIPMAP +props get +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_OES +# OES_draw_texture - not in gl2ext.h yet, not supported in Mesa yet +dependentvector params 4 pname GLES1.1:GL_TEXTURE_CROP_RECT_OES +# OES_texture_3D +checkparam target GLES2.0:GL_TEXTURE_3D_OES +category GLES1.1 GLES2.0 + +name GetTexParameterxv +return void +param target GLenum +checkparam target GL_TEXTURE_2D +param pname GLenum +param params GLfixed * +dependentvector params 1 pname GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_GENERATE_MIPMAP +convertalias GetTexParameterfv +convertparams GLfloat params +dependentnovalueconvert params pname GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_MIN_FILTER GL_TEXTURE_MAG_FILTER GL_GENERATE_MIPMAP +props get +# OES_texture_cube_map +checkparam target GL_TEXTURE_CUBE_MAP_OES +# OES_draw_texture - not supported in Mesa yet +#dependentvector params 4 pname GL_TEXTURE_CROP_RECT_OES +category GLES1.1 GLES1.1:OES_fixed_point + +# GLES1.1 and GLES2.0 have different capabilities +name IsEnabled +return GLboolean +param cap GLenum +props get +checkparam cap GL_VERTEX_ARRAY GL_NORMAL_ARRAY GL_COLOR_ARRAY GL_TEXTURE_COORD_ARRAY GL_NORMALIZE GL_RESCALE_NORMAL GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_FOG GL_LIGHTING GL_COLOR_MATERIAL GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_POINT_SMOOTH GL_LINE_SMOOTH GL_CULL_FACE GL_POLYGON_OFFSET_FILL GL_MULTISAMPLE GL_SAMPLE_ALPHA_TO_COVERAGE GL_SAMPLE_ALPHA_TO_ONE GL_SAMPLE_COVERAGE GL_TEXTURE_2D GL_SCISSOR_TEST GL_ALPHA_TEST GL_STENCIL_TEST GL_DEPTH_TEST GL_BLEND GL_DITHER GL_COLOR_LOGIC_OP +# OES_matrix_palette +checkparam cap GL_MATRIX_INDEX_ARRAY_OES GL_WEIGHT_ARRAY_OES +# OES_point_size_array +checkparam cap GL_POINT_SIZE_ARRAY_OES +# OES_point_sprite +checkparam cap GL_POINT_SPRITE_OES +# OES_texture_cube_map +checkparam cap GL_TEXTURE_CUBE_MAP_OES GL_TEXTURE_GEN_STR_OES +category GLES1.1 + +name IsEnabled +return GLboolean +param cap GLenum +checkparam cap GL_CULL_FACE GL_SCISSOR_TEST GL_POLYGON_OFFSET_FILL GL_SAMPLE_ALPHA_TO_COVERAGE GL_SAMPLE_COVERAGE GL_STENCIL_TEST GL_DEPTH_TEST GL_DITHER GL_BLEND +props get +category GLES2.0 + + +name DepthRangef +return void +param zNear GLclampf +param zFar GLclampf +convertalias DepthRange +convertparams GLclampd zNear zFar +category GLES1.1 GLES1.1:OES_single_precision GLES2.0 + +name DepthRangex +return void +param zNear GLclampx +param zFar GLclampx +convertalias DepthRange +convertparams GLclampd zNear zFar +category GLES1.1 GLES1.1:OES_fixed_point + +name Frustumf +return void +param left GLfloat +param right GLfloat +param bottom GLfloat +param top GLfloat +param zNear GLfloat +param zFar GLfloat +convertalias Frustum +convertparams GLdouble left right bottom top zNear zFar +category GLES1.1 GLES1.1:OES_single_precision + +name Frustumx +return void +param left GLfixed +param right GLfixed +param bottom GLfixed +param top GLfixed +param zNear GLfixed +param zFar GLfixed +convertalias Frustum +convertparams GLdouble left right bottom top zNear zFar +category GLES1.1 GLES1.1:OES_fixed_point + +name LoadIdentity +return void +category 1.0 GLES1.1 + +name LoadMatrixf +return void +param m const GLfloat * +vector m 16 +category 1.0 GLES1.1 + +name LoadMatrixx +return void +param m const GLfixed * +vector m 16 +convertalias LoadMatrixf +convertparams GLfloat m +category GLES1.1 GLES1.1:OES_fixed_point + +name MatrixMode +return void +param mode GLenum +checkparam mode GL_MODELVIEW GL_PROJECTION GL_TEXTURE +# OES_matrix_palette +checkparam mode GL_MATRIX_PALETTE_OES +category 1.0 GLES1.1 + +name MultMatrixf +return void +param m const GLfloat * +vector m 16 +category 1.0 GLES1.1 + +name MultMatrixx +return void +param m const GLfixed * +vector m 16 +convertalias MultMatrixf +convertparams GLfloat m +category GLES1.1 GLES1.1:OES_fixed_point + +name Orthof +return void +param left GLfloat +param right GLfloat +param bottom GLfloat +param top GLfloat +param zNear GLfloat +param zFar GLfloat +convertalias Ortho +convertparams GLdouble left right bottom top zNear zFar +category GLES1.1 GLES1.1:OES_single_precision + +name Orthox +return void +param left GLfixed +param right GLfixed +param bottom GLfixed +param top GLfixed +param zNear GLfixed +param zFar GLfixed +convertalias Ortho +convertparams GLdouble left right bottom top zNear zFar +category GLES1.1 GLES1.1:OES_fixed_point + +name PopMatrix +return void +category GLES1.1 + +name PushMatrix +return void +category GLES1.1 + +name Rotatef +return void +param angle GLfloat +param x GLfloat +param y GLfloat +param z GLfloat +category 1.0 GLES1.1 + +name Rotatex +return void +param angle GLfixed +param x GLfixed +param y GLfixed +param z GLfixed +convertalias Rotatef +convertparams GLfloat angle x y z +category GLES1.1 GLES1.1:OES_fixed_point + +name Scalef +return void +param x GLfloat +param y GLfloat +param z GLfloat +category 1.0 GLES1.1 + +name Scalex +return void +param x GLfixed +param y GLfixed +param z GLfixed +convertalias Scalef +convertparams GLfloat x y z +category GLES1.1 GLES1.1:OES_fixed_point + +name Translatef +return void +param x GLfloat +param y GLfloat +param z GLfloat +category 1.0 GLES1.1 + +name Translatex +return void +param x GLfixed +param y GLfixed +param z GLfixed +convertalias Translatef +convertparams GLfloat x y z +category GLES1.1 GLES1.1:OES_fixed_point + +name Viewport +return void +param x GLint +param y GLint +param width GLsizei +param height GLsizei +category 1.0 GLES1.1 GLES2.0 + +name ColorPointer +return void +param size GLint +param type GLenum +param stride GLsizei +paramlist stride 0 +param pointer const GLvoid * +checkparam size /GL_INVALID_VALUE 4 +checkparam type GL_UNSIGNED_BYTE GL_FIXED GL_FLOAT +# OES_vertex_half_float: its values aren't in glext.h yet +#checkparam type GL_HALF_FLOAT_OES +category 1.1 GLES1.1 + +name DisableClientState +return void +param array GLenum +checkparam array GL_COLOR_ARRAY GL_NORMAL_ARRAY GL_TEXTURE_COORD_ARRAY GL_VERTEX_ARRAY +# OES_matrix_palette +checkparam array GL_MATRIX_INDEX_ARRAY_OES GL_WEIGHT_ARRAY_OES +# OES_point_size_array +checkparam array GL_POINT_SIZE_ARRAY_OES +category 1.1 GLES1.1 + +name DrawArrays +return void +param mode GLenum +checkparam mode GL_POINTS GL_LINE_STRIP GL_LINE_LOOP GL_LINES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_TRIANGLES +param first GLint +param count GLsizei +category 1.1 GLES1.1 GLES2.0 + +name DrawElements +return void +param mode GLenum +checkparam mode GL_POINTS GL_LINE_STRIP GL_LINE_LOOP GL_LINES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_TRIANGLES +param count GLsizei +param type GLenum +checkparam type GL_UNSIGNED_BYTE GL_UNSIGNED_SHORT +param indices const GLvoid * +# OES_element_index_uint - not in GLES1.1 extension headers yet +checkparam type GLES2.0:GL_UNSIGNED_INT +category 1.1 GLES1.1 GLES2.0 + +name EnableClientState +return void +param array GLenum +checkparam array GL_COLOR_ARRAY GL_NORMAL_ARRAY GL_TEXTURE_COORD_ARRAY GL_VERTEX_ARRAY +# OES_matrix_palette +checkparam array GL_MATRIX_INDEX_ARRAY_OES GL_WEIGHT_ARRAY_OES +# OES_point_size_array +checkparam array GL_POINT_SIZE_ARRAY_OES +category 1.1 GLES1.1 + +name GetPointerv +return void +param pname GLenum +checkparam pname GL_COLOR_ARRAY_POINTER GL_NORMAL_ARRAY_POINTER GL_TEXTURE_COORD_ARRAY_POINTER GL_VERTEX_ARRAY_POINTER +param params GLvoid ** +props get +# OES_matrix_palette +checkparam pname GL_MATRIX_INDEX_ARRAY_POINTER_OES GL_WEIGHT_ARRAY_POINTER_OES +# OES_point_size_array +checkparam pname GL_POINT_SIZE_ARRAY_POINTER_OES +category 1.1 GLES1.1 + +name Normal3f +aliasprefix _vbo_ +return void +param nx GLfloat +param ny GLfloat +param nz GLfloat +category GLES1.1 + +name Normal3x +aliasprefix _vbo_ +return void +param nx GLfixed +param ny GLfixed +param nz GLfixed +convertalias Normal3f +convertparams GLfloat nx ny nz +category GLES1.1 GLES1.1:OES_fixed_point + +name NormalPointer +return void +param type GLenum +checkparam type GL_BYTE GL_SHORT GL_FIXED GL_FLOAT +param stride GLsizei +param pointer const GLvoid * +# OES_vertex_half_float - not yet in glext.h +#checkparam type GL_HALF_FLOAT_OES +category 1.1 GLES1.1 + +name TexCoordPointer +return void +param size GLint +param type GLenum +param stride GLsizei +param pointer const GLvoid * +checkparam size /GL_INVALID_VALUE 2 3 4 +checkparam type GL_BYTE GL_SHORT GL_FIXED GL_FLOAT +# OES_vertex_half_float - not yet in glext.h +#checkparam type GL_HALF_FLOAT_OES +category 1.1 GLES1.1 + +name VertexPointer +return void +param size GLint +param type GLenum +param stride GLsizei +param pointer const GLvoid * +checkparam size /GL_INVALID_VALUE 2 3 4 +checkparam type GL_BYTE GL_SHORT GL_FIXED GL_FLOAT +# OES_vertex_half_float - not yet in glext.h +#checkparam type GL_HALF_FLOAT_OES +category 1.1 GLES1.1 + +name PolygonOffset +return void +param factor GLfloat +param units GLfloat +category 1.1 GLES1.1 GLES2.0 + +name PolygonOffsetx +return void +param factor GLfixed +param units GLfixed +convertalias PolygonOffset +convertparams GLfloat factor units +category GLES1.1 GLES1.1:OES_fixed_point + +name CopyTexImage2D +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Z GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z +param level GLint +param internalFormat GLenum +param x GLint +param y GLint +param width GLsizei +param height GLsizei +param border GLint +checkparam internalFormat /GL_INVALID_VALUE GL_ALPHA GL_LUMINANCE GL_LUMINANCE_ALPHA GL_RGB GL_RGBA +checkparam border /GL_INVALID_VALUE 0 +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES +# OES_depth_texture +checkparam internalFormat GLES2.0:GL_DEPTH_COMPONENT +category GLES1.1 GLES2.0 + +name CopyTexSubImage2D +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Z GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z +param level GLint +param xoffset GLint +param yoffset GLint +param x GLint +param y GLint +param width GLsizei +param height GLsizei +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES +category GLES1.1 GLES2.0 + +name TexSubImage2D +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Z GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP +param level GLint +param xoffset GLint +param yoffset GLint +param width GLsizei +param height GLsizei +param format GLenum +param type GLenum +param pixels const GLvoid * +checkparam format /GL_INVALID_VALUE GL_ALPHA GL_LUMINANCE GL_LUMINANCE_ALPHA GL_RGB GL_RGBA +checkdependentparam format GL_RGBA type GL_UNSIGNED_BYTE GL_UNSIGNED_SHORT_4_4_4_4 GL_UNSIGNED_SHORT_5_5_5_1 +checkdependentparam format GL_RGB type GL_UNSIGNED_BYTE GL_UNSIGNED_SHORT_5_6_5 +checkdependentparam format GL_LUMINANCE_ALPHA type GL_UNSIGNED_BYTE +checkdependentparam format GL_LUMINANCE type GL_UNSIGNED_BYTE +checkdependentparam format GL_ALPHA type GL_UNSIGNED_BYTE +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_OES +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES +# OES_texture_float +checkdependentparam format GL_ALPHA type GL_FLOAT +checkdependentparam format GL_RGB type GL_FLOAT +checkdependentparam format GL_RGBA type GL_FLOAT +checkdependentparam format GL_LUMINANCE type GL_FLOAT +checkdependentparam format GL_LUMINANCE_ALPHA type GL_FLOAT +# OES_texture_half_float +checkdependentparam format GL_ALPHA type GLES2.0:GL_HALF_FLOAT_OES +checkdependentparam format GL_RGB type GLES2.0:GL_HALF_FLOAT_OES +checkdependentparam format GL_RGBA type GLES2.0:GL_HALF_FLOAT_OES +checkdependentparam format GL_LUMINANCE type GLES2.0:GL_HALF_FLOAT_OES +checkdependentparam format GL_LUMINANCE_ALPHA type GLES2.0:GL_HALF_FLOAT_OES +# EXT_texture_type_2_10_10_10_REV +checkdependentparam format GL_RGBA type GLES2.0:GL_UNSIGNED_INT_2_10_10_10_REV_EXT +# OES_depth_texture +checkdependentparam format GL_DEPTH_COMPONENT type GLES2.0:GL_UNSIGNED_SHORT GLES2.0:GL_UNSIGNED_INT +category GLES1.1 GLES2.0 + +name BindTexture +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP +param texture GLuint +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_OES +category GLES1.1 GLES2.0 + +name DeleteTextures +return void +param n GLsizei +param textures const GLuint * +category 1.1 GLES1.1 GLES2.0 + +name GenTextures +return void +param n GLsizei +param textures GLuint * +props get +category 1.1 GLES1.1 GLES2.0 + +name IsTexture +return GLboolean +param texture GLuint +props get +category 1.1 GLES1.1 GLES2.0 + +name BlendColor +return void +param red GLclampf +param green GLclampf +param blue GLclampf +param alpha GLclampf +category 1.2 GLES2.0 + +name BlendEquation +return void +param mode GLenum +checkparam mode GLES1.1:GL_FUNC_ADD_OES GLES1.1:GL_FUNC_SUBTRACT_OES GLES1.1:GL_FUNC_REVERSE_SUBTRACT_OES +checkparam mode GLES2.0:GL_FUNC_ADD GLES2.0:GL_FUNC_SUBTRACT GLES2.0:GL_FUNC_REVERSE_SUBTRACT +category GLES1.1:OES_blend_subtract GLES2.0 + +name BlendEquationSeparate +alias BlendEquationSeparateEXT +return void +param modeRGB GLenum +param modeAlpha GLenum +checkparam modeRGB GLES1.1:GL_FUNC_ADD_OES GLES1.1:GL_FUNC_SUBTRACT_OES GLES1.1:GL_FUNC_REVERSE_SUBTRACT_OES +checkparam modeAlpha GLES1.1:GL_FUNC_ADD_OES GLES1.1:GL_FUNC_SUBTRACT_OES GLES1.1:GL_FUNC_REVERSE_SUBTRACT_OES +checkparam modeRGB GLES1.1:GL_FUNC_ADD_OES GLES1.1:GL_FUNC_SUBTRACT_OES GLES1.1:GL_FUNC_REVERSE_SUBTRACT_OES +checkparam modeAlpha GLES1.1:GL_FUNC_ADD_OES GLES1.1:GL_FUNC_SUBTRACT_OES GLES1.1:GL_FUNC_REVERSE_SUBTRACT_OES +checkparam modeRGB GLES2.0:GL_FUNC_ADD GLES2.0:GL_FUNC_SUBTRACT GLES2.0:GL_FUNC_REVERSE_SUBTRACT +checkparam modeAlpha GLES2.0:GL_FUNC_ADD GLES2.0:GL_FUNC_SUBTRACT GLES2.0:GL_FUNC_REVERSE_SUBTRACT +checkparam modeRGB GLES2.0:GL_FUNC_ADD GLES2.0:GL_FUNC_SUBTRACT GLES2.0:GL_FUNC_REVERSE_SUBTRACT +checkparam modeAlpha GLES2.0:GL_FUNC_ADD GLES2.0:GL_FUNC_SUBTRACT GLES2.0:GL_FUNC_REVERSE_SUBTRACT +category GLES1.1:OES_blend_equation_separate GLES2.0 + +name TexImage3D +return void +param target GLenum +checkparam target GL_TEXTURE_3D_OES +param level GLint +param internalFormat GLenum +checkparam internalFormat GL_ALPHA GL_LUMINANCE GL_LUMINANCE_ALPHA GL_RGB GL_RGBA +param width GLsizei +param height GLsizei +param depth GLsizei +param border GLint +param format GLenum +param type GLenum +param pixels const GLvoid * +# OES_texture_float +checkparam type GL_FLOAT +# OES_texture_half_float +checkparam type GL_HALF_FLOAT_OES +category GLES2.0:OES_texture_3D + +name TexSubImage3D +return void +param target GLenum +param level GLint +param xoffset GLint +param yoffset GLint +param zoffset GLint +param width GLsizei +param height GLsizei +param depth GLsizei +param format GLenum +param type GLenum +param pixels const GLvoid * +# OES_texture_float +checkparam type GL_FLOAT +# OES_texture_half_float +checkparam type GL_HALF_FLOAT_OES +category GLES2.0:OES_texture_3D + +name CopyTexSubImage3D +return void +param target GLenum +checkparam target GL_TEXTURE_3D_OES +param level GLint +param xoffset GLint +param yoffset GLint +param zoffset GLint +param x GLint +param y GLint +param width GLsizei +param height GLsizei +category GLES2.0:OES_texture_3D + +name MultiTexCoord4x +return void +param texture GLenum +checkparam texture GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 +param s GLfixed +param t GLfixed +param r GLfixed +param q GLfixed +aliasprefix _vbo_ +convertalias MultiTexCoord4f +convertparams GLfloat s t r q +category GLES1.1 GLES1.1:OES_fixed_point + +name CompressedTexImage3D +alias CompressedTexImage3DARB +return void +param target GLenum +checkparam target GL_TEXTURE_3D_OES +param level GLint +param internalFormat GLenum +checkparam internalFormat GL_ALPHA GL_LUMINANCE GL_LUMINANCE_ALPHA GL_RGB GL_RGBA +param width GLsizei +param height GLsizei +param depth GLsizei +param border GLint +param imagesize GLsizei +param data const GLvoid * +# AMD_compressed_3DC_texture +checkparam internalFormat GL_3DC_X_AMD GL_3DC_XY_AMD +# AMD_compressed_ATC_texture +checkparam internalFormat GL_ATC_RGB_AMD GL_ATC_RGBA_EXPLICIT_ALPHA_AMD GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD +category GLES2.0:OES_texture_3D + +name CompressedTexSubImage3D +alias CompressedTexSubImage3DARB +return void +param target GLenum +checkparam target GL_TEXTURE_3D_OES +param level GLint +param xoffset GLint +param yoffset GLint +param zoffset GLint +param width GLsizei +param height GLsizei +param depth GLsizei +param format GLenum +param imagesize GLsizei +param data const GLvoid * +category GLES2.0:OES_texture_3D + +name ActiveTexture +alias ActiveTextureARB +return void +param texture GLenum +checkparam texture GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +category 1.3 GLES1.1 GLES2.0 + +name ClientActiveTexture +alias ClientActiveTextureARB +return void +param texture GLenum +checkparam texture GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +category 1.3 GLES1.1 + +name MultiTexCoord4f +aliasprefix _vbo_ +return void +param texture GLenum +checkparam texture GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 +param s GLfloat +param t GLfloat +param r GLfloat +param q GLfloat +category 1.3 GLES1.1 + +name SampleCoverage +alias SampleCoverageARB +return void +param value GLclampf +param invert GLboolean +category 1.3 GLES1.1 GLES2.0 + +name SampleCoveragex +return void +param value GLclampx +param invert GLboolean +convertalias SampleCoverageARB +convertparams GLclampf value +category GLES1.1 GLES1.1:OES_fixed_point + +name CompressedTexImage2D +alias CompressedTexImage2DARB +return void +param target GLenum +param level GLint +param internalFormat GLenum +param width GLsizei +param height GLsizei +param border GLint +param imageSize GLsizei +param data const GLvoid * +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Z GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z +checkparam border /GL_INVALID_VALUE 0 +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES +# OES_compressed_paletted_texture +checkparam internalFormat /GL_INVALID_VALUE GL_PALETTE4_RGB8_OES GL_PALETTE4_RGBA8_OES GL_PALETTE4_R5_G6_B5_OES GL_PALETTE4_RGBA4_OES GL_PALETTE4_RGB5_A1_OES GL_PALETTE8_RGB8_OES GL_PALETTE8_RGBA8_OES GL_PALETTE8_R5_G6_B5_OES GL_PALETTE8_RGBA4_OES GL_PALETTE8_RGB5_A1_OES +# OES_compressed_ETC1_RGB8_texture +checkparam internalFormat GL_ETC1_RGB8_OES +# AMD_compressed_3DC_texture +checkparam internalFormat GL_3DC_X_AMD GL_3DC_XY_AMD +# AMD_compressed_ATC_texture (GLES2.0 only?) +checkparam internalFormat GL_ATC_RGB_AMD GL_ATC_RGBA_EXPLICIT_ALPHA_AMD GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD +category GLES1.1 GLES2.0 + +name CompressedTexSubImage2D +alias CompressedTexSubImage2DARB +return void +param target GLenum +param level GLint +param xoffset GLint +param yoffset GLint +param width GLsizei +param height GLsizei +param format GLenum +param imageSize GLsizei +param data const GLvoid * +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Z GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z +checkparam format GL_PALETTE4_RGB8_OES GL_PALETTE4_RGBA8_OES GL_PALETTE4_R5_G6_B5_OES GL_PALETTE4_RGBA4_OES GL_PALETTE4_RGB5_A1_OES GL_PALETTE8_RGB8_OES GL_PALETTE8_RGBA8_OES GL_PALETTE8_R5_G6_B5_OES GL_PALETTE8_RGBA4_OES GL_PALETTE8_RGB5_A1_OES +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES +category GLES1.1 GLES2.0 + +name BlendFuncSeparate +alias BlendFuncSeparateEXT +return void +param srcRGB GLenum +param dstRGB GLenum +param srcAlpha GLenum +param dstAlpha GLenum +checkparam srcRGB GL_ZERO GL_ONE GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_DST_COLOR GL_ONE_MINUS_DST_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA GL_DST_ALPHA GL_ONE_MINUS_DST_ALPHA GL_SRC_ALPHA_SATURATE GLES2.0:GL_CONSTANT_COLOR GLES2.0:GL_ONE_MINUS_CONSTANT_COLOR GLES2.0:GL_CONSTANT_ALPHA GLES2.0:GL_ONE_MINUS_CONSTANT_ALPHA +checkparam dstRGB GL_ZERO GL_ONE GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_DST_COLOR GL_ONE_MINUS_DST_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA GL_DST_ALPHA GL_ONE_MINUS_DST_ALPHA GLES2.0:GL_CONSTANT_COLOR GLES2.0:GL_ONE_MINUS_CONSTANT_COLOR GLES2.0:GL_CONSTANT_ALPHA GLES2.0:GL_ONE_MINUS_CONSTANT_ALPHA +checkparam srcAlpha GL_ZERO GL_ONE GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_DST_COLOR GL_ONE_MINUS_DST_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA GL_DST_ALPHA GL_ONE_MINUS_DST_ALPHA GL_SRC_ALPHA_SATURATE GLES2.0:GL_CONSTANT_COLOR GLES2.0:GL_ONE_MINUS_CONSTANT_COLOR GLES2.0:GL_CONSTANT_ALPHA GLES2.0:GL_ONE_MINUS_CONSTANT_ALPHA +checkparam dstAlpha GL_ZERO GL_ONE GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_DST_COLOR GL_ONE_MINUS_DST_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA GL_DST_ALPHA GL_ONE_MINUS_DST_ALPHA GLES2.0:GL_CONSTANT_COLOR GLES2.0:GL_ONE_MINUS_CONSTANT_COLOR GLES2.0:GL_CONSTANT_ALPHA GLES2.0:GL_ONE_MINUS_CONSTANT_ALPHA +category GLES1.1:OES_blend_func_separate GLES2.0 + +name PointParameterf +return void +param pname GLenum +checkparam pname GL_POINT_SIZE_MIN GL_POINT_SIZE_MAX GL_POINT_FADE_THRESHOLD_SIZE +param param GLfloat +category 1.4 GLES1.1 + +name PointParameterfv +return void +param pname GLenum +checkparam pname GL_POINT_SIZE_MIN GL_POINT_SIZE_MAX GL_POINT_FADE_THRESHOLD_SIZE GL_POINT_DISTANCE_ATTENUATION +param params const GLfloat * +dependentvector params 1 pname GL_POINT_SIZE_MIN GL_POINT_SIZE_MAX GL_POINT_FADE_THRESHOLD_SIZE +dependentvector params 3 pname GL_POINT_DISTANCE_ATTENUATION +category 1.4 GLES1.1 + +name PointParameterx +return void +param pname GLenum +checkparam pname GL_POINT_SIZE_MIN GL_POINT_SIZE_MAX GL_POINT_FADE_THRESHOLD_SIZE +param param GLfixed +convertalias PointParameterf +convertparams GLfloat param +category GLES1.1 GLES1.1:OES_fixed_point + +name PointParameterxv +return void +param pname GLenum +checkparam pname GL_POINT_SIZE_MIN GL_POINT_SIZE_MAX GL_POINT_FADE_THRESHOLD_SIZE GL_POINT_DISTANCE_ATTENUATION +param params const GLfixed * +dependentvector params 1 pname GL_POINT_SIZE_MIN GL_POINT_SIZE_MAX GL_POINT_FADE_THRESHOLD_SIZE +dependentvector params 3 pname GL_POINT_DISTANCE_ATTENUATION +convertalias PointParameterfv +convertparams GLfloat params +category GLES1.1 GLES1.1:OES_fixed_point + +name VertexAttrib1f +aliasprefix _vbo_ +return void +param index GLuint +param x GLfloat +category GLES2.0 + +name VertexAttrib2f +aliasprefix _vbo_ +return void +param index GLuint +param x GLfloat +param y GLfloat +category GLES2.0 + +name VertexAttrib3f +aliasprefix _vbo_ +return void +param index GLuint +param x GLfloat +param y GLfloat +param z GLfloat +category GLES2.0 + +name VertexAttrib4f +aliasprefix _vbo_ +return void +param index GLuint +param x GLfloat +param y GLfloat +param z GLfloat +param w GLfloat +category GLES2.0 + +name VertexAttrib1fv +aliasprefix _vbo_ +return void +param index GLuint +param v const GLfloat * +vector v 1 +category GLES2.0 + +name VertexAttrib2fv +aliasprefix _vbo_ +return void +param index GLuint +param v const GLfloat * +vector v 2 +category GLES2.0 + +name VertexAttrib3fv +aliasprefix _vbo_ +return void +param index GLuint +param v const GLfloat * +vector v 3 +category GLES2.0 + +name VertexAttrib4fv +aliasprefix _vbo_ +return void +param index GLuint +param v const GLfloat * +vector v 4 +category GLES2.0 + +name VertexAttribPointer +alias VertexAttribPointerARB +return void +param index GLuint +param size GLint +checkparam size /GL_INVALID_VALUE 1 2 3 4 +param type GLenum +checkparam type /GL_INVALID_VALUE GL_BYTE GL_UNSIGNED_BYTE GL_SHORT GL_UNSIGNED_SHORT GL_FIXED GL_FLOAT +param normalized GLboolean +param stride GLsizei +param pointer const GLvoid * +# OES_vertex_half_float +checkparam type GL_HALF_FLOAT_OES +# OES_vertex_type_10_10_10_2 +checkdependentparam type GL_UNSIGNED_INT_10_10_10_2_OES size /GL_INVALID_VALUE 3 4 +checkdependentparam type GL_INT_10_10_10_2_OES size /GL_INVALID_VALUE 3 4 +category GLES2.0 + +name EnableVertexAttribArray +alias EnableVertexAttribArrayARB +return void +param index GLuint +category GLES2.0 + +name DisableVertexAttribArray +alias DisableVertexAttribArrayARB +return void +param index GLuint +category GLES2.0 + +name IsProgram +return GLboolean +param program GLuint +props get +category GLES2.0 + +name GetProgramiv +return void +param program GLuint +param pname GLenum +checkparam pname GL_DELETE_STATUS GL_LINK_STATUS GL_VALIDATE_STATUS GL_INFO_LOG_LENGTH GL_ATTACHED_SHADERS GL_ACTIVE_ATTRIBUTES GL_ACTIVE_ATTRIBUTE_MAX_LENGTH GL_ACTIVE_UNIFORMS GL_ACTIVE_UNIFORM_MAX_LENGTH +param params GLint * +props get +# OES_get_program_binary +checkparam pname GL_PROGRAM_BINARY_LENGTH_OES +category GLES2.0 + +name GetVertexAttribfv +alias GetVertexAttribfvARB +return void +param index GLuint +param pname GLenum +param params GLfloat * +dependentvector params 1 pname GL_VERTEX_ATTRIB_ARRAY_ENABLED GL_VERTEX_ATTRIB_ARRAY_SIZE GL_VERTEX_ATTRIB_ARRAY_STRIDE GL_VERTEX_ATTRIB_ARRAY_TYPE GL_VERTEX_ATTRIB_ARRAY_NORMALIZED GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING +dependentvector params 16? pname GL_CURRENT_VERTEX_ATTRIB +props get +category GLES2.0 + +name GetVertexAttribiv +alias GetVertexAttribivARB +return void +param index GLuint +param pname GLenum +param params GLint * +dependentvector params 1 pname GL_VERTEX_ATTRIB_ARRAY_ENABLED GL_VERTEX_ATTRIB_ARRAY_SIZE GL_VERTEX_ATTRIB_ARRAY_STRIDE GL_VERTEX_ATTRIB_ARRAY_TYPE GL_VERTEX_ATTRIB_ARRAY_NORMALIZED GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING GL_CURRENT_VERTEX_ATTRIB +props get +category GLES2.0 + +name GetVertexAttribPointerv +alias GetVertexAttribPointervARB +return void +param index GLuint +param pname GLenum +checkparam pname GL_VERTEX_ATTRIB_ARRAY_POINTER +param pointer GLvoid ** +props get +category GLES2.0 + +name GetBufferPointerv +alias GetBufferPointervARB +return void +param target GLenum +checkparam target GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER +param pname GLenum +checkparam pname GL_BUFFER_MAP_POINTER_OES +param params GLvoid ** +props get +category GLES1.1:OES_mapbuffer GLES2.0:OES_mapbuffer + +name MapBuffer +alias MapBufferARB +return void * +param target GLenum +checkparam target GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER +param access GLenum +checkparam access GL_WRITE_ONLY_OES +props get +category GLES1.1:OES_mapbuffer GLES2.0:OES_mapbuffer + +name UnmapBuffer +alias UnmapBufferARB +return GLboolean +param target GLenum +checkparam target GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER +props get +category GLES1.1:OES_mapbuffer GLES2.0:OES_mapbuffer + +name BindBuffer +alias BindBufferARB +return void +param target GLenum +checkparam target GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER +param buffer GLuint +category 1.5 GLES1.1 GLES2.0 + +name BufferData +alias BufferDataARB +return void +param target GLenum +checkparam target GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER +param size GLsizeiptr +param data const GLvoid * +param usage GLenum +checkparam usage GL_STATIC_DRAW GL_DYNAMIC_DRAW GLES2.0:GL_STREAM_DRAW +category GLES1.1 GLES2.0 + +name BufferSubData +alias BufferSubDataARB +return void +param target GLenum +checkparam target GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER +param offset GLintptr +param size GLsizeiptr +param data const GLvoid * +category 1.5 GLES1.1 GLES2.0 + +name DeleteBuffers +return void +param n GLsizei +param buffer const GLuint * +category 1.5 GLES1.1 GLES2.0 +alias DeleteBuffersARB + +name GenBuffers +alias GenBuffersARB +return void +param n GLsizei +param buffer GLuint * +props get +category 1.5 GLES1.1 GLES2.0 + +name GetBufferParameteriv +alias GetBufferParameterivARB +return void +param target GLenum +checkparam target GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER +param pname GLenum +checkparam pname GL_BUFFER_SIZE GL_BUFFER_USAGE +param params GLint * +props get +# OES_mapbuffer +checkparam pname GL_BUFFER_ACCESS_OES GL_BUFFER_MAPPED_OES +category 1.5 GLES1.1 GLES2.0 + +name IsBuffer +alias IsBufferARB +return GLboolean +param buffer GLuint +paramlist buffer 0 +props get +category 1.5 GLES1.1 GLES2.0 + +name CreateShader +return GLuint +param type GLenum +checkparam type GL_VERTEX_SHADER GL_FRAGMENT_SHADER +category GLES2.0 + +name ShaderSource +alias ShaderSourceARB +return void +param shader GLuint +param count GLsizei +param string const GLchar ** +param length const int * +category GLES2.0 + +name CompileShader +alias CompileShaderARB +return void +param shader GLuint +category GLES2.0 + +name ReleaseShaderCompiler +return void +category GLES2.0 + +name DeleteShader +return void +param shader GLuint +category GLES2.0 + +name ShaderBinary +return void +param n GLsizei +param shaders const GLuint * +param binaryformat GLenum +param binary const GLvoid * +param length GLsizei +category GLES2.0 + +name CreateProgram +return GLuint +category GLES2.0 + +name AttachShader +return void +param program GLuint +param shader GLuint +category GLES2.0 + +name DetachShader +return void +param program GLuint +param shader GLuint +category GLES2.0 + +name LinkProgram +alias LinkProgramARB +return void +param program GLuint +category GLES2.0 + +name UseProgram +alias UseProgramObjectARB +return void +param program GLuint +category GLES2.0 + +name DeleteProgram +return void +param program GLuint +category GLES2.0 + +name GetActiveAttrib +alias GetActiveAttribARB +return void +param program GLuint +param index GLuint +param bufSize GLsizei +param length GLsizei * +param size GLint * +param type GLenum * +param name GLchar * +props get +category GLES2.0 + +name GetAttribLocation +alias GetAttribLocationARB +return GLint +param program GLuint +param name const char * +props get +category GLES2.0 + +name BindAttribLocation +alias BindAttribLocationARB +return void +param program GLuint +param index GLuint +param name const char * +category GLES2.0 + +name GetUniformLocation +alias GetUniformLocationARB +return GLint +param program GLuint +param name const char * +props get +category GLES2.0 + +name GetActiveUniform +alias GetActiveUniformARB +return void +param program GLuint +param index GLuint +param bufSize GLsizei +param length GLsizei * +param size GLint * +param type GLenum * +param name GLchar * +props get +category GLES2.0 + +name Uniform1f +alias Uniform1fARB +return void +param location GLint +param v0 GLfloat +category GLES2.0 + +name Uniform2f +alias Uniform2fARB +return void +return void +param location GLint +param v0 GLfloat +param v1 GLfloat +category GLES2.0 + +name Uniform3f +alias Uniform3fARB +return void +return void +param location GLint +param v0 GLfloat +param v1 GLfloat +param v2 GLfloat +category GLES2.0 + +name Uniform4f +alias Uniform4fARB +return void +return void +param location GLint +param v0 GLfloat +param v1 GLfloat +param v2 GLfloat +param v3 GLfloat +category GLES2.0 + +name Uniform1i +alias Uniform1iARB +return void +param location GLint +param v0 GLint +category GLES2.0 + +name Uniform2i +alias Uniform2iARB +return void +param location GLint +param v0 GLint +param v1 GLint +category GLES2.0 + +name Uniform3i +alias Uniform3iARB +return void +param location GLint +param v0 GLint +param v1 GLint +param v2 GLint +category GLES2.0 + +name Uniform4i +alias Uniform4iARB +return void +param location GLint +param v0 GLint +param v1 GLint +param v2 GLint +param v3 GLint +category GLES2.0 + +name Uniform1fv +alias Uniform1fvARB +return void +param location GLint +param count GLsizei +param values const GLfloat * +category GLES2.0 + +name Uniform2fv +alias Uniform2fvARB +return void +param location GLint +param count GLsizei +param values const GLfloat * +category GLES2.0 + +name Uniform3fv +alias Uniform3fvARB +return void +param location GLint +param count GLsizei +param values const GLfloat * +category GLES2.0 + +name Uniform4fv +alias Uniform4fvARB +return void +param location GLint +param count GLsizei +param values const GLfloat * +category GLES2.0 + +name Uniform1iv +alias Uniform1ivARB +return void +param location GLint +param count GLsizei +param values const GLint * +category GLES2.0 + +name Uniform2iv +alias Uniform2ivARB +return void +param location GLint +param count GLsizei +param values const GLint * +category GLES2.0 + +name Uniform3iv +alias Uniform3ivARB +return void +param location GLint +param count GLsizei +param values const GLint * +category GLES2.0 + +name Uniform4iv +alias Uniform4ivARB +return void +param location GLint +param count GLsizei +param values const GLint * +category GLES2.0 + +name UniformMatrix2fv +alias UniformMatrix2fvARB +return void +param location GLint +param count GLsizei +param transpose GLboolean +param value const GLfloat * +category GLES2.0 + +name UniformMatrix3fv +alias UniformMatrix3fvARB +return void +param location GLint +param count GLsizei +param transpose GLboolean +param value const GLfloat * +category GLES2.0 + +name UniformMatrix4fv +alias UniformMatrix4fvARB +return void +param location GLint +param count GLsizei +param transpose GLboolean +param value const GLfloat * +category GLES2.0 + +name ValidateProgram +alias ValidateProgramARB +return void +param program GLuint +category GLES2.0 + +name GenerateMipmap +alias GenerateMipmapEXT +return void +param target GLenum +checkparam target GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP +# OES_texture_cube_map +checkparam target GLES1.1:GL_TEXTURE_CUBE_MAP_OES +category GLES1.1:OES_framebuffer_object GLES2.0 + + +name BindFramebuffer +alias BindFramebufferEXT +return void +param target GLenum +checkparam target GLES1.1:GL_FRAMEBUFFER_OES GLES2.0:GL_FRAMEBUFFER +param framebuffer GLuint +category GLES1.1:OES_framebuffer_object GLES2.0 + +name DeleteFramebuffers +alias DeleteFramebuffersEXT +return void +param n GLsizei +param framebuffers const GLuint * +category GLES2.0 GLES1.1:OES_framebuffer_object + +name GenFramebuffers +alias GenFramebuffersEXT +return void +param n GLsizei +param ids GLuint * +category GLES2.0 GLES1.1:OES_framebuffer_object + +name BindRenderbuffer +alias BindRenderbufferEXT +return void +param target GLenum +checkparam target GLES1.1:GL_RENDERBUFFER_OES GLES2.0:GL_RENDERBUFFER +param renderbuffer GLuint +category GLES1.1:OES_framebuffer_object GLES2.0 + +name DeleteRenderbuffers +alias DeleteRenderbuffersEXT +return void +param n GLsizei +param renderbuffers const GLuint * +category GLES2.0 GLES1.1:OES_framebuffer_object + +name GenRenderbuffers +alias GenRenderbuffersEXT +return void +param n GLsizei +param renderbuffers GLuint * +category GLES2.0 GLES1.1:OES_framebuffer_object + +name RenderbufferStorage +alias RenderbufferStorageEXT +return void +param target GLenum +checkparam target GLES1.1:GL_RENDERBUFFER_OES GLES2.0:GL_RENDERBUFFER +param internalFormat GLenum +checkparam internalFormat GL_DEPTH_COMPONENT16_OES GL_RGBA4_OES GL_RGB5_A1_OES GL_RGB565_OES +param width GLsizei +param height GLsizei +# OES_depth24 +checkparam internalFormat GL_DEPTH_COMPONENT24_OES +# OES_depth32 +checkparam internalFormat GL_DEPTH_COMPONENT32_OES +# OES_rgb8_rgba8 +checkparam internalFormat GL_RGB8_OES GL_RGBA8_OES +# OES_stencil1 +checkparam internalFormat GL_STENCIL_INDEX1_OES +# OES_stencil4 +checkparam internalFormat GL_STENCIL_INDEX4_OES +# OES_stencil8 +checkparam internalFormat GL_STENCIL_INDEX8_OES +# OES_packed_depth_stencil - not in glext.h yet +checkparam internalFormat GLES2.0:GL_DEPTH24_STENCIL8_OES +category GLES1.1:OES_framebuffer_object GLES2.0 + +name FramebufferRenderbuffer +alias FramebufferRenderbufferEXT +return void +param target GLenum +checkparam target GLES1.1:GL_FRAMEBUFFER_OES GLES2.0:GL_FRAMEBUFFER +param attachment GLenum +checkparam attachment GLES1.1:GL_COLOR_ATTACHMENT0_OES GLES1.1:GL_DEPTH_ATTACHMENT_OES GLES1.1:GL_STENCIL_ATTACHMENT_OES +checkparam attachment GLES2.0:GL_COLOR_ATTACHMENT0 GLES2.0:GL_DEPTH_ATTACHMENT GLES2.0:GL_STENCIL_ATTACHMENT +param renderbuffertarget GLenum +checkparam renderbuffertarget GLES1.1:GL_RENDERBUFFER_OES GLES2.0:GL_RENDERBUFFER +param renderbuffer GLuint +category GLES1.1:OES_framebuffer_object GLES2.0 + +name FramebufferTexture2D +alias FramebufferTexture2DEXT +return void +param target GLenum +checkparam target GLES1.1:GL_FRAMEBUFFER_OES GLES2.0:GL_FRAMEBUFFER +param attachment GLenum +checkparam attachment GLES1.1:GL_COLOR_ATTACHMENT0_OES GLES1.1:GL_DEPTH_ATTACHMENT_OES GLES1.1:GL_STENCIL_ATTACHMENT_OES +checkparam attachment GLES2.0:GL_COLOR_ATTACHMENT0 GLES2.0:GL_DEPTH_ATTACHMENT GLES2.0:GL_STENCIL_ATTACHMENT +param textarget GLenum +checkparam textarget /GL_INVALID_OPERATION GL_TEXTURE_2D GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_POSITIVE_Z GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_X GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GLES2.0:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z +param texture GLuint +param level GLint +# OES_texture_cube_map +checkparam textarget GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES GLES1.1:GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES +# According to the base specification, "level" must be 0. But +# extension GL_OES_fbo_render_mipmap lifts that restriction, +# so no restriction is placed here. +category GLES1.1:OES_framebuffer_object GLES2.0 + +name FramebufferTexture3D +alias FramebufferTexture3DEXT +return void +param target GLenum +param attachment GLenum +param textarget GLenum +param texture GLuint +param level GLint +param zoffset GLint +category GLES2.0:OES_texture_3D + +name CheckFramebufferStatus +alias CheckFramebufferStatusEXT +return GLenum +param target GLenum +checkparam target GLES1.1:GL_FRAMEBUFFER_OES GLES2.0:GL_FRAMEBUFFER +props get +category GLES1.1:OES_framebuffer_object GLES2.0 + +# One for GLES1.1 extension, one for GLES2.0 core +name GetFramebufferAttachmentParameteriv +alias GetFramebufferAttachmentParameterivEXT +return void +param target GLenum +checkparam target GLES1.1:GL_FRAMEBUFFER_OES GLES2.0:GL_FRAMEBUFFER +param attachment GLenum +param pname GLenum +param params GLint * +props get +dependentvector params 1 pname GLES1.1:GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES GLES1.1:GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES GLES1.1:GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES GLES1.1:GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES +dependentvector params 1 pname GLES2.0:GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE GLES2.0:GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME GLES2.0:GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL GLES2.0:GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE +# OES_texture3D +dependentvector params 1 pname GLES2.0:GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES +category GLES1.1:OES_framebuffer_object GLES2.0 + +name GetRenderbufferParameteriv +alias GetRenderbufferParameterivEXT +return void +param target GLenum +checkparam target GLES1.1:GL_RENDERBUFFER_OES GLES2.0:GL_RENDERBUFFER +param pname GLenum +param params GLint * +props get +dependentvector params 1 pname GLES1.1:GL_RENDERBUFFER_WIDTH_OES GLES1.1:GL_RENDERBUFFER_HEIGHT_OES GLES1.1:GL_RENDERBUFFER_INTERNAL_FORMAT_OES GLES1.1:GL_RENDERBUFFER_RED_SIZE_OES GLES1.1:GL_RENDERBUFFER_GREEN_SIZE_OES GLES1.1:GL_RENDERBUFFER_BLUE_SIZE_OES GLES1.1:GL_RENDERBUFFER_ALPHA_SIZE_OES GLES1.1:GL_RENDERBUFFER_DEPTH_SIZE_OES GLES1.1:GL_RENDERBUFFER_STENCIL_SIZE_OES +dependentvector params 1 pname GLES2.0:GL_RENDERBUFFER_WIDTH GLES2.0:GL_RENDERBUFFER_HEIGHT GLES2.0:GL_RENDERBUFFER_INTERNAL_FORMAT GLES2.0:GL_RENDERBUFFER_RED_SIZE GLES2.0:GL_RENDERBUFFER_GREEN_SIZE GLES2.0:GL_RENDERBUFFER_BLUE_SIZE GLES2.0:GL_RENDERBUFFER_ALPHA_SIZE GLES2.0:GL_RENDERBUFFER_DEPTH_SIZE GLES2.0:GL_RENDERBUFFER_STENCIL_SIZE +category GLES1.1:OES_framebuffer_object GLES2.0 + +name IsRenderbuffer +alias IsRenderbufferEXT +return GLboolean +param renderbuffer GLuint +props get +category GLES2.0 GLES1.1:OES_framebuffer_object + +name IsFramebuffer +alias IsFramebufferEXT +return GLboolean +param framebuffer GLuint +props get +category GLES2.0 GLES1.1:OES_framebuffer_object + +name IsShader +return GLboolean +param shader GLuint +props get +category GLES2.0 + +name GetShaderiv +return void +param shader GLuint +param pname GLenum +param params GLint * +props get +checkparam pname GL_SHADER_TYPE GL_COMPILE_STATUS GL_DELETE_STATUS GL_INFO_LOG_LENGTH GL_SHADER_SOURCE_LENGTH +category GLES2.0 + +name GetAttachedShaders +return void +param program GLuint +param maxCount GLsizei +param count GLsizei * +param shaders GLuint * +props get +category GLES2.0 + +name GetShaderInfoLog +return void +param shader GLuint +param bufSize GLsizei +param length GLsizei * +param infoLog GLchar * +props get +category GLES2.0 + +name GetProgramInfoLog +return void +param program GLuint +param bufSize GLsizei +param length GLsizei * +param infoLog GLchar * +props get +category GLES2.0 + +name GetShaderSource +alias GetShaderSourceARB +return void +param shader GLuint +param bufSize GLsizei +param length GLsizei * +param source GLchar * +props get +category GLES2.0 + +name GetShaderPrecisionFormat +return void +param shadertype GLenum +param precisiontype GLenum +param range GLint * +param precision GLint * +props get +checkparam shadertype GL_VERTEX_SHADER GL_FRAGMENT_SHADER +checkparam precisiontype GL_LOW_FLOAT GL_MEDIUM_FLOAT GL_HIGH_FLOAT GL_LOW_INT GL_MEDIUM_INT GL_HIGH_INT +category GLES2.0 + +name GetUniformfv +alias GetUniformfvARB +return void +param program GLuint +param location GLint +param params GLfloat * +props get +category GLES2.0 + +name GetUniformiv +alias GetUniformivARB +return void +param program GLuint +param location GLint +param params GLint * +props get +category GLES2.0 + +name QueryMatrixx +return GLbitfield +param mantissa GLfixed * +vector mantissa 16 +param exponent GLint * +vector exponent 16 +props get +category GLES1.1:OES_query_matrix + +# OES_draw_texture doesn't appear to be supported in Mesa yet +name DrawTexf +return void +param x GLfloat +param y GLfloat +param z GLfloat +param w GLfloat +param h GLfloat +category GLES1.1:OES_draw_texture + +name DrawTexi +return void +param x GLint +param y GLint +param z GLint +param w GLint +param h GLint +category GLES1.1:OES_draw_texture + +name DrawTexs +return void +param x GLshort +param y GLshort +param z GLshort +param w GLshort +param h GLshort +category GLES1.1:OES_draw_texture + +name DrawTexx +return void +param x GLfixed +param y GLfixed +param z GLfixed +param w GLfixed +param h GLfixed +convertalias DrawTexf +convertparams GLfloat x y z w h +category GLES1.1:OES_draw_texture + +name DrawTexfv +return void +param coords const GLfloat * +vector coords 5 +category GLES1.1:OES_draw_texture + +name DrawTexiv +return void +param coords const GLint * +vector coords 5 +category GLES1.1:OES_draw_texture + +name DrawTexsv +return void +param coords const GLshort * +vector coords 5 +category GLES1.1:OES_draw_texture + +name DrawTexxv +return void +param coords const GLfixed * +vector coords 5 +convertalias DrawTexfv +convertparams GLfloat coords +category GLES1.1:OES_draw_texture + +name EGLImageTargetTexture2D +alias EGLImageTargetTexture2DOES +return void +param target GLenum +param image GLeglImageOES +checkparam target GL_TEXTURE_2D +category GLES1.1:OES_EGL_image GLES2.0:OES_EGL_image + +name EGLImageTargetRenderbufferStorage +alias EGLImageTargetRenderbufferStorageOES +return void +param target GLenum +param image GLeglImageOES +checkparam target GLES1.1:GL_RENDERBUFFER_OES GLES2.0:GL_RENDERBUFFER +category GLES1.1:OES_EGL_image GLES2.0:OES_EGL_image + +# We don't support OES_get_program_binary yet either +#name GetProgramBinary +#return void +#param program GLuint +#param bufSize GLsizei +#param length GLsizei * +#param binaryFormat GLenum * +#param binary GLvoid * +#category GLES2.0:OES_get_program_binary +# +#name ProgramBinary +#return void +#param program GLuint +#param binaryFormat GLenum +#param binary const GLvoid * +#param length GLint +#category GLES2.0:OES_get_program_binary diff --git a/src/mesa/es/main/apiutil.py b/src/mesa/es/main/apiutil.py new file mode 100644 index 0000000000..7fb1afc3a8 --- /dev/null +++ b/src/mesa/es/main/apiutil.py @@ -0,0 +1,1117 @@ + +# apiutil.py +# +# This file defines a bunch of utility functions for OpenGL API code +# generation. + +import sys, string, re + + +#====================================================================== + +def CopyrightC( ): + print """/* Copyright (c) 2001, Stanford University + All rights reserved. + + See the file LICENSE.txt for information on redistributing this software. */ + """ + +def CopyrightDef( ): + print """; Copyright (c) 2001, Stanford University + ; All rights reserved. + ; + ; See the file LICENSE.txt for information on redistributing this software. + """ + + +#====================================================================== + +class APIFunction: + """Class to represent a GL API function (name, return type, + parameters, etc).""" + def __init__(self): + self.name = '' + self.returnType = '' + self.category = '' + self.categories = [] + self.offset = -1 + self.alias = '' + self.vectoralias = '' + self.convertalias = '' + self.aliasprefix = '' + self.params = [] + self.paramlist = [] + self.paramvec = [] + self.paramaction = [] + self.paramprop = [] + self.paramset = [] + self.props = [] + self.chromium = [] + +def FindParamIndex(params, paramName): + """Given a function record, find the index of a named parameter""" + for i in range (len(params)): + if paramName == params[i][0]: + return i + # If we get here, there was no such parameter + return None + +def SetTupleIndex(tuple, index, value): + t = () + for i in range(len(tuple)): + if i == index: + t += (value,) + else: + t += (tuple[i],) + return t + +def VersionSpecificValues(category, values): + selectedValues = [] + for value in values: + # Version-specific values are prefixed with the version + # number, e.g. GLES1.0:GL_TEXTURE_CUBE_MAP_OES + splitValue = value.split(":") + if len(splitValue) == 2: + if category != None and splitValue[0] != category: + # Don't want this one. + continue + else: + selectedValues.append(splitValue[1]) + else: + selectedValues.append(value) + return selectedValues + +def ProcessSpecFile(filename, userFunc, category = None): + """Open the named API spec file and call userFunc(record, category) for each record + processed.""" + specFile = open(filename, "r") + if not specFile: + print >>sys.stderr, "Error: couldn't open %s file!" % filename + sys.exit() + + record = APIFunction() + + for line in specFile.readlines(): + + # split line into tokens + tokens = string.split(line) + + if len(tokens) > 0 and line[0] != '#': + + if tokens[0] == 'name': + if record.name != '': + # process the old function now + userFunc(record, category) + # reset the record + record = APIFunction() + + record.name = tokens[1] + + elif tokens[0] == 'return': + record.returnType = string.join(tokens[1:], ' ') + + elif tokens[0] == 'param': + name = tokens[1] + type = string.join(tokens[2:], ' ') + vecSize = 0 + record.params.append((name, type, vecSize, None, [], None)) + + elif tokens[0] == 'paramprop': + name = tokens[1] + str = tokens[2:] + enums = [] + for i in range(len(str)): + enums.append(str[i]) + record.paramprop.append((name, enums)) + + elif tokens[0] == 'paramlist': + name = tokens[1] + str = tokens[2:] + list = [] + for i in range(len(str)): + list.append(str[i]) + record.paramlist.append((name,list)) + + elif tokens[0] == 'paramvec': + name = tokens[1] + str = tokens[2:] + vec = [] + for i in range(len(str)): + vec.append(str[i]) + record.paramvec.append((name,vec)) + + elif tokens[0] == 'paramset': + line = tokens[1:] + result = [] + for i in range(len(line)): + tset = line[i] + if tset == '[': + nlist = [] + elif tset == ']': + result.append(nlist) + nlist = [] + else: + nlist.append(tset) + if result != []: + record.paramset.append(result) + + elif tokens[0] == 'paramaction': + name = tokens[1] + str = tokens[2:] + list = [] + for i in range(len(str)): + list.append(str[i]) + record.paramaction.append((name,list)) + + elif tokens[0] == 'category': + record.category = tokens[1] + record.categories = tokens[1:] + + elif tokens[0] == 'offset': + if tokens[1] == '?': + record.offset = -2 + else: + record.offset = int(tokens[1]) + + elif tokens[0] == 'alias': + record.alias = tokens[1] + + elif tokens[0] == 'vectoralias': + record.vectoralias = tokens[1] + + elif tokens[0] == 'convertalias': + record.convertalias = tokens[1] + + elif tokens[0] == 'aliasprefix': + record.aliasprefix = tokens[1] + + elif tokens[0] == 'props': + record.props = tokens[1:] + + elif tokens[0] == 'chromium': + record.chromium = tokens[1:] + + elif tokens[0] == 'vector': + vecName = tokens[1] + vecSize = int(tokens[2]) + index = FindParamIndex(record.params, vecName) + if index == None: + print >>sys.stderr, "Can't find vector '%s' for function '%s'" % (vecName, record.name) + # Adjust just the vector size + record.params[index] = SetTupleIndex(record.params[index], 2, vecSize) + + elif tokens[0] == 'dependentvector': + dependentVecName = tokens[1] + # the dependentVecSize may be an int + # expression + dependentVecSize = tokens[2] + controllingParam = tokens[3] + controllingParamIndex = FindParamIndex(record.params, controllingParam) + if controllingParamIndex == None: + print >>sys.stderr, "Can't find controlling param '%s' for function '%s'" % (controllingParam, record.name) + controllingValues = tokens[4:] + + # Remember that all of the controllingValues + # are valid values for the controllingParam. + # We may be duplicating controllingValues + # here (i.e. if we get them from different + # places); we'll sort them out later. + validValues = record.params[controllingParamIndex][4] + for value in VersionSpecificValues(category, controllingValues): + validValues.append((value, dependentVecSize, dependentVecName, [], None, None)) + # Don't need to reassign validValues back + # to the tuple - it's a shallow pointer, + # so the tuple is already modified. + # (And attempting to do so would produce an + # error anyway.) + + elif tokens[0] == "dependentnovalueconvert": + paramName = tokens[1] + controllingParamName = tokens[2] + controllingValues = tokens[3:] + + controllingParamIndex = FindParamIndex(record.params, controllingParamName) + if controllingParamIndex == None: + print >>sys.stderr, "Can't find controlling param '%s' for function '%s'" % (controllingParamName, record.name) + + validValues = record.params[controllingParamIndex][4] + for value in VersionSpecificValues(category, controllingValues): + validValues.append((value, None, None, [], None, "noconvert")) + + + + elif tokens[0] == 'checkparam': + paramName = tokens[1] + values = tokens[2:] + paramIndex = FindParamIndex(record.params, paramName) + if paramIndex == None: + print >>sys.stderr, "Can't find checked param '%s' for function '%s'" % (paramName, record.name) + + errorCode = None + + # We may be duplicating valid values here; + # just add all values to the existing + # record, and we'll prune out duplicates + # later + validValues = record.params[paramIndex][4] + + # A /GL_* value represents an error, not + # a real value. Look through the values + # and only append the non-error values. + for v in VersionSpecificValues(category, values): + if v[0] == "/": + errorCode = v[1:] + else: + validValues.append((v, None, None, [], errorCode, None)) + # Don't need to reassign validValues back + # to the parameter tuple - it's a shallow pointer, + # so the tuple is already modified. + # (And attempting to do so would produce an + # error anyway.) + + elif tokens[0] == 'checkdependentparam': + paramName = tokens[1] + controllingValue = tokens[2] + dependentParamName = tokens[3] + validDependentValues = tokens[4:] + errorCode = None + + # A /GL_* value represents an error, not + # a real value. Look through the values + # and only append the non-error values. + validDependentValues = [] + for v in tokens[4:]: + if v[0] == "/": + errorCode = v[1:] + else: + validDependentValues.append(v) + + paramIndex = FindParamIndex(record.params, paramName) + if paramIndex == None: + print >>sys.stderr, "Can't find dependent param '%s' for function '%s'" % (paramName, record.name) + + validValues = record.params[paramIndex][4] + # We may be duplicating valid values here; + # we'll sort them out later. Avoid + # adding a controlling value record + # at all if there are no values + # in the list of values (so that + # controlling values with only + # version-specific values listed + # end up as version-specific + # themselves). + versionSpecificValues = VersionSpecificValues(category, validDependentValues) + if versionSpecificValues != []: + validValues.append((controllingValue, None, dependentParamName, versionSpecificValues, errorCode, None)) + # Don't need to reassign validValues back + # to the tuple - it's a shallow pointer, + # so the tuple is already modified. + # (And attempting to do so would produce an + # error anyway.) + + elif tokens[0] == 'convertparams': + convertToType = tokens[1] + # Replace the conversion type in each named + # parameter + for paramName in tokens[2:]: + paramIndex = FindParamIndex(record.params, paramName) + if paramIndex == None: + print >>sys.stderr, "Can't find converted param '%s' for function '%s'" % (paramName, record.name) + # Tuples don't support item assignment, + # so to replace scalar values in a + # tuple, you have to reassign the + # whole friggin' thing. + record.params[paramIndex] = SetTupleIndex(record.params[paramIndex], 3, convertToType) + + else: + print >>sys.stderr, 'Invalid token %s after function %s' % (tokens[0], record.name) + #endif + #endif + #endfor + + # Call the user function for the last record, if we still have one + # lying around nearly finished + if record.name != '': + # process the function now + userFunc(record, category) + specFile.close() +#enddef + + +# Dictionary [name] of APIFunction: +__FunctionDict = {} + +# Dictionary [name] of name +__VectorVersion = {} + +# Reverse mapping of function name aliases +__ReverseAliases = {} + +def CheckCategories(category, categories): + for c in categories: + if category == c.split(":")[0]: + return 1 + + return 0 + +def AddFunction(record, category): + # If there is a category, we only want records from that category. + # Note that a category may be in the form "GLES1.1:OES_extension_name", + # which means that the function is supported as an extension in + # GLES1.1... + if category and not CheckCategories(category, record.categories): + return + + # Don't allow duplicates + if __FunctionDict.has_key(record.name): + print >>sys.stderr, "Duplicate record name '%s' ignored" % record.name + return + + # Clean up a bit. We collected valid values for parameters + # on the fly; it's quite possible that there are duplicates. + # If there are, collect them together. + # + # We're also going to keep track of all the dependent values + # that can show up for a parameter; the number of GLenum values + # (identified with a prefixed "GL_") affects how parameter + # value conversion happens, as GLenum values are not scaled + # when converted to or from GLfixed values, the way integer + # and floating point values are. + paramValueConversion = {} + + for i in range(len(record.params)): + foundValidValues = {} + + (name, type, maxVecSize, convertToType, validValues, valueConversion) = record.params[i] + for (controllingValue, vecSize, dependentParamName, dependentValues, errorCode, valueConvert) in validValues: + # Keep track of the maximum vector size for the + # *dependent* parameter, not for the controlling + # parameter. Note that the dependent parameter + # may be an expression - in this case, don't + # consider it. + if dependentParamName != None and vecSize != None and vecSize.isdigit(): + dependentParamIndex = FindParamIndex(record.params, dependentParamName) + if dependentParamIndex == None: + print >>sys.stderr, "Couldn't find dependent parameter '%s' of function '%s'" % (dependentParamName, record.name) + (dName, dType, dMaxVecSize, dConvert, dValid, dValueConversion) = record.params[dependentParamIndex] + if dMaxVecSize == None or int(vecSize) > dMaxVecSize: + dMaxVecSize = int(vecSize) + record.params[dependentParamIndex] = (dName, dType, dMaxVecSize, dConvert, dValid, dValueConversion) + + # Make sure an entry for the controlling value + # exists in the foundValidValues dictionary + if controllingValue in foundValidValues: + # The value was already there. Merge the + # two together, giving errors if needed. + (oldControllingValue, oldVecSize, oldDependentParamName, oldDependentValues, oldErrorCode, oldValueConvert) = foundValidValues[controllingValue] + + # Make sure the vector sizes are compatible; + # either one should be None (and be + # overridden by the other), or they should + # match exactly. If one is not an + # integer (this can happen if the + # dependent value is an integer expression, + # which occurs a couple of times), don't + # use it. + if oldVecSize == None: + oldVecSize = vecSize + elif vecSize != None and vecSize != oldVecSize: + print >>sys.stderr, "Found two different vector sizes (%s and %s) for the same controlling value '%s' of the same parameter '%s' of function '%s'" % (oldVecSize, vecSize, controllingValue, name, record.name) + + # Same for the dependent parameter name. + if oldDependentParamName == None: + oldDependentParamName = dependentParamName + elif dependentParamName != None and dependentParamName != oldDependentParamName: + print >>sys.stderr, "Found two different dependent parameter names (%s and %s) for the same controlling value '%s' of the same parameter '%s' of function '%s'" % (oldDependentParamName, dependentParamName, controllingValue, name, record.name) + + # And for the error code. + if oldErrorCode == None: + oldErrorCode = errorCode + elif errorCode != None and errorCode != oldErrorCode: + print >>sys.stderr, "Found two different error codes(%s and %s) for the same controlling value '%s' of the same parameter '%s' of function '%s'" % (oldErrorCode, errorCode, controllingValue, name, record.name) + + # And for the value conversion flag + if oldValueConvert == None: + oldValueConvert = valueConvert + elif valueConvert != None and valueConvert != oldValueConvert: + print >>sys.stderr, "Found two different value conversions(%s and %s) for the same controlling value '%s' of the same parameter '%s' of function '%s'" % (oldValueConvert, valueConvert, controllingValue, name, record.name) + + # Combine the dependentValues together + # directly, but uniquely + for value in dependentValues: + if value not in oldDependentValues: + oldDependentValues.append(value) + + # Stick the combined value back into the + # dictionary. We'll sort it back to the + # array later. + foundValidValues[oldControllingValue] = (oldControllingValue, oldVecSize, oldDependentParamName, oldDependentValues, oldErrorCode, oldValueConvert) + else: # new controlling value + # Just add it to the dictionary so we don't + # add the same value more than once. + foundValidValues[controllingValue] = (controllingValue, vecSize, dependentParamName, dependentValues, errorCode, valueConvert) + # endif a new controlling value + + # endfor all valid values for this parameter + + # Now the foundValidValues[] dictionary holds all the + # pruned values (at most one for each valid value). + # But the validValues[] array still holds the order, + # which we want to maintain. Go through the validValues + # array just for the names of the controlling values; + # add any uncopied values to the prunedValidValues array. + prunedValidValues = [] + + for (controllingValue, vecSize, dependentParamName, dependentValues, errorCode, valueConvert) in validValues: + if controllingValue in foundValidValues: + prunedValidValues.append(foundValidValues[controllingValue]) + # Delete it from the dictionary so it isn't + # copied again. + del foundValidValues[controllingValue] + + # Each parameter that is being converted may have a + # subset of values that are GLenums and are never + # converted. In some cases, the parameter will + # be implicitly determined to be such, by examining + # the listed possible values and determining for + # any particular controlling value whether there are + # any GLenum-valued allowed values. + # + # In other cases, the parameter will be explicitly + # marked as such with the "dependentnovalueconvert" flag; + # this is the way it has to be done with queries (which + # cannot list a valid list of values to be passed, + # because values are returned, not passed). + # + # For each value of controlling GLenum, we'll also + # need to know whether its dependent values are + # always converted (none of its values require + # GLenums to be passed in dependent parameters), + # never converted (all of its values require GLenums), + # or sometimes converted. + numNoConvertValues = 0 + allDependentParams = [] + for j in range(len(prunedValidValues)): + (controllingValue, vecSize, dependentParamName, dependentValues, errorCode, valueConvert) = prunedValidValues[j] + if dependentParamName != None and dependentParamName not in allDependentParams: + allDependentParams.append(dependentParamName) + + # Check for an explicit noconvert marking... + if valueConvert == "noconvert": + numNoConvertValues += 1 + else: + # Or check for an implicit one. + for value in dependentValues: + if value[0:3] == "GL_": + valueConvert = "noconvert" + prunedValidValues[j] = (controllingValue, vecSize, dependentParamName, dependentValues, errorCode, valueConvert) + numNoConvertValues += 1 + break + + # For each named dependent param, set the value conversion + # flag based on whether all values, none, or some need + # value conversion. This value is set stepwise + # for each parameter examined - + for dp in allDependentParams: + if numNoConvertValues == 0: + if not paramValueConversion.has_key(dp): + paramValueConversion[dp] = "all" + elif paramValueConversion[dp] == "none": + paramValueConversion[dp] = "some" + elif numNoConvertValues == len(prunedValidValues): + if not paramValueConversion.has_key(dp): + paramValueConversion[dp] = "none" + elif paramValueConversion[dp] == "all": + paramValueConversion[dp] = "some" + else: + paramValueConversion[dp] = "some" + + # Save away the record. Save a placeholder in the + # valueConversion field - we can't set that until we've + # examined all the parameters. + record.params[i] = (name, type, maxVecSize, convertToType, prunedValidValues, None) + + # endfor each param of the passed-in function record + + # One more pass: for each parameter, if it is a parameter that + # needs conversion, save its value conversion type ("all", "none", + # or "some"). We only have to worry about conditional value + # conversion for GLfixed parameters; in all other cases, we + # either don't convert at all (for non-converting parameters) or + # we convert everything. + for i in range(len(record.params)): + (name, type, maxVecSize, convertToType, validValues, valueConversion) = record.params[i] + if convertToType == None: + valueConversion = None + elif paramValueConversion.has_key(name): + valueConversion = paramValueConversion[name] + else: + valueConversion = "all" + + record.params[i] = (name, type, maxVecSize, convertToType, validValues, valueConversion) + + # We're done cleaning up! + # Add the function to the permanent record and we're done. + __FunctionDict[record.name] = record + + +def GetFunctionDict(specFile = "", category = None): + if not specFile: + specFile = "../glapi_parser/APIspec.txt" + if len(__FunctionDict) == 0: + ProcessSpecFile(specFile, AddFunction, category) + # Look for vector aliased functions + for func in __FunctionDict.keys(): + va = __FunctionDict[func].vectoralias + if va != '': + __VectorVersion[va] = func + #endif + + # and look for regular aliases (for glloader) + a = __FunctionDict[func].alias + if a: + __ReverseAliases[a] = func + #endif + #endfor + #endif + return __FunctionDict + + +def GetAllFunctions(specFile = "", category = None): + """Return sorted list of all functions known to Chromium.""" + d = GetFunctionDict(specFile, category) + funcs = [] + for func in d.keys(): + rec = d[func] + if not "omit" in rec.chromium: + funcs.append(func) + funcs.sort() + return funcs + + +def GetDispatchedFunctions(specFile = "", category = None): + """Return sorted list of all functions handled by SPU dispatch table.""" + d = GetFunctionDict(specFile, category) + funcs = [] + for func in d.keys(): + rec = d[func] + if (not "omit" in rec.chromium and + not "stub" in rec.chromium and + rec.alias == ''): + funcs.append(func) + funcs.sort() + return funcs + +#====================================================================== + +def ReturnType(funcName): + """Return the C return type of named function. + Examples: "void" or "const GLubyte *". """ + d = GetFunctionDict() + return d[funcName].returnType + + +def Parameters(funcName): + """Return list of tuples (name, type, vecSize) of function parameters. + Example: if funcName=="ClipPlane" return + [ ("plane", "GLenum", 0), ("equation", "const GLdouble *", 4) ] """ + d = GetFunctionDict() + return d[funcName].params + +def ParamAction(funcName): + """Return list of names of actions for testing. + For PackerTest only.""" + d = GetFunctionDict() + return d[funcName].paramaction + +def ParamList(funcName): + """Return list of tuples (name, list of values) of function parameters. + For PackerTest only.""" + d = GetFunctionDict() + return d[funcName].paramlist + +def ParamVec(funcName): + """Return list of tuples (name, vector of values) of function parameters. + For PackerTest only.""" + d = GetFunctionDict() + return d[funcName].paramvec + +def ParamSet(funcName): + """Return list of tuples (name, list of values) of function parameters. + For PackerTest only.""" + d = GetFunctionDict() + return d[funcName].paramset + + +def Properties(funcName): + """Return list of properties of the named GL function.""" + d = GetFunctionDict() + return d[funcName].props + +def AllWithProperty(property): + """Return list of functions that have the named property.""" + funcs = [] + for funcName in GetDispatchedFunctions(): + if property in Properties(funcName): + funcs.append(funcName) + return funcs + +def Category(funcName): + """Return the primary category of the named GL function.""" + d = GetFunctionDict() + return d[funcName].category + +def Categories(funcName): + """Return all the categories of the named GL function.""" + d = GetFunctionDict() + return d[funcName].categories + +def ChromiumProps(funcName): + """Return list of Chromium-specific properties of the named GL function.""" + d = GetFunctionDict() + return d[funcName].chromium + +def ParamProps(funcName): + """Return list of Parameter-specific properties of the named GL function.""" + d = GetFunctionDict() + return d[funcName].paramprop + +def Alias(funcName): + """Return the function that the named function is an alias of. + Ex: Alias('DrawArraysEXT') = 'DrawArrays'. + """ + d = GetFunctionDict() + return d[funcName].alias + +def AliasPrefix(funcName): + """Return the function that the named function is an alias of. + Ex: Alias('DrawArraysEXT') = 'DrawArrays'. + """ + d = GetFunctionDict() + if d[funcName].aliasprefix == '': + return "_mesa_" + else: + return d[funcName].aliasprefix + +def ReverseAlias(funcName): + """Like Alias(), but the inverse.""" + d = GetFunctionDict() + if funcName in __ReverseAliases.keys(): + return __ReverseAliases[funcName] + else: + return '' + +def NonVectorFunction(funcName): + """Return the non-vector version of the given function, or ''. + For example: NonVectorFunction("Color3fv") = "Color3f".""" + d = GetFunctionDict() + return d[funcName].vectoralias + +def ConversionFunction(funcName): + """Return a function that can be used to implement the + given function, using different types. + For example: ConvertedFunction("Color4x") = "Color4f".""" + d = GetFunctionDict() + return d[funcName].convertalias + +def VectorFunction(funcName): + """Return the vector version of the given non-vector-valued function, + or ''. + For example: VectorVersion("Color3f") = "Color3fv".""" + d = GetFunctionDict() + if funcName in __VectorVersion.keys(): + return __VectorVersion[funcName] + else: + return '' + +def GetCategoryWrapper(func_name): + """Return a C preprocessor token to test in order to wrap code. + This handles extensions. + Example: GetTestWrapper("glActiveTextureARB") = "CR_multitexture" + Example: GetTestWrapper("glBegin") = "" + """ + cat = Category(func_name) + if (cat == "1.0" or + cat == "1.1" or + cat == "1.2" or + cat == "Chromium" or + cat == "GL_chromium"): + return '' + elif cat[0] =='1': + # i.e. OpenGL 1.3 or 1.4 or 1.5 + return "OPENGL_VERSION_" + string.replace(cat, ".", "_") + else: + assert cat != '' + return string.replace(cat, "GL_", "") + + +def CanCompile(funcName): + """Return 1 if the function can be compiled into display lists, else 0.""" + props = Properties(funcName) + if ("nolist" in props or + "get" in props or + "setclient" in props): + return 0 + else: + return 1 + +def HasChromiumProperty(funcName, propertyList): + """Return 1 if the function or any alias has any property in the + propertyList""" + for funcAlias in [funcName, NonVectorFunction(funcName), VectorFunction(funcName)]: + if funcAlias: + props = ChromiumProps(funcAlias) + for p in propertyList: + if p in props: + return 1 + return 0 + +def CanPack(funcName): + """Return 1 if the function can be packed, else 0.""" + return HasChromiumProperty(funcName, ['pack', 'extpack', 'expandpack']) + +def HasPackOpcode(funcName): + """Return 1 if the function has a true pack opcode""" + return HasChromiumProperty(funcName, ['pack', 'extpack']) + +def SetsState(funcName): + """Return 1 if the function sets server-side state, else 0.""" + props = Properties(funcName) + + # Exceptions. The first set of these functions *do* have + # server-side state-changing effects, but will be missed + # by the general query, because they either render (e.g. + # Bitmap) or do not compile into display lists (e.g. all the others). + # + # The second set do *not* have server-side state-changing + # effects, despite the fact that they do not render + # and can be compiled. They are control functions + # that are not trackable via state. + if funcName in ['Bitmap', 'DeleteTextures', 'FeedbackBuffer', + 'RenderMode', 'BindBufferARB', 'DeleteFencesNV']: + return 1 + elif funcName in ['ExecuteProgramNV']: + return 0 + + # All compilable functions that do not render and that do + # not set or use client-side state (e.g. DrawArrays, et al.), set + # server-side state. + if CanCompile(funcName) and "render" not in props and "useclient" not in props and "setclient" not in props: + return 1 + + # All others don't set server-side state. + return 0 + +def SetsClientState(funcName): + """Return 1 if the function sets client-side state, else 0.""" + props = Properties(funcName) + if "setclient" in props: + return 1 + return 0 + +def SetsTrackedState(funcName): + """Return 1 if the function sets state that is tracked by + the state tracker, else 0.""" + # These functions set state, but aren't tracked by the state + # tracker for various reasons: + # - because the state tracker doesn't manage display lists + # (e.g. CallList and CallLists) + # - because the client doesn't have information about what + # the server supports, so the function has to go to the + # server (e.g. CompressedTexImage calls) + # - because they require a round-trip to the server (e.g. + # the CopyTexImage calls, SetFenceNV, TrackMatrixNV) + if funcName in [ + 'CopyTexImage1D', 'CopyTexImage2D', + 'CopyTexSubImage1D', 'CopyTexSubImage2D', 'CopyTexSubImage3D', + 'CallList', 'CallLists', + 'CompressedTexImage1DARB', 'CompressedTexSubImage1DARB', + 'CompressedTexImage2DARB', 'CompressedTexSubImage2DARB', + 'CompressedTexImage3DARB', 'CompressedTexSubImage3DARB', + 'SetFenceNV' + ]: + return 0 + + # Anything else that affects client-side state is trackable. + if SetsClientState(funcName): + return 1 + + # Anything else that doesn't set state at all is certainly + # not trackable. + if not SetsState(funcName): + return 0 + + # Per-vertex state isn't tracked the way other state is + # tracked, so it is specifically excluded. + if "pervertex" in Properties(funcName): + return 0 + + # Everything else is fine + return 1 + +def UsesClientState(funcName): + """Return 1 if the function uses client-side state, else 0.""" + props = Properties(funcName) + if "pixelstore" in props or "useclient" in props: + return 1 + return 0 + +def IsQuery(funcName): + """Return 1 if the function returns information to the user, else 0.""" + props = Properties(funcName) + if "get" in props: + return 1 + return 0 + +def FuncGetsState(funcName): + """Return 1 if the function gets GL state, else 0.""" + d = GetFunctionDict() + props = Properties(funcName) + if "get" in props: + return 1 + else: + return 0 + +def IsPointer(dataType): + """Determine if the datatype is a pointer. Return 1 or 0.""" + if string.find(dataType, "*") == -1: + return 0 + else: + return 1 + + +def PointerType(pointerType): + """Return the type of a pointer. + Ex: PointerType('const GLubyte *') = 'GLubyte' + """ + t = string.split(pointerType, ' ') + if t[0] == "const": + t[0] = t[1] + return t[0] + + + + +def OpcodeName(funcName): + """Return the C token for the opcode for the given function.""" + return "CR_" + string.upper(funcName) + "_OPCODE" + + +def ExtendedOpcodeName(funcName): + """Return the C token for the extended opcode for the given function.""" + return "CR_" + string.upper(funcName) + "_EXTEND_OPCODE" + + + + +#====================================================================== + +def MakeCallString(params): + """Given a list of (name, type, vectorSize) parameters, make a C-style + formal parameter string. + Ex return: 'index, x, y, z'. + """ + result = '' + i = 1 + n = len(params) + for (name, type, vecSize, convertToType, validValues, valueConversion) in params: + result += name + if i < n: + result = result + ', ' + i += 1 + #endfor + return result +#enddef + + +def MakeDeclarationString(params): + """Given a list of (name, type, vectorSize) parameters, make a C-style + parameter declaration string. + Ex return: 'GLuint index, GLfloat x, GLfloat y, GLfloat z'. + """ + n = len(params) + if n == 0: + return 'void' + else: + result = '' + i = 1 + for (name, type, vecSize, convertToType, validValues, valueConversion) in params: + result = result + type + ' ' + name + if i < n: + result = result + ', ' + i += 1 + #endfor + return result + #endif +#enddef + + +def MakePrototypeString(params): + """Given a list of (name, type, vectorSize) parameters, make a C-style + parameter prototype string (types only). + Ex return: 'GLuint, GLfloat, GLfloat, GLfloat'. + """ + n = len(params) + if n == 0: + return 'void' + else: + result = '' + i = 1 + for (name, type, vecSize, convertToType, validValues, valueConversion) in params: + result = result + type + # see if we need a comma separator + if i < n: + result = result + ', ' + i += 1 + #endfor + return result + #endif +#enddef + + +#====================================================================== + +__lengths = { + 'GLbyte': 1, + 'GLubyte': 1, + 'GLshort': 2, + 'GLushort': 2, + 'GLint': 4, + 'GLuint': 4, + 'GLfloat': 4, + 'GLclampf': 4, + 'GLdouble': 8, + 'GLclampd': 8, + 'GLenum': 4, + 'GLboolean': 1, + 'GLsizei': 4, + 'GLbitfield': 4, + 'void': 0, # XXX why? + 'int': 4, + 'GLintptrARB': 4, # XXX or 8 bytes? + 'GLsizeiptrARB': 4 # XXX or 8 bytes? +} + +def sizeof(type): + """Return size of C datatype, in bytes.""" + if not type in __lengths.keys(): + print >>sys.stderr, "%s not in lengths!" % type + return __lengths[type] + + +#====================================================================== +align_types = 1 + +def FixAlignment( pos, alignment ): + # if we want double-alignment take word-alignment instead, + # yes, this is super-lame, but we know what we are doing + if alignment > 4: + alignment = 4 + if align_types and alignment and ( pos % alignment ): + pos += alignment - ( pos % alignment ) + return pos + +def WordAlign( pos ): + return FixAlignment( pos, 4 ) + +def PointerSize(): + return 8 # Leave room for a 64 bit pointer + +def PacketLength( params ): + len = 0 + for (name, type, vecSize, convertToType, validValues, valueConversion) in params: + if IsPointer(type): + size = PointerSize() + else: + assert string.find(type, "const") == -1 + size = sizeof(type) + len = FixAlignment( len, size ) + size + len = WordAlign( len ) + return len + +#====================================================================== + +__specials = {} + +def LoadSpecials( filename ): + table = {} + try: + f = open( filename, "r" ) + except: + __specials[filename] = {} + print >>sys.stderr, "%s not present" % filename + return {} + + for line in f.readlines(): + line = string.strip(line) + if line == "" or line[0] == '#': + continue + table[line] = 1 + + __specials[filename] = table + return table + + +def FindSpecial( filename, glName ): + table = {} + try: + table = __specials[filename] + except KeyError: + table = LoadSpecials( filename ) + + try: + if (table[glName] == 1): + return 1 + else: + return 0 #should never happen + except KeyError: + return 0 + + +def AllSpecials( table_file ): + table = {} + filename = table_file + "_special" + try: + table = __specials[filename] + except KeyError: + table = LoadSpecials( filename ) + + keys = table.keys() + keys.sort() + return keys + + +def AllSpecials( table_file ): + filename = table_file + "_special" + table = {} + try: + table = __specials[filename] + except KeyError: + table = LoadSpecials(filename) + + ret = table.keys() + ret.sort() + return ret + + +def NumSpecials( table_file ): + filename = table_file + "_special" + table = {} + try: + table = __specials[filename] + except KeyError: + table = LoadSpecials(filename) + return len(table.keys()) + +def PrintRecord(record): + argList = MakeDeclarationString(record.params) + if record.category == "Chromium": + prefix = "cr" + else: + prefix = "gl" + print '%s %s%s(%s);' % (record.returnType, prefix, record.name, argList ) + if len(record.props) > 0: + print ' /* %s */' % string.join(record.props, ' ') + +#ProcessSpecFile("APIspec.txt", PrintRecord) + diff --git a/src/mesa/es/main/drawtex.c b/src/mesa/es/main/drawtex.c new file mode 100644 index 0000000000..1462807f9d --- /dev/null +++ b/src/mesa/es/main/drawtex.c @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2009 Chia-I Wu <olvaffe@gmail.com> + * + * 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 (including the next + * paragraph) 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. + */ + +#include "drawtex.h" +#include "main/state.h" +#include "main/imports.h" + +#include "glapi/dispatch.h" + + +#if FEATURE_OES_draw_texture + + +static INLINE void +draw_texture(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, + GLfloat width, GLfloat height) +{ + if (!ctx->Extensions.OES_draw_texture) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glDrawTex(unsupported)"); + return; + } + if (width <= 0.0f || height <= 0.0f) { + _mesa_error(ctx, GL_INVALID_VALUE, "glDrawTex(width or height <= 0)"); + return; + } + + if (ctx->NewState) + _mesa_update_state(ctx); + + ASSERT(ctx->Driver.DrawTex); + ctx->Driver.DrawTex(ctx, x, y, z, width, height); +} + + +void GLAPIENTRY +_mesa_DrawTexf(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) +{ + GET_CURRENT_CONTEXT(ctx); + draw_texture(ctx, x, y, z, width, height); +} + + +void GLAPIENTRY +_mesa_DrawTexfv(const GLfloat *coords) +{ + GET_CURRENT_CONTEXT(ctx); + draw_texture(ctx, coords[0], coords[1], coords[2], coords[3], coords[4]); +} + + +void GLAPIENTRY +_mesa_DrawTexi(GLint x, GLint y, GLint z, GLint width, GLint height) +{ + GET_CURRENT_CONTEXT(ctx); + draw_texture(ctx, (GLfloat) x, (GLfloat) y, (GLfloat) z, + (GLfloat) width, (GLfloat) height); +} + + +void GLAPIENTRY +_mesa_DrawTexiv(const GLint *coords) +{ + GET_CURRENT_CONTEXT(ctx); + draw_texture(ctx, (GLfloat) coords[0], (GLfloat) coords[1], + (GLfloat) coords[2], (GLfloat) coords[3], (GLfloat) coords[4]); +} + + +void GLAPIENTRY +_mesa_DrawTexs(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) +{ + GET_CURRENT_CONTEXT(ctx); + draw_texture(ctx, (GLfloat) x, (GLfloat) y, (GLfloat) z, + (GLfloat) width, (GLfloat) height); +} + + +void GLAPIENTRY +_mesa_DrawTexsv(const GLshort *coords) +{ + GET_CURRENT_CONTEXT(ctx); + draw_texture(ctx, (GLfloat) coords[0], (GLfloat) coords[1], + (GLfloat) coords[2], (GLfloat) coords[3], (GLfloat) coords[4]); +} + + +/* it is static because GLfixed is not defined publicly */ +static void GLAPIENTRY +_mesa_DrawTexx(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) +{ + GET_CURRENT_CONTEXT(ctx); + draw_texture(ctx, + (GLfloat) x / 65536.0f, + (GLfloat) y / 65536.0f, + (GLfloat) z / 65536.0f, + (GLfloat) width / 65536.0f, + (GLfloat) height / 65536.0f); +} + + +static void GLAPIENTRY +_mesa_DrawTexxv(const GLfixed *coords) +{ + GET_CURRENT_CONTEXT(ctx); + draw_texture(ctx, + (GLfloat) coords[0] / 65536.0f, + (GLfloat) coords[1] / 65536.0f, + (GLfloat) coords[2] / 65536.0f, + (GLfloat) coords[3] / 65536.0f, + (GLfloat) coords[4] / 65536.0f); +} + + +void +_mesa_init_drawtex_dispatch(struct _glapi_table *disp) +{ + SET_DrawTexfOES(disp, _mesa_DrawTexf); + SET_DrawTexfvOES(disp, _mesa_DrawTexfv); + SET_DrawTexiOES(disp, _mesa_DrawTexi); + SET_DrawTexivOES(disp, _mesa_DrawTexiv); + SET_DrawTexsOES(disp, _mesa_DrawTexs); + SET_DrawTexsvOES(disp, _mesa_DrawTexsv); + SET_DrawTexxOES(disp, _mesa_DrawTexx); + SET_DrawTexxvOES(disp, _mesa_DrawTexxv); +} + + +#endif /* FEATURE_OES_draw_texture */ diff --git a/src/mesa/es/main/drawtex.h b/src/mesa/es/main/drawtex.h new file mode 100644 index 0000000000..04c5bdd123 --- /dev/null +++ b/src/mesa/es/main/drawtex.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2009 Chia-I Wu <olvaffe@gmail.com> + * + * 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 (including the next + * paragraph) 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. + */ + +#ifndef DRAWTEX_H +#define DRAWTEX_H + + +#include "main/mtypes.h" + + +#if FEATURE_OES_draw_texture + +#define _MESA_INIT_DRAWTEX_FUNCTIONS(driver, impl) \ + do { \ + (driver)->DrawTex = impl ## DrawTex; \ + } while (0) + +extern void GLAPIENTRY +_mesa_DrawTexf(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); + +extern void GLAPIENTRY +_mesa_DrawTexfv(const GLfloat *coords); + +extern void GLAPIENTRY +_mesa_DrawTexi(GLint x, GLint y, GLint z, GLint width, GLint height); + +extern void GLAPIENTRY +_mesa_DrawTexiv(const GLint *coords); + +extern void GLAPIENTRY +_mesa_DrawTexs(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); + +extern void GLAPIENTRY +_mesa_DrawTexsv(const GLshort *coords); + +#if 0 +extern void GLAPIENTRY +_mesa_DrawTexx(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); + +extern void GLAPIENTRY +_mesa_DrawTexxv(const GLfixed *coords); +#endif + +extern void +_mesa_init_drawtex_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_OES_draw_texture */ + +#define _MESA_INIT_DRAWTEX_FUNCTIONS(driver, impl) do { } while (0) + +static INLINE void +_mesa_init_drawtex_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_OES_draw_texture */ + + +#endif /* DRAWTEX_H */ diff --git a/src/mesa/es/main/eglimage.c b/src/mesa/es/main/eglimage.c new file mode 100644 index 0000000000..5dd7a0cfaa --- /dev/null +++ b/src/mesa/es/main/eglimage.c @@ -0,0 +1,115 @@ +/* + * Copyright (C) 2009 Chia-I Wu <olvaffe@gmail.com> + * + * 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 (including the next + * paragraph) 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. + */ + +#include "main/mtypes.h" +#include "main/context.h" +#include "main/teximage.h" +#include "main/texstate.h" +#include "main/imports.h" +#include "glapi/dispatch.h" + +#include "eglimage.h" + + +#if FEATURE_OES_EGL_image + + +void GLAPIENTRY +_mesa_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_renderbuffer *rb; + + if (!ctx->Extensions.OES_EGL_image) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glEGLImageTargetRenderbufferStorageOES(unsupported)"); + return; + } + + if (target != GL_RENDERBUFFER) { + _mesa_error(ctx, GL_INVALID_ENUM, + "glEGLImageTargetRenderbufferStorage(target=0x%x)", target); + return; + } + + rb = ctx->CurrentRenderbuffer; + if (!rb) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glEGLImageTargetRenderbufferStorageOES(no bound rb)"); + return; + } + + FLUSH_VERTICES(ctx, _NEW_BUFFERS); + + ASSERT(ctx->Driver.EGLImageTargetRenderbufferStorage); + ctx->Driver.EGLImageTargetRenderbufferStorage(ctx, rb, image); + /* invalidate fbo? */ +} + +void GLAPIENTRY _mesa_EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_texture_unit *texUnit; + struct gl_texture_object *texObj; + + if (!ctx->Extensions.OES_EGL_image) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glEGLImageTargetTexture2DOES(unsupported)"); + return; + } + + if (target != GL_TEXTURE_2D) { + _mesa_error(ctx, GL_INVALID_ENUM, + "glEGLImageTargetTexture2D(target=0x%x)", target); + return; + } + + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); + + texUnit = _mesa_get_current_tex_unit(ctx); + texObj = _mesa_select_tex_object(ctx, texUnit, target); + + _mesa_lock_texture(ctx, texObj); + + ASSERT(ctx->Driver.EGLImageTargetTexture2D); + ctx->Driver.EGLImageTargetTexture2D(ctx, texObj ,image); + + /* invalidate state and fbo?*/ + /* fbo? */ + texObj->_Complete = GL_FALSE; + ctx->NewState |= _NEW_TEXTURE; + + _mesa_unlock_texture(ctx, texObj); +} + + +void +_mesa_init_eglimage_dispatch(struct _glapi_table *disp) +{ + SET_EGLImageTargetRenderbufferStorageOES(disp, + _mesa_EGLImageTargetRenderbufferStorageOES); + SET_EGLImageTargetTexture2DOES(disp, _mesa_EGLImageTargetTexture2DOES); +} + + +#endif /* FEATURE_OES_EGL_image */ diff --git a/src/mesa/es/main/eglimage.h b/src/mesa/es/main/eglimage.h new file mode 100644 index 0000000000..7acb991200 --- /dev/null +++ b/src/mesa/es/main/eglimage.h @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2009 Chia-I Wu <olvaffe@gmail.com> + * + * 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 (including the next + * paragraph) 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. + */ + +#ifndef EGLIMAGE_H +#define EGLIMAGE_H + + +#include "main/mtypes.h" + + +#if FEATURE_OES_EGL_image + +#define _MESA_INIT_EGLIMAGE_FUNCTIONS(driver, impl) \ + do { \ + (driver)->EGLImageTargetRenderbufferStorage = \ + impl ## EGLImageTargetRenderbufferStorage; \ + (driver)->EGLImageTargetTexture2D = impl ## EGLImageTargetTexture2D; \ + } while (0) + +extern void GLAPIENTRY +_mesa_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image); + +extern void GLAPIENTRY +_mesa_EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image); + +extern void +_mesa_init_eglimage_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_OES_EGL_image */ + +#define _MESA_INIT_EGLIMAGE_FUNCTIONS(driver, impl) do { } while (0) + +static INLINE void +_mesa_init_eglimage_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_OES_EGL_image */ + + +#endif /* EGLIMAGE_H */ diff --git a/src/mesa/es/main/es1_special b/src/mesa/es/main/es1_special new file mode 100644 index 0000000000..4cc97c30f3 --- /dev/null +++ b/src/mesa/es/main/es1_special @@ -0,0 +1,8 @@ +# GetString is always special. +GetString +# CompressedTexImage2D calls out to two different functions based on +# whether the image is a paletted image or not +CompressedTexImage2D +# QueryMatrixx returns values in an unusual, decomposed, fixed-value +# form; it has its own code for this +QueryMatrixx diff --git a/src/mesa/es/main/es2_special b/src/mesa/es/main/es2_special new file mode 100644 index 0000000000..8de76a3735 --- /dev/null +++ b/src/mesa/es/main/es2_special @@ -0,0 +1,5 @@ +# GetString must always have its own implementation, so we return our +# implementation values instead of Mesa's. +GetString +CompressedTexImage2D +RenderbufferStorage diff --git a/src/mesa/es/main/es_cpaltex.c b/src/mesa/es/main/es_cpaltex.c new file mode 100644 index 0000000000..0d6f7410c3 --- /dev/null +++ b/src/mesa/es/main/es_cpaltex.c @@ -0,0 +1,240 @@ +/************************************************************************** + * + * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + **************************************************************************/ + + +/** + * Code to convert compressed/paletted texture images to ordinary 4-byte RGBA. + * See the GL_OES_compressed_paletted_texture spec at + * http://khronos.org/registry/gles/extensions/OES/OES_compressed_paletted_texture.txt + */ + + +#include <stdlib.h> +#include <assert.h> +#include "GLES/gl.h" +#include "GLES/glext.h" + + +void GL_APIENTRY _es_CompressedTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + +void GL_APIENTRY _mesa_TexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +void GL_APIENTRY _mesa_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + + +static const struct { + GLenum format; + GLuint palette_size; + GLuint size; +} formats[] = { + { GL_PALETTE4_RGB8_OES, 16, 3 }, + { GL_PALETTE4_RGBA8_OES, 16, 4 }, + { GL_PALETTE4_R5_G6_B5_OES, 16, 2 }, + { GL_PALETTE4_RGBA4_OES, 16, 2 }, + { GL_PALETTE4_RGB5_A1_OES, 16, 2 }, + { GL_PALETTE8_RGB8_OES, 256, 3 }, + { GL_PALETTE8_RGBA8_OES, 256, 4 }, + { GL_PALETTE8_R5_G6_B5_OES, 256, 2 }, + { GL_PALETTE8_RGBA4_OES, 256, 2 }, + { GL_PALETTE8_RGB5_A1_OES, 256, 2 } +}; + + +/** + * Get a color/entry from the palette. Convert to GLubyte/RGBA format. + */ +static void +get_palette_entry(GLenum format, const void *palette, GLuint index, + GLubyte rgba[4]) +{ + switch (format) { + case GL_PALETTE4_RGB8_OES: + case GL_PALETTE8_RGB8_OES: + { + const GLubyte *pal = (const GLubyte *) palette; + rgba[0] = pal[index * 3 + 0]; + rgba[1] = pal[index * 3 + 1]; + rgba[2] = pal[index * 3 + 2]; + rgba[3] = 255; + } + break; + case GL_PALETTE4_RGBA8_OES: + case GL_PALETTE8_RGBA8_OES: + { + const GLubyte *pal = (const GLubyte *) palette; + rgba[0] = pal[index * 4 + 0]; + rgba[1] = pal[index * 4 + 1]; + rgba[2] = pal[index * 4 + 2]; + rgba[3] = pal[index * 4 + 3]; + } + break; + case GL_PALETTE4_R5_G6_B5_OES: + case GL_PALETTE8_R5_G6_B5_OES: + { + const GLushort *pal = (const GLushort *) palette; + const GLushort color = pal[index]; + rgba[0] = ((color >> 8) & 0xf8) | ((color >> 11) & 0x3); + rgba[1] = ((color >> 3) & 0xfc) | ((color >> 1 ) & 0x3); + rgba[2] = ((color << 3) & 0xf8) | ((color ) & 0x7); + rgba[3] = 255; + } + break; + case GL_PALETTE4_RGBA4_OES: + case GL_PALETTE8_RGBA4_OES: + { + const GLushort *pal = (const GLushort *) palette; + const GLushort color = pal[index]; + rgba[0] = ((color & 0xf000) >> 8) | ((color & 0xf000) >> 12); + rgba[1] = ((color & 0x0f00) >> 4) | ((color & 0x0f00) >> 8); + rgba[2] = ((color & 0x00f0) ) | ((color & 0x00f0) >> 4); + rgba[3] = ((color & 0x000f) << 4) | ((color & 0x000f) ); + } + break; + case GL_PALETTE4_RGB5_A1_OES: + case GL_PALETTE8_RGB5_A1_OES: + { + const GLushort *pal = (const GLushort *) palette; + const GLushort color = pal[index]; + rgba[0] = ((color >> 8) & 0xf8) | ((color >> 11) & 0x7); + rgba[1] = ((color >> 3) & 0xf8) | ((color >> 6) & 0x7); + rgba[2] = ((color << 2) & 0xf8) | ((color >> 1) & 0x7); + rgba[3] = (color & 0x1) * 255; + } + break; + default: + assert(0); + } +} + + +/** + * Convert paletted texture to simple GLubyte/RGBA format. + */ +static void +paletted_to_rgba(GLenum src_format, + const void *palette, + const void *indexes, + GLsizei width, GLsizei height, + GLubyte *rgba) +{ + GLuint pal_ents, i; + + assert(src_format >= GL_PALETTE4_RGB8_OES); + assert(src_format <= GL_PALETTE8_RGB5_A1_OES); + assert(formats[src_format - GL_PALETTE4_RGB8_OES].format == src_format); + + pal_ents = formats[src_format - GL_PALETTE4_RGB8_OES].palette_size; + + if (pal_ents == 16) { + /* 4 bits per index */ + const GLubyte *ind = (const GLubyte *) indexes; + + if (width * height == 1) { + /* special case the only odd-sized image */ + GLuint index0 = ind[0] >> 4; + get_palette_entry(src_format, palette, index0, rgba); + return; + } + /* two pixels per iteration */ + for (i = 0; i < width * height / 2; i++) { + GLuint index0 = ind[i] >> 4; + GLuint index1 = ind[i] & 0xf; + get_palette_entry(src_format, palette, index0, rgba + i * 8); + get_palette_entry(src_format, palette, index1, rgba + i * 8 + 4); + } + } + else { + /* 8 bits per index */ + const GLubyte *ind = (const GLubyte *) indexes; + for (i = 0; i < width * height; i++) { + GLuint index = ind[i]; + get_palette_entry(src_format, palette, index, rgba + i * 4); + } + } +} + + +/** + * Convert a call to glCompressedTexImage2D() where internalFormat is a + * compressed palette format into a regular GLubyte/RGBA glTexImage2D() call. + */ +static void +cpal_compressed_teximage2d(GLenum target, GLint level, + GLenum internalFormat, + GLsizei width, GLsizei height, + const void *pixels) +{ + GLuint pal_ents, pal_ent_size, pal_bytes; + const GLint num_levels = level + 1; + GLint lvl; + const GLubyte *indexes; + + assert(internalFormat >= GL_PALETTE4_RGB8_OES); + assert(internalFormat <= GL_PALETTE8_RGB5_A1_OES); + assert(formats[internalFormat - GL_PALETTE4_RGB8_OES].format == internalFormat); + + pal_ents = formats[internalFormat - GL_PALETTE4_RGB8_OES].palette_size; + pal_ent_size = formats[internalFormat - GL_PALETTE4_RGB8_OES].size; + pal_bytes = pal_ents * pal_ent_size; + + /* first image follows the palette */ + indexes = (const GLubyte *) pixels + pal_bytes; + + /* No worries about glPixelStore state since the only supported parameter is + * GL_UNPACK_ALIGNMENT and it doesn't matter when unpacking GLubyte/RGBA. + */ + + for (lvl = 0; lvl < num_levels; lvl++) { + /* Allocate GLubyte/RGBA dest image buffer */ + GLubyte *rgba = (GLubyte *) malloc(width * height * 4); + + if (pixels) + paletted_to_rgba(internalFormat, pixels, indexes, width, height, rgba); + + _mesa_TexImage2D(target, lvl, GL_RGBA, width, height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, rgba); + + free(rgba); + + /* advance index pointer to point to next src mipmap */ + if (pal_ents == 4) + indexes += width * height / 2; + else + indexes += width * height; + + /* next mipmap level size */ + if (width > 1) + width /= 2; + if (height > 1) + height /= 2; + } +} + + +void GL_APIENTRY +_es_CompressedTexImage2D(GLenum target, GLint level, GLenum internalFormat, + GLsizei width, GLsizei height, GLint border, + GLsizei imageSize, const GLvoid *data) +{ + switch (internalFormat) { + case GL_PALETTE4_RGB8_OES: + case GL_PALETTE4_RGBA8_OES: + case GL_PALETTE4_R5_G6_B5_OES: + case GL_PALETTE4_RGBA4_OES: + case GL_PALETTE4_RGB5_A1_OES: + case GL_PALETTE8_RGB8_OES: + case GL_PALETTE8_RGBA8_OES: + case GL_PALETTE8_R5_G6_B5_OES: + case GL_PALETTE8_RGBA4_OES: + case GL_PALETTE8_RGB5_A1_OES: + cpal_compressed_teximage2d(target, level, internalFormat, + width, height, data); + break; + default: + _mesa_CompressedTexImage2DARB(target, level, internalFormat, + width, height, border, imageSize, data); + } +} diff --git a/src/mesa/es/main/es_fbo.c b/src/mesa/es/main/es_fbo.c new file mode 100644 index 0000000000..545c46ca99 --- /dev/null +++ b/src/mesa/es/main/es_fbo.c @@ -0,0 +1,37 @@ +/************************************************************************** + * + * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + **************************************************************************/ + + +#include "GLES2/gl2.h" +#include "GLES2/gl2ext.h" + + +extern void GL_APIENTRY _es_RenderbufferStorage(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height); + +extern void GL_APIENTRY _mesa_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height); + + +void GL_APIENTRY +_es_RenderbufferStorage(GLenum target, GLenum internalFormat, + GLsizei width, GLsizei height) +{ + switch (internalFormat) { + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGB565: + internalFormat = GL_RGBA; + break; + case GL_STENCIL_INDEX1_OES: + case GL_STENCIL_INDEX4_OES: + case GL_STENCIL_INDEX8: + internalFormat = GL_STENCIL_INDEX; + break; + default: + ; /* no op */ + } + _mesa_RenderbufferStorageEXT(target, internalFormat, width, height); +} diff --git a/src/mesa/es/main/es_generator.py b/src/mesa/es/main/es_generator.py new file mode 100644 index 0000000000..a1381a5925 --- /dev/null +++ b/src/mesa/es/main/es_generator.py @@ -0,0 +1,782 @@ +#************************************************************************* +# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. +# All Rights Reserved. +# +# 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 +# TUNGSTEN GRAPHICS 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. +#************************************************************************* + + +import sys, os +import apiutil + +# These dictionary entries are used for automatic conversion. +# The string will be used as a format string with the conversion +# variable. +Converters = { + 'GLint': { + 'GLfloat': "(GLfloat) (%s)", + }, + 'GLshort': { + 'GLfloat': "(GLfloat) (%s)", + }, + 'GLfloat': { + 'GLdouble': "(GLdouble) (%s)", + 'GLint': "(GLint) (%s)", + 'GLshort': "(GLshort) (%s)", + 'GLfixed' : "(GLint) (%s * 65536)", + }, + 'GLfixed': { + 'GLfloat': "(GLfloat) (%s / 65536.0f)", + 'GLdouble': "(GLdouble) (%s / 65536.0)", + }, + 'GLdouble': { + 'GLfloat': "(GLfloat) (%s)", + 'GLfixed': "(GLfixed) (%s * 65536)", + }, + 'GLclampf': { + 'GLclampd': "(GLclampd) (%s)", + 'GLclampx': "(GLclampx) (%s * 65536)", + }, + 'GLclampx': { + 'GLclampf': "(GLclampf) (%s / 65536.0f)", + 'GLclampd': "(GLclampd) (%s / 65536.0)", + }, + 'GLubyte': { + 'GLfloat': "(GLfloat) (%s / 255.0f)", + }, +} + +def GetBaseType(type): + typeTokens = type.split(' ') + baseType = None + typeModifiers = [] + for t in typeTokens: + if t in ['const', '*']: + typeModifiers.append(t) + else: + baseType = t + return (baseType, typeModifiers) + +def ConvertValue(value, fromType, toType): + """Returns a string that represents the given parameter string, + type-converted if necessary.""" + + if not Converters.has_key(fromType): + sys.stderr.write("No base converter for type '%s' found. Ignoring." % fromType) + return value + + if not Converters[fromType].has_key(toType): + sys.stderr.write("No converter found for type '%s' to type '%s'. Ignoring." % (fromType, toType)) + return value + + # This part is simple. Return the proper conversion. + conversionString = Converters[fromType][toType] + return conversionString % value + +def GetLoopSizeExpression(funcName, paramName, paramMaxVecSize): + # The VariantArrays() list will have all the information (for all + # parameters) on how to calculate variant array sizes. + variantArrays = apiutil.VariantArrays(funcName) + defaultSize = paramMaxVecSize + loopSizeExpression = '' + + # There can be many different entries in the variantArrays for the + # same parameter. We have to look at all of them and pick out the + # ones of interest. + for (variantName, variantSize, controllingParam, controllingValues) in variantArrays: + if paramName == variantName: + # This variant specification applies to us. It may be of + # the form "param size default", meaning that the value should + # replace the default size, or it may be + # "param size controlParam value...", in which case the size should + # be used if the controlParam has any one of the given values. + if len(controllingValues) == 0: + defaultSize = variantSize + else: + # Create a compound conditional that expresses + # all the possible values in the list + conditional = '' + for value in controllingValues: + if len(conditional) > 0: + conditional = conditional + " || " + conditional = conditional + "%s == %s" % (controllingParam, value) + + # Add the possibly compound conditional and + # the associated vector size to the + # loop control expression + loopSizeExpression = loopSizeExpression + "(%s) ? %s : " % (conditional, variantSize) + + # end if the name matches + # end for the list of all variant array declarations + + # Return the expression that returns the actual size of the + # array. Note that 'loopSizeExpression' will already have a + # trailing ": " if it is nonempty. + if len(loopSizeExpression) > 0: + return "(%s%s)" % (loopSizeExpression, defaultSize) + else: + return "%s" % defaultSize + +FormatStrings = { + 'GLenum' : '0x%x', + 'GLfloat' : '%f', + 'GLint' : '%d', + 'GLbitfield' : '0x%x', +} +def GetFormatString(type): + if FormatStrings.has_key(type): + return FormatStrings[type] + else: + return None + + +###################################################################### +# Version-specific values to be used in the main script +# header: which header file to include +# api: what text specifies an API-level function +# special: the name of the "specials" file +VersionSpecificValues = { + 'GLES1.1' : { + 'description' : 'GLES1.1 functions', + 'header' : 'GLES/gl.h', + 'extheader' : 'GLES/glext.h', + 'special' : 'es1_special', + }, + 'GLES2.0': { + 'description' : 'GLES2.0 functions', + 'header' : 'GLES2/gl2.h', + 'extheader' : 'GLES2/gl2ext.h', + 'special' : 'es2_special', + } +} + + +###################################################################### +# Main code for the script begins here. + +# Get the name of the program (without the directory part) for use in +# error messages. +program = os.path.basename(sys.argv[0]) + +# We assume that the directory that the Python script is in also +# houses the "special" files. +programDir = os.path.dirname(sys.argv[0]) + +# Set default values +verbose = 0 +functionList = "APIspec.txt" +version = "GLES1.1" + +# Allow for command-line switches +import getopt, time +options = "hvV:S:" +try: + optlist, args = getopt.getopt(sys.argv[1:], options) +except getopt.GetoptError, message: + sys.stderr.write("%s: %s. Use -h for help.\n" % (program, message)) + sys.exit(1) + +for option, optarg in optlist: + if option == "-h": + sys.stderr.write("Usage: %s [-%s]\n" % (program, options)) + sys.stderr.write("Parse an API specification file and generate wrapper functions for a given GLES version\n") + sys.stderr.write("-h gives help\n") + sys.stderr.write("-v is verbose\n") + sys.stderr.write("-V specifies GLES version to generate [%s]:\n" % version) + for key in VersionSpecificValues.keys(): + sys.stderr.write(" %s - %s\n" % (key, VersionSpecificValues[key]['description'])) + sys.stderr.write("-S specifies API specification file to use [%s]\n" % functionList) + sys.exit(1) + elif option == "-v": + verbose += 1 + elif option == "-V": + version = optarg + elif option == "-S": + functionList = optarg + +# Beyond switches, we support no further command-line arguments +if len(args) > 0: + sys.stderr.write("%s: only switch arguments are supported - use -h for help\n" % program) + sys.exit(1) + +# If we don't have a valid version, abort. +if not VersionSpecificValues.has_key(version): + sys.stderr.write("%s: version '%s' is not valid - use -h for help\n" % (program, version)) + sys.exit(1) + +# Grab the version-specific items we need to use +versionHeader = VersionSpecificValues[version]['header'] +versionExtHeader = VersionSpecificValues[version]['extheader'] +versionSpecial = VersionSpecificValues[version]['special'] + +# We're probably being invoked from a different directory, +# so look for the "special" file in the same directory that +# holds the Python script +specialFile = os.path.join(programDir, versionSpecial) +if not os.path.isfile(specialFile): + sys.stderr.write("%s: can't find special file '%s' for version '%s' - aborting" % (program, specialFile, version)) + sys.exit(1) + +allSpecials = apiutil.AllSpecials(specialFile.split("_")[0]) + +# If we get to here, we're good to go. The "version" parameter +# directs GetDispatchedFunctions to only allow functions from +# that "category" (version in our parlance). This allows +# functions with different declarations in different categories +# to exist (glTexImage2D, for example, is different between +# GLES1 and GLES2). +keys = apiutil.GetAllFunctions(functionList, version) + +print """/* DO NOT EDIT ************************************************* + * THIS FILE AUTOMATICALLY GENERATED BY THE %s SCRIPT + * API specification file: %s + * GLES version: %s + * date: %s + */ +""" % (program, functionList, version, time.strftime("%Y-%m-%d %H:%M:%S")) + +# The headers we choose are version-specific. +print """ +#include "%s" +#include "%s" +""" % (versionHeader, versionExtHeader) + +# Everyone needs these types. +print """ +/* These types are needed for the Mesa veneer, but are not defined in + * the standard GLES headers. + */ +typedef double GLdouble; +typedef double GLclampd; + +/* This type is normally in glext.h, but needed here */ +typedef char GLchar; + +/* Mesa error handling requires these */ +extern void *_mesa_get_current_context(void); +extern void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... ); + +#include "main/compiler.h" +#include "main/api_exec.h" + +#define HAVE_GLES_TYPES +#include "glapi/dispatch.h" + +typedef void (*_glapi_proc)(void); /* generic function pointer */ +""" + +# All variant-length arrays in the GLES API are controlled by some +# selector parameter. Almost all of those are constant length based +# on the selector parameter (e.g., in glFogfv(), if the "pname" +# parameter is GL_FOG_COLOR, the "params" array is considered to be +# 4 floats long; for any other value of "pname", the "params' array +# is considered to be 1 float long. +# +# There are a very few instances where the selector parameter chooses +# a runtime-determined value: +# glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS) +# glGetIntegerv(GL_SHADER_BINARY_FORMATS) +# plus the glGetBooleanv, glGetFloatv, glGetFixedv counterparts. +# +# The number of formats in both cases is not a constant, but is a +# runtime-determined value (based on the return value of +# glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS) or +# glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS). +# +# Rather than hard-code some value (and risk memory errors when we +# overshoot arrays), in these cases we'll use a constant expresssion +# (e.g. _get_size(GL_NUM_COMPRESSED_TEXTURE_FORMATS)) to get the +# value of the variant array. Note, though, that in these cases the +# "vector" parameter should be set to some size large enough to hold +# all values (and must be set for GLfixed-based conversions, which +# need it to define an auxiliary array size). +# +# Here's the function itself. Although we only need a couple of values, +# we'll make it general. +print """ +extern void GLAPIENTRY _mesa_GetIntegerv(GLenum, GLint *); +static INLINE unsigned int _get_size(GLenum pname) +{ + /* In case of error, make sure the value returned is 0. */ + GLint value = 0; + _mesa_GetIntegerv(pname, &value); + return (unsigned int) value; +} +""" + +# Finally we get to the all-important functions +print """/************************************************************* + * Generated functions begin here + */ +""" +for funcName in keys: + if verbose > 0: sys.stderr.write("%s: processing function %s\n" % (program, funcName)) + + # start figuring out what this function will look like. + returnType = apiutil.ReturnType(funcName) + props = apiutil.Properties(funcName) + params = apiutil.Parameters(funcName) + declarationString = apiutil.MakeDeclarationString(params) + + # In case of error, a function may have to return. Make + # sure we have valid return values in this case. + if returnType == "void": + errorReturn = "return" + elif returnType == "GLboolean": + errorReturn = "return GL_FALSE" + else: + errorReturn = "return (%s) 0" % returnType + + # These are the output of this large calculation block. + # passthroughDeclarationString: a typed set of parameters that + # will be used to create the "extern" reference for the + # underlying Mesa or support function. Note that as generated + # these have an extra ", " at the beginning, which will be + # removed before use. + # + # passthroughDeclarationString: an untyped list of parameters + # that will be used to call the underlying Mesa or support + # function (including references to converted parameters). + # This will also be generated with an extra ", " at the + # beginning, which will be removed before use. + # + # variables: C code to create any local variables determined to + # be necessary. + # conversionCodeOutgoing: C code to convert application parameters + # to a necessary type before calling the underlying support code. + # May be empty if no conversion is required. + # conversionCodeIncoming: C code to do the converse: convert + # values returned by underlying Mesa code to the types needed + # by the application. + # Note that *either* the conversionCodeIncoming will be used (for + # generated query functions), *or* the conversionCodeOutgoing will + # be used (for generated non-query functions), never both. + passthroughFuncName = "" + passthroughDeclarationString = "" + passthroughCallString = "" + variables = [] + conversionCodeOutgoing = [] + conversionCodeIncoming = [] + switchCode = [] + + # Calculate the name of the underlying support function to call. + # By default, the passthrough function is named _mesa_<funcName>. + # We're allowed to override the prefix and/or the function name + # for each function record, though. The "ConversionFunction" + # utility is poorly named, BTW... + aliasprefix = apiutil.AliasPrefix(funcName) + alias = apiutil.ConversionFunction(funcName) + if not alias: + # There may still be a Mesa alias for the function + if apiutil.Alias(funcName): + passthroughFuncName = "%s%s" % (aliasprefix, apiutil.Alias(funcName)) + else: + passthroughFuncName = "%s%s" % (aliasprefix, funcName) + else: # a specific alias is provided + passthroughFuncName = "%s%s" % (aliasprefix, alias) + + # Look at every parameter: each one may have only specific + # allowed values, or dependent parameters to check, or + # variant-sized vector arrays to calculate + for (paramName, paramType, paramMaxVecSize, paramConvertToType, paramValidValues, paramValueConversion) in params: + # We'll need this below if we're doing conversions + (paramBaseType, paramTypeModifiers) = GetBaseType(paramType) + + # Conversion management. + # We'll handle three cases, easiest to hardest: a parameter + # that doesn't require conversion, a scalar parameter that + # requires conversion, and a vector parameter that requires + # conversion. + if paramConvertToType == None: + # Unconverted parameters are easy, whether they're vector + # or scalar - just add them to the call list. No conversions + # or anything to worry about. + passthroughDeclarationString += ", %s %s" % (paramType, paramName) + passthroughCallString += ", %s" % paramName + + elif paramMaxVecSize == 0: # a scalar parameter that needs conversion + # A scalar to hold a converted parameter + variables.append(" %s converted_%s;" % (paramConvertToType, paramName)) + + # Outgoing conversion depends on whether we have to conditionally + # perform value conversion. + if paramValueConversion == "none": + conversionCodeOutgoing.append(" converted_%s = (%s) %s;" % (paramName, paramConvertToType, paramName)) + elif paramValueConversion == "some": + # We'll need a conditional variable to keep track of + # whether we're converting values or not. + if (" int convert_%s_value = 1;" % paramName) not in variables: + variables.append(" int convert_%s_value = 1;" % paramName) + + # Write code based on that conditional. + conversionCodeOutgoing.append(" if (convert_%s_value) {" % paramName) + conversionCodeOutgoing.append(" converted_%s = %s;" % (paramName, ConvertValue(paramName, paramBaseType, paramConvertToType))) + conversionCodeOutgoing.append(" } else {") + conversionCodeOutgoing.append(" converted_%s = (%s) %s;" % (paramName, paramConvertToType, paramName)) + conversionCodeOutgoing.append(" }") + else: # paramValueConversion == "all" + conversionCodeOutgoing.append(" converted_%s = %s;" % (paramName, ConvertValue(paramName, paramBaseType, paramConvertToType))) + + # Note that there can be no incoming conversion for a + # scalar parameter; changing the scalar will only change + # the local value, and won't ultimately change anything + # that passes back to the application. + + # Call strings. The unusual " ".join() call will join the + # array of parameter modifiers with spaces as separators. + passthroughDeclarationString += ", %s %s %s" % (paramConvertToType, " ".join(paramTypeModifiers), paramName) + passthroughCallString += ", converted_%s" % paramName + + else: # a vector parameter that needs conversion + # We'll need an index variable for conversions + if " register unsigned int i;" not in variables: + variables.append(" register unsigned int i;") + + # This variable will hold the (possibly variant) size of + # this array needing conversion. By default, we'll set + # it to the maximal size (which is correct for functions + # with a constant-sized vector parameter); for true + # variant arrays, we'll modify it with other code. + variables.append(" unsigned int n_%s = %d;" % (paramName, paramMaxVecSize)) + + # This array will hold the actual converted values. + variables.append(" %s converted_%s[%d];" % (paramConvertToType, paramName, paramMaxVecSize)) + + # Again, we choose the conversion code based on whether we + # have to always convert values, never convert values, or + # conditionally convert values. + if paramValueConversion == "none": + conversionCodeOutgoing.append(" for (i = 0; i < n_%s; i++) {" % paramName) + conversionCodeOutgoing.append(" converted_%s[i] = (%s) %s[i];" % (paramName, paramConvertToType, paramName)) + conversionCodeOutgoing.append(" }") + elif paramValueConversion == "some": + # We'll need a conditional variable to keep track of + # whether we're converting values or not. + if (" int convert_%s_value = 1;" % paramName) not in variables: + variables.append(" int convert_%s_value = 1;" % paramName) + # Write code based on that conditional. + conversionCodeOutgoing.append(" if (convert_%s_value) {" % paramName) + conversionCodeOutgoing.append(" for (i = 0; i < n_%s; i++) {" % paramName) + conversionCodeOutgoing.append(" converted_%s[i] = %s;" % (paramName, ConvertValue("%s[i]" % paramName, paramBaseType, paramConvertToType))) + conversionCodeOutgoing.append(" }") + conversionCodeOutgoing.append(" } else {") + conversionCodeOutgoing.append(" for (i = 0; i < n_%s; i++) {" % paramName) + conversionCodeOutgoing.append(" converted_%s[i] = (%s) %s[i];" % (paramName, paramConvertToType, paramName)) + conversionCodeOutgoing.append(" }") + conversionCodeOutgoing.append(" }") + else: # paramValueConversion == "all" + conversionCodeOutgoing.append(" for (i = 0; i < n_%s; i++) {" % paramName) + conversionCodeOutgoing.append(" converted_%s[i] = %s;" % (paramName, ConvertValue("%s[i]" % paramName, paramBaseType, paramConvertToType))) + + conversionCodeOutgoing.append(" }") + + # If instead we need an incoming conversion (i.e. results + # from Mesa have to be converted before handing back + # to the application), this is it. Fortunately, we don't + # have to worry about conditional value conversion - the + # functions that do (e.g. glGetFixedv()) are handled + # specially, outside this code generation. + # + # Whether we use incoming conversion or outgoing conversion + # is determined later - we only ever use one or the other. + + if paramValueConversion == "none": + conversionCodeIncoming.append(" for (i = 0; i < n_%s; i++) {" % paramName) + conversionCodeIncoming.append(" %s[i] = (%s) converted_%s[i];" % (paramName, paramConvertToType, paramName)) + conversionCodeIncoming.append(" }") + elif paramValueConversion == "some": + # We'll need a conditional variable to keep track of + # whether we're converting values or not. + if (" int convert_%s_value = 1;" % paramName) not in variables: + variables.append(" int convert_%s_value = 1;" % paramName) + + # Write code based on that conditional. + conversionCodeIncoming.append(" if (convert_%s_value) {" % paramName) + conversionCodeIncoming.append(" for (i = 0; i < n_%s; i++) {" % paramName) + conversionCodeIncoming.append(" %s[i] = %s;" % (paramName, ConvertValue("converted_%s[i]" % paramName, paramConvertToType, paramBaseType))) + conversionCodeIncoming.append(" }") + conversionCodeIncoming.append(" } else {") + conversionCodeIncoming.append(" for (i = 0; i < n_%s; i++) {" % paramName) + conversionCodeIncoming.append(" %s[i] = (%s) converted_%s[i];" % (paramName, paramConvertToType, paramName)) + conversionCodeIncoming.append(" }") + conversionCodeIncoming.append(" }") + else: # paramValueConversion == "all" + conversionCodeIncoming.append(" for (i = 0; i < n_%s; i++) {" % paramName) + conversionCodeIncoming.append(" %s[i] = %s;" % (paramName, ConvertValue("converted_%s[i]" % paramName, paramConvertToType, paramBaseType))) + conversionCodeIncoming.append(" }") + + # Call strings. The unusual " ".join() call will join the + # array of parameter modifiers with spaces as separators. + passthroughDeclarationString += ", %s %s %s" % (paramConvertToType, " ".join(paramTypeModifiers), paramName) + passthroughCallString += ", converted_%s" % paramName + + # endif conversion management + + # Parameter checking. If the parameter has a specific list of + # valid values, we have to make sure that the passed-in values + # match these, or we make an error. + if len(paramValidValues) > 0: + # We're about to make a big switch statement with an + # error at the end. By default, the error is GL_INVALID_ENUM, + # unless we find a "case" statement in the middle with a + # non-GLenum value. + errorDefaultCase = "GL_INVALID_ENUM" + + # This parameter has specific valid values. Make a big + # switch statement to handle it. Note that the original + # parameters are always what is checked, not the + # converted parameters. + switchCode.append(" switch(%s) {" % paramName) + + for valueIndex in range(len(paramValidValues)): + (paramValue, dependentVecSize, dependentParamName, dependentValidValues, errorCode, valueConvert) = paramValidValues[valueIndex] + + # We're going to need information on the dependent param + # as well. + if dependentParamName: + depParamIndex = apiutil.FindParamIndex(params, dependentParamName) + if depParamIndex == None: + sys.stderr.write("%s: can't find dependent param '%s' for function '%s'\n" % (program, dependentParamName, funcName)) + + (depParamName, depParamType, depParamMaxVecSize, depParamConvertToType, depParamValidValues, depParamValueConversion) = params[depParamIndex] + else: + (depParamName, depParamType, depParamMaxVecSize, depParamConvertToType, depParamValidValues, depParamValueConversion) = (None, None, None, None, [], None) + + # This is a sneaky trick. It's valid syntax for a parameter + # that is *not* going to be converted to be declared + # with a dependent vector size; but in this case, the + # dependent vector size is unused and unnecessary. + # So check for this and ignore the dependent vector size + # if the parameter is not going to be converted. + if depParamConvertToType: + usedDependentVecSize = dependentVecSize + else: + usedDependentVecSize = None + + # We'll peek ahead at the next parameter, to see whether + # we can combine cases + if valueIndex + 1 < len(paramValidValues) : + (nextParamValue, nextDependentVecSize, nextDependentParamName, nextDependentValidValues, nextErrorCode, nextValueConvert) = paramValidValues[valueIndex + 1] + if depParamConvertToType: + usedNextDependentVecSize = nextDependentVecSize + else: + usedNextDependentVecSize = None + + # Create a case for this value. As a mnemonic, + # if we have a dependent vector size that we're ignoring, + # add it as a comment. + if usedDependentVecSize == None and dependentVecSize != None: + switchCode.append(" case %s: /* size %s */" % (paramValue, dependentVecSize)) + else: + switchCode.append(" case %s:" % paramValue) + + # If this is not a GLenum case, then switch our error + # if no value is matched to be GL_INVALID_VALUE instead + # of GL_INVALID_ENUM. (Yes, this does get confused + # if there are both values and GLenums in the same + # switch statement, which shouldn't happen.) + if paramValue[0:3] != "GL_": + errorDefaultCase = "GL_INVALID_VALUE" + + # If all the remaining parameters are identical to the + # next set, then we're done - we'll just create the + # official code on the next pass through, and the two + # cases will share the code. + if valueIndex + 1 < len(paramValidValues) and usedDependentVecSize == usedNextDependentVecSize and dependentParamName == nextDependentParamName and dependentValidValues == nextDependentValidValues and errorCode == nextErrorCode and valueConvert == nextValueConvert: + continue + + # Otherwise, we'll have to generate code for this case. + # Start off with a check: if there is a dependent parameter, + # and a list of valid values for that parameter, we need + # to generate an error if something other than one + # of those values is passed. + if len(dependentValidValues) > 0: + conditional="" + + # If the parameter being checked is actually an array, + # check only its first element. + if depParamMaxVecSize == 0: + valueToCheck = dependentParamName + else: + valueToCheck = "%s[0]" % dependentParamName + + for v in dependentValidValues: + conditional += " && %s != %s" % (valueToCheck, v) + switchCode.append(" if (%s) {" % conditional[4:]) + if errorCode == None: + errorCode = "GL_INVALID_ENUM" + switchCode.append(' _mesa_error(_mesa_get_current_context(), %s, "gl%s(%s=0x%s)", %s);' % (errorCode, funcName, paramName, "%x", paramName)) + switchCode.append(" %s;" % errorReturn) + switchCode.append(" }") + # endif there are dependent valid values + + # The dependent parameter may require conditional + # value conversion. If it does, and we don't want + # to convert values, we'll have to generate code for that + if depParamValueConversion == "some" and valueConvert == "noconvert": + switchCode.append(" convert_%s_value = 0;" % dependentParamName) + + # If there's a dependent vector size for this parameter + # that we're actually going to use (i.e. we need conversion), + # mark it. + if usedDependentVecSize: + switchCode.append(" n_%s = %s;" % (dependentParamName, dependentVecSize)) + + # In all cases, break out of the switch if any valid + # value is found. + switchCode.append(" break;") + + + # Need a default case to catch all the other, invalid + # parameter values. These will all generate errors. + switchCode.append(" default:") + if errorCode == None: + errorCode = "GL_INVALID_ENUM" + formatString = GetFormatString(paramType) + if formatString == None: + switchCode.append(' _mesa_error(_mesa_get_current_context(), %s, "gl%s(%s)");' % (errorCode, funcName, paramName)) + else: + switchCode.append(' _mesa_error(_mesa_get_current_context(), %s, "gl%s(%s=%s)", %s);' % (errorCode, funcName, paramName, formatString, paramName)) + switchCode.append(" %s;" % errorReturn) + + # End of our switch code. + switchCode.append(" }") + + # endfor every recognized parameter value + + # endfor every param + + # Here, the passthroughDeclarationString and passthroughCallString + # are complete; remove the extra ", " at the front of each. + passthroughDeclarationString = passthroughDeclarationString[2:] + passthroughCallString = passthroughCallString[2:] + + # The Mesa functions are scattered across all the Mesa + # header files. The easiest way to manage declarations + # is to create them ourselves. + if funcName not in allSpecials: + print "extern %s GLAPIENTRY %s(%s);" % (returnType, passthroughFuncName, passthroughDeclarationString) + + # A function may be a core function (i.e. it exists in + # the core specification), a core addition (extension + # functions added officially to the core), a required + # extension (usually an extension for an earlier version + # that has been officially adopted), or an optional extension. + # + # Core functions have a simple category (e.g. "GLES1.1"); + # we generate only a simple callback for them. + # + # Core additions have two category listings, one simple + # and one compound (e.g. ["GLES1.1", "GLES1.1:OES_fixed_point"]). + # We generate the core function, and also an extension function. + # + # Required extensions and implemented optional extensions + # have a single compound category "GLES1.1:OES_point_size_array". + # For these we generate just the extension function. + for categorySpec in apiutil.Categories(funcName): + compoundCategory = categorySpec.split(":") + + # This category isn't for us, if the base category doesn't match + # our version + if compoundCategory[0] != version: + continue + + # Otherwise, determine if we're writing code for a core + # function (no suffix) or an extension function. + if len(compoundCategory) == 1: + # This is a core function + extensionName = None + fullFuncName = "_es_" + funcName + else: + # This is an extension function. We'll need to append + # the extension suffix. + extensionName = compoundCategory[1] + extensionSuffix = extensionName.split("_")[0] + fullFuncName = "_es_" + funcName + extensionSuffix + + # Now the generated function. The text used to mark an API-level + # function, oddly, is version-specific. + if extensionName: + print "/* Extension %s */" % extensionName + + if funcName in allSpecials: + print "/* this function is special and is defined elsewhere */" + print "extern %s %s(%s);" % (returnType, fullFuncName, declarationString) + print + continue + + print "static %s %s(%s)" % (returnType, fullFuncName, declarationString) + print "{" + + # Start printing our code pieces. Start with any local + # variables we need. This unusual syntax joins the + # lines in the variables[] array with the "\n" separator. + if len(variables) > 0: + print "\n".join(variables), "\n"; + + # If there's any sort of parameter checking or variable + # array sizing, the switch code will contain it. + if len(switchCode) > 0: + print "\n".join(switchCode), "\n"; + + # In the case of an outgoing conversion (i.e. parameters must + # be converted before calling the underlying Mesa function), + # use the appropriate code. + if "get" not in props and len(conversionCodeOutgoing) > 0: + print "\n".join(conversionCodeOutgoing), "\n"; + + # Call the Mesa function. Note that there are very few functions + # that return a value (i.e. returnType is not "void"), and that + # none of them require incoming translation; so we're safe + # to generate code that directly returns in those cases, + # even though it's not completely independent. + + if returnType == "void": + print " %s(%s);" % (passthroughFuncName, passthroughCallString) + else: + print " return %s(%s);" % (passthroughFuncName, passthroughCallString) + + # If the function is one that returns values (i.e. "get" in props), + # it might return values of a different type than we need, that + # require conversion before passing back to the application. + if "get" in props and len(conversionCodeIncoming) > 0: + print "\n".join(conversionCodeIncoming) + + # All done. + print "}" + print + # end for each category provided for a function + +# end for each function + +print "void" +print "_mesa_init_exec_table(struct _glapi_table *exec)" +print "{" +for func in keys: + for spec in apiutil.Categories(func): + ext = spec.split(":") + # version does not match + if ext.pop(0) != version: + continue + entry = func + if ext: + suffix = ext[0].split("_")[0] + entry += suffix + print " SET_%s(exec, _es_%s);" % (entry, entry) +print "}" diff --git a/src/mesa/es/main/es_query_matrix.c b/src/mesa/es/main/es_query_matrix.c new file mode 100644 index 0000000000..82b6fe7ab9 --- /dev/null +++ b/src/mesa/es/main/es_query_matrix.c @@ -0,0 +1,199 @@ +/************************************************************************** + * + * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + **************************************************************************/ + + +/** + * Code to implement GL_OES_query_matrix. See the spec at: + * http://www.khronos.org/registry/gles/extensions/OES/OES_query_matrix.txt + */ + + +#include <stdlib.h> +#include <math.h> +#include "GLES/gl.h" +#include "GLES/glext.h" + + +/** + * This is from the GL_OES_query_matrix extension specification: + * + * GLbitfield glQueryMatrixxOES( GLfixed mantissa[16], + * GLint exponent[16] ) + * mantissa[16] contains the contents of the current matrix in GLfixed + * format. exponent[16] contains the unbiased exponents applied to the + * matrix components, so that the internal representation of component i + * is close to mantissa[i] * 2^exponent[i]. The function returns a status + * word which is zero if all the components are valid. If + * status & (1<<i) != 0, the component i is invalid (e.g., NaN, Inf). + * The implementations are not required to keep track of overflows. In + * that case, the invalid bits are never set. + */ + +#define INT_TO_FIXED(x) ((GLfixed) ((x) << 16)) +#define FLOAT_TO_FIXED(x) ((GLfixed) ((x) * 65536.0)) + +#if defined(WIN32) || defined(_WIN32_WCE) +/* Oddly, the fpclassify() function doesn't exist in such a form + * on Windows. This is an implementation using slightly different + * lower-level Windows functions. + */ +#include <float.h> + +enum {FP_NAN, FP_INFINITE, FP_ZERO, FP_SUBNORMAL, FP_NORMAL} +fpclassify(double x) +{ + switch(_fpclass(x)) { + case _FPCLASS_SNAN: /* signaling NaN */ + case _FPCLASS_QNAN: /* quiet NaN */ + return FP_NAN; + case _FPCLASS_NINF: /* negative infinity */ + case _FPCLASS_PINF: /* positive infinity */ + return FP_INFINITE; + case _FPCLASS_NN: /* negative normal */ + case _FPCLASS_PN: /* positive normal */ + return FP_NORMAL; + case _FPCLASS_ND: /* negative denormalized */ + case _FPCLASS_PD: /* positive denormalized */ + return FP_SUBNORMAL; + case _FPCLASS_NZ: /* negative zero */ + case _FPCLASS_PZ: /* positive zero */ + return FP_ZERO; + default: + /* Should never get here; but if we do, this will guarantee + * that the pattern is not treated like a number. + */ + return FP_NAN; + } +} +#endif + +extern GLbitfield GL_APIENTRY _es_QueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]); + +/* The Mesa functions we'll need */ +extern void GL_APIENTRY _mesa_GetIntegerv(GLenum pname, GLint *params); +extern void GL_APIENTRY _mesa_GetFloatv(GLenum pname, GLfloat *params); + +GLbitfield GL_APIENTRY _es_QueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]) +{ + GLfloat matrix[16]; + GLint tmp; + GLenum currentMode = GL_FALSE; + GLenum desiredMatrix = GL_FALSE; + /* The bitfield returns 1 for each component that is invalid (i.e. + * NaN or Inf). In case of error, everything is invalid. + */ + GLbitfield rv; + register unsigned int i; + unsigned int bit; + + /* This data structure defines the mapping between the current matrix + * mode and the desired matrix identifier. + */ + static struct { + GLenum currentMode; + GLenum desiredMatrix; + } modes[] = { + {GL_MODELVIEW, GL_MODELVIEW_MATRIX}, + {GL_PROJECTION, GL_PROJECTION_MATRIX}, + {GL_TEXTURE, GL_TEXTURE_MATRIX}, +#if 0 + /* this doesn't exist in GLES */ + {GL_COLOR, GL_COLOR_MATRIX}, +#endif + }; + + /* Call Mesa to get the current matrix in floating-point form. First, + * we have to figure out what the current matrix mode is. + */ + _mesa_GetIntegerv(GL_MATRIX_MODE, &tmp); + currentMode = (GLenum) tmp; + + /* The mode is either GL_FALSE, if for some reason we failed to query + * the mode, or a given mode from the above table. Search for the + * returned mode to get the desired matrix; if we don't find it, + * we can return immediately, as _mesa_GetInteger() will have + * logged the necessary error already. + */ + for (i = 0; i < sizeof(modes)/sizeof(modes[0]); i++) { + if (modes[i].currentMode == currentMode) { + desiredMatrix = modes[i].desiredMatrix; + break; + } + } + if (desiredMatrix == GL_FALSE) { + /* Early error means all values are invalid. */ + return 0xffff; + } + + /* Now pull the matrix itself. */ + _mesa_GetFloatv(desiredMatrix, matrix); + + rv = 0; + for (i = 0, bit = 1; i < 16; i++, bit<<=1) { + float normalizedFraction; + int exp; + + switch (fpclassify(matrix[i])) { + /* A "subnormal" or denormalized number is too small to be + * represented in normal format; but despite that it's a + * valid floating point number. FP_ZERO and FP_NORMAL + * are both valid as well. We should be fine treating + * these three cases as legitimate floating-point numbers. + */ + case FP_SUBNORMAL: + case FP_NORMAL: + case FP_ZERO: + normalizedFraction = (GLfloat)frexp(matrix[i], &exp); + mantissa[i] = FLOAT_TO_FIXED(normalizedFraction); + exponent[i] = (GLint) exp; + break; + + /* If the entry is not-a-number or an infinity, then the + * matrix component is invalid. The invalid flag for + * the component is already set; might as well set the + * other return values to known values. We'll set + * distinct values so that a savvy end user could determine + * whether the matrix component was a NaN or an infinity, + * but this is more useful for debugging than anything else + * since the standard doesn't specify any such magic + * values to return. + */ + case FP_NAN: + mantissa[i] = INT_TO_FIXED(0); + exponent[i] = (GLint) 0; + rv |= bit; + break; + + case FP_INFINITE: + /* Return +/- 1 based on whether it's a positive or + * negative infinity. + */ + if (matrix[i] > 0) { + mantissa[i] = INT_TO_FIXED(1); + } + else { + mantissa[i] = -INT_TO_FIXED(1); + } + exponent[i] = (GLint) 0; + rv |= bit; + break; + + /* We should never get here; but here's a catching case + * in case fpclassify() is returnings something unexpected. + */ + default: + mantissa[i] = INT_TO_FIXED(2); + exponent[i] = (GLint) 0; + rv |= bit; + break; + } + + } /* for each component */ + + /* All done */ + return rv; +} diff --git a/src/mesa/es/main/get_gen.py b/src/mesa/es/main/get_gen.py new file mode 100644 index 0000000000..516facc8a3 --- /dev/null +++ b/src/mesa/es/main/get_gen.py @@ -0,0 +1,785 @@ +#!/usr/bin/env python + +# Mesa 3-D graphics library +# +# Copyright (C) 1999-2006 Brian Paul All Rights Reserved. +# +# 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 +# BRIAN PAUL 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. + + +# This script is used to generate the get.c file: +# python get_gen.py > get.c + + +import string +import sys + + +GLint = 1 +GLenum = 2 +GLfloat = 3 +GLdouble = 4 +GLboolean = 5 +GLfloatN = 6 # A normalized value, such as a color or depth range + + +TypeStrings = { + GLint : "GLint", + GLenum : "GLenum", + GLfloat : "GLfloat", + GLdouble : "GLdouble", + GLboolean : "GLboolean" +} + + +# Each entry is a tuple of: +# - the GL state name, such as GL_CURRENT_COLOR +# - the state datatype, one of GLint, GLfloat, GLboolean or GLenum +# - list of code fragments to get the state, such as ["ctx->Foo.Bar"] +# - optional extra code or empty string +# - optional extensions to check, or None +# + +# Present in ES 1.x and 2.x: +StateVars_common = [ + ( "GL_ALPHA_BITS", GLint, ["ctx->DrawBuffer->Visual.alphaBits"], + "", None ), + ( "GL_BLEND", GLboolean, ["ctx->Color.BlendEnabled"], "", None ), + ( "GL_BLEND_SRC", GLenum, ["ctx->Color.BlendSrcRGB"], "", None ), + ( "GL_BLUE_BITS", GLint, ["ctx->DrawBuffer->Visual.blueBits"], "", None ), + ( "GL_COLOR_CLEAR_VALUE", GLfloatN, + [ "ctx->Color.ClearColor[0]", + "ctx->Color.ClearColor[1]", + "ctx->Color.ClearColor[2]", + "ctx->Color.ClearColor[3]" ], "", None ), + ( "GL_COLOR_WRITEMASK", GLint, + [ "ctx->Color.ColorMask[RCOMP] ? 1 : 0", + "ctx->Color.ColorMask[GCOMP] ? 1 : 0", + "ctx->Color.ColorMask[BCOMP] ? 1 : 0", + "ctx->Color.ColorMask[ACOMP] ? 1 : 0" ], "", None ), + ( "GL_CULL_FACE", GLboolean, ["ctx->Polygon.CullFlag"], "", None ), + ( "GL_CULL_FACE_MODE", GLenum, ["ctx->Polygon.CullFaceMode"], "", None ), + ( "GL_DEPTH_BITS", GLint, ["ctx->DrawBuffer->Visual.depthBits"], + "", None ), + ( "GL_DEPTH_CLEAR_VALUE", GLfloatN, ["ctx->Depth.Clear"], "", None ), + ( "GL_DEPTH_FUNC", GLenum, ["ctx->Depth.Func"], "", None ), + ( "GL_DEPTH_RANGE", GLfloatN, + [ "ctx->Viewport.Near", "ctx->Viewport.Far" ], "", None ), + ( "GL_DEPTH_TEST", GLboolean, ["ctx->Depth.Test"], "", None ), + ( "GL_DEPTH_WRITEMASK", GLboolean, ["ctx->Depth.Mask"], "", None ), + ( "GL_DITHER", GLboolean, ["ctx->Color.DitherFlag"], "", None ), + ( "GL_FRONT_FACE", GLenum, ["ctx->Polygon.FrontFace"], "", None ), + ( "GL_GREEN_BITS", GLint, ["ctx->DrawBuffer->Visual.greenBits"], + "", None ), + ( "GL_LINE_WIDTH", GLfloat, ["ctx->Line.Width"], "", None ), + ( "GL_ALIASED_LINE_WIDTH_RANGE", GLfloat, + ["ctx->Const.MinLineWidth", + "ctx->Const.MaxLineWidth"], "", None ), + ( "GL_MAX_ELEMENTS_INDICES", GLint, ["ctx->Const.MaxArrayLockSize"], "", None ), + ( "GL_MAX_ELEMENTS_VERTICES", GLint, ["ctx->Const.MaxArrayLockSize"], "", None ), + + ( "GL_MAX_TEXTURE_SIZE", GLint, ["1 << (ctx->Const.MaxTextureLevels - 1)"], "", None ), + ( "GL_MAX_VIEWPORT_DIMS", GLint, + ["ctx->Const.MaxViewportWidth", "ctx->Const.MaxViewportHeight"], + "", None ), + ( "GL_PACK_ALIGNMENT", GLint, ["ctx->Pack.Alignment"], "", None ), + ( "GL_ALIASED_POINT_SIZE_RANGE", GLfloat, + ["ctx->Const.MinPointSize", + "ctx->Const.MaxPointSize"], "", None ), + ( "GL_POLYGON_OFFSET_FACTOR", GLfloat, ["ctx->Polygon.OffsetFactor "], "", None ), + ( "GL_POLYGON_OFFSET_UNITS", GLfloat, ["ctx->Polygon.OffsetUnits "], "", None ), + ( "GL_RED_BITS", GLint, ["ctx->DrawBuffer->Visual.redBits"], "", None ), + ( "GL_SCISSOR_BOX", GLint, + ["ctx->Scissor.X", + "ctx->Scissor.Y", + "ctx->Scissor.Width", + "ctx->Scissor.Height"], "", None ), + ( "GL_SCISSOR_TEST", GLboolean, ["ctx->Scissor.Enabled"], "", None ), + ( "GL_STENCIL_BITS", GLint, ["ctx->DrawBuffer->Visual.stencilBits"], "", None ), + ( "GL_STENCIL_CLEAR_VALUE", GLint, ["ctx->Stencil.Clear"], "", None ), + ( "GL_STENCIL_FAIL", GLenum, + ["ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]"], "", None ), + ( "GL_STENCIL_FUNC", GLenum, + ["ctx->Stencil.Function[ctx->Stencil.ActiveFace]"], "", None ), + ( "GL_STENCIL_PASS_DEPTH_FAIL", GLenum, + ["ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]"], "", None ), + ( "GL_STENCIL_PASS_DEPTH_PASS", GLenum, + ["ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]"], "", None ), + ( "GL_STENCIL_REF", GLint, + ["ctx->Stencil.Ref[ctx->Stencil.ActiveFace]"], "", None ), + ( "GL_STENCIL_TEST", GLboolean, ["ctx->Stencil.Enabled"], "", None ), + ( "GL_STENCIL_VALUE_MASK", GLint, + ["ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]"], "", None ), + ( "GL_STENCIL_WRITEMASK", GLint, + ["ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]"], "", None ), + ( "GL_SUBPIXEL_BITS", GLint, ["ctx->Const.SubPixelBits"], "", None ), + ( "GL_TEXTURE_BINDING_2D", GLint, + ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name"], "", None ), + ( "GL_UNPACK_ALIGNMENT", GLint, ["ctx->Unpack.Alignment"], "", None ), + ( "GL_VIEWPORT", GLint, [ "ctx->Viewport.X", "ctx->Viewport.Y", + "ctx->Viewport.Width", "ctx->Viewport.Height" ], "", None ), + + # GL_ARB_multitexture + ( "GL_ACTIVE_TEXTURE_ARB", GLint, + [ "GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit"], "", ["ARB_multitexture"] ), + + # Note that all the OES_* extensions require that the Mesa + # "struct gl_extensions" include a member with the name of + # the extension. That structure does not yet include OES + # extensions (and we're not sure whether it will). If + # it does, all the OES_* extensions below should mark the + # dependency. + + # OES_texture_cube_map + ( "GL_TEXTURE_BINDING_CUBE_MAP_ARB", GLint, + ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name"], + "", None), + ( "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB", GLint, + ["(1 << (ctx->Const.MaxCubeTextureLevels - 1))"], + "", None), + + # OES_blend_subtract + ( "GL_BLEND_SRC_RGB_EXT", GLenum, ["ctx->Color.BlendSrcRGB"], "", None), + ( "GL_BLEND_DST_RGB_EXT", GLenum, ["ctx->Color.BlendDstRGB"], "", None), + ( "GL_BLEND_SRC_ALPHA_EXT", GLenum, ["ctx->Color.BlendSrcA"], "", None), + ( "GL_BLEND_DST_ALPHA_EXT", GLenum, ["ctx->Color.BlendDstA"], "", None), + + # GL_BLEND_EQUATION_RGB, which is what we're really after, + # is defined identically to GL_BLEND_EQUATION. + ( "GL_BLEND_EQUATION", GLenum, ["ctx->Color.BlendEquationRGB "], "", None), + ( "GL_BLEND_EQUATION_ALPHA_EXT", GLenum, ["ctx->Color.BlendEquationA "], + "", None), + + # GL_ARB_texture_compression */ +# ( "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", GLint, +# ["_mesa_get_compressed_formats(ctx, NULL, GL_FALSE)"], +# "", ["ARB_texture_compression"] ), +# ( "GL_COMPRESSED_TEXTURE_FORMATS_ARB", GLenum, +# [], +# """GLint formats[100]; +# GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE); +# ASSERT(n <= 100); +# for (i = 0; i < n; i++) +# params[i] = ENUM_TO_INT(formats[i]);""", +# ["ARB_texture_compression"] ), + + # GL_ARB_multisample + ( "GL_SAMPLE_ALPHA_TO_COVERAGE_ARB", GLboolean, + ["ctx->Multisample.SampleAlphaToCoverage"], "", ["ARB_multisample"] ), + ( "GL_SAMPLE_COVERAGE_ARB", GLboolean, + ["ctx->Multisample.SampleCoverage"], "", ["ARB_multisample"] ), + ( "GL_SAMPLE_COVERAGE_VALUE_ARB", GLfloat, + ["ctx->Multisample.SampleCoverageValue"], "", ["ARB_multisample"] ), + ( "GL_SAMPLE_COVERAGE_INVERT_ARB", GLboolean, + ["ctx->Multisample.SampleCoverageInvert"], "", ["ARB_multisample"] ), + ( "GL_SAMPLE_BUFFERS_ARB", GLint, + ["ctx->DrawBuffer->Visual.sampleBuffers"], "", ["ARB_multisample"] ), + ( "GL_SAMPLES_ARB", GLint, + ["ctx->DrawBuffer->Visual.samples"], "", ["ARB_multisample"] ), + + + # GL_SGIS_generate_mipmap + ( "GL_GENERATE_MIPMAP_HINT_SGIS", GLenum, ["ctx->Hint.GenerateMipmap"], + "", ["SGIS_generate_mipmap"] ), + + # GL_ARB_vertex_buffer_object + ( "GL_ARRAY_BUFFER_BINDING_ARB", GLint, + ["ctx->Array.ArrayBufferObj->Name"], "", ["ARB_vertex_buffer_object"] ), + # GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB - not supported + ( "GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB", GLint, + ["ctx->Array.ElementArrayBufferObj->Name"], + "", ["ARB_vertex_buffer_object"] ), + + # GL_OES_read_format + ( "GL_IMPLEMENTATION_COLOR_READ_TYPE_OES", GLint, + ["ctx->Const.ColorReadType"], "", None), + ( "GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES", GLint, + ["ctx->Const.ColorReadFormat"], "", None), + + # GL_OES_framebuffer_object + ( "GL_FRAMEBUFFER_BINDING_EXT", GLint, ["ctx->DrawBuffer->Name"], "", + None), + ( "GL_RENDERBUFFER_BINDING_EXT", GLint, + ["ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0"], "", + None), + ( "GL_MAX_RENDERBUFFER_SIZE_EXT", GLint, + ["ctx->Const.MaxRenderbufferSize"], "", + None), + + # OpenGL ES 1/2 special: + ( "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", GLint, + [ "ARRAY_SIZE(compressed_formats)" ], + "", + None ), + + ("GL_COMPRESSED_TEXTURE_FORMATS_ARB", GLint, + [], + """ + int i; + for (i = 0; i < ARRAY_SIZE(compressed_formats); i++) { + params[i] = compressed_formats[i]; + }""", + None ), + + ( "GL_POLYGON_OFFSET_FILL", GLboolean, ["ctx->Polygon.OffsetFill"], "", None ), + +] + +# Only present in ES 1.x: +StateVars_es1 = [ + ( "GL_MAX_LIGHTS", GLint, ["ctx->Const.MaxLights"], "", None ), + ( "GL_LIGHT0", GLboolean, ["ctx->Light.Light[0].Enabled"], "", None ), + ( "GL_LIGHT1", GLboolean, ["ctx->Light.Light[1].Enabled"], "", None ), + ( "GL_LIGHT2", GLboolean, ["ctx->Light.Light[2].Enabled"], "", None ), + ( "GL_LIGHT3", GLboolean, ["ctx->Light.Light[3].Enabled"], "", None ), + ( "GL_LIGHT4", GLboolean, ["ctx->Light.Light[4].Enabled"], "", None ), + ( "GL_LIGHT5", GLboolean, ["ctx->Light.Light[5].Enabled"], "", None ), + ( "GL_LIGHT6", GLboolean, ["ctx->Light.Light[6].Enabled"], "", None ), + ( "GL_LIGHT7", GLboolean, ["ctx->Light.Light[7].Enabled"], "", None ), + ( "GL_LIGHTING", GLboolean, ["ctx->Light.Enabled"], "", None ), + ( "GL_LIGHT_MODEL_AMBIENT", GLfloatN, + ["ctx->Light.Model.Ambient[0]", + "ctx->Light.Model.Ambient[1]", + "ctx->Light.Model.Ambient[2]", + "ctx->Light.Model.Ambient[3]"], "", None ), + ( "GL_LIGHT_MODEL_TWO_SIDE", GLboolean, ["ctx->Light.Model.TwoSide"], "", None ), + ( "GL_ALPHA_TEST", GLboolean, ["ctx->Color.AlphaEnabled"], "", None ), + ( "GL_ALPHA_TEST_FUNC", GLenum, ["ctx->Color.AlphaFunc"], "", None ), + ( "GL_ALPHA_TEST_REF", GLfloatN, ["ctx->Color.AlphaRef"], "", None ), + ( "GL_BLEND_DST", GLenum, ["ctx->Color.BlendDstRGB"], "", None ), + ( "GL_MAX_CLIP_PLANES", GLint, ["ctx->Const.MaxClipPlanes"], "", None ), + ( "GL_CLIP_PLANE0", GLboolean, + [ "(ctx->Transform.ClipPlanesEnabled >> 0) & 1" ], "", None ), + ( "GL_CLIP_PLANE1", GLboolean, + [ "(ctx->Transform.ClipPlanesEnabled >> 1) & 1" ], "", None ), + ( "GL_CLIP_PLANE2", GLboolean, + [ "(ctx->Transform.ClipPlanesEnabled >> 2) & 1" ], "", None ), + ( "GL_CLIP_PLANE3", GLboolean, + [ "(ctx->Transform.ClipPlanesEnabled >> 3) & 1" ], "", None ), + ( "GL_CLIP_PLANE4", GLboolean, + [ "(ctx->Transform.ClipPlanesEnabled >> 4) & 1" ], "", None ), + ( "GL_CLIP_PLANE5", GLboolean, + [ "(ctx->Transform.ClipPlanesEnabled >> 5) & 1" ], "", None ), + ( "GL_COLOR_MATERIAL", GLboolean, + ["ctx->Light.ColorMaterialEnabled"], "", None ), + ( "GL_CURRENT_COLOR", GLfloatN, + [ "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]", + "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]", + "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]", + "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]" ], + "FLUSH_CURRENT(ctx, 0);", None ), + ( "GL_CURRENT_NORMAL", GLfloatN, + [ "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]", + "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]", + "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]"], + "FLUSH_CURRENT(ctx, 0);", None ), + ( "GL_CURRENT_TEXTURE_COORDS", GLfloat, + ["ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]", + "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]", + "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]", + "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]"], + "const GLuint texUnit = ctx->Texture.CurrentUnit;", None ), + ( "GL_DISTANCE_ATTENUATION_EXT", GLfloat, + ["ctx->Point.Params[0]", + "ctx->Point.Params[1]", + "ctx->Point.Params[2]"], "", None ), + ( "GL_FOG", GLboolean, ["ctx->Fog.Enabled"], "", None ), + ( "GL_FOG_COLOR", GLfloatN, + [ "ctx->Fog.Color[0]", + "ctx->Fog.Color[1]", + "ctx->Fog.Color[2]", + "ctx->Fog.Color[3]" ], "", None ), + ( "GL_FOG_DENSITY", GLfloat, ["ctx->Fog.Density"], "", None ), + ( "GL_FOG_END", GLfloat, ["ctx->Fog.End"], "", None ), + ( "GL_FOG_HINT", GLenum, ["ctx->Hint.Fog"], "", None ), + ( "GL_FOG_MODE", GLenum, ["ctx->Fog.Mode"], "", None ), + ( "GL_FOG_START", GLfloat, ["ctx->Fog.Start"], "", None ), + ( "GL_LINE_SMOOTH", GLboolean, ["ctx->Line.SmoothFlag"], "", None ), + ( "GL_LINE_SMOOTH_HINT", GLenum, ["ctx->Hint.LineSmooth"], "", None ), + ( "GL_LINE_WIDTH_RANGE", GLfloat, + ["ctx->Const.MinLineWidthAA", + "ctx->Const.MaxLineWidthAA"], "", None ), + ( "GL_COLOR_LOGIC_OP", GLboolean, ["ctx->Color.ColorLogicOpEnabled"], "", None ), + ( "GL_LOGIC_OP_MODE", GLenum, ["ctx->Color.LogicOp"], "", None ), + ( "GL_MATRIX_MODE", GLenum, ["ctx->Transform.MatrixMode"], "", None ), + + ( "GL_MAX_MODELVIEW_STACK_DEPTH", GLint, ["MAX_MODELVIEW_STACK_DEPTH"], "", None ), + ( "GL_MAX_PROJECTION_STACK_DEPTH", GLint, ["MAX_PROJECTION_STACK_DEPTH"], "", None ), + ( "GL_MAX_TEXTURE_STACK_DEPTH", GLint, ["MAX_TEXTURE_STACK_DEPTH"], "", None ), + ( "GL_MODELVIEW_MATRIX", GLfloat, + [ "matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]", + "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]", + "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]", + "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ], + "const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;", None ), + ( "GL_MODELVIEW_STACK_DEPTH", GLint, ["ctx->ModelviewMatrixStack.Depth + 1"], "", None ), + ( "GL_NORMALIZE", GLboolean, ["ctx->Transform.Normalize"], "", None ), + ( "GL_PACK_SKIP_IMAGES_EXT", GLint, ["ctx->Pack.SkipImages"], "", None ), + ( "GL_PERSPECTIVE_CORRECTION_HINT", GLenum, + ["ctx->Hint.PerspectiveCorrection"], "", None ), + ( "GL_POINT_SIZE", GLfloat, ["ctx->Point.Size"], "", None ), + ( "GL_POINT_SIZE_RANGE", GLfloat, + ["ctx->Const.MinPointSizeAA", + "ctx->Const.MaxPointSizeAA"], "", None ), + ( "GL_POINT_SMOOTH", GLboolean, ["ctx->Point.SmoothFlag"], "", None ), + ( "GL_POINT_SMOOTH_HINT", GLenum, ["ctx->Hint.PointSmooth"], "", None ), + ( "GL_POINT_SIZE_MIN_EXT", GLfloat, ["ctx->Point.MinSize"], "", None ), + ( "GL_POINT_SIZE_MAX_EXT", GLfloat, ["ctx->Point.MaxSize"], "", None ), + ( "GL_POINT_FADE_THRESHOLD_SIZE_EXT", GLfloat, + ["ctx->Point.Threshold"], "", None ), + ( "GL_PROJECTION_MATRIX", GLfloat, + [ "matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]", + "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]", + "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]", + "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ], + "const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;", None ), + ( "GL_PROJECTION_STACK_DEPTH", GLint, + ["ctx->ProjectionMatrixStack.Depth + 1"], "", None ), + ( "GL_RESCALE_NORMAL", GLboolean, + ["ctx->Transform.RescaleNormals"], "", None ), + ( "GL_SHADE_MODEL", GLenum, ["ctx->Light.ShadeModel"], "", None ), + ( "GL_TEXTURE_2D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_2D)"], "", None ), + ( "GL_TEXTURE_MATRIX", GLfloat, + ["matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]", + "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]", + "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]", + "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ], + "const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;", None ), + ( "GL_TEXTURE_STACK_DEPTH", GLint, + ["ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1"], "", None ), + ( "GL_VERTEX_ARRAY", GLboolean, ["ctx->Array.ArrayObj->Vertex.Enabled"], "", None ), + ( "GL_VERTEX_ARRAY_SIZE", GLint, ["ctx->Array.ArrayObj->Vertex.Size"], "", None ), + ( "GL_VERTEX_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Vertex.Type"], "", None ), + ( "GL_VERTEX_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Vertex.Stride"], "", None ), + ( "GL_NORMAL_ARRAY", GLenum, ["ctx->Array.ArrayObj->Normal.Enabled"], "", None ), + ( "GL_NORMAL_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Normal.Type"], "", None ), + ( "GL_NORMAL_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Normal.Stride"], "", None ), + ( "GL_COLOR_ARRAY", GLboolean, ["ctx->Array.ArrayObj->Color.Enabled"], "", None ), + ( "GL_COLOR_ARRAY_SIZE", GLint, ["ctx->Array.ArrayObj->Color.Size"], "", None ), + ( "GL_COLOR_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Color.Type"], "", None ), + ( "GL_COLOR_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Color.Stride"], "", None ), + ( "GL_TEXTURE_COORD_ARRAY", GLboolean, + ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled"], "", None ), + ( "GL_TEXTURE_COORD_ARRAY_SIZE", GLint, + ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size"], "", None ), + ( "GL_TEXTURE_COORD_ARRAY_TYPE", GLenum, + ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type"], "", None ), + ( "GL_TEXTURE_COORD_ARRAY_STRIDE", GLint, + ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride"], "", None ), + # GL_ARB_multitexture + ( "GL_MAX_TEXTURE_UNITS_ARB", GLint, + ["ctx->Const.MaxTextureUnits"], "", ["ARB_multitexture"] ), + ( "GL_CLIENT_ACTIVE_TEXTURE_ARB", GLint, + ["GL_TEXTURE0_ARB + ctx->Array.ActiveTexture"], "", ["ARB_multitexture"] ), + # OES_texture_cube_map + ( "GL_TEXTURE_CUBE_MAP_ARB", GLboolean, + ["_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB)"], "", None), + ( "GL_TEXTURE_GEN_S", GLboolean, + ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0)"], "", None), + ( "GL_TEXTURE_GEN_T", GLboolean, + ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0)"], "", None), + ( "GL_TEXTURE_GEN_R", GLboolean, + ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0)"], "", None), + # ARB_multisample + ( "GL_MULTISAMPLE_ARB", GLboolean, + ["ctx->Multisample.Enabled"], "", ["ARB_multisample"] ), + ( "GL_SAMPLE_ALPHA_TO_ONE_ARB", GLboolean, + ["ctx->Multisample.SampleAlphaToOne"], "", ["ARB_multisample"] ), + + ( "GL_VERTEX_ARRAY_BUFFER_BINDING_ARB", GLint, + ["ctx->Array.ArrayObj->Vertex.BufferObj->Name"], "", ["ARB_vertex_buffer_object"] ), + ( "GL_NORMAL_ARRAY_BUFFER_BINDING_ARB", GLint, + ["ctx->Array.ArrayObj->Normal.BufferObj->Name"], "", ["ARB_vertex_buffer_object"] ), + ( "GL_COLOR_ARRAY_BUFFER_BINDING_ARB", GLint, + ["ctx->Array.ArrayObj->Color.BufferObj->Name"], "", ["ARB_vertex_buffer_object"] ), + ( "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB", GLint, + ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name"], + "", ["ARB_vertex_buffer_object"] ), + + # OES_point_sprite + ( "GL_POINT_SPRITE_NV", GLboolean, ["ctx->Point.PointSprite"], # == GL_POINT_SPRITE_ARB + "", None), + + # GL_ARB_fragment_shader + ( "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", GLint, + ["ctx->Const.FragmentProgram.MaxUniformComponents"], "", + ["ARB_fragment_shader"] ), + + # GL_ARB_vertex_shader + ( "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB", GLint, + ["ctx->Const.VertexProgram.MaxUniformComponents"], "", + ["ARB_vertex_shader"] ), + ( "GL_MAX_VARYING_FLOATS_ARB", GLint, + ["ctx->Const.MaxVarying * 4"], "", ["ARB_vertex_shader"] ), + + # OES_matrix_get + ( "GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES", GLint, [], + """ + /* See GL_OES_matrix_get */ + { + const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; + memcpy(params, matrix, 16 * sizeof(GLint)); + }""", + None), + + ( "GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES", GLint, [], + """ + /* See GL_OES_matrix_get */ + { + const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; + memcpy(params, matrix, 16 * sizeof(GLint)); + }""", + None), + + ( "GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES", GLint, [], + """ + /* See GL_OES_matrix_get */ + { + const GLfloat *matrix = + ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; + memcpy(params, matrix, 16 * sizeof(GLint)); + }""", + None), + + # OES_point_size_array + ("GL_POINT_SIZE_ARRAY_OES", GLboolean, + ["ctx->Array.ArrayObj->PointSize.Enabled"], "", None), + ("GL_POINT_SIZE_ARRAY_TYPE_OES", GLenum, + ["ctx->Array.ArrayObj->PointSize.Type"], "", None), + ("GL_POINT_SIZE_ARRAY_STRIDE_OES", GLint, + ["ctx->Array.ArrayObj->PointSize.Stride"], "", None), + ("GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES", GLint, + ["ctx->Array.ArrayObj->PointSize.BufferObj->Name"], "", None), + + # GL_EXT_texture_filter_anisotropic + ( "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", GLfloat, + ["ctx->Const.MaxTextureMaxAnisotropy"], "", ["EXT_texture_filter_anisotropic"]), + +] + +# Only present in ES 2.x: +StateVars_es2 = [ + # XXX These entries are not spec'ed for GLES 2, but are + # needed for Mesa's GLSL: + ( "GL_MAX_LIGHTS", GLint, ["ctx->Const.MaxLights"], "", None ), + ( "GL_MAX_CLIP_PLANES", GLint, ["ctx->Const.MaxClipPlanes"], "", None ), + ( "GL_MAX_TEXTURE_COORDS_ARB", GLint, # == GL_MAX_TEXTURE_COORDS_NV + ["ctx->Const.MaxTextureCoordUnits"], "", + ["ARB_fragment_program", "NV_fragment_program"] ), + ( "GL_MAX_DRAW_BUFFERS_ARB", GLint, + ["ctx->Const.MaxDrawBuffers"], "", ["ARB_draw_buffers"] ), + ( "GL_BLEND_COLOR_EXT", GLfloatN, + [ "ctx->Color.BlendColor[0]", + "ctx->Color.BlendColor[1]", + "ctx->Color.BlendColor[2]", + "ctx->Color.BlendColor[3]"], "", None ), + + # This is required for GLES2, but also needed for GLSL: + ( "GL_MAX_TEXTURE_IMAGE_UNITS_ARB", GLint, # == GL_MAX_TEXTURE_IMAGE_UNI + ["ctx->Const.MaxTextureImageUnits"], "", + ["ARB_fragment_program", "NV_fragment_program"] ), + + ( "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB", GLint, + ["ctx->Const.MaxVertexTextureImageUnits"], "", ["ARB_vertex_shader"] ), + ( "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB", GLint, + ["MAX_COMBINED_TEXTURE_IMAGE_UNITS"], "", ["ARB_vertex_shader"] ), + + # GL_ARB_shader_objects + # Actually, this token isn't part of GL_ARB_shader_objects, but is + # close enough for now. + ( "GL_CURRENT_PROGRAM", GLint, + ["ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0"], + "", ["ARB_shader_objects"] ), + + # OpenGL 2.0 + ( "GL_STENCIL_BACK_FUNC", GLenum, ["ctx->Stencil.Function[1]"], "", None ), + ( "GL_STENCIL_BACK_VALUE_MASK", GLint, ["ctx->Stencil.ValueMask[1]"], "", None ), + ( "GL_STENCIL_BACK_WRITEMASK", GLint, ["ctx->Stencil.WriteMask[1]"], "", None ), + ( "GL_STENCIL_BACK_REF", GLint, ["ctx->Stencil.Ref[1]"], "", None ), + ( "GL_STENCIL_BACK_FAIL", GLenum, ["ctx->Stencil.FailFunc[1]"], "", None ), + ( "GL_STENCIL_BACK_PASS_DEPTH_FAIL", GLenum, ["ctx->Stencil.ZFailFunc[1]"], "", None ), + ( "GL_STENCIL_BACK_PASS_DEPTH_PASS", GLenum, ["ctx->Stencil.ZPassFunc[1]"], "", None ), + + ( "GL_MAX_VERTEX_ATTRIBS_ARB", GLint, + ["ctx->Const.VertexProgram.MaxAttribs"], "", ["ARB_vertex_program"] ), + + # OES_texture_3D + ( "GL_TEXTURE_BINDING_3D", GLint, + ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name"], "", None), + ( "GL_MAX_3D_TEXTURE_SIZE", GLint, ["1 << (ctx->Const.Max3DTextureLevels - 1)"], "", None), + + # OES_standard_derivatives + ( "GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB", GLenum, + ["ctx->Hint.FragmentShaderDerivative"], "", ["ARB_fragment_shader"] ), + + # Unique to ES 2 (not in full GL) + ( "GL_MAX_FRAGMENT_UNIFORM_VECTORS", GLint, + ["ctx->Const.FragmentProgram.MaxUniformComponents / 4"], "", None), + ( "GL_MAX_VARYING_VECTORS", GLint, + ["ctx->Const.MaxVarying"], "", None), + ( "GL_MAX_VERTEX_UNIFORM_VECTORS", GLint, + ["ctx->Const.VertexProgram.MaxUniformComponents / 4"], "", None), + ( "GL_SHADER_COMPILER", GLint, ["1"], "", None), + # OES_get_program_binary + ( "GL_NUM_SHADER_BINARY_FORMATS", GLint, ["0"], "", None), + ( "GL_SHADER_BINARY_FORMATS", GLint, [], "", None), +] + + + +def ConversionFunc(fromType, toType): + """Return the name of the macro to convert between two data types.""" + if fromType == toType: + return "" + elif fromType == GLfloat and toType == GLint: + return "IROUND" + elif fromType == GLfloatN and toType == GLfloat: + return "" + elif fromType == GLint and toType == GLfloat: # but not GLfloatN! + return "(GLfloat)" + else: + if fromType == GLfloatN: + fromType = GLfloat + fromStr = TypeStrings[fromType] + fromStr = string.upper(fromStr[2:]) + toStr = TypeStrings[toType] + toStr = string.upper(toStr[2:]) + return fromStr + "_TO_" + toStr + + +def EmitGetFunction(stateVars, returnType): + """Emit the code to implement glGetBooleanv, glGetIntegerv or glGetFloatv.""" + assert (returnType == GLboolean or + returnType == GLint or + returnType == GLfloat) + + strType = TypeStrings[returnType] + # Capitalize first letter of return type + if returnType == GLint: + function = "_mesa_GetIntegerv" + elif returnType == GLboolean: + function = "_mesa_GetBooleanv" + elif returnType == GLfloat: + function = "_mesa_GetFloatv" + else: + abort() + + print "void GLAPIENTRY" + print "%s( GLenum pname, %s *params )" % (function, strType) + print "{" + print " GET_CURRENT_CONTEXT(ctx);" + print " ASSERT_OUTSIDE_BEGIN_END(ctx);" + print "" + print " if (!params)" + print " return;" + print "" + print " if (ctx->NewState)" + print " _mesa_update_state(ctx);" + print "" + print " switch (pname) {" + + for (name, varType, state, optionalCode, extensions) in stateVars: + print " case " + name + ":" + if extensions: + if len(extensions) == 1: + print (' CHECK_EXT1(%s, "%s");' % + (extensions[0], function)) + elif len(extensions) == 2: + print (' CHECK_EXT2(%s, %s, "%s");' % + (extensions[0], extensions[1], function)) + elif len(extensions) == 3: + print (' CHECK_EXT3(%s, %s, %s, "%s");' % + (extensions[0], extensions[1], extensions[2], function)) + else: + assert len(extensions) == 4 + print (' CHECK_EXT4(%s, %s, %s, %s, "%s");' % + (extensions[0], extensions[1], extensions[2], extensions[3], function)) + if optionalCode: + print " {" + print " " + optionalCode + conversion = ConversionFunc(varType, returnType) + n = len(state) + for i in range(n): + if conversion: + print " params[%d] = %s(%s);" % (i, conversion, state[i]) + else: + print " params[%d] = %s;" % (i, state[i]) + if optionalCode: + print " }" + print " break;" + + print " default:" + print ' _mesa_error(ctx, GL_INVALID_ENUM, "gl%s(pname=0x%%x)", pname);' % function + print " }" + print "}" + print "" + return + + + +def EmitHeader(): + """Print the get.c file header.""" + print """ +/*** + *** NOTE!!! DO NOT EDIT THIS FILE!!! IT IS GENERATED BY get_gen.py + ***/ + +#include "main/glheader.h" +#include "main/context.h" +#include "main/enable.h" +#include "main/extensions.h" +#include "main/fbobject.h" +#include "main/get.h" +#include "main/macros.h" +#include "main/mtypes.h" +#include "main/state.h" +#include "main/texcompress.h" + + +/* ES1 tokens that should be in gl.h but aren't */ +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 + + +/* ES2 special tokens */ +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_SHADER_COMPILER 0x8DFA +#define GL_PLATFORM_BINARY 0x8D63 +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 + + +#ifndef GL_OES_matrix_get +#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898D +#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 0x898E +#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 0x898F +#endif + +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif + + +#define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE ) + +#define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE ) + +#define BOOLEAN_TO_INT(B) ( (GLint) (B) ) +#define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F ) + + +/* + * Check if named extension is enabled, if not generate error and return. + */ +#define CHECK_EXT1(EXT1, FUNC) \\ + if (!ctx->Extensions.EXT1) { \\ + _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \\ + return; \\ + } + +/* + * Check if either of two extensions is enabled. + */ +#define CHECK_EXT2(EXT1, EXT2, FUNC) \\ + if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \\ + _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \\ + return; \\ + } + +/* + * Check if either of three extensions is enabled. + */ +#define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC) \\ + if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \\ + !ctx->Extensions.EXT3) { \\ + _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \\ + return; \\ + } + +/* + * Check if either of four extensions is enabled. + */ +#define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC) \\ + if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \\ + !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \\ + _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \\ + return; \\ + } + + + +/** + * List of compressed texture formats supported by ES. + */ +static GLenum compressed_formats[] = { + GL_PALETTE4_RGB8_OES, + GL_PALETTE4_RGBA8_OES, + GL_PALETTE4_R5_G6_B5_OES, + GL_PALETTE4_RGBA4_OES, + GL_PALETTE4_RGB5_A1_OES, + GL_PALETTE8_RGB8_OES, + GL_PALETTE8_RGBA8_OES, + GL_PALETTE8_R5_G6_B5_OES, + GL_PALETTE8_RGBA4_OES, + GL_PALETTE8_RGB5_A1_OES +}; + +#define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0])) + +""" + return + + +def EmitAll(stateVars): + EmitHeader() + EmitGetFunction(stateVars, GLboolean) + EmitGetFunction(stateVars, GLfloat) + EmitGetFunction(stateVars, GLint) + + +def main(args): + # Determine whether to generate ES1 or ES2 queries + if len(args) > 1 and args[1] == "1": + API = 1 + elif len(args) > 1 and args[1] == "2": + API = 2 + else: + API = 1 + #print "len args = %d API = %d" % (len(args), API) + + if API == 1: + vars = StateVars_common + StateVars_es1 + else: + vars = StateVars_common + StateVars_es2 + + EmitAll(vars) + + +main(sys.argv) diff --git a/src/mesa/es/main/mfeatures.h b/src/mesa/es/main/mfeatures.h new file mode 100644 index 0000000000..28f376d2d1 --- /dev/null +++ b/src/mesa/es/main/mfeatures.h @@ -0,0 +1,113 @@ +/************************************************************************** + * + * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * 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, sub license, 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 (including the + * next paragraph) 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 NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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. + * + **************************************************************************/ + +/** + * \file mfeatures.h + * + * The #defines in this file enable/disable Mesa features needed + * for OpenGL ES 1.1 / 2.0 + */ + + +#ifndef MFEATURES_H +#define MFEATURES_H + +#include "main/compiler.h" + +/* this file replaces main/mfeatures.h */ +#ifdef FEATURES_H +#error "main/mfeatures.h was wrongly included" +#endif +#define FEATURES_H + +#define ASSERT_NO_FEATURE() ASSERT(0) + +/* + * Enable/disable features (blocks of code) by setting FEATURE_xyz to 0 or 1. + */ +#ifndef _HAVE_FULL_GL +#define _HAVE_FULL_GL 1 +#endif + +#define FEATURE_accum 0 +#define FEATURE_arrayelt 0 +#define FEATURE_attrib_stack 0 +#define FEATURE_colortable 0 +#define FEATURE_convolve 0 +#define FEATURE_dispatch 1 +#define FEATURE_dlist 0 +#define FEATURE_draw_read_buffer 0 +#define FEATURE_drawpix 0 +#define FEATURE_es2_glsl 1 +#define FEATURE_evaluators 0 +#define FEATURE_feedback 0 +#define FEATURE_fixedpt 1 +#define FEATURE_histogram 0 +#define FEATURE_pixeltransfer 0 +#define FEATURE_point_size_array 1 +#define FEATURE_rastpos 0 +#define FEATURE_texgen 1 +#define FEATURE_texture_fxt1 0 +#define FEATURE_texture_s3tc 0 +#define FEATURE_userclip 1 +#define FEATURE_vertex_array_byte 1 + +#define FEATURE_ARB_occlusion_query 0 +#define FEATURE_ARB_fragment_program _HAVE_FULL_GL +#define FEATURE_ARB_vertex_buffer_object _HAVE_FULL_GL +#define FEATURE_ARB_vertex_program _HAVE_FULL_GL + +#define FEATURE_ARB_vertex_shader _HAVE_FULL_GL +#define FEATURE_ARB_fragment_shader _HAVE_FULL_GL +#define FEATURE_ARB_shader_objects (FEATURE_ARB_vertex_shader || FEATURE_ARB_fragment_shader) +#define FEATURE_ARB_shading_language_100 FEATURE_ARB_shader_objects +#define FEATURE_ARB_shading_language_120 FEATURE_ARB_shader_objects + +#define FEATURE_EXT_framebuffer_blit 0 +#define FEATURE_EXT_framebuffer_object _HAVE_FULL_GL +#define FEATURE_EXT_pixel_buffer_object _HAVE_FULL_GL +#define FEATURE_EXT_texture_sRGB 0 +#define FEATURE_EXT_timer_query 0 +#define FEATURE_ATI_fragment_shader 0 +#define FEATURE_MESA_program_debug _HAVE_FULL_GL +#define FEATURE_NV_fence 0 +#define FEATURE_NV_fragment_program 0 +#define FEATURE_NV_vertex_program 0 + +#define FEATURE_OES_EGL_image 1 +#define FEATURE_OES_framebuffer_object 1 +#define FEATURE_OES_draw_texture 1 +#define FEATURE_OES_mapbuffer 1 + +#define FEATURE_extra_context_init 1 + +/*@}*/ + + + + +#endif /* MFEATURES_H */ diff --git a/src/mesa/es/main/specials_es1.c b/src/mesa/es/main/specials_es1.c new file mode 100644 index 0000000000..02c3247e94 --- /dev/null +++ b/src/mesa/es/main/specials_es1.c @@ -0,0 +1,186 @@ +/************************************************************************** + * + * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * 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 + * TUNGSTEN GRAPHICS 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. + **************************************************************************/ + + +#include "main/mtypes.h" +#include "main/context.h" +#include "main/imports.h" +#include "main/get.h" + + +extern const GLubyte * GLAPIENTRY _es_GetString(GLenum name); + + +static const GLubyte * +compute_es_version(void) +{ + GET_CURRENT_CONTEXT(ctx); + static const char es_1_0[] = "OpenGL ES-CM 1.0"; + static const char es_1_1[] = "OpenGL ES-CM 1.1"; + /* OpenGL ES 1.0 is derived from OpenGL 1.3 */ + const GLboolean ver_1_0 = (ctx->Extensions.ARB_multisample && + ctx->Extensions.ARB_multitexture && + ctx->Extensions.ARB_texture_compression && + ctx->Extensions.EXT_texture_env_add && + ctx->Extensions.ARB_texture_env_combine && + ctx->Extensions.ARB_texture_env_dot3); + /* OpenGL ES 1.1 is derived from OpenGL 1.5 */ + const GLboolean ver_1_1 = (ver_1_0 && + ctx->Extensions.EXT_point_parameters && + ctx->Extensions.SGIS_generate_mipmap && + ctx->Extensions.ARB_vertex_buffer_object); + if (ver_1_1) + return (const GLubyte *) es_1_1; + + if (!ver_1_0) + _mesa_problem(ctx, "Incomplete OpenGL ES 1.0 support."); + return (const GLubyte *) es_1_0; +} + + +static size_t +append_extension(char **str, const char *ext) +{ + char *s = *str; + size_t len = strlen(ext); + + if (s) { + memcpy(s, ext, len); + s[len++] = ' '; + s[len] = '\0'; + + *str += len; + } + else { + len++; + } + + return len; +} + + +static size_t +make_extension_string(const GLcontext *ctx, char *str) +{ + size_t len = 0; + + /* Core additions */ + len += append_extension(&str, "GL_OES_byte_coordinates"); + len += append_extension(&str, "GL_OES_fixed_point"); + len += append_extension(&str, "GL_OES_single_precision"); + len += append_extension(&str, "GL_OES_matrix_get"); + + /* 1.1 required extensions */ + len += append_extension(&str, "GL_OES_read_format"); + len += append_extension(&str, "GL_OES_compressed_paletted_texture"); + len += append_extension(&str, "GL_OES_point_size_array"); + len += append_extension(&str, "GL_OES_point_sprite"); + + /* 1.1 deprecated extensions */ + len += append_extension(&str, "GL_OES_query_matrix"); + + if (ctx->Extensions.OES_EGL_image) + len += append_extension(&str, "GL_OES_EGL_image"); + + if (ctx->Extensions.OES_draw_texture) + len += append_extension(&str, "GL_OES_draw_texture"); + + if (ctx->Extensions.EXT_blend_equation_separate) + len += append_extension(&str, "GL_OES_blend_equation_separate"); + if (ctx->Extensions.EXT_blend_func_separate) + len += append_extension(&str, "GL_OES_blend_func_separate"); + if (ctx->Extensions.EXT_blend_subtract) + len += append_extension(&str, "GL_OES_blend_subtract"); + + if (ctx->Extensions.ARB_texture_cube_map) + len += append_extension(&str, "GL_OES_texture_cube_map"); + if (ctx->Extensions.ARB_texture_env_crossbar) + len += append_extension(&str, "GL_OES_texture_env_crossbar"); + if (ctx->Extensions.ARB_texture_mirrored_repeat) + len += append_extension(&str, "GL_OES_texture_mirrored_repeat"); + + if (ctx->Extensions.ARB_framebuffer_object) { + len += append_extension(&str, "GL_OES_framebuffer_object"); + len += append_extension(&str, "GL_OES_depth24"); + len += append_extension(&str, "GL_OES_depth32"); + len += append_extension(&str, "GL_OES_fbo_render_mipmap"); + len += append_extension(&str, "GL_OES_rgb8_rgba8"); + len += append_extension(&str, "GL_OES_stencil1"); + len += append_extension(&str, "GL_OES_stencil4"); + len += append_extension(&str, "GL_OES_stencil8"); + } + + if (ctx->Extensions.EXT_vertex_array) + len += append_extension(&str, "GL_OES_element_index_uint"); + if (ctx->Extensions.ARB_vertex_buffer_object) + len += append_extension(&str, "GL_OES_mapbuffer"); + if (ctx->Extensions.EXT_texture_filter_anisotropic) + len += append_extension(&str, "GL_EXT_texture_filter_anisotropic"); + + return len; +} + + +static const GLubyte * +compute_es_extensions(void) +{ + GET_CURRENT_CONTEXT(ctx); + + if (!ctx->Extensions.String) { + char *s; + unsigned int len; + + len = make_extension_string(ctx, NULL); + s = (char *) _mesa_malloc(len + 1); + if (!s) + return NULL; + make_extension_string(ctx, s); + ctx->Extensions.String = (const GLubyte *) s; + } + + return ctx->Extensions.String; +} + + +const GLubyte * GLAPIENTRY +_es_GetString(GLenum name) +{ + switch (name) { + case GL_VERSION: + return compute_es_version(); + case GL_EXTENSIONS: + return compute_es_extensions(); + default: + return _mesa_GetString(name); + } +} + + +void +_mesa_initialize_context_extra(GLcontext *ctx) +{ + /* FEATURE_es2_glsl is on */ + ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE; + ctx->VertexProgram._MaintainTnlProgram = GL_TRUE; +} diff --git a/src/mesa/es/main/specials_es2.c b/src/mesa/es/main/specials_es2.c new file mode 100644 index 0000000000..791f178361 --- /dev/null +++ b/src/mesa/es/main/specials_es2.c @@ -0,0 +1,173 @@ +/************************************************************************** + * + * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * 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 + * TUNGSTEN GRAPHICS 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. + **************************************************************************/ + + +#include "main/mtypes.h" +#include "main/context.h" +#include "main/imports.h" +#include "main/get.h" + + +const GLubyte * GLAPIENTRY _es_GetString(GLenum name); + + +static const GLubyte * +compute_es_version(void) +{ + GET_CURRENT_CONTEXT(ctx); + static const char es_2_0[] = "OpenGL ES 2.0"; + /* OpenGL ES 2.0 is derived from OpenGL 2.0 */ + const GLboolean ver_2_0 = (ctx->Extensions.ARB_multisample && + ctx->Extensions.ARB_multitexture && + ctx->Extensions.ARB_texture_compression && + ctx->Extensions.ARB_texture_cube_map && + ctx->Extensions.ARB_texture_mirrored_repeat && + ctx->Extensions.EXT_blend_color && + ctx->Extensions.EXT_blend_func_separate && + ctx->Extensions.EXT_blend_minmax && + ctx->Extensions.EXT_blend_subtract && + ctx->Extensions.EXT_stencil_wrap && + ctx->Extensions.ARB_vertex_buffer_object && + ctx->Extensions.ARB_shader_objects && + ctx->Extensions.ARB_vertex_shader && + ctx->Extensions.ARB_fragment_shader && + ctx->Extensions.ARB_texture_non_power_of_two && + ctx->Extensions.EXT_blend_equation_separate); + if (!ver_2_0) + _mesa_problem(ctx, "Incomplete OpenGL ES 2.0 support."); + return (const GLubyte *) es_2_0; +} + + +static size_t +append_extension(char **str, const char *ext) +{ + char *s = *str; + size_t len = strlen(ext); + + if (s) { + memcpy(s, ext, len); + s[len++] = ' '; + s[len] = '\0'; + + *str += len; + } + else { + len++; + } + + return len; +} + + +static size_t +make_extension_string(const GLcontext *ctx, char *str) +{ + size_t len = 0; + + /* Core additions */ + len += append_extension(&str, "GL_OES_single_precision"); + + /* Required extensions */ + len += append_extension(&str, "GL_OES_compressed_paletted_texture"); + + if (ctx->Extensions.ARB_framebuffer_object) { + len += append_extension(&str, "GL_OES_framebuffer_object"); + len += append_extension(&str, "GL_OES_depth24"); + len += append_extension(&str, "GL_OES_depth32"); + len += append_extension(&str, "GL_OES_fbo_render_mipmap"); + len += append_extension(&str, "GL_OES_rgb8_rgba8"); + len += append_extension(&str, "GL_OES_stencil1"); + len += append_extension(&str, "GL_OES_stencil4"); + len += append_extension(&str, "GL_OES_stencil8"); + } + + if (ctx->Extensions.EXT_vertex_array) + len += append_extension(&str, "GL_OES_element_index_uint"); + if (ctx->Extensions.ARB_vertex_buffer_object) + len += append_extension(&str, "GL_OES_mapbuffer"); + + if (ctx->Extensions.EXT_texture3D) + len += append_extension(&str, "GL_OES_texture_3D"); + if (ctx->Extensions.ARB_texture_non_power_of_two) + len += append_extension(&str, "GL_OES_texture_npot"); + if (ctx->Extensions.EXT_texture_filter_anisotropic) + len += append_extension(&str, "GL_EXT_texture_filter_anisotropic"); + + len += append_extension(&str, "GL_EXT_texture_type_2_10_10_10_REV"); + if (ctx->Extensions.ARB_depth_texture) + len += append_extension(&str, "GL_OES_depth_texture"); + if (ctx->Extensions.EXT_packed_depth_stencil) + len += append_extension(&str, "GL_OES_packed_depth_stencil"); + if (ctx->Extensions.ARB_fragment_shader) + len += append_extension(&str, "GL_OES_standard_derivatives"); + + return len; +} + + +static const GLubyte * +compute_es_extensions(void) +{ + GET_CURRENT_CONTEXT(ctx); + + if (!ctx->Extensions.String) { + char *s; + unsigned int len; + + len = make_extension_string(ctx, NULL); + s = (char *) _mesa_malloc(len + 1); + if (!s) + return NULL; + make_extension_string(ctx, s); + ctx->Extensions.String = (const GLubyte *) s; + } + + return ctx->Extensions.String; +} + +const GLubyte * GLAPIENTRY +_es_GetString(GLenum name) +{ + switch (name) { + case GL_VERSION: + return compute_es_version(); + case GL_SHADING_LANGUAGE_VERSION: + return (const GLubyte *) "OpenGL ES GLSL ES 1.0.16"; + case GL_EXTENSIONS: + return compute_es_extensions(); + default: + return _mesa_GetString(name); + } +} + + +void +_mesa_initialize_context_extra(GLcontext *ctx) +{ + ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE; + ctx->VertexProgram._MaintainTnlProgram = GL_TRUE; + + ctx->Point.PointSprite = GL_TRUE; /* always on for ES 2.x */ +} diff --git a/src/mesa/es/main/stubs.c b/src/mesa/es/main/stubs.c new file mode 100644 index 0000000000..e7b8bc780f --- /dev/null +++ b/src/mesa/es/main/stubs.c @@ -0,0 +1,138 @@ +/************************************************************************** + * + * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * 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 + * TUNGSTEN GRAPHICS 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. + **************************************************************************/ + + +/** + * Temporary stubs for "missing" mesa functions. + */ + + +#include "main/mtypes.h" +#include "main/imports.h" +#include "vbo/vbo.h" + +#define NEED_IMPLEMENT() do { \ + GET_CURRENT_CONTEXT(ctx); \ + _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__); \ + } while (0) + +#if FEATURE_accum +/* This is a sanity check that to be sure we're using the correct mfeatures.h + * header. We don't want to accidentally use the one from mainline Mesa. + */ +#error "The wrong mfeatures.h file is being included!" +#endif + + +/* silence compiler warnings */ +extern void GLAPIENTRY _vbo_Materialf(GLenum face, GLenum pname, GLfloat param); +extern void GLAPIENTRY _mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); +extern void GLAPIENTRY _mesa_ReleaseShaderCompiler(void); +extern void GLAPIENTRY _mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLint length); +extern void GLAPIENTRY _vbo_VertexAttrib1f(GLuint indx, GLfloat x); +extern void GLAPIENTRY _vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values); +extern void GLAPIENTRY _vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); +extern void GLAPIENTRY _vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values); +extern void GLAPIENTRY _vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); +extern void GLAPIENTRY _vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values); +extern void GLAPIENTRY _vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values); + + +void GLAPIENTRY +_vbo_Materialf(GLenum face, GLenum pname, GLfloat param) +{ + _vbo_Materialfv(face, pname, ¶m); +} + + +void GLAPIENTRY +_mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, + GLint* range, GLint* precision) +{ + NEED_IMPLEMENT(); +} + + +void GLAPIENTRY +_mesa_ReleaseShaderCompiler(void) +{ + NEED_IMPLEMENT(); +} + + +void GLAPIENTRY +_mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, + const void* binary, GLint length) +{ + NEED_IMPLEMENT(); +} + + +void GLAPIENTRY +_vbo_VertexAttrib1f(GLuint indx, GLfloat x) +{ + _vbo_VertexAttrib4f(indx, x, 0.0, 0.0, 1.0f); +} + + +void GLAPIENTRY +_vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values) +{ + _vbo_VertexAttrib4f(indx, values[0], 0.0, 0.0, 1.0f); +} + + +void GLAPIENTRY +_vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) +{ + _vbo_VertexAttrib4f(indx, x, y, 0.0, 1.0f); +} + + +void GLAPIENTRY +_vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values) +{ + _vbo_VertexAttrib4f(indx, values[0], values[1], 0.0, 1.0f); +} + + +void GLAPIENTRY +_vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) +{ + _vbo_VertexAttrib4f(indx, x, y, z, 1.0f); +} + + +void GLAPIENTRY +_vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values) +{ + _vbo_VertexAttrib4f(indx, values[0], values[1], values[2], 1.0f); +} + + +void GLAPIENTRY +_vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values) +{ + _vbo_VertexAttrib4f(indx, values[0], values[1], values[2], values[3]); +} diff --git a/src/mesa/es/sources.mak b/src/mesa/es/sources.mak new file mode 100644 index 0000000000..6d20740095 --- /dev/null +++ b/src/mesa/es/sources.mak @@ -0,0 +1,159 @@ +# LOCAL sources + +ES1_LOCAL_SOURCES := \ + main/api_exec_es1.c \ + main/drawtex.c \ + main/eglimage.c \ + main/get_es1.c \ + main/specials_es1.c \ + main/es_cpaltex.c \ + main/es_fbo.c \ + main/es_query_matrix.c \ + main/stubs.c + +ES1_GALLIUM_LOCAL_SOURCES := \ + $(ES1_LOCAL_SOURCES) + +ES1_API_LOCAL_SOURCES := \ + +ES1_LOCAL_INCLUDES := \ + -I. \ + -I./glapi/headers-es1 \ + -I./state_tracker \ + -I$(MESA)/state_tracker + +ES2_LOCAL_SOURCES := \ + main/api_exec_es2.c \ + main/eglimage.c \ + main/get_es2.c \ + main/specials_es2.c \ + main/es_cpaltex.c \ + main/es_fbo.c \ + main/stubs.c + +ES2_GALLIUM_LOCAL_SOURCES := \ + $(ES2_LOCAL_SOURCES) + +ES2_API_LOCAL_SOURCES := + +ES2_LOCAL_INCLUDES := $(subst es1,es2,$(ES1_LOCAL_INCLUDES)) + +# MESA sources + +include $(MESA)/sources.mak + +MAIN_OMITTED := \ + main/api_exec.c \ + main/dlopen.c \ + main/get.c +MAIN_SOURCES := $(filter-out $(MAIN_OMITTED), $(MAIN_SOURCES)) + +VBO_OMITTED := \ + vbo/vbo_save_api.c \ + vbo/vbo_save.c \ + vbo/vbo_save_draw.c \ + vbo/vbo_save_loopback.c +VBO_SOURCES := $(filter-out $(VBO_OMITTED), $(VBO_SOURCES)) + +STATETRACKER_OMITTED := \ + state_tracker/st_cb_drawpixels.c \ + state_tracker/st_cb_feedback.c \ + state_tracker/st_cb_rasterpos.c \ + state_tracker/st_api.c \ + state_tracker/st_draw_feedback.c +STATETRACKER_SOURCES := $(filter-out $(STATETRACKER_OMITTED), $(STATETRACKER_SOURCES)) + +SHADER_OMITTED := \ + shader/atifragshader.c \ + shader/nvfragparse.c \ + shader/nvprogram.c \ + shader/nvvertparse.c +SHADER_SOURCES := $(filter-out $(SHADER_OMITTED), $(SHADER_SOURCES)) + +STATETRACKER_SOURCES += \ + state_tracker/st_cb_drawtex.c + +ES1_MESA_SOURCES := \ + $(MAIN_SOURCES) \ + $(MATH_SOURCES) \ + $(MATH_XFORM_SOURCES) \ + $(VBO_SOURCES) \ + $(TNL_SOURCES) \ + $(SHADER_SOURCES) \ + $(SWRAST_SOURCES) \ + $(SWRAST_SETUP_SOURCES) \ + $(COMMON_DRIVER_SOURCES) \ + $(ASM_C_SOURCES) \ + $(SLANG_SOURCES) + +ES1_GALLIUM_MESA_SOURCES := \ + $(MAIN_SOURCES) \ + $(MATH_SOURCES) \ + $(MATH_XFORM_SOURCES) \ + $(VBO_SOURCES) \ + $(STATETRACKER_SOURCES) \ + $(SHADER_SOURCES) \ + $(SLANG_SOURCES) + +ES1_API_MESA_SOURCES := \ + $(GLAPI_SOURCES) + +ES1_MESA_INCLUDES := $(INCLUDE_DIRS) + +# remove LOCAL sources from MESA sources +ES1_MESA_SOURCES := $(filter-out $(ES1_LOCAL_SOURCES), $(ES1_MESA_SOURCES)) +ES1_GALLIUM_MESA_SOURCES := $(filter-out $(ES1_GALLIUM_LOCAL_SOURCES), $(ES1_GALLIUM_MESA_SOURCES)) +ES1_API_MESA_SOURCES := $(filter-out $(ES1_API_LOCAL_SOURCES), $(ES1_API_MESA_SOURCES)) + +# es2 and es1 share sources +ES2_MESA_SOURCES := $(ES1_MESA_SOURCES) +ES2_GALLIUM_MESA_SOURCES := $(ES1_GALLIUM_MESA_SOURCES) +ES2_API_MESA_SOURCES := $(ES1_API_MESA_SOURCES) + +ES2_MESA_INCLUDES := $(ES1_MESA_INCLUDES) + + +# collect sources +ES1_SOURCES := $(ES1_LOCAL_SOURCES) $(ES1_MESA_SOURCES) +ES1_GALLIUM_SOURCES := $(ES1_GALLIUM_LOCAL_SOURCES) $(ES1_GALLIUM_MESA_SOURCES) +ES1_API_SOURCES := $(ES1_API_LOCAL_SOURCES) $(ES1_API_MESA_SOURCES) + +ES2_SOURCES := $(ES2_LOCAL_SOURCES) $(ES2_MESA_SOURCES) +ES2_GALLIUM_SOURCES := $(ES2_GALLIUM_LOCAL_SOURCES) $(ES2_GALLIUM_MESA_SOURCES) +ES2_API_SOURCES := $(ES2_API_LOCAL_SOURCES) $(ES2_API_MESA_SOURCES) + +# collect includes +ES1_INCLUDES := $(ES1_LOCAL_INCLUDES) $(ES1_MESA_INCLUDES) +ES2_INCLUDES := $(ES2_LOCAL_INCLUDES) $(ES2_MESA_INCLUDES) + +# group sources in another way +ALL_LOCAL_SOURCES := \ + $(ES1_LOCAL_SOURCES) \ + $(ES1_GALLIUM_LOCAL_SOURCES) \ + $(ES1_API_LOCAL_SOURCES) \ + $(ES2_LOCAL_SOURCES) \ + $(ES2_GALLIUM_LOCAL_SOURCES) \ + $(ES2_API_LOCAL_SOURCES) +ALL_MESA_SOURCES := \ + $(ES1_MESA_SOURCES) \ + $(ES1_GALLIUM_MESA_SOURCES) \ + $(ES1_API_MESA_SOURCES) \ + $(ES2_MESA_SOURCES) \ + $(ES2_GALLIUM_MESA_SOURCES) \ + $(ES2_API_MESA_SOURCES) + +# sort to remove duplicates +ALL_LOCAL_SOURCES := $(sort $(ALL_LOCAL_SOURCES)) +ALL_MESA_SOURCES := $(sort $(ALL_MESA_SOURCES)) + +# convert to objects +ES1_OBJECTS := $(ES1_SOURCES:.c=.o) +ES1_GALLIUM_OBJECTS := $(ES1_GALLIUM_SOURCES:.c=.o) +ES1_API_OBJECTS := $(ES1_API_SOURCES:.c=.o) + +ES2_OBJECTS := $(ES2_SOURCES:.c=.o) +ES2_GALLIUM_OBJECTS := $(ES2_GALLIUM_SOURCES:.c=.o) +ES2_API_OBJECTS := $(ES2_API_SOURCES:.c=.o) + +ALL_LOCAL_OBJECTS := $(ALL_LOCAL_SOURCES:.c=.o) +ALL_MESA_OBJECTS := $(ALL_MESA_SOURCES:.c=.o) |