summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGL/GLAPI.json
diff options
context:
space:
mode:
authorJelle Raaijmakers <jelle@gmta.nl>2022-12-05 17:09:03 +0100
committerAndreas Kling <kling@serenityos.org>2022-12-20 10:42:31 +0100
commit2da1c1c10e23e8a0857d6a977a59284b55103719 (patch)
tree5dd5b0d6a4897aab1066afc7c208f1a207d3d647 /Userland/Libraries/LibGL/GLAPI.json
parent8c094699dbb9e409e6ee0d82412f1f81372e35fe (diff)
downloadserenity-2da1c1c10e23e8a0857d6a977a59284b55103719.zip
LibGL: Generate the API wrappers
We now generate all LibGL API wrappers from a single API method definition list stored in `GLAPI.json`. Since a significant portion of the OpenGL API methods are relatively consistent variants, we take advantage of this to generate a lot of these variants at once. The autogenerated methods check for the non-nullness of the current `GLContext`, and only perform an action if a `GLContext` is present. This prevents a crash in ports like GLTron, who assume you can still call the OpenGL API without an active context. This increases our API wrapper method count from 211 to 356. Fixes #15814.
Diffstat (limited to 'Userland/Libraries/LibGL/GLAPI.json')
-rw-r--r--Userland/Libraries/LibGL/GLAPI.json1162
1 files changed, 1162 insertions, 0 deletions
diff --git a/Userland/Libraries/LibGL/GLAPI.json b/Userland/Libraries/LibGL/GLAPI.json
new file mode 100644
index 0000000000..82c812512c
--- /dev/null
+++ b/Userland/Libraries/LibGL/GLAPI.json
@@ -0,0 +1,1162 @@
+{
+ "ActiveTexture": {
+ "arguments": [
+ {"type": "GLenum", "name": "texture"}
+ ],
+ "variants": {
+ "api_suffixes": ["", "ARB"]
+ }
+ },
+ "AlphaFunc": {
+ "arguments": [
+ {"type": "GLenum", "name": "func"},
+ {"type": "GLclampf", "name": "ref"}
+ ]
+ },
+ "ArrayElement": {
+ "arguments": [
+ {"type": "GLint", "name": "i"}
+ ]
+ },
+ "AttachShader": {
+ "arguments": [
+ {"type": "GLuint", "name": "program"},
+ {"type": "GLuint", "name": "shader"}
+ ]
+ },
+ "Begin": {
+ "arguments": [
+ {"type": "GLenum", "name": "mode"}
+ ]
+ },
+ "BindBuffer": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLuint", "name": "buffer"}
+ ]
+ },
+ "BindTexture": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLuint", "name": "texture"}
+ ]
+ },
+ "Bitmap": {
+ "arguments": [
+ {"type": "GLsizei", "name": ["width", "height"]},
+ {"type": "GLfloat", "name": ["xorig", "yorig", "xmove", "ymove"]},
+ {"type": "GLubyte const*", "name": "bitmap"}
+ ]
+ },
+ "BlendFunc": {
+ "arguments": [
+ {"type": "GLenum", "name": ["sfactor", "dfactor"]}
+ ]
+ },
+ "BufferData": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLsizeiptr", "name": "size"},
+ {"type": "void const*", "name": "data"},
+ {"type": "GLenum", "name": "usage"}
+ ]
+ },
+ "BufferSubData": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLintptr", "name": "offset"},
+ {"type": "GLsizeiptr", "name": "size"},
+ {"type": "void const*", "name": "data"}
+ ]
+ },
+ "CallList": {
+ "arguments": [
+ {"type": "GLuint", "name": "list"}
+ ]
+ },
+ "CallLists": {
+ "arguments": [
+ {"type": "GLsizei", "name": "n"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "void const*", "name": "lists"}
+ ]
+ },
+ "Clear": {
+ "arguments": [
+ {"type": "GLbitfield", "name": "mask"}
+ ]
+ },
+ "ClearColor": {
+ "arguments": [
+ {"type": "GLclampf", "name": ["red", "green", "blue", "alpha"]}
+ ]
+ },
+ "ClearDepth": {
+ "arguments": [
+ {"type": "GLdouble", "name": "depth"}
+ ]
+ },
+ "ClearDepthf": {
+ "arguments": [
+ {"type": "GLfloat", "name": "depth", "cast_to": "GLdouble"}
+ ],
+ "implementation": "clear_depth"
+ },
+ "ClearStencil": {
+ "arguments": [
+ {"type": "GLint", "name": "s"}
+ ]
+ },
+ "ClientActiveTexture": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"}
+ ],
+ "variants": {
+ "api_suffixes": ["", "ARB"]
+ }
+ },
+ "ClipPlane": {
+ "arguments": [
+ {"type": "GLenum", "name": "plane"},
+ {"type": "GLdouble const*", "name": "equation"}
+ ]
+ },
+ "Color": {
+ "arguments": [
+ {"name": ["red", "green", "blue", "alpha"], "cast_to": "GLdouble"}
+ ],
+ "variants": {
+ "argument_counts": [3, 4],
+ "argument_defaults": ["0.", "0.", "0.", "1."],
+ "convert_range": true,
+ "pointer_argument": "v",
+ "types": {
+ "b": {},
+ "bv": {},
+ "d": {},
+ "dv": {},
+ "f": {},
+ "fv": {},
+ "i": {},
+ "iv": {},
+ "s": {},
+ "sv": {},
+ "ub": {},
+ "ubv": {},
+ "ui": {},
+ "uiv": {},
+ "us": {},
+ "usv": {}
+ }
+ }
+ },
+ "ColorMask": {
+ "arguments": [
+ {"type": "GLboolean", "name": ["red", "green", "blue", "alpha"]}
+ ]
+ },
+ "ColorMaterial": {
+ "arguments": [
+ {"type": "GLenum", "name": "face"},
+ {"type": "GLenum", "name": "mode"}
+ ]
+ },
+ "ColorPointer": {
+ "arguments": [
+ {"type": "GLint", "name": "size"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "GLsizei", "name": "stride"},
+ {"type": "void const*", "name": "pointer"}
+ ]
+ },
+ "CompileShader": {
+ "arguments": [
+ {"type": "GLuint", "name": "shader"}
+ ]
+ },
+ "CopyTexImage2D": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLint", "name": "level"},
+ {"type": "GLenum", "name": "internalformat"},
+ {"type": "GLint", "name": ["x", "y"]},
+ {"type": "GLsizei", "name": ["width", "height"]},
+ {"type": "GLint", "name": "border"}
+ ],
+ "implementation": "copy_tex_image_2d"
+ },
+ "CopyTexSubImage2D": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLint", "name": ["level", "xoffset", "yoffset", "x", "y"]},
+ {"type": "GLsizei", "name": ["width", "height"]}
+ ],
+ "implementation": "copy_tex_sub_image_2d"
+ },
+ "CreateProgram": {
+ "return_type": "GLuint"
+ },
+ "CreateShader": {
+ "arguments": [
+ {"type": "GLenum", "name": "shader_type"}
+ ],
+ "return_type": "GLuint"
+ },
+ "CullFace": {
+ "arguments": [
+ {"type": "GLenum", "name": "mode"}
+ ]
+ },
+ "DeleteBuffers": {
+ "arguments": [
+ {"type": "GLsizei", "name": "n"},
+ {"type": "GLuint const*", "name": "buffers"}
+ ]
+ },
+ "DeleteLists": {
+ "arguments": [
+ {"type": "GLuint", "name": "list"},
+ {"type": "GLsizei", "name": "range"}
+ ]
+ },
+ "DeleteProgram": {
+ "arguments": [
+ {"type": "GLuint", "name": "program"}
+ ]
+ },
+ "DeleteShader": {
+ "arguments": [
+ {"type": "GLuint", "name": "shader"}
+ ]
+ },
+ "DeleteTextures": {
+ "arguments": [
+ {"type": "GLsizei", "name": "n"},
+ {"type": "GLuint const*", "name": "textures"}
+ ]
+ },
+ "DepthFunc": {
+ "arguments": [
+ {"type": "GLenum", "name": "func"}
+ ]
+ },
+ "DepthMask": {
+ "arguments": [
+ {"type": "GLboolean", "name": "flag"}
+ ]
+ },
+ "DepthRange": {
+ "arguments": [
+ {"type": "GLdouble", "name": ["nearVal", "farVal"]}
+ ]
+ },
+ "DepthRangef": {
+ "arguments": [
+ {"type": "GLfloat", "name": ["nearVal", "farVal"], "cast_to": "GLdouble"}
+ ],
+ "implementation": "depth_range"
+ },
+ "Disable": {
+ "arguments": [
+ {"type": "GLenum", "name": "cap"}
+ ]
+ },
+ "DisableClientState": {
+ "arguments": [
+ {"type": "GLenum", "name": "cap"}
+ ]
+ },
+ "DrawArrays": {
+ "arguments": [
+ {"type": "GLenum", "name": "mode"},
+ {"type": "GLint", "name": "first"},
+ {"type": "GLsizei", "name": "count"}
+ ]
+ },
+ "DrawBuffer": {
+ "arguments": [
+ {"type": "GLenum", "name": "buffer"}
+ ]
+ },
+ "DrawElements": {
+ "arguments": [
+ {"type": "GLenum", "name": "mode"},
+ {"type": "GLsizei", "name": "count"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "void const*", "name": "indices"}
+ ]
+ },
+ "DrawPixels": {
+ "arguments": [
+ {"type": "GLsizei", "name": ["width", "height"]},
+ {"type": "GLenum", "name": ["format", "type"]},
+ {"type": "void const*", "name": "data"}
+ ]
+ },
+ "Enable": {
+ "arguments": [
+ {"type": "GLenum", "name": "cap"}
+ ]
+ },
+ "EnableClientState": {
+ "arguments": [
+ {"type": "GLenum", "name": "cap"}
+ ]
+ },
+ "End": {},
+ "EndList": {},
+ "EvalCoord": {
+ "arguments": [
+ {"name": ["u", "v"]}
+ ],
+ "unimplemented": true,
+ "variants": {
+ "argument_counts": [1, 2],
+ "argument_defaults": ["0.", "0."],
+ "pointer_argument": "u",
+ "types": {
+ "d": {},
+ "dv": {},
+ "f": {},
+ "fv": {}
+ }
+ }
+ },
+ "EvalMesh1": {
+ "arguments": [
+ {"type": "GLenum", "name": "mode"},
+ {"type": "GLint", "name": ["i1", "i2"]}
+ ],
+ "unimplemented": true
+ },
+ "EvalMesh2": {
+ "arguments": [
+ {"type": "GLenum", "name": "mode"},
+ {"type": "GLint", "name": ["i1", "i2", "j1", "j2"]}
+ ],
+ "unimplemented": true
+ },
+ "EvalPoint": {
+ "arguments": [
+ {"name": ["i", "j"]}
+ ],
+ "unimplemented": true,
+ "variants": {
+ "argument_counts": [1, 2],
+ "argument_defaults": ["0", "0"],
+ "types": {
+ "i": {}
+ }
+ }
+ },
+ "Finish": {},
+ "Flush": {},
+ "Fog": {
+ "arguments": [
+ {"type": "GLenum", "name": "pname"},
+ {"name": "param"}
+ ],
+ "variants": {
+ "argument_counts": [1],
+ "pointer_argument": "params",
+ "types": {
+ "f": {"implementation": "fogf"},
+ "fv": {"implementation": "fogfv"},
+ "i": {"implementation": "fogi"},
+ "iv": {"unimplemented": true}
+ }
+ }
+ },
+ "FrontFace": {
+ "arguments": [
+ {"type": "GLenum", "name": "mode"}
+ ]
+ },
+ "Frustum": {
+ "arguments": [
+ {"type": "GLdouble", "name": ["left", "right", "bottom", "top", "nearVal", "farVal"]}
+ ]
+ },
+ "GenBuffers": {
+ "arguments": [
+ {"type": "GLsizei", "name": "n"},
+ {"type": "GLuint*", "name": "buffers"}
+ ]
+ },
+ "GenLists": {
+ "arguments": [
+ {"type": "GLsizei", "name": "range"}
+ ],
+ "return_type": "GLuint"
+ },
+ "GenTextures": {
+ "arguments": [
+ {"type": "GLsizei", "name": "n"},
+ {"type": "GLuint*", "name": "textures"}
+ ]
+ },
+ "GetBooleanv": {
+ "arguments": [
+ {"type": "GLenum", "name": "pname"},
+ {"type": "GLboolean*", "name": "data"}
+ ]
+ },
+ "GetClipPlane": {
+ "arguments": [
+ {"type": "GLenum", "name": "plane"},
+ {"type": "GLdouble*", "name": "equation"}
+ ]
+ },
+ "GetDoublev": {
+ "arguments": [
+ {"type": "GLenum", "name": "pname"},
+ {"type": "GLdouble*", "name": "data"}
+ ]
+ },
+ "GetError": {
+ "return_type": "GLenum"
+ },
+ "GetFloatv": {
+ "arguments": [
+ {"type": "GLenum", "name": "pname"},
+ {"type": "GLfloat*", "name": "data"}
+ ]
+ },
+ "GetIntegerv": {
+ "arguments": [
+ {"type": "GLenum", "name": "pname"},
+ {"type": "GLint*", "name": "data"}
+ ]
+ },
+ "GetLight": {
+ "arguments": [
+ {"type": "GLenum", "name": "light"},
+ {"type": "GLenum", "name": "pname"},
+ {"name": "params"},
+ {"type": "GLenum", "expression": "@variant_gl_type@"}
+ ],
+ "variants": {
+ "argument_counts": [1],
+ "pointer_argument": "params",
+ "types": {
+ "fv!": {},
+ "iv!": {}
+ }
+ }
+ },
+ "GetMaterial": {
+ "arguments": [
+ {"type": "GLenum", "name": "face"},
+ {"type": "GLenum", "name": "pname"},
+ {"name": "params"},
+ {"type": "GLenum", "expression": "@variant_gl_type@"}
+ ],
+ "variants": {
+ "argument_counts": [1],
+ "pointer_argument": "params",
+ "types": {
+ "fv!": {},
+ "iv!": {}
+ }
+ }
+ },
+ "GetProgramiv": {
+ "arguments": [
+ {"type": "GLuint", "name": "program"},
+ {"type": "GLenum", "name": "pname"},
+ {"type": "GLint*", "name": "params"}
+ ],
+ "implementation": "get_program"
+ },
+ "GetShaderiv": {
+ "arguments": [
+ {"type": "GLuint", "name": "shader"},
+ {"type": "GLenum", "name": "pname"},
+ {"type": "GLint*", "name": "params"}
+ ],
+ "implementation": "get_shader"
+ },
+ "GetString": {
+ "arguments": [
+ {"type": "GLenum", "name": "name"}
+ ],
+ "return_type": "GLubyte const*"
+ },
+ "GetTexImage": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLint", "name": "level"},
+ {"type": "GLenum", "name": ["format", "type"]},
+ {"type": "void*", "name": "pixels"}
+ ]
+ },
+ "GetTexLevelParameter": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLint", "name": "level"},
+ {"type": "GLenum", "name": "pname"},
+ {"name": "params"}
+ ],
+ "variants": {
+ "argument_counts": [1],
+ "pointer_argument": "params",
+ "types": {
+ "fv!": {"unimplemented": true},
+ "iv!": {"implementation": "get_tex_parameter_integerv"}
+ }
+ }
+ },
+ "Hint": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLenum", "name": "mode"}
+ ]
+ },
+ "IsEnabled": {
+ "arguments": [
+ {"type": "GLenum", "name": "cap"}
+ ],
+ "return_type": "GLboolean"
+ },
+ "IsList": {
+ "arguments": [
+ {"type": "GLuint", "name": "list"}
+ ],
+ "return_type": "GLboolean"
+ },
+ "IsTexture": {
+ "arguments": [
+ {"type": "GLuint", "name": "texture"}
+ ],
+ "return_type": "GLboolean"
+ },
+ "Light": {
+ "arguments": [
+ {"type": "GLenum", "name": "light"},
+ {"type": "GLenum", "name": "pname"},
+ {"name": "param", "cast_to": "GLfloat"}
+ ],
+ "variants": {
+ "argument_counts": [1],
+ "pointer_argument": "params",
+ "types": {
+ "f": {},
+ "fv": {"implementation": "lightfv"},
+ "i": {},
+ "iv": {"implementation": "lightiv"},
+ "x": {},
+ "xv": {"implementation": "lightiv"}
+ }
+ },
+ "implementation": "lightf"
+ },
+ "LightModel": {
+ "arguments": [
+ {"type": "GLenum", "name": "pname"},
+ {"name": "param"},
+ {"type": "GLenum", "expression": "@variant_gl_type@"}
+ ],
+ "implementation": "light_modelv",
+ "variants": {
+ "argument_counts": [1],
+ "pointer_argument": "params",
+ "types": {
+ "fv": {},
+ "iv": {}
+ }
+ }
+ },
+ "LightModelf": {
+ "arguments": [
+ {"type": "GLenum", "name": "pname"},
+ {"type": "GLfloat", "name": "x"},
+ {"name": ["y", "z", "w"], "expression": "0.f"}
+ ],
+ "implementation": "light_model"
+ },
+ "LightModeli": {
+ "arguments": [
+ {"type": "GLenum", "name": "pname"},
+ {"type": "GLint", "name": "x", "cast_to": "GLfloat"},
+ {"name": ["y", "z", "w"], "expression": "0.f"}
+ ],
+ "implementation": "light_model"
+ },
+ "LineWidth": {
+ "arguments": [
+ {"type": "GLfloat", "name": "width"}
+ ]
+ },
+ "LinkProgram": {
+ "arguments": [
+ {"type": "GLuint", "name": "program"}
+ ]
+ },
+ "ListBase": {
+ "arguments": [
+ {"type": "GLuint", "name": "base"}
+ ]
+ },
+ "LoadIdentity": {},
+ "LoadMatrixd": {
+ "arguments": [
+ {"type": "GLdouble const*", "name": "m", "expression": "GL::transpose_input_matrix(@argument_name@)"}
+ ],
+ "implementation": "load_matrix"
+ },
+ "LoadMatrixf": {
+ "arguments": [
+ {"type": "GLfloat const*", "name": "m", "expression": "GL::transpose_input_matrix(@argument_name@)"}
+ ],
+ "implementation": "load_matrix"
+ },
+ "Map1d": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLdouble","name": ["u1", "u2"]},
+ {"type": "GLint", "name": ["stride", "order"]},
+ {"type": "GLdouble const*", "name": "points"}
+ ],
+ "unimplemented": true
+ },
+ "Map1f": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLfloat","name": ["u1", "u2"]},
+ {"type": "GLint", "name": ["stride", "order"]},
+ {"type": "GLfloat const*", "name": "points"}
+ ],
+ "unimplemented": true
+ },
+ "Map2d": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLdouble","name": ["u1", "u2"]},
+ {"type": "GLint", "name": ["ustride", "uorder"]},
+ {"type": "GLdouble","name": ["v1", "v2"]},
+ {"type": "GLint", "name": ["vstride", "vorder"]},
+ {"type": "GLdouble const*", "name": "points"}
+ ],
+ "unimplemented": true
+ },
+ "Map2f": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLfloat","name": ["u1", "u2"]},
+ {"type": "GLint", "name": ["ustride", "uorder"]},
+ {"type": "GLfloat","name": ["v1", "v2"]},
+ {"type": "GLint", "name": ["vstride", "vorder"]},
+ {"type": "GLfloat const*", "name": "points"}
+ ],
+ "unimplemented": true
+ },
+ "MapGrid1": {
+ "arguments": [
+ {"type": "GLint", "name": "un"},
+ {"name": ["u1", "u2"]}
+ ],
+ "unimplemented": true,
+ "variants": {
+ "types": {
+ "d": {},
+ "f": {}
+ }
+ }
+ },
+ "MapGrid2": {
+ "arguments": [
+ {"type": "GLint", "name": "un"},
+ {"name": ["u1", "u2"]},
+ {"type": "GLint", "name": "vn"},
+ {"name": ["v1", "v2"]}
+ ],
+ "unimplemented": true,
+ "variants": {
+ "types": {
+ "d": {},
+ "f": {}
+ }
+ }
+ },
+ "Material": {
+ "arguments": [
+ {"type": "GLenum", "name": "face"},
+ {"type": "GLenum", "name": "pname"},
+ {"name": "param", "cast_to": "GLfloat"}
+ ],
+ "implementation": "materialf",
+ "variants": {
+ "argument_counts": [1],
+ "pointer_argument": "params",
+ "types": {
+ "f": {},
+ "fv": {
+ "implementation": "materialfv"
+ },
+ "i": {},
+ "iv": {
+ "implementation": "materialiv"
+ }
+ }
+ }
+ },
+ "MatrixMode": {
+ "arguments": [
+ {"type": "GLenum", "name": "mode"}
+ ]
+ },
+ "MultiTexCoord": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"name": ["s", "t", "r", "q"], "cast_to": "GLfloat"}
+ ],
+ "variants": {
+ "api_suffixes": ["", "ARB"],
+ "argument_counts": [1, 2, 3, 4],
+ "argument_defaults": ["0.f", "0.f", "0.f", "1.f"],
+ "pointer_argument": "v",
+ "types": {
+ "d": {},
+ "dv": {},
+ "f": {},
+ "fv": {},
+ "i": {},
+ "iv": {},
+ "s": {},
+ "sv": {}
+ }
+ }
+ },
+ "MultMatrixd": {
+ "arguments": [
+ {"type": "GLdouble const*", "name": "m", "expression": "GL::transpose_input_matrix(@argument_name@)"}
+ ],
+ "implementation": "mult_matrix"
+ },
+ "MultMatrixf": {
+ "arguments": [
+ {"type": "GLfloat const*", "name": "m", "expression": "GL::transpose_input_matrix(@argument_name@)"}
+ ],
+ "implementation": "mult_matrix"
+ },
+ "NewList": {
+ "arguments": [
+ {"type": "GLuint", "name": "list"},
+ {"type": "GLenum", "name": "mode"}
+ ]
+ },
+ "Normal3": {
+ "arguments": [
+ {"name": ["nx", "ny", "nz"], "cast_to": "GLfloat"}
+ ],
+ "implementation": "normal",
+ "variants": {
+ "convert_range": true,
+ "pointer_argument": "v",
+ "types": {
+ "b": {},
+ "bv": {},
+ "d": {},
+ "dv": {},
+ "f": {},
+ "fv": {},
+ "i": {},
+ "iv": {},
+ "s": {},
+ "sv": {}
+ }
+ }
+ },
+ "NormalPointer": {
+ "arguments": [
+ {"type": "GLenum", "name": "type"},
+ {"type": "GLsizei", "name": "stride"},
+ {"type": "void const*", "name": "pointer"}
+ ]
+ },
+ "Ortho": {
+ "arguments": [
+ {"type": "GLdouble", "name": ["left", "right", "bottom", "top", "nearVal", "farVal"]}
+ ]
+ },
+ "PixelStore": {
+ "arguments": [
+ {"type": "GLenum", "name": "pname"},
+ {"name": "param", "cast_to": "GLint"}
+ ],
+ "implementation": "pixel_storei",
+ "variants": {
+ "types": {
+ "f": {},
+ "i": {}
+ }
+ }
+ },
+ "PointSize": {
+ "arguments": [
+ {"type": "GLfloat", "name": "size"}
+ ]
+ },
+ "PolygonMode": {
+ "arguments": [
+ {"type": "GLenum", "name": ["face", "mode"]}
+ ]
+ },
+ "PolygonOffset": {
+ "arguments": [
+ {"type": "GLfloat", "name": ["factor", "units"]}
+ ]
+ },
+ "PopAttrib": {},
+ "PopMatrix": {},
+ "PushAttrib": {
+ "arguments": [
+ {"type": "GLbitfield", "name": "mask"}
+ ]
+ },
+ "PushMatrix": {},
+ "RasterPos": {
+ "arguments": [
+ {"name": ["x", "y", "z", "w"], "cast_to": "GLfloat"}
+ ],
+ "variants": {
+ "argument_counts": [2, 3, 4],
+ "argument_defaults": ["0.f", "0.f", "0.f", "1.f"],
+ "pointer_argument": "v",
+ "types": {
+ "d": {},
+ "dv": {},
+ "f": {},
+ "fv": {},
+ "i": {},
+ "iv": {},
+ "s": {},
+ "sv": {}
+ }
+ }
+ },
+ "ReadBuffer": {
+ "arguments": [
+ {"type": "GLenum", "name": "mode"}
+ ]
+ },
+ "ReadPixels": {
+ "arguments": [
+ {"type": "GLint", "name": "x"},
+ {"type": "GLint", "name": "y"},
+ {"type": "GLsizei", "name": "width"},
+ {"type": "GLsizei", "name": "height"},
+ {"type": "GLenum", "name": "format"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "void*", "name": "data"}
+ ]
+ },
+ "Rect": {
+ "arguments": [
+ {"name": ["x1", "y1", "x2", "y2"], "cast_to": "GLdouble"}
+ ],
+ "variants": {
+ "types": {
+ "d": {},
+ "f": {},
+ "i": {},
+ "s": {}
+ }
+ }
+ },
+ "Rotate": {
+ "arguments": [
+ {"name": ["angle", "x", "y", "z"], "cast_to": "GLfloat"}
+ ],
+ "variants": {
+ "types": {
+ "d": {},
+ "f": {}
+ }
+ }
+ },
+ "Scale": {
+ "arguments": [
+ {"name": ["x", "y", "z"], "cast_to": "GLdouble"}
+ ],
+ "variants": {
+ "types": {
+ "d": {},
+ "f": {}
+ }
+ }
+ },
+ "Scissor": {
+ "arguments": [
+ {"type": "GLint", "name": ["x", "y"]},
+ {"type": "GLsizei", "name": ["width", "height"]}
+ ]
+ },
+ "ShadeModel": {
+ "arguments": [
+ {"type": "GLenum", "name": "mode"}
+ ]
+ },
+ "ShaderSource": {
+ "arguments": [
+ {"type": "GLuint", "name": "shader"},
+ {"type": "GLsizei", "name": "count"},
+ {"type": "GLchar const**", "name": "string"},
+ {"type": "GLint const*", "name": "length"}
+ ]
+ },
+ "StencilFunc": {
+ "arguments": [
+ {"expression": "GL_FRONT_AND_BACK"},
+ {"type": "GLenum", "name": "func"},
+ {"type": "GLint", "name": "ref"},
+ {"type": "GLuint", "name": "mask"}
+ ],
+ "implementation": "stencil_func_separate"
+ },
+ "StencilFuncSeparate": {
+ "arguments": [
+ {"type": "GLenum", "name": ["face", "func"]},
+ {"type": "GLint", "name": "ref"},
+ {"type": "GLuint", "name": "mask"}
+ ]
+ },
+ "StencilMask": {
+ "arguments": [
+ {"expression": "GL_FRONT_AND_BACK"},
+ {"type": "GLuint", "name": "mask"}
+ ],
+ "implementation": "stencil_mask_separate"
+ },
+ "StencilMaskSeparate": {
+ "arguments": [
+ {"type": "GLenum", "name": "face"},
+ {"type": "GLuint", "name": "mask"}
+ ]
+ },
+ "StencilOp": {
+ "arguments": [
+ {"expression": "GL_FRONT_AND_BACK"},
+ {"type": "GLenum", "name": ["sfail", "dpfail", "dppass"]}
+ ],
+ "implementation": "stencil_op_separate"
+ },
+ "StencilOpSeparate": {
+ "arguments": [
+ {"type": "GLenum", "name": ["face", "sfail", "dpfail", "dppass"]}
+ ]
+ },
+ "TexCoord": {
+ "arguments": [
+ {"name": ["s", "t", "r", "q"], "cast_to": "GLfloat"}
+ ],
+ "variants": {
+ "argument_counts": [1, 2, 3, 4],
+ "argument_defaults": ["0.f", "0.f", "0.f", "1.f"],
+ "pointer_argument": "v",
+ "types": {
+ "d": {},
+ "dv": {},
+ "f": {},
+ "fv": {},
+ "i": {},
+ "iv": {},
+ "s": {},
+ "sv": {}
+ }
+ }
+ },
+ "TexCoordPointer": {
+ "arguments": [
+ {"type": "GLint", "name": "size"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "GLsizei", "name": "stride"},
+ {"type": "void const*", "name": "pointer"}
+ ]
+ },
+ "TexEnv": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLenum", "name": "pname"},
+ {"name": "param", "cast_to": "GLfloat"}
+ ],
+ "variants": {
+ "pointer_argument": "params",
+ "types": {
+ "f": {},
+ "fv": {"unimplemented": true},
+ "i": {},
+ "iv": {"unimplemented": true}
+ }
+ }
+ },
+ "TexGen": {
+ "arguments": [
+ {"type": "GLenum", "name": "coord"},
+ {"type": "GLenum", "name": "pname"},
+ {"name": "param", "cast_to": "GLint"}
+ ],
+ "variants": {
+ "argument_counts": [1],
+ "pointer_argument": "params",
+ "types": {
+ "d": {},
+ "dv": {"unimplemented": true},
+ "f": {},
+ "fv": {"implementation": "tex_gen_floatv"},
+ "i": {},
+ "iv": {"unimplemented": true}
+ }
+ }
+ },
+ "TexImage1D": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLint", "name": "level"},
+ {"type": "GLint", "name": "internalFormat"},
+ {"type": "GLsizei", "name": "width"},
+ {"type": "GLint", "name": "border"},
+ {"type": "GLenum", "name": "format"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "void const*", "name": "data"}
+ ],
+ "unimplemented": true
+ },
+ "TexImage2D": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLint", "name": "level"},
+ {"type": "GLint", "name": "internalFormat"},
+ {"type": "GLsizei", "name": "width"},
+ {"type": "GLsizei", "name": "height"},
+ {"type": "GLint", "name": "border"},
+ {"type": "GLenum", "name": "format"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "void const*", "name": "data"}
+ ],
+ "implementation": "tex_image_2d"
+ },
+ "TexImage3D": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLint", "name": "level"},
+ {"type": "GLint", "name": "internalFormat"},
+ {"type": "GLsizei", "name": "width"},
+ {"type": "GLsizei", "name": "height"},
+ {"type": "GLsizei", "name": "depth"},
+ {"type": "GLint", "name": "border"},
+ {"type": "GLenum", "name": "format"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "void const*", "name": "data"}
+ ],
+ "unimplemented": true
+ },
+ "TexParameter": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLenum", "name": "pname"},
+ {"name": "param"}
+ ],
+ "variants": {
+ "pointer_argument": "params",
+ "types": {
+ "f": {},
+ "fv": {"unimplemented": true},
+ "i": {},
+ "iv": {"unimplemented": true}
+ }
+ }
+ },
+ "TexSubImage1D": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLint", "name": "level"},
+ {"type": "GLint", "name": "xoffset"},
+ {"type": "GLsizei", "name": "width"},
+ {"type": "GLenum", "name": "format"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "void const*", "name": "pixels"}
+ ],
+ "unimplemented": true
+ },
+ "TexSubImage2D": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLint", "name": "level"},
+ {"type": "GLint", "name": "xoffset"},
+ {"type": "GLint", "name": "yoffset"},
+ {"type": "GLsizei", "name": "width"},
+ {"type": "GLsizei", "name": "height"},
+ {"type": "GLenum", "name": "format"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "void const*", "name": "pixels"}
+ ],
+ "implementation": "tex_sub_image_2d"
+ },
+ "TexSubImage3D": {
+ "arguments": [
+ {"type": "GLenum", "name": "target"},
+ {"type": "GLint", "name": "level"},
+ {"type": "GLint", "name": "xoffset"},
+ {"type": "GLint", "name": "yoffset"},
+ {"type": "GLint", "name": "zoffset"},
+ {"type": "GLsizei", "name": "width"},
+ {"type": "GLsizei", "name": "height"},
+ {"type": "GLsizei", "name": "depth"},
+ {"type": "GLenum", "name": "format"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "void const*", "name": "pixels"}
+ ],
+ "unimplemented": true
+ },
+ "Translate": {
+ "arguments": [
+ {"name": ["x", "y", "z"], "cast_to": "GLdouble"}
+ ],
+ "variants": {
+ "types": {
+ "d": {},
+ "f": {}
+ }
+ }
+ },
+ "UseProgram": {
+ "arguments": [
+ {"type": "GLuint", "name": "program"}
+ ]
+ },
+ "Vertex": {
+ "arguments": [
+ {"name": ["x", "y", "z", "w"], "cast_to": "GLdouble"}
+ ],
+ "variants": {
+ "argument_counts": [2, 3, 4],
+ "argument_defaults": ["0.", "0.", "0.", "1."],
+ "pointer_argument": "v",
+ "types": {
+ "d": {},
+ "dv": {},
+ "f": {},
+ "fv": {},
+ "i": {},
+ "iv": {},
+ "s": {},
+ "sv": {}
+ }
+ }
+ },
+ "VertexPointer": {
+ "arguments": [
+ {"type": "GLint", "name": "size"},
+ {"type": "GLenum", "name": "type"},
+ {"type": "GLsizei", "name": "stride"},
+ {"type": "void const*", "name": "pointer"}
+ ]
+ },
+ "Viewport": {
+ "arguments": [
+ {"type": "GLint", "name": ["x", "y"]},
+ {"type": "GLsizei", "name": ["width", "height"]}
+ ]
+ }
+}