diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-02-04 21:23:45 +0100 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-02-07 18:13:37 +0100 |
commit | 72a841745eea6f3a4b4e857d7534b1b6dccb5d53 (patch) | |
tree | bc9440d44c882f836923dc5b2a41068ee79c3458 /tools | |
parent | cf4bd4b6123ae7b2df8f7ea9a05b42b367b29e73 (diff) |
gallium state: running prototype
Diffstat (limited to 'tools')
-rw-r--r-- | tools/data/gles2.xml | 1215 | ||||
-rw-r--r-- | tools/data/viv_gallium_state.txt | 96 | ||||
-rw-r--r-- | tools/etnaviv/parse_rng.py | 3 | ||||
-rwxr-xr-x | tools/gen_weave_state.py | 189 |
4 files changed, 1502 insertions, 1 deletions
diff --git a/tools/data/gles2.xml b/tools/data/gles2.xml new file mode 100644 index 0000000..67f34b3 --- /dev/null +++ b/tools/data/gles2.xml @@ -0,0 +1,1215 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Copyright (c) 2012-2013 Wladimir J. van der Laan + + 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 + 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. +--> +<!-- List of OpenGL ES 2.0 functions with parameters. + GLES2 specification in machine-parseable format for state probing. + --> +<root> + +<!-- format roughly based on rnndb --> +<!-- should be extendable by extensions (later work) + values are not important here and would only cause clutter, as the values of state bits depend on the hw, + also the same tokens can (and should) be part of multiple enumerations without any harm, + they could be mapped with another map (tokens.xml) if important, ie to build hash tables + --> +<enum name="Boolean"> + <value name="FALSE"/> + <value name="TRUE"/> +</enum> +<bitset name="ClearBufferMask"> + <bitfield name="DEPTH_BUFFER_BIT"/> + <bitfield name="STENCIL_BUFFER_BIT"/> + <bitfield name="COLOR_BUFFER_BIT"/> +</bitset> +<enum name="BeginMode"> <!-- primitive type --> + <value name="POINTS"/> + <value name="LINES"/> + <value name="LINE_LOOP"/> + <value name="LINE_STRIP"/> + <value name="TRIANGLES"/> + <value name="TRIANGLE_STRIP"/> + <value name="TRIANGLE_FAN"/> + <!-- XXX QUADS also supported by Vivante blob, not in GLES2 --> +</enum> +<enum name="BlendingFactorDest"> + <value name="ZERO"/> + <value name="ONE"/> + <value name="SRC_COLOR"/> + <value name="ONE_MINUS_SRC_COLOR"/> + <value name="DST_COLOR"/> + <value name="ONE_MINUS_DST_COLOR"/> + <value name="SRC_ALPHA"/> + <value name="ONE_MINUS_SRC_ALPHA"/> + <value name="DST_ALPHA"/> + <value name="ONE_MINUS_DST_ALPHA"/> + <value name="CONSTANT_COLOR"/> + <value name="ONE_MINUS_CONSTANT_COLOR"/> + <value name="CONSTANT_ALPHA"/> + <value name="ONE_MINUS_CONSTANT_ALPHA"/> +</enum> +<enum name="BlendingFactorSrc"> + <value name="ZERO"/> + <value name="ONE"/> + <value name="SRC_COLOR"/> + <value name="ONE_MINUS_SRC_COLOR"/> + <value name="DST_COLOR"/> + <value name="ONE_MINUS_DST_COLOR"/> + <value name="SRC_ALPHA"/> + <value name="ONE_MINUS_SRC_ALPHA"/> + <value name="DST_ALPHA"/> + <value name="ONE_MINUS_DST_ALPHA"/> + <value name="CONSTANT_COLOR"/> + <value name="ONE_MINUS_CONSTANT_COLOR"/> + <value name="CONSTANT_ALPHA"/> + <value name="ONE_MINUS_CONSTANT_ALPHA"/> + <value name="SRC_ALPHA_SATURATE"/> +</enum> +<enum name="BlendEquation"> + <value name="FUNC_ADD"/> + <value name="FUNC_SUBTRACT"/> + <value name="FUNC_REVERSE_SUBTRACT"/> + <!-- MIN --> + <!-- MAX --> +</enum> +<enum name="CullFaceMode"> <!-- Used by CullFace and XXXSeparate to specify face --> + <value name="FRONT"/> + <value name="BACK"/> + <value name="FRONT_AND_BACK"/> +</enum> +<enum name="EnableCap"> <!-- Enable/Disable/IsEnabled --> + <value name="BLEND"/> + <value name="CULL_FACE"/> + <value name="DEPTH_TEST"/> + <value name="DITHER"/> + <value name="POLYGON_OFFSET_FILL"/> + <value name="SAMPLE_ALPHA_TO_COVERAGE"/> + <value name="SAMPLE_COVERAGE"/> + <value name="SCISSOR_TEST"/> + <value name="STENCIL_TEST"/> +</enum> +<enum name="DepthFunction"> + <value name="NEVER"/> + <value name="LESS"/> + <value name="EQUAL"/> + <value name="LEQUAL"/> + <value name="GREATER"/> + <value name="NOTEQUAL"/> + <value name="GEQUAL"/> + <value name="ALWAYS"/> +</enum> +<enum name="ErrorCode"> + <value name="NO_ERROR"/> + <value name="INVALID_ENUM"/> + <value name="INVALID_VALUE"/> + <value name="INVALID_OPERATION"/> + <value name="INVALID_FRAMEBUFFER_OPERATION"/> + <value name="OUT_OF_MEMORY"/> +</enum> +<enum name="FrontFaceDirection"> + <value name="CW"/> + <value name="CCW"/> +</enum> +<enum name="HintMode"> + <value name="DONT_CARE"/> + <value name="FASTEST"/> + <value name="NICEST"/> +</enum> +<enum name="HintTarget"> + <value name="GENERATE_MIPMAP_HINT"/> +</enum> +<enum name="DataType"> + <value name="BYTE"/> + <value name="UNSIGNED_BYTE"/> + <value name="SHORT"/> + <value name="UNSIGNED_SHORT"/> + <value name="INT"/> + <value name="UNSIGNED_INT"/> + <value name="FLOAT"/> + <value name="FIXED"/> +</enum> +<enum name="PixelFormat"> + <!-- XXX split up? used by various functions; + ReadPixels only accepts ALPHA, RGB, RGBA + TexImage2D only accepts ALPHA, RGB, RGBA, LUMINANCE, LUMINANCE_ALPHA + See also TextureInternalFormat + --> + <value name="DEPTH_COMPONENT"/> + <value name="ALPHA"/> + <value name="RGB"/> + <value name="RGBA"/> + <value name="LUMINANCE"/> + <value name="LUMINANCE_ALPHA"/> +</enum> +<enum name="PixelType"> + <value name="UNSIGNED_BYTE"/> + <value name="UNSIGNED_SHORT_4_4_4_4"/> + <value name="UNSIGNED_SHORT_5_5_5_1"/> + <value name="UNSIGNED_SHORT_5_6_5"/> +</enum> +<enum name="StencilFunction"> + <value name="NEVER"/> + <value name="LESS"/> + <value name="EQUAL"/> + <value name="LEQUAL"/> + <value name="GREATER"/> + <value name="NOTEQUAL"/> + <value name="GEQUAL"/> + <value name="ALWAYS"/> +</enum> +<enum name="StencilOp"> + <value name="ZERO"/> + <value name="KEEP"/> + <value name="REPLACE"/> + <value name="INCR"/> + <value name="DECR"/> + <value name="INVERT"/> + <value name="INCR_WRAP"/> + <value name="DECR_WRAP"/> +</enum> +<enum name="StringName"> + <value name="VENDOR"/> + <value name="RENDERER"/> + <value name="VERSION"/> + <value name="SHADING_LANGUAGE_VERSION"/> + <value name="EXTENSIONS"/> +</enum> +<enum name="TextureMagFilter"> + <value name="NEAREST"/> + <value name="LINEAR"/> +</enum> +<enum name="TextureMinFilter"> + <value name="NEAREST"/> + <value name="LINEAR"/> + <value name="NEAREST_MIPMAP_NEAREST"/> + <value name="LINEAR_MIPMAP_NEAREST"/> + <value name="NEAREST_MIPMAP_LINEAR"/> + <value name="LINEAR_MIPMAP_LINEAR"/> +</enum> +<enum name="TextureParameterName"> + <value name="TEXTURE_MAG_FILTER"/> + <value name="TEXTURE_MIN_FILTER"/> + <value name="TEXTURE_WRAP_S"/> + <value name="TEXTURE_WRAP_T"/> +</enum> +<enum name="TextureTarget"> <!-- general texture target --> + <value name="TEXTURE_2D"/> + <value name="TEXTURE_CUBE_MAP"/> +</enum> +<enum name="TextureTargetFace"> <!-- used when a specific face is to be specified, ie when uploading or binding framebuffer texture --> + <value name="TEXTURE_2D"/> + <value name="TEXTURE_CUBE_MAP_POSITIVE_X"/> + <value name="TEXTURE_CUBE_MAP_NEGATIVE_X"/> + <value name="TEXTURE_CUBE_MAP_POSITIVE_Y"/> + <value name="TEXTURE_CUBE_MAP_NEGATIVE_Y"/> + <value name="TEXTURE_CUBE_MAP_POSITIVE_Z"/> + <value name="TEXTURE_CUBE_MAP_NEGATIVE_Z"/> +</enum> +<enum name="TextureUnit"> + <value name="TEXTURE0"/> + <value name="TEXTURE1"/> + <value name="TEXTURE2"/> + <value name="TEXTURE3"/> + <value name="TEXTURE4"/> + <value name="TEXTURE5"/> + <value name="TEXTURE6"/> + <value name="TEXTURE7"/> + <value name="TEXTURE8"/> + <value name="TEXTURE9"/> + <value name="TEXTURE10"/> + <value name="TEXTURE11"/> + <value name="TEXTURE12"/> + <value name="TEXTURE13"/> + <value name="TEXTURE14"/> + <value name="TEXTURE15"/> + <value name="TEXTURE16"/> + <value name="TEXTURE17"/> + <value name="TEXTURE18"/> + <value name="TEXTURE19"/> + <value name="TEXTURE20"/> + <value name="TEXTURE21"/> + <value name="TEXTURE22"/> + <value name="TEXTURE23"/> + <value name="TEXTURE24"/> + <value name="TEXTURE25"/> + <value name="TEXTURE26"/> + <value name="TEXTURE27"/> + <value name="TEXTURE28"/> + <value name="TEXTURE29"/> + <value name="TEXTURE30"/> + <value name="TEXTURE31"/> +</enum> +<enum name="TextureWrapMode"> + <value name="REPEAT"/> + <value name="CLAMP_TO_EDGE"/> + <value name="MIRRORED_REPEAT"/> +</enum> +<enum name="TextureInternalFormat"> <!-- (Copy)TexImage2D --> + <value name="ALPHA"/> + <value name="LUMINANCE"/> + <value name="LUMINANCE_ALPHA"/> + <value name="RGB"/> + <value name="RGBA"/> +</enum> +<enum name="RenderbufferInternalFormat"> <!-- RenderbufferStorage / GetRenderbufferParameter --> + <value name="RGBA4"/> + <value name="RGB565"/> + <value name="RGB5_A1"/> + <value name="DEPTH_COMPONENT16"/> + <value name="STENCIL_INDEX8"/> +</enum> +<enum name="UniformType"> <!-- GetActiveAttrib/GetActiveUniform --> + <value name="FLOAT"/> + <value name="FLOAT_VEC2"/> + <value name="FLOAT_VEC3"/> + <value name="FLOAT_VEC4"/> + <value name="INT"/> + <value name="INT_VEC2"/> + <value name="INT_VEC3"/> + <value name="INT_VEC4"/> + <value name="BOOL"/> + <value name="BOOL_VEC2"/> + <value name="BOOL_VEC3"/> + <value name="BOOL_VEC4"/> + <value name="FLOAT_MAT2"/> + <value name="FLOAT_MAT3"/> + <value name="FLOAT_MAT4"/> + <value name="SAMPLER_2D"/> + <value name="SAMPLER_CUBE"/> +</enum> +<enum name="FramebufferAttachment"> + <value name="COLOR_ATTACHMENT0"/> + <value name="DEPTH_ATTACHMENT"/> + <value name="STENCIL_ATTACHMENT"/> +</enum> +<enum name="FramebufferStatus"> <!-- as returned by CheckFramebufferStatus --> + <value name="FRAMEBUFFER_COMPLETE"/> + <value name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT"/> + <value name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS"/> + <value name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"/> + <value name="FRAMEBUFFER_UNSUPPORTED"/> +</enum> +<enum name="FramebufferTarget"> + <value name="FRAMEBUFFER"/> +</enum> +<enum name="RenderbufferTarget"> + <value name="RENDERBUFFER"/> +</enum> +<enum name="GetVertexAttribParameterPName"> + <value name="VERTEX_ATTRIB_ARRAY_ENABLED"/> + <value name="VERTEX_ATTRIB_ARRAY_SIZE"/> + <value name="VERTEX_ATTRIB_ARRAY_STRIDE"/> + <value name="VERTEX_ATTRIB_ARRAY_TYPE"/> + <value name="VERTEX_ATTRIB_ARRAY_NORMALIZED"/> + <value name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"/> + <value name="CURRENT_VERTEX_ATTRIB"/> +</enum> +<enum name="GetBufferParameterPName"> + <value name="BUFFER_SIZE"/> + <value name="BUFFER_USAGE"/> +</enum> +<enum name="BufferTarget"> + <value name="ARRAY_BUFFER"/> + <value name="ELEMENT_ARRAY_BUFFER"/> +</enum> +<enum name="BufferUsage"> + <value name="STREAM_DRAW"/> + <value name="STATIC_DRAW"/> + <value name="DYNAMIC_DRAW"/> +</enum> +<enum name="ShaderType"> + <value name="VERTEX_SHADER"/> + <value name="FRAGMENT_SHADER"/> +</enum> +<enum name="PrecisionType"> <!-- GetShaderPrecisionFormat --> + <value name="LOW_FLOAT"/> + <value name="MEDIUM_FLOAT"/> + <value name="HIGH_FLOAT"/> + <value name="LOW_INT"/> + <value name="MEDIUM_INT"/> + <value name="HIGH_INT"/> +</enum> +<enum name="IndexType"> <!-- glDrawElephants type --> + <value name="UNSIGNED_SHORT" brief="16 bit indices"/> + <value name="UNSIGNED_BYTE" brief="32 bit indices"/> +</enum> +<enum name="GetPName"> + <value name="ACTIVE_TEXTURE"/> + <value name="ALIASED_LINE_WIDTH_RANGE"/> + <value name="ALIASED_POINT_SIZE_RANGE"/> + <value name="ALPHA_BITS"/> + <value name="ARRAY_BUFFER_BINDING"/> + <value name="BLEND"/> + <value name="BLEND_COLOR"/> + <value name="BLEND_DST_ALPHA"/> + <value name="BLEND_DST_RGB"/> + <value name="BLEND_EQUATION_ALPHA"/> + <value name="BLEND_EQUATION_RGB"/> + <value name="BLEND_SRC_ALPHA"/> + <value name="BLEND_SRC_RGB"/> + <value name="BLUE_BITS"/> + <value name="COLOR_CLEAR_VALUE"/> + <value name="COLOR_WRITEMASK"/> + <value name="COMPRESSED_TEXTURE_FORMATS"/> + <value name="CULL_FACE"/> + <value name="CULL_FACE_MODE"/> + <value name="CURRENT_PROGRAM"/> + <value name="DEPTH_BITS"/> + <value name="DEPTH_CLEAR_VALUE"/> + <value name="DEPTH_FUNC"/> + <value name="DEPTH_RANGE"/> + <value name="DEPTH_TEST"/> + <value name="DEPTH_WRITEMASK"/> + <value name="DITHER"/> + <value name="ELEMENT_ARRAY_BUFFER_BINDING"/> + <value name="FRAMEBUFFER_BINDING"/> + <value name="FRONT_FACE"/> + <value name="GENERATE_MIPMAP_HINT"/> + <value name="GREEN_BITS"/> + <value name="IMPLEMENTATION_COLOR_READ_FORMAT"/> + <value name="IMPLEMENTATION_COLOR_READ_TYPE"/> + <value name="LINE_WIDTH"/> + <value name="MAX_COMBINED_TEXTURE_IMAGE_UNITS"/> + <value name="MAX_CUBE_MAP_TEXTURE_SIZE"/> + <value name="MAX_FRAGMENT_UNIFORM_VECTORS"/> + <value name="MAX_RENDERBUFFER_SIZE"/> + <value name="MAX_TEXTURE_IMAGE_UNITS"/> + <value name="MAX_TEXTURE_SIZE"/> + <value name="MAX_VARYING_VECTORS"/> + <value name="MAX_VERTEX_ATTRIBS"/> + <value name="MAX_VERTEX_TEXTURE_IMAGE_UNITS"/> + <value name="MAX_VERTEX_UNIFORM_VECTORS"/> + <value name="MAX_VIEWPORT_DIMS"/> + <value name="NUM_COMPRESSED_TEXTURE_FORMATS"/> + <value name="NUM_SHADER_BINARY_FORMATS"/> + <value name="PACK_ALIGNMENT"/> + <value name="POLYGON_OFFSET_FACTOR"/> + <value name="POLYGON_OFFSET_FILL"/> + <value name="POLYGON_OFFSET_UNITS"/> + <value name="RED_BITS"/> + <value name="RENDERBUFFER_BINDING"/> + <value name="SAMPLE_TO_ALPHA_COVERAGE"/> + <value name="SAMPLE_BUFFERS"/> + <value name="SAMPLE_COVERAGE"/> + <value name="SAMPLE_COVERAGE_INVERT"/> + <value name="SAMPLE_COVERAGE_VALUE"/> + <value name="SAMPLES"/> + <value name="SCISSOR_BOX"/> + <value name="SCISSOR_TEST"/> + <value name="SHADER_BINARY_FORMATS"/> + <value name="SHADER_COMPILER"/> + <value name="STENCIL_BACK_FAIL"/> + <value name="STENCIL_BACK_FUNC"/> + <value name="STENCIL_BACK_PASS_DEPTH_FAIL"/> + <value name="STENCIL_BACK_PASS_DEPTH_PASS"/> + <value name="STENCIL_BACK_REF"/> + <value name="STENCIL_BACK_VALUE_MASK"/> + <value name="STENCIL_BACK_WRITEMASK"/> + <value name="STENCIL_BITS"/> + <value name="STENCIL_CLEAR_VALUE"/> + <value name="STENCIL_FAIL"/> + <value name="STENCIL_FUNC"/> + <value name="STENCIL_PASS_DEPTH_FAIL"/> + <value name="STENCIL_PASS_DEPTH_PASS"/> + <value name="STENCIL_REF"/> + <value name="STENCIL_TEST"/> + <value name="STENCIL_VALUE_MASK"/> + <value name="STENCIL_WRITEMASK"/> + <value name="SUBPIXEL_BITS"/> + <value name="TEXTURE_BINDING_2D"/> + <value name="TEXTURE_BINDING_CUBE_MAP"/> + <value name="UNPACK_ALIGNMENT"/> + <value name="VIEWPORT"/> +</enum> +<enum name="FramebufferAttachmentParameter"> + <value name="ATTACHMENT_OBJECT_TYPE"/> + <value name="ATTACHMENT_OBJECT_NAME"/> + <value name="ATTACHMENT_TEXTURE_LEVEL"/> + <value name="ATTACHMENT_TEXTURE_CUBE_MAP_FACE"/> +</enum> +<enum name="FramebufferAttachmentObjectType"> <!-- returned by GetFrameBufferAttachmentParameteriv --> + <value name="RENDERBUFFER"/> + <value name="TEXTURE"/> + <value name="NONE"/> +</enum> +<enum name="GetProgramPName"> + <value name="DELETE_STATUS"/> + <value name="LINK_STATUS"/> + <value name="VALIDATE_STATUS"/> + <value name="INFO_LOG_LENGTH"/> + <value name="ATTACHED_SHADERS"/> + <value name="ACTIVE_ATTRIBUTES"/> + <value name="ACTIVE_ATTRIBUTE_MAX_LENGTH"/> + <value name="ACTIVE_UNIFORMS"/> + <value name="ACTIVE_UNIFORM_MAX_LENGTH"/> +</enum> +<enum name="GetRenderbufferParameterPName"> + <value name="RENDERBUFFER_WIDTH"/> + <value name="RENDERBUFFER_HEIGHT"/> + <value name="RENDERBUFFER_INTERNAL_FORMAT"/> + <value name="RENDERBUFFER_RED_SIZE"/> + <value name="RENDERBUFFER_GREEN_SIZE"/> + <value name="RENDERBUFFER_BLUE_SIZE"/> + <value name="RENDERBUFFER_ALPHA_SIZE"/> + <value name="RENDERBUFFER_DEPTH_SIZE"/> + <value name="RENDERBUFFER_STENCIL_SIZE"/> +</enum> +<enum name="GetVertexAttribPointerPName"> + <value name="VERTEX_ATTRIB_ARRAY_POINTER"/> +</enum> +<enum name="PixelStorePName"> + <value name="PACK_ALIGNMENT"/> + <value name="UNPACK_ALIGNMENT"/> +</enum> +<enum name="ShaderBinaryFormat"> + <!-- None by default, provided by extensions --> +</enum> +<enum name="CompressedTextureFormat"> + <!-- None by default, provided by extensions --> +</enum> +<enum name="VertexAttribType"> <!-- subset of DataType --> + <!-- VertexAttribPointer only needs BYTE, UNSIGNED_BYTE, SHORT, UNSIGNED_SHORT, FIXED, FLOAT + What about (UNSIGNED_)INT? Are these part of an extension? + --> + <value name="BYTE"/> + <value name="UNSIGNED_BYTE"/> + <value name="SHORT"/> + <value name="UNSIGNED_SHORT"/> + <!-- <value name="INT"/> --> + <!-- <value name="UNSIGNED_INT"/> --> + <value name="FLOAT"/> + <value name="FIXED"/> +</enum> +<enum name="GetFramebufferAttachmentParameterPName"> + <value name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"/> + <value name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"/> + <value name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"/> + <value name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"/> +</enum> +<enum name="GetShaderPName"> + <value name="SHADER_TYPE"/> + <value name="DELETE_STATUS"/> + <value name="COMPILE_STATUS"/> + <value name="INFO_LOG_LENGTH"/> + <value name="SHADER_SOURCE_LENGTH"/> +</enum> + +<functions> +<!-- based on mesa/src/mapi/glapi/gen/*.xml --> + <function name="ActiveTexture"> + <param name="texture" type="GLenum" enum="TextureUnit"/> + </function> + <function name="AttachShader"> + <param name="program" type="GLuint"/> + <param name="shader" type="GLuint"/> + </function> + <function name="BindAttribLocation"> + <param name="program" type="GLuint"/> + <param name="index" type="GLuint"/> + <param name="name" type="const GLchar *"/> + </function> + <function name="BindBuffer"> + <param name="target" type="GLenum" enum="BufferTarget"/> + <param name="buffer" type="GLuint"/> + </function> + <function name="BindFramebuffer"> + <param name="target" type="GLenum" enum="FramebufferTarget"/> + <param name="framebuffer" type="GLuint"/> + </function> + <function name="BindRenderbuffer"> + <param name="target" type="GLenum" enum="RenderbufferTarget"/> + <param name="renderbuffer" type="GLuint"/> + </function> + <function name="BindTexture"> + <param name="target" type="GLenum" enum="TextureTarget"/> + <param name="texture" type="GLuint"/> + </function> + <function name="BlendColor"> + <param name="red" type="GLclampf"/> + <param name="green" type="GLclampf"/> + <param name="blue" type="GLclampf"/> + <param name="alpha" type="GLclampf"/> + </function> + <function name="BlendEquation"> + <param name="mode" type="GLenum" enum="BlendEquation"/> + </function> + <function name="BlendEquationSeparate"> + <param name="modeRGB" type="GLenum" enum="BlendEquation"/> + <param name="modeA" type="GLenum" enum="BlendEquation"/> + </function> + <function name="BlendFunc"> + <param name="sfactor" type="GLenum" enum="BlendingFactorSrc"/> + <param name="dfactor" type="GLenum" enum="BlendingFactorDest"/> + </function> + <function name="BlendFuncSeparate"> + <param name="sfactorRGB" type="GLenum" enum="BlendingFactorSrc"/> + <param name="dfactorRGB" type="GLenum" enum="BlendingFactorDest"/> + <param name="sfactorAlpha" type="GLenum" enum="BlendingFactorSrc"/> + <param name="dfactorAlpha" type="GLenum" enum="BlendingFactorDest"/> + </function> + <function name="BufferData"> + <param name="target" type="GLenum" enum="BufferTarget"/> + <param name="size" type="GLsizeiptr" counter="true"/> + <param name="data" type="const GLvoid *" count="size" img_null_flag="true"/> + <param name="usage" type="GLenum" enum="BufferUsage"/> + </function> + <function name="BufferSubData"> + <param name="target" type="GLenum" enum="BufferTarget"/> + <param name="offset" type="GLintptr"/> + <param name="size" type="GLsizeiptr" counter="true"/> + <param name="data" type="const GLvoid *" count="size"/> + </function> + <function name="CheckFramebufferStatus"> + <param name="target" type="GLenum" enum="FramebufferTarget"/> + <return type="GLenum" enum="FramebufferStatus"/> + </function> + <function name="Clear"> + <param name="mask" type="GLbitfield" bitfield="ClearBufferMask"/> + </function> + <function name="ClearColor"> + <param name="red" type="GLclampf"/> + <param name="green" type="GLclampf"/> + <param name="blue" type="GLclampf"/> + <param name="alpha" type="GLclampf"/> + </function> + <function name="ClearDepthf"> + <param name="depth" type="GLclampf"/> + </function> + <function name="ClearStencil"> + <param name="s" type="GLint"/> + </function> + <function name="ColorMask"> + <param name="red" type="GLboolean"/> + <param name="green" type="GLboolean"/> + <param name="blue" type="GLboolean"/> + <param name="alpha" type="GLboolean"/> + </function> + <function name="CompileShader"> + <param name="shader" type="GLuint"/> + </function> + <function name="CompressedTexImage2D"> + <param name="target" type="GLenum" enum="TextureTargetFace"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLenum" enum="CompressedTextureFormat"/> + <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"/> + </function> + <function name="CompressedTexSubImage2D"> + <param name="target" type="GLenum" enum="TextureTargetFace"/> + <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" enum="CompressedTextureFormat"/> + <param name="imageSize" type="GLsizei" counter="true"/> + <param name="data" type="const GLvoid *" count="imageSize"/> + </function> + <function name="CopyTexImage2D"> + <param name="target" type="GLenum" enum="TextureTargetFace"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLenum" enum="TextureInternalFormat"/> + <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"/> + </function> + <function name="CopyTexSubImage2D"> + <param name="target" type="GLenum" enum="TextureTargetFace"/> + <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"/> + </function> + <function name="CreateProgram"> + <return type="GLuint"/> + </function> + <function name="CreateShader"> + <param name="type" type="GLenum" enum="ShaderType"/> + <return type="GLuint"/> + </function> + <function name="CullFace"> + <param name="mode" type="GLenum" enum="CullFaceMode"/> + </function> + <function name="DeleteBuffers"> + <param name="n" type="GLsizei" counter="true"/> + <param name="buffer" type="const GLuint *" count="n"/> + </function> + <function name="DeleteFramebuffers"> + <param name="n" type="GLsizei" counter="true"/> + <param name="framebuffers" type="const GLuint *" count="n"/> + </function> + <function name="DeleteProgram"> + <param name="program" type="GLuint"/> + </function> + <function name="DeleteRenderbuffers"> + <param name="n" type="GLsizei" counter="true"/> + <param name="renderbuffers" type="const GLuint *" count="n"/> + </function> + <function name="DeleteShader"> + <param name="program" type="GLuint"/> + </function> + <function name="DeleteTextures"> + <param name="n" type="GLsizei" counter="true"/> + <param name="textures" type="const GLuint *" count="n"/> + </function> + <function name="DepthFunc"> + <param name="func" type="GLenum" enum="DepthFunction"/> + </function> + <function name="DepthMask"> + <param name="flag" type="GLboolean"/> + </function> + <function name="DepthRangef"> + <param name="zNear" type="GLclampf"/> + <param name="zFar" type="GLclampf"/> + </function> + <function name="DetachShader"> + <param name="program" type="GLuint"/> + <param name="shader" type="GLuint"/> + </function> + <function name="Disable"> + <param name="cap" type="GLenum" enum="EnableCap"/> + </function> + <function name="DisableVertexAttribArray"> + <param name="index" type="GLuint"/> + </function> + <function name="DrawArrays"> + <param name="mode" type="GLenum" enum="BeginMode"/> + <param name="first" type="GLint"/> + <param name="count" type="GLsizei"/> + </function> + <function name="DrawElements"> + <param name="mode" type="GLenum" enum="BeginMode"/> + <param name="count" type="GLsizei"/> + <param name="type" type="GLenum" enum="IndexType"/> + <param name="indices" type="const GLvoid *"/> + </function> + <function name="Enable"> + <param name="cap" type="GLenum" enum="EnableCap"/> + </function> + <function name="EnableVertexAttribArray"> + <param name="index" type="GLuint"/> + </function> + <function name="Finish"> + </function> + <function name="Flush"> + </function> + <function name="FramebufferRenderbuffer"> + <param name="target" type="GLenum" enum="FramebufferTarget"/> + <param name="attachment" type="GLenum" enum="FramebufferAttachment"/> + <param name="renderbuffertarget" type="GLenum" enum="RenderbufferTarget"/> + <param name="renderbuffer" type="GLuint"/> + </function> + <function name="FramebufferTexture2D"> + <param name="target" type="GLenum" enum="FramebufferTarget"/> + <param name="attachment" type="GLenum" enum="FramebufferAttachment"/> + <param name="textarget" type="GLenum" enum="TextureTargetFace"/> + <param name="texture" type="GLuint"/> + <param name="level" type="GLint"/> + </function> + <function name="FrontFace"> + <param name="mode" type="GLenum" enum="FrontFaceDirection"/> + </function> + <function name="GenBuffers"> + <param name="n" type="GLsizei" counter="true"/> + <param name="buffer" type="GLuint *" output="true" count="n"/> + </function> + <function name="GenerateMipmap"> + <param name="target" type="GLenum" enum="TextureTarget"/> + </function> + <function name="GenFramebuffers"> + <param name="n" type="GLsizei" counter="true"/> + <param name="framebuffers" type="GLuint *" count="n" output="true"/> + </function> + <function name="GenRenderbuffers"> + <param name="n" type="GLsizei" counter="true"/> + <param name="renderbuffers" type="GLuint *" count="n" output="true"/> + </function> + <function name="GenTextures"> + <param name="n" type="GLsizei" counter="true"/> + <param name="textures" type="GLuint *" output="true" count="n"/> + </function> + <function name="GetActiveAttrib"> + <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" enum="UniformType"/> + <param name="name" type="GLchar *" output="true"/> + </function> + <function name="GetActiveUniform"> + <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" enum="UniformType"/> + <param name="name" type="GLchar *" output="true"/> + </function> + <function name="GetAttachedShaders"> + <param name="program" type="GLuint"/> + <param name="maxCount" type="GLsizei"/> + <param name="count" type="GLsizei *" output="true"/> + <param name="obj" type="GLuint *" output="true"/> + </function> + <function name="GetAttribLocation"> + <param name="program" type="GLuint"/> + <param name="name" type="const GLchar *"/> + <return type="GLint"/> + </function> + <function name="GetBooleanv"> + <param name="pname" type="GLenum" enum="GetPName"/> + <param name="params" type="GLboolean *" output="true" variable_param="pname"/> + </function> + <function name="GetBufferParameteriv"> + <param name="target" type="GLenum" enum="BufferTarget"/> + <param name="pname" type="GLenum" enum="GetBufferParameterPName"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + </function> + <function name="GetError"> + <return type="GLenum" enum="ErrorCode"/> + </function> + <function name="GetFloatv"> + <param name="pname" type="GLenum" enum="GetPName"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + </function> + <function name="GetFramebufferAttachmentParameteriv"> + <param name="target" type="GLenum" enum="FramebufferTarget"/> + <param name="attachment" type="GLenum" enum="FramebufferAttachment"/> + <param name="pname" type="GLenum" enum="GetFramebufferAttachmentParameterPName"/> + <param name="params" type="GLint *" output="true"/> + </function> + <function name="GetIntegerv"> + <param name="pname" type="GLenum" enum="GetPName"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + </function> + <function name="GetProgramiv"> + <param name="program" type="GLuint"/> + <param name="pname" type="GLenum" enum="GetProgramPName"/> + <param name="params" type="GLint *"/> + </function> + <function name="GetProgramInfoLog"> + <param name="program" type="GLuint"/> + <param name="bufSize" type="GLsizei"/> + <param name="length" type="GLsizei *"/> + <param name="infoLog" type="GLchar *"/> + </function> + <function name="GetRenderbufferParameteriv"> + <param name="target" type="GLenum" enum="RenderbufferTarget"/> + <param name="pname" type="GLenum" enum="GetRenderbufferParameterPName"/> + <param name="params" type="GLint *" output="true"/> + </function> + <function name="GetShaderiv"> + <param name="shader" type="GLuint"/> + <param name="pname" type="GLenum" enum="GetShaderPName"/> + <param name="params" type="GLint *"/> + </function> + <function name="GetShaderInfoLog"> + <param name="shader" type="GLuint"/> + <param name="bufSize" type="GLsizei"/> + <param name="length" type="GLsizei *"/> + <param name="infoLog" type="GLchar *"/> + </function> + <function name="GetShaderPrecisionFormat"> + <param name="shadertype" type="GLenum" enum="ShaderType"/> + <param name="precisiontype" type="GLenum" enum="PrecisionType"/> + <param name="range" type="GLint *"/> + <param name="precision" type="GLint *"/> + </function> + <function name="GetShaderSource"> + <param name="shader" type="GLuint"/> + <param name="bufSize" type="GLsizei"/> + <param name="length" type="GLsizei *" output="true"/> + <param name="source" type="GLchar *" output="true"/> + </function> + <function name="GetString"> + <param name="name" type="GLenum" enum="StringName"/> + <return type="const GLubyte *"/> + </function> + <function name="GetTexParameterfv"> + <param name="target" type="GLenum" enum="TextureTarget"/> + <param name="pname" type="GLenum" enum="TextureParameterName"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + </function> + <function name="GetTexParameteriv"> + <param name="target" type="GLenum" enum="TextureTarget"/> + <param name="pname" type="GLenum" enum="TextureParameterName"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + </function> + <function name="GetUniformfv"> + <param name="program" type="GLuint"/> + <param name="location" type="GLint"/> + <param name="params" type="GLfloat *" output="true"/> + </function> + <function name="GetUniformiv"> + <param name="program" type="GLuint"/> + <param name="location" type="GLint"/> + <param name="params" type="GLint *" output="true"/> + </function> + <function name="GetUniformLocation"> + <param name="program" type="GLuint"/> + <param name="name" type="const GLchar *"/> + <return type="GLint"/> + </function> + <function name="GetVertexAttribfv"> + <param name="index" type="GLuint"/> + <param name="pname" type="GLenum" enum="GetVertexAttribParameterPName"/> + <param name="params" type="GLfloat *" output="true" variable_param="pname"/> + </function> + <function name="GetVertexAttribiv"> + <param name="index" type="GLuint"/> + <param name="pname" type="GLenum" enum="GetVertexAttribParameterPName"/> + <param name="params" type="GLint *" output="true" variable_param="pname"/> + </function> + <function name="GetVertexAttribPointerv"> + <param name="index" type="GLuint"/> + <param name="pname" type="GLenum" enum="GetVertexAttribPointerPName"/> + <param name="pointer" type="GLvoid **" output="true"/> + </function> + <function name="Hint"> + <param name="target" type="GLenum" enum="HintTarget"/> + <param name="mode" type="GLenum" enum="HintMode"/> + </function> + <function name="IsBuffer"> + <param name="buffer" type="GLuint"/> + <return type="GLboolean"/> + </function> + <function name="IsEnabled"> + <param name="cap" type="GLenum" enum="EnableCap"/> + <return type="GLboolean"/> + </function> + <function name="IsFramebuffer"> + <param name="framebuffer" type="GLuint"/> + <return type="GLboolean"/> + </function> + <function name="IsProgram"> + <param name="program" type="GLuint"/> + <return type="GLboolean"/> + </function> + <function name="IsRenderbuffer"> + <param name="renderbuffer" type="GLuint"/> + <return type="GLboolean"/> + </function> + <function name="IsShader"> + <param name="shader" type="GLuint"/> + <return type="GLboolean"/> + </function> + <function name="IsTexture"> + <param name="texture" type="GLuint"/> + <return type="GLboolean"/> + </function> + <function name="LineWidth"> + <param name="width" type="GLfloat"/> + </function> + <function name="LinkProgram"> + <param name="program" type="GLuint"/> + </function> + <function name="PixelStorei"> + <param name="pname" type="GLenum" enum="PixelStorePName"/> + <param name="param" type="GLint"/> + </function> + <function name="PolygonOffset"> + <param name="factor" type="GLfloat"/> + <param name="units" type="GLfloat"/> + </function> + <function name="ReadPixels"> + <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" enum="PixelFormat"/> + <param name="type" type="GLenum" enum="PixelType"/> + <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/> + </function> + <function name="ReleaseShaderCompiler"> + </function> + <function name="RenderbufferStorage"> + <param name="target" type="GLenum" enum="RenderbufferTarget"/> + <param name="internalformat" type="GLenum" enum="RenderbufferInternalFormat"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + </function> + <function name="SampleCoverage"> + <param name="value" type="GLclampf"/> + <param name="invert" type="GLboolean"/> + </function> + <function name="Scissor"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + </function> + <function name="ShaderBinary"> + <param name="n" type="GLsizei"/> + <param name="shaders" type="const GLuint *"/> + <param name="binaryformat" type="GLenum" enum="ShaderBinaryFormat"/> + <param name="binary" type="const GLvoid *"/> + <param name="length" type="GLsizei"/> + </function> + <function name="ShaderSource"> + <param name="shader" type="GLuint"/> + <param name="count" type="GLsizei"/> + <param name="string" type="const GLchar * const *"/> + <param name="length" type="const GLint *"/> + </function> + <function name="StencilFunc"> + <param name="func" type="GLenum" enum="StencilFunction"/> + <param name="ref" type="GLint"/> + <param name="mask" type="GLuint"/> + </function> + <function name="StencilFuncSeparate"> + <param name="face" type="GLenum" enum="CullFaceMode"/> + <param name="func" type="GLenum" enum="StencilFunction"/> + <param name="ref" type="GLint"/> + <param name="mask" type="GLuint"/> + </function> + <function name="StencilMask"> + <param name="mask" type="GLuint"/> + </function> + <function name="StencilMaskSeparate"> + <param name="face" type="GLenum" enum="CullFaceMode"/> + <param name="mask" type="GLuint"/> + </function> + <function name="StencilOp"> + <param name="fail" type="GLenum" enum="StencilOp"/> + <param name="zfail" type="GLenum" enum="StencilOp"/> + <param name="zpass" type="GLenum" enum="StencilOp"/> + </function> + <function name="StencilOpSeparate"> + <param name="face" type="GLenum" enum="CullFaceMode"/> + <param name="sfail" type="GLenum" enum="StencilOp"/> + <param name="zfail" type="GLenum" enum="StencilOp"/> + <param name="zpass" type="GLenum" enum="StencilOp"/> + </function> + <function name="TexImage2D"> + <param name="target" type="GLenum" enum="TextureTargetFace"/> + <param name="level" type="GLint"/> + <param name="internalformat" type="GLint" enum="TextureInternalFormat"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="border" type="GLint"/> + <param name="format" type="GLenum" enum="PixelFormat"/> + <param name="type" type="GLenum" enum="PixelType"/> + <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"/> + </function> + <function name="TexParameterf"> + <param name="target" type="GLenum" enum="TextureTarget"/> + <param name="pname" type="GLenum" enum="TextureParameterName"/> + <param name="param" type="GLfloat"/> + </function> + <function name="TexParameterfv"> + <param name="target" type="GLenum" enum="TextureTarget"/> + <param name="pname" type="GLenum" enum="TextureParameterName"/> + <param name="params" type="const GLfloat *" variable_param="pname"/> + </function> + <function name="TexParameteri"> + <param name="target" type="GLenum" enum="TextureTarget"/> + <param name="pname" type="GLenum" enum="TextureParameterName"/> + <param name="param" type="GLint"/> + </function> + <function name="TexParameteriv"> + <param name="target" type="GLenum" enum="TextureTarget"/> + <param name="pname" type="GLenum" enum="TextureParameterName"/> + <param name="params" type="const GLint *" variable_param="pname"/> + </function> + <function name="TexSubImage2D"> + <param name="target" type="GLenum" enum="TextureTargetFace"/> + <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" enum="PixelFormat"/> + <param name="type" type="GLenum" enum="PixelType"/> + <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"/> + </function> + <function name="Uniform1f"> + <param name="location" type="GLint"/> + <param name="v0" type="GLfloat"/> + </function> + <function name="Uniform1fv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLfloat *"/> + </function> + <function name="Uniform1i"> + <param name="location" type="GLint"/> + <param name="v0" type="GLint"/> + </function> + <function name="Uniform1iv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLint *"/> + </function> + <function name="Uniform2f"> + <param name="location" type="GLint"/> + <param name="v0" type="GLfloat"/> + <param name="v1" type="GLfloat"/> + </function> + <function name="Uniform2fv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLfloat *"/> + </function> + <function name="Uniform2i"> + <param name="location" type="GLint"/> + <param name="v0" type="GLint"/> + <param name="v1" type="GLint"/> + </function> + <function name="Uniform2iv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLint *"/> + </function> + <function name="Uniform3f"> + <param name="location" type="GLint"/> + <param name="v0" type="GLfloat"/> + <param name="v1" type="GLfloat"/> + <param name="v2" type="GLfloat"/> + </function> + <function name="Uniform3fv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLfloat *"/> + </function> + <function name="Uniform3i"> + <param name="location" type="GLint"/> + <param name="v0" type="GLint"/> + <param name="v1" type="GLint"/> + <param name="v2" type="GLint"/> + </function> + <function name="Uniform3iv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLint *"/> + </function> + <function name="Uniform4f"> + <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"/> + </function> + <function name="Uniform4fv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLfloat *"/> + </function> + <function name="Uniform4i"> + <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"/> + </function> + <function name="Uniform4iv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="value" type="const GLint *"/> + </function> + <function name="UniformMatrix2fv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="transpose" type="GLboolean"/> + <param name="value" type="const GLfloat *"/> + </function> + <function name="UniformMatrix3fv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="transpose" type="GLboolean"/> + <param name="value" type="const GLfloat *"/> + </function> + <function name="UniformMatrix4fv"> + <param name="location" type="GLint"/> + <param name="count" type="GLsizei"/> + <param name="transpose" type="GLboolean"/> + <param name="value" type="const GLfloat *"/> + </function> + <function name="UseProgram"> + <param name="program" type="GLuint"/> + </function> + <function name="ValidateProgram"> + <param name="program" type="GLuint"/> + </function> + <function name="VertexAttrib1f"> + <param name="index" type="GLuint"/> + <param name="x" type="GLfloat"/> + </function> + <function name="VertexAttrib1fv"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLfloat *"/> + </function> + <function name="VertexAttrib2f"> + <param name="index" type="GLuint"/> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + </function> + <function name="VertexAttrib2fv"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLfloat *"/> + </function> + <function name="VertexAttrib3f"> + <param name="index" type="GLuint"/> + <param name="x" type="GLfloat"/> + <param name="y" type="GLfloat"/> + <param name="z" type="GLfloat"/> + </function> + <function name="VertexAttrib3fv"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLfloat *"/> + </function> + <function name="VertexAttrib4f"> + <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"> + <param name="index" type="GLuint"/> + <param name="v" type="const GLfloat *"/> + </function> + <function name="VertexAttribPointer"> + <param name="index" type="GLuint"/> + <param name="size" type="GLint"/> + <param name="type" type="GLenum" enum="VertexAttribType"/> + <param name="normalized" type="GLboolean"/> + <param name="stride" type="GLsizei"/> + <param name="pointer" type="const GLvoid *"/> + </function> + <function name="Viewport"> + <param name="x" type="GLint"/> + <param name="y" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + </function> +</functions> + +</root> + diff --git a/tools/data/viv_gallium_state.txt b/tools/data/viv_gallium_state.txt new file mode 100644 index 0000000..cdc5a50 --- /dev/null +++ b/tools/data/viv_gallium_state.txt @@ -0,0 +1,96 @@ +# group and sort these by address +# <struct_name> <source_spec> <dirtybit> +rasterizer_state rasterizer-> ETNA_STATE_RASTERIZER + PA.CONFIG + PA.LINE_WIDTH + PA.POINT_SIZE + SE.DEPTH_SCALE + SE.DEPTH_BIAS + SE.CONFIG + SE.SCISSOR_LEFT + SE.SCISSOR_TOP + SE.SCISSOR_RIGHT + SE.SCISSOR_BOTTOM + +depth_stencil_alpha_state depth_stencil_alpha-> ETNA_STATE_DSA + PE.DEPTH_CONFIG + PE.ALPHA_OP + PE.STENCIL_OP + PE.STENCIL_CONFIG + +blend_state blend-> ETNA_STATE_BLEND + PE.ALPHA_CONFIG + PE.COLOR_FORMAT + PE.LOGIC_OP + PE.DITHER + +blend_color blend_color. ETNA_STATE_BLEND_COLOR + PE.ALPHA_BLEND_COLOR + +stencil_ref stencil_ref. ETNA_STATE_STENCIL_REF + PE.STENCIL_CONFIG + PE.STENCIL_CONFIG_EXT + +scissor_state scissor. ETNA_STATE_SCISSOR + SE.SCISSOR_LEFT + SE.SCISSOR_TOP + SE.SCISSOR_RIGHT + SE.SCISSOR_BOTTOM + +viewport_state viewport. ETNA_STATE_VIEWPORT + PA.VIEWPORT_SCALE_X + PA.VIEWPORT_SCALE_Y + PA.VIEWPORT_SCALE_Z + PA.VIEWPORT_OFFSET_X + PA.VIEWPORT_OFFSET_Y + PA.VIEWPORT_OFFSET_Z + PE.DEPTH_NEAR + PE.DEPTH_FAR + +sample_mask sample_mask. ETNA_STATE_SAMPLE_MASK + GL.MULTI_SAMPLE_CONFIG + +sampler_state sampler[{0}]-> ETNA_STATE_SAMPLERS + TE.SAMPLER.CONFIG0 + TE.SAMPLER.LOD_CONFIG + +sampler_view sampler_view[{0}]. ETNA_STATE_SAMPLER_VIEWS + TE.SAMPLER.CONFIG0 + TE.SAMPLER.LOD_CONFIG + TE.SAMPLER.SIZE + TE.SAMPLER.LOG_SIZE + TE.SAMPLER.LOD_ADDR + +framebuffer_state framebuffer. ETNA_STATE_FRAMEBUFFER + GL.MULTI_SAMPLE_CONFIG + PE.COLOR_FORMAT + PE.DEPTH_CONFIG + PE.DEPTH_ADDR + PE.DEPTH_STRIDE + PE.HDEPTH_CONTROL + PE.DEPTH_NORMALIZE + PE.COLOR_ADDR + PE.COLOR_STRIDE + SE.SCISSOR_LEFT + SE.SCISSOR_TOP + SE.SCISSOR_RIGHT + SE.SCISSOR_BOTTOM + TS.MEM_CONFIG + TS.DEPTH_CLEAR_VALUE + TS.DEPTH_STATUS_BASE + TS.DEPTH_SURFACE_BASE + TS.COLOR_CLEAR_VALUE + TS.COLOR_STATUS_BASE + TS.COLOR_SURFACE_BASE + +vertex_elements_state vertex_elements-> ETNA_STATE_VERTEX_ELEMENTS + FE.VERTEX_ELEMENT_CONFIG + +set_vertex_buffer vertex_buffer. ETNA_STATE_VERTEX_BUFFERS + FE.VERTEX_STREAM_CONTROL + FE.VERTEX_STREAM_BASE_ADDR + +set_index_buffer index_buffer. ETNA_STATE_INDEX_BUFFER + FE.INDEX_STREAM_CONTROL + FE.INDEX_STREAM_BASE_ADDR + diff --git a/tools/etnaviv/parse_rng.py b/tools/etnaviv/parse_rng.py index 90eafdd..1ba7083 100644 --- a/tools/etnaviv/parse_rng.py +++ b/tools/etnaviv/parse_rng.py @@ -118,6 +118,7 @@ class Range(object): contents = None # arrays, stripes and registers def __init__(self, **attr): self.contents = [] + self.contents_by_name = {} def lookup_address(self, addr, variants=None): '''Look up the specified address in this range. Return None if not found.''' @@ -126,6 +127,7 @@ class Range(object): def add_child(self, child): if isinstance(child, (Array, Stripe, Register)): self.contents.append(child) + self.contents_by_name[child.name] = child return True return False @@ -472,7 +474,6 @@ class Register(RNNObject, Range, TypedValue): class Domain(RNNObject, Range, Type): '''Rules-ng domain description''' - contents = None # arrays, stripes and registers def __init__(self, parent, **attr): RNNObject.__init__(self, parent, **attr) Range.__init__(self, **attr) diff --git a/tools/gen_weave_state.py b/tools/gen_weave_state.py new file mode 100755 index 0000000..0935e0e --- /dev/null +++ b/tools/gen_weave_state.py @@ -0,0 +1,189 @@ +#!/usr/bin/python +''' +Generate code to weave various CSOs into GPU state. +''' +# Copyright (c) 2012-2013 Wladimir J. van der Laan +# +# 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 +# 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. +from __future__ import print_function, division, unicode_literals +import argparse +from collections import defaultdict +import sys +# Parse rules-ng-ng format for state space +from etnaviv.parse_rng import parse_rng_file, format_path, BitSet, Domain, Stripe, Register, Array, BaseType + +SRC_SPEC = 'e->' +VARNAMES = ['x','y','z','w'] + +def parse_args(): + parser = argparse.ArgumentParser(description='Generate state merge function') + parser.add_argument('--input', metavar='INFILE', type=str, + help='State definition file', + default='data/viv_gallium_state.txt') + parser.add_argument('--rules-file', metavar='RULESFILE', type=str, + help='State map definition file (rules-ng-ng)', + default='../rnndb/state.xml') + + return parser.parse_args() + +def rnn_lookup(state_map, field): + ''' + Look up dot-separated path to register in rnn domain. + Return every step along the path. + ''' + field = field.split('.') + base = state_map + path = [] + for comp in field: + path.append(base) + base = base.contents_by_name[comp] + path.append(base) + return path + +def rnn_strides(path): + ''' + Go along path, find stripes / registers with length >1, do cartesian product and compute state offsets for each + member. Returns a tuple (offset,strides) where strides is a list of (stride,length) tuples. + ''' + strides = [] + offset = 0 + for comp in path: + if isinstance(comp, Domain): + pass + elif isinstance(comp, (Stripe, Array, Register)): + if comp.length != 1: + strides.append((comp.stride, comp.length)) + offset += comp.offset + else: + raise ValueError + return offset, strides + +def main(): + args = parse_args() + state_xml = parse_rng_file(args.rules_file) + state_map = state_xml.lookup_domain('VIVS') + out = sys.stdout + # Read input file + with open(args.input, 'r') as f: + fields = None + recordname = None + data = [] + for line in f: + line = line.rstrip() + if not line or line.startswith('#'): + continue + if line.startswith(' '): + fields.append(line.strip()) + else: + if recordname is not None: + data.append([recordname, fields]) + fields = [] + recordname = line.strip() + if recordname is not None: + data.append([recordname, fields]) + # Preprocess input file, look up field names and sort by offset + recs_by_offset = defaultdict(list) + field_by_offset = {} + for rec in data: + rec_info = rec[0].split() + for field in rec[1]: + path = rnn_lookup(state_map, field) + offset, strides = rnn_strides(path) + #print(field, '%05x' % offset, strides) + field_by_offset[offset] = (field, path, strides) + recs_by_offset[offset].append(rec_info) + # Emit output + offsets = sorted(field_by_offset.keys()) + last_dirty_bits = None + indent = 1 + for offset in offsets: + (name, path, strides) = field_by_offset[offset] + # strides is a list of (stride,length) tuples + name = name.replace('.', '_') + recs = recs_by_offset[offset] + + # build target state + target_state = name + target_state_sub = ', '.join(('{%i}' % (src_idx)) for src_idx,_ in enumerate(strides)) + if target_state_sub: + target_state += '('+target_state_sub+')' + + # build target field reference + target_field = name + # to sort destination state addresses in order, sort array indices by decreasing stride + dest_strides = sorted([(idx,stride,length) for idx,(stride,length) in enumerate(strides)], key=lambda x:-x[1]) + for src_idx,stride,length in dest_strides: + target_field += '[{%i}]' % (src_idx) + + fieldrefs = [] + dirty_bits = set() + for rec in recs: + source_field = name + for idx,(stride,length) in enumerate(strides): + iname = '{%i}' % idx + if not iname in rec[1]: # if quantifier not already used in record name itself + source_field += '[' + iname + ']' + fieldrefs.append('%s%s%s' % (SRC_SPEC,rec[1],source_field)) + dirty_bits.add(rec[2]) + + if last_dirty_bits != dirty_bits: + if last_dirty_bits is not None: + indent -= 1 + out.write(' ' * indent) + out.write('}\n') + out.write(' ' * indent) + out.write('if(dirty & (%s))\n' % (' | '.join(dirty_bits))) + out.write(' ' * indent) + out.write('{\n') + indent += 1 + for src_idx,stride,length in dest_strides: + out.write(' ' * indent) + out.write('for(int {0}=0; {0}<{1}; ++{0})\n'.format(VARNAMES[src_idx], length)) + out.write(' ' * indent) + out.write('{\n') + indent += 1 + + macro = 'EMIT_STATE' + if isinstance(path[-1].type, BaseType) and path[-1].type.kind == 'fixedp': + macro += '_FIXP' + + out.write(' ' * indent) + out.write('/*%05X*/ %s(%s, %s, %s);\n' % ( + offset, + macro, + target_state.format(*VARNAMES), + target_field.format(*VARNAMES), + (' | '.join(fieldrefs)).format(*VARNAMES))) + + for src_idx,stride,length in dest_strides: + indent -= 1 + out.write(' ' * indent) + out.write('}\n') + + last_dirty_bits = dirty_bits + if last_dirty_bits is not None: + indent -= 1 + out.write(' ' * indent) + out.write('}\n') + + +if __name__ == '__main__': + main() + |