diff options
author | Kristian Høgsberg <[email protected]> | 2010-05-02 10:17:07 -0400 |
---|---|---|
committer | Kristian Høgsberg <[email protected]> | 2010-05-02 10:17:07 -0400 |
commit | 0870e4a2022cff79805613ae7cd4b9237a2f564c (patch) | |
tree | 694d0c07918661996255cff226602045e0d9c707 /src/mesa/es | |
parent | 9d3360567346036f1c2b0b5e9de9bd123d883762 (diff) | |
parent | 9fd5fa05122aa0cac0051fa92d1634bde43209db (diff) |
Merge branch 'gles2-2'
Conflicts:
src/mesa/drivers/dri/common/dri_util.h
Diffstat (limited to 'src/mesa/es')
-rw-r--r-- | src/mesa/es/Makefile | 18 | ||||
-rw-r--r-- | src/mesa/es/glapi/Makefile | 4 | ||||
-rw-r--r-- | src/mesa/es/main/APIspec.dtd | 52 | ||||
-rw-r--r-- | src/mesa/es/main/APIspec.py | 617 | ||||
-rw-r--r-- | src/mesa/es/main/APIspec.xml | 4336 | ||||
-rw-r--r-- | src/mesa/es/main/APIspecutil.py | 265 | ||||
-rw-r--r-- | src/mesa/es/main/drawtex.c | 148 | ||||
-rw-r--r-- | src/mesa/es/main/drawtex.h | 77 | ||||
-rw-r--r-- | src/mesa/es/main/es_cpaltex.c | 231 | ||||
-rw-r--r-- | src/mesa/es/main/es_enable.c | 91 | ||||
-rw-r--r-- | src/mesa/es/main/es_fbo.c | 37 | ||||
-rw-r--r-- | src/mesa/es/main/es_generator.py | 685 | ||||
-rw-r--r-- | src/mesa/es/main/es_query_matrix.c | 199 | ||||
-rw-r--r-- | src/mesa/es/main/es_texgen.c | 73 | ||||
-rw-r--r-- | src/mesa/es/main/get_gen.py | 810 | ||||
-rw-r--r-- | src/mesa/es/main/specials_es1.c | 218 | ||||
-rw-r--r-- | src/mesa/es/main/specials_es2.c | 179 | ||||
-rw-r--r-- | src/mesa/es/main/stubs.c | 131 | ||||
-rw-r--r-- | src/mesa/es/sources.mak | 49 | ||||
-rw-r--r-- | src/mesa/es/state_tracker/st_cb_drawtex.c | 312 | ||||
-rw-r--r-- | src/mesa/es/state_tracker/st_cb_drawtex.h | 18 |
21 files changed, 4 insertions, 8546 deletions
diff --git a/src/mesa/es/Makefile b/src/mesa/es/Makefile index 8b484853afe..5498b086aab 100644 --- a/src/mesa/es/Makefile +++ b/src/mesa/es/Makefile @@ -82,24 +82,6 @@ libes1api.a: $(ES1_API_OBJECTS) libes2api.a: $(ES2_API_OBJECTS) @$(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.xml main/es_generator.py main/APIspecutil.py main/APIspec.py - $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@ - -main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py - $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -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 > $@ - .PHONY: clean clean: -rm -f $(ES1_LIBS) $(ES2_LIBS) diff --git a/src/mesa/es/glapi/Makefile b/src/mesa/es/glapi/Makefile index e8a9afab7c5..a388f073cf4 100644 --- a/src/mesa/es/glapi/Makefile +++ b/src/mesa/es/glapi/Makefile @@ -11,7 +11,6 @@ OUTPUTS := \ sparc/glapi_sparc.S \ x86-64/glapi_x86-64.S \ x86/glapi_x86.S \ - main/enums.c \ main/remap_helper.h COMMON = gl_XML.py glX_XML.py license.py typeexpr.py @@ -66,9 +65,6 @@ endef %/x86/glapi_x86.S: $(GLAPI)/gl_x86_asm.py $(COMMON) $(call gen-glapi) -%/main/enums.c: $(GLAPI)/gl_enums.py $(COMMON) - $(call gen-glapi) - %/main/remap_helper.h: $(GLAPI)/remap_helper.py $(COMMON) $(call gen-glapi) diff --git a/src/mesa/es/main/APIspec.dtd b/src/mesa/es/main/APIspec.dtd deleted file mode 100644 index efcfa31f10e..00000000000 --- a/src/mesa/es/main/APIspec.dtd +++ /dev/null @@ -1,52 +0,0 @@ -<!ELEMENT apispec (template|api)+> - -<!ELEMENT api (category*, function*)> -<!ELEMENT category EMPTY> -<!ELEMENT function EMPTY> - -<!ELEMENT template (proto, desc*)> -<!ELEMENT proto (return, (param|vector)*)> -<!ELEMENT return EMPTY> -<!ELEMENT param EMPTY> -<!ELEMENT vector (param*)> -<!ELEMENT desc ((value|range)*, desc*)> -<!ELEMENT value EMPTY> -<!ELEMENT range EMPTY> - -<!ATTLIST api name NMTOKEN #REQUIRED - implementation (true | false) "false"> -<!ATTLIST category name NMTOKEN #REQUIRED> -<!ATTLIST function name NMTOKEN #REQUIRED - default_prefix NMTOKEN "_mesa_" - external (true | false) "false" - template NMTOKEN #REQUIRED - gltype CDATA #IMPLIED - vector_size NMTOKEN #IMPLIED - expand_vector (true | false) "false" - skip_desc (true | false) "false"> - -<!ATTLIST template name NMTOKEN #REQUIRED - direction (set | get) "set"> - -<!ATTLIST return type CDATA #REQUIRED> -<!ATTLIST param name NMTOKEN #REQUIRED - type CDATA #REQUIRED - hide_if_expanded (true | false) "false" - category NMTOKEN #IMPLIED> -<!ATTLIST vector name NMTOKEN #REQUIRED - type CDATA #REQUIRED - size NMTOKEN #REQUIRED - category NMTOKEN #IMPLIED> - -<!ATTLIST desc name NMTOKEN #REQUIRED - vector_size CDATA #IMPLIED - convert (true | false) #IMPLIED - error NMTOKEN "GL_INVALID_ENUM" - category NMTOKEN #IMPLIED> - -<!ATTLIST value name CDATA #REQUIRED - category NMTOKEN #IMPLIED> -<!ATTLIST range from NMTOKEN #REQUIRED - to NMTOKEN #REQUIRED - base NMTOKEN #IMPLIED - category NMTOKEN #IMPLIED> diff --git a/src/mesa/es/main/APIspec.py b/src/mesa/es/main/APIspec.py deleted file mode 100644 index 6947f7301cd..00000000000 --- a/src/mesa/es/main/APIspec.py +++ /dev/null @@ -1,617 +0,0 @@ -#!/usr/bin/python -# -# Copyright (C) 2009 Chia-I Wu <[email protected]> -# -# 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. -""" -A parser for APIspec. -""" - -class SpecError(Exception): - """Error in the spec file.""" - - -class Spec(object): - """A Spec is an abstraction of the API spec.""" - - def __init__(self, doc): - self.doc = doc - - self.spec_node = doc.getRootElement() - self.tmpl_nodes = {} - self.api_nodes = {} - self.impl_node = None - - # parse <apispec> - node = self.spec_node.children - while node: - if node.type == "element": - if node.name == "template": - self.tmpl_nodes[node.prop("name")] = node - elif node.name == "api": - self.api_nodes[node.prop("name")] = node - else: - raise SpecError("unexpected node %s in apispec" % - node.name) - node = node.next - - # find an implementation - for name, node in self.api_nodes.iteritems(): - if node.prop("implementation") == "true": - self.impl_node = node - break - if not self.impl_node: - raise SpecError("unable to find an implementation") - - def get_impl(self): - """Return the implementation.""" - return API(self, self.impl_node) - - def get_api(self, name): - """Return an API.""" - return API(self, self.api_nodes[name]) - - -class API(object): - """An API consists of categories and functions.""" - - def __init__(self, spec, api_node): - self.name = api_node.prop("name") - self.is_impl = (api_node.prop("implementation") == "true") - - self.categories = [] - self.functions = [] - - # parse <api> - func_nodes = [] - node = api_node.children - while node: - if node.type == "element": - if node.name == "category": - cat = node.prop("name") - self.categories.append(cat) - elif node.name == "function": - func_nodes.append(node) - else: - raise SpecError("unexpected node %s in api" % node.name) - node = node.next - - # realize functions - for func_node in func_nodes: - tmpl_node = spec.tmpl_nodes[func_node.prop("template")] - try: - func = Function(tmpl_node, func_node, self.is_impl, - self.categories) - except SpecError, e: - func_name = func_node.prop("name") - raise SpecError("failed to parse %s: %s" % (func_name, e)) - self.functions.append(func) - - def match(self, func, conversions={}): - """Find a matching function in the API.""" - match = None - need_conv = False - for f in self.functions: - matched, conv = f.match(func, conversions) - if matched: - match = f - need_conv = conv - # exact match - if not need_conv: - break - return (match, need_conv) - - -class Function(object): - """Parse and realize a <template> node.""" - - def __init__(self, tmpl_node, func_node, force_skip_desc=False, categories=[]): - self.tmpl_name = tmpl_node.prop("name") - self.direction = tmpl_node.prop("direction") - - self.name = func_node.prop("name") - self.prefix = func_node.prop("default_prefix") - self.is_external = (func_node.prop("external") == "true") - - if force_skip_desc: - self._skip_desc = True - else: - self._skip_desc = (func_node.prop("skip_desc") == "true") - - self._categories = categories - - # these attributes decide how the template is realized - self._gltype = func_node.prop("gltype") - if func_node.hasProp("vector_size"): - self._vector_size = int(func_node.prop("vector_size")) - else: - self._vector_size = 0 - self._expand_vector = (func_node.prop("expand_vector") == "true") - - self.return_type = "void" - param_nodes = [] - - # find <proto> - proto_node = tmpl_node.children - while proto_node: - if proto_node.type == "element" and proto_node.name == "proto": - break - proto_node = proto_node.next - if not proto_node: - raise SpecError("no proto") - # and parse it - node = proto_node.children - while node: - if node.type == "element": - if node.name == "return": - self.return_type = node.prop("type") - elif node.name == "param" or node.name == "vector": - if self.support_node(node): - # make sure the node is not hidden - if not (self._expand_vector and - (node.prop("hide_if_expanded") == "true")): - param_nodes.append(node) - else: - raise SpecError("unexpected node %s in proto" % node.name) - node = node.next - - self._init_params(param_nodes) - self._init_descs(tmpl_node, param_nodes) - - def __str__(self): - return "%s %s%s(%s)" % (self.return_type, self.prefix, self.name, - self.param_string(True)) - - def _init_params(self, param_nodes): - """Parse and initialize parameters.""" - self.params = [] - - for param_node in param_nodes: - size = self.param_node_size(param_node) - # when no expansion, vector is just like param - if param_node.name == "param" or not self._expand_vector: - param = Parameter(param_node, self._gltype, size) - self.params.append(param) - continue - - if not size or size > param_node.lsCountNode(): - raise SpecError("could not expand %s with unknown or " - "mismatch sizes" % param.name) - - # expand the vector - expanded_params = [] - child = param_node.children - while child: - if (child.type == "element" and child.name == "param" and - self.support_node(child)): - expanded_params.append(Parameter(child, self._gltype)) - if len(expanded_params) == size: - break - child = child.next - # just in case that lsCountNode counts unknown nodes - if len(expanded_params) < size: - raise SpecError("not enough named parameters") - - self.params.extend(expanded_params) - - def _init_descs(self, tmpl_node, param_nodes): - """Parse and initialize parameter descriptions.""" - self.checker = Checker() - if self._skip_desc: - return - - node = tmpl_node.children - while node: - if node.type == "element" and node.name == "desc": - if self.support_node(node): - # parse <desc> - desc = Description(node, self._categories) - self.checker.add_desc(desc) - node = node.next - - self.checker.validate(self, param_nodes) - - def support_node(self, node): - """Return true if a node is in the supported category.""" - return (not node.hasProp("category") or - node.prop("category") in self._categories) - - def get_param(self, name): - """Return the named parameter.""" - for param in self.params: - if param.name == name: - return param - return None - - def param_node_size(self, param): - """Return the size of a vector.""" - if param.name != "vector": - return 0 - - size = param.prop("size") - if size.isdigit(): - size = int(size) - else: - size = 0 - if not size: - size = self._vector_size - if not size and self._expand_vector: - # return the number of named parameters - size = param.lsCountNode() - return size - - def param_string(self, declaration): - """Return the C code of the parameters.""" - args = [] - if declaration: - for param in self.params: - sep = "" if param.type.endswith("*") else " " - args.append("%s%s%s" % (param.type, sep, param.name)) - if not args: - args.append("void") - else: - for param in self.params: - args.append(param.name) - return ", ".join(args) - - def match(self, other, conversions={}): - """Return true if the functions match, probably with a conversion.""" - if (self.tmpl_name != other.tmpl_name or - self.return_type != other.return_type or - len(self.params) != len(other.params)): - return (False, False) - - need_conv = False - for i in xrange(len(self.params)): - src = other.params[i] - dst = self.params[i] - if (src.is_vector != dst.is_vector or src.size != dst.size): - return (False, False) - if src.type != dst.type: - if dst.base_type() in conversions.get(src.base_type(), []): - need_conv = True - else: - # unable to convert - return (False, False) - - return (True, need_conv) - - -class Parameter(object): - """A parameter of a function.""" - - def __init__(self, param_node, gltype=None, size=0): - self.is_vector = (param_node.name == "vector") - - self.name = param_node.prop("name") - self.size = size - - type = param_node.prop("type") - if gltype: - type = type.replace("GLtype", gltype) - elif type.find("GLtype") != -1: - raise SpecError("parameter %s has unresolved type" % self.name) - - self.type = type - - def base_type(self): - """Return the base GL type by stripping qualifiers.""" - return [t for t in self.type.split(" ") if t.startswith("GL")][0] - - -class Checker(object): - """A checker is the collection of all descriptions on the same level. - Descriptions of the same parameter are concatenated. - """ - - def __init__(self): - self.switches = {} - self.switch_constants = {} - - def add_desc(self, desc): - """Add a description.""" - # TODO allow index to vary - const_attrs = ["index", "error", "convert", "size_str"] - if desc.name not in self.switches: - self.switches[desc.name] = [] - self.switch_constants[desc.name] = {} - for attr in const_attrs: - self.switch_constants[desc.name][attr] = None - - # some attributes, like error code, should be the same for all descs - consts = self.switch_constants[desc.name] - for attr in const_attrs: - if getattr(desc, attr) is not None: - if (consts[attr] is not None and - consts[attr] != getattr(desc, attr)): - raise SpecError("mismatch %s for %s" % (attr, desc.name)) - consts[attr] = getattr(desc, attr) - - self.switches[desc.name].append(desc) - - def validate(self, func, param_nodes): - """Validate the checker against a function.""" - tmp = Checker() - - for switch in self.switches.itervalues(): - valid_descs = [] - for desc in switch: - if desc.validate(func, param_nodes): - valid_descs.append(desc) - # no possible values - if not valid_descs: - return False - for desc in valid_descs: - if not desc._is_noop: - tmp.add_desc(desc) - - self.switches = tmp.switches - self.switch_constants = tmp.switch_constants - return True - - def flatten(self, name=None): - """Return a flat list of all descriptions of the named parameter.""" - flat_list = [] - for switch in self.switches.itervalues(): - for desc in switch: - if not name or desc.name == name: - flat_list.append(desc) - flat_list.extend(desc.checker.flatten(name)) - return flat_list - - def always_check(self, name): - """Return true if the parameter is checked in all possible pathes.""" - if name in self.switches: - return True - - # a param is always checked if any of the switch always checks it - for switch in self.switches.itervalues(): - # a switch always checks it if all of the descs always check it - always = True - for desc in switch: - if not desc.checker.always_check(name): - always = False - break - if always: - return True - return False - - def _c_switch(self, name, indent="\t"): - """Output C switch-statement for the named parameter, for debug.""" - switch = self.switches.get(name, []) - # make sure there are valid values - need_switch = False - for desc in switch: - if desc.values: - need_switch = True - if not need_switch: - return [] - - stmts = [] - var = switch[0].name - if switch[0].index >= 0: - var += "[%d]" % switch[0].index - stmts.append("switch (%s) { /* assume GLenum */" % var) - - for desc in switch: - if desc.values: - for val in desc.values: - stmts.append("case %s:" % val) - for dep_name in desc.checker.switches.iterkeys(): - dep_stmts = [indent + s for s in desc.checker._c_switch(dep_name, indent)] - stmts.extend(dep_stmts) - stmts.append(indent + "break;") - - stmts.append("default:") - stmts.append(indent + "ON_ERROR(%s);" % switch[0].error); - stmts.append(indent + "break;") - stmts.append("}") - - return stmts - - def dump(self, indent="\t"): - """Dump the descriptions in C code.""" - stmts = [] - for name in self.switches.iterkeys(): - c_switch = self._c_switch(name) - print "\n".join(c_switch) - - -class Description(object): - """A description desribes a parameter and its relationship with other - parameters. - """ - - def __init__(self, desc_node, categories=[]): - self._categories = categories - self._is_noop = False - - self.name = desc_node.prop("name") - self.index = -1 - - self.error = desc_node.prop("error") or "GL_INVALID_ENUM" - # vector_size may be C code - self.size_str = desc_node.prop("vector_size") - - self._has_enum = False - self.values = [] - dep_nodes = [] - - # parse <desc> - valid_names = ["value", "range", "desc"] - node = desc_node.children - while node: - if node.type == "element": - if node.name in valid_names: - # ignore nodes that require unsupported categories - if (node.prop("category") and - node.prop("category") not in self._categories): - node = node.next - continue - else: - raise SpecError("unexpected node %s in desc" % node.name) - - if node.name == "value": - val = node.prop("name") - if not self._has_enum and val.startswith("GL_"): - self._has_enum = True - self.values.append(val) - elif node.name == "range": - first = int(node.prop("from")) - last = int(node.prop("to")) - base = node.prop("base") or "" - if not self._has_enum and base.startswith("GL_"): - self._has_enum = True - # expand range - for i in xrange(first, last + 1): - self.values.append("%s%d" % (base, i)) - else: # dependent desc - dep_nodes.append(node) - node = node.next - - # default to convert if there is no enum - self.convert = not self._has_enum - if desc_node.hasProp("convert"): - self.convert = (desc_node.prop("convert") == "true") - - self._init_deps(dep_nodes) - - def _init_deps(self, dep_nodes): - """Parse and initialize dependents.""" - self.checker = Checker() - - for dep_node in dep_nodes: - # recursion! - dep = Description(dep_node, self._categories) - self.checker.add_desc(dep) - - def _search_param_node(self, param_nodes, name=None): - """Search the template parameters for the named node.""" - param_node = None - param_index = -1 - - if not name: - name = self.name - for node in param_nodes: - if name == node.prop("name"): - param_node = node - elif node.name == "vector": - child = node.children - idx = 0 - while child: - if child.type == "element" and child.name == "param": - if name == child.prop("name"): - param_node = node - param_index = idx - break - idx += 1 - child = child.next - if param_node: - break - return (param_node, param_index) - - def _find_final(self, func, param_nodes): - """Find the final parameter.""" - param = func.get_param(self.name) - param_index = -1 - - # the described param is not in the final function - if not param: - # search the template parameters - node, index = self._search_param_node(param_nodes) - if not node: - raise SpecError("invalid desc %s in %s" % - (self.name, func.name)) - - # a named parameter of a vector - if index >= 0: - param = func.get_param(node.prop("name")) - param_index = index - elif node.name == "vector": - # must be an expanded vector, check its size - if self.size_str and self.size_str.isdigit(): - size = int(self.size_str) - expanded_size = func.param_node_size(node) - if size != expanded_size: - return (False, None, -1) - # otherwise, it is a valid, but no-op, description - - return (True, param, param_index) - - def validate(self, func, param_nodes): - """Validate a description against certain function.""" - if self.checker.switches and not self.values: - raise SpecError("no valid values for %s" % self.name) - - valid, param, param_index = self._find_final(func, param_nodes) - if not valid: - return False - - # the description is valid, but the param is gone - # mark it no-op so that it will be skipped - if not param: - self._is_noop = True - return True - - if param.is_vector: - # if param was known, this should have been done in __init__ - if self._has_enum: - self.size_str = "1" - # size mismatch - if (param.size and self.size_str and self.size_str.isdigit() and - param.size != int(self.size_str)): - return False - elif self.size_str: - # only vector accepts vector_size - raise SpecError("vector_size is invalid for %s" % param.name) - - if not self.checker.validate(func, param_nodes): - return False - - # update the description - self.name = param.name - self.index = param_index - - return True - - -def main(): - import libxml2 - - filename = "APIspec.xml" - apinames = ["GLES1.1", "GLES2.0"] - - doc = libxml2.readFile(filename, None, - libxml2.XML_PARSE_DTDLOAD + - libxml2.XML_PARSE_DTDVALID + - libxml2.XML_PARSE_NOBLANKS) - - spec = Spec(doc) - impl = spec.get_impl() - for apiname in apinames: - spec.get_api(apiname) - - doc.freeDoc() - - print "%s is successfully parsed" % filename - - -if __name__ == "__main__": - main() diff --git a/src/mesa/es/main/APIspec.xml b/src/mesa/es/main/APIspec.xml deleted file mode 100644 index 17665d8df5b..00000000000 --- a/src/mesa/es/main/APIspec.xml +++ /dev/null @@ -1,4336 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE apispec SYSTEM "APIspec.dtd"> - -<!-- A function is generated from a template. Multiple functions can be - generated from a single template with different arguments. For example, - glColor3f can be generated from - - <function name="Color3f" template="Color" gltype="GLfloat" vector_size="3" expand_vector="true"/> - - and glColor4iv can be generated from - - <function name="Color4iv" template="Color" gltype="GLint" vector_size="4"/> - - In a template, there are <desc>s that describe the properties of - parameters. A <desc> can enumerate the valid values of a parameter. It - can also specify the error code when an invalid value is given, and etc. - By nesting <desc>s, they can create dependency between parameters. - - A function can be marked as external. It means that the function cannot - be dispatched to the corresponding mesa function, if one exists, directly, - and requires an external implementation. ---> - -<apispec> - -<template name="Color"> - <proto> - <return type="void"/> - <vector name="v" type="const GLtype *" size="dynamic"> - <param name="red" type="GLtype"/> - <param name="green" type="GLtype"/> - <param name="blue" type="GLtype"/> - <param name="alpha" type="GLtype"/> - </vector> - </proto> -</template> - -<template name="ClipPlane"> - <proto> - <return type="void"/> - <param name="plane" type="GLenum"/> - <vector name="equation" type="const GLtype *" size="4"/> - </proto> - - <desc name="plane"> - <range base="GL_CLIP_PLANE" from="0" to="5"/> - </desc> -</template> - -<template name="CullFace"> - <proto> - <return type="void"/> - <param name="mode" type="GLenum"/> - </proto> - - <desc name="mode"> - <value name="GL_FRONT"/> - <value name="GL_BACK"/> - <value name="GL_FRONT_AND_BACK"/> - </desc> -</template> - -<template name="Fog"> - <proto> - <return type="void"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="const GLtype *" size="dynamic"> - <param name="param" type="GLtype"/> - </vector> - </proto> - - <desc name="pname"> - <value name="GL_FOG_MODE"/> - <desc name="param"> - <value name="GL_EXP"/> - <value name="GL_EXP2"/> - <value name="GL_LINEAR"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_FOG_COLOR"/> - - <desc name="params" vector_size="4"/> - </desc> - - <desc name="pname"> - <value name="GL_FOG_DENSITY"/> - <value name="GL_FOG_START"/> - <value name="GL_FOG_END"/> - - <desc name="params" vector_size="1"/> - </desc> -</template> - -<template name="FrontFace"> - <proto> - <return type="void"/> - <param name="mode" type="GLenum"/> - </proto> - - <desc name="mode"> - <value name="GL_CW"/> - <value name="GL_CCW"/> - </desc> -</template> - -<template name="Hint"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="mode" type="GLenum"/> - </proto> - - <desc name="target" category="GLES1.1"> - <value name="GL_FOG_HINT"/> - <value name="GL_LINE_SMOOTH_HINT"/> - <value name="GL_PERSPECTIVE_CORRECTION_HINT"/> - <value name="GL_POINT_SMOOTH_HINT"/> - </desc> - <desc name="target" category="OES_standard_derivatives"> - <value name="GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES"/> - </desc> - <desc name="target"> - <value name="GL_GENERATE_MIPMAP_HINT"/> - </desc> - - <desc name="mode"> - <value name="GL_FASTEST"/> - <value name="GL_NICEST"/> - <value name="GL_DONT_CARE"/> - </desc> -</template> - -<template name="Light"> - <proto> - <return type="void"/> - <param name="light" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="const GLtype *" size="dynamic"> - <param name="param" type="GLtype"/> - </vector> - </proto> - - <desc name="light"> - <range base="GL_LIGHT" from="0" to="7"/> - </desc> - - <desc name="pname"> - <value name="GL_AMBIENT"/> - <value name="GL_DIFFUSE"/> - <value name="GL_SPECULAR"/> - <value name="GL_POSITION"/> - - <desc name="params" vector_size="4"/> - </desc> - - <desc name="pname"> - <value name="GL_SPOT_DIRECTION"/> - - <desc name="params" vector_size="3"/> - </desc> - - <desc name="pname"> - <value name="GL_SPOT_EXPONENT"/> - <value name="GL_SPOT_CUTOFF"/> - <value name="GL_CONSTANT_ATTENUATION"/> - <value name="GL_LINEAR_ATTENUATION"/> - <value name="GL_QUADRATIC_ATTENUATION"/> - - <desc name="params" vector_size="1"/> - </desc> -</template> - -<template name="LightModel"> - <proto> - <return type="void"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="const GLtype *" size="dynamic"> - <param name="param" type="GLtype"/> - </vector> - </proto> - - <desc name="pname"> - <value name="GL_LIGHT_MODEL_AMBIENT"/> - - <desc name="params" vector_size="4"/> - </desc> - - <desc name="pname"> - <value name="GL_LIGHT_MODEL_TWO_SIDE"/> - <desc name="param"> - <value name="GL_TRUE"/> - <value name="GL_FALSE"/> - </desc> - </desc> -</template> - -<template name="LineWidth"> - <proto> - <return type="void"/> - <param name="width" type="GLtype"/> - </proto> -</template> - -<template name="Material"> - <proto> - <return type="void"/> - <param name="face" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="const GLtype *" size="dynamic"> - <param name="param" type="GLtype"/> - </vector> - </proto> - - <desc name="face"> - <value name="GL_FRONT_AND_BACK"/> - </desc> - - <desc name="pname"> - <value name="GL_AMBIENT"/> - <value name="GL_DIFFUSE"/> - <value name="GL_AMBIENT_AND_DIFFUSE"/> - <value name="GL_SPECULAR"/> - <value name="GL_EMISSION"/> - - <desc name="params" vector_size="4"/> - </desc> - - <desc name="pname"> - <value name="GL_SHININESS"/> - - <desc name="params" vector_size="1"/> - </desc> -</template> - -<template name="PointSize"> - <proto> - <return type="void"/> - <param name="size" type="GLtype"/> - </proto> -</template> - -<template name="PointSizePointer"> - <proto> - <return type="void"/> - <param name="type" type="GLenum"/> - <param name="stride" type="GLsizei"/> - <param name="pointer" type="const GLvoid *"/> - </proto> - - <desc name="type"> - <value name="GL_FLOAT"/> - <value name="GL_FIXED"/> - </desc> -</template> - -<template name="Scissor"> - <proto> - <return type="void"/> - <param name="x" type="GLint"/> - <param name="y" type="GLint"/> - <param name="width" type="GLsizei"/> - <param name="height" type="GLsizei"/> - </proto> -</template> - -<template name="ShadeModel"> - <proto> - <return type="void"/> - <param name="mode" type="GLenum"/> - </proto> - - <desc name="mode"> - <value name="GL_FLAT"/> - <value name="GL_SMOOTH"/> - </desc> -</template> - -<template name="TexParameter"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="const GLtype *" size="dynamic"> - <param name="param" type="GLtype"/> - </vector> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/> - </desc> - - <desc name="pname"> - <value name="GL_TEXTURE_WRAP_S"/> - <value name="GL_TEXTURE_WRAP_T"/> - <value name="GL_TEXTURE_WRAP_R_OES" category="OES_texture_3D"/> - - <desc name="param"> - <value name="GL_CLAMP_TO_EDGE"/> - <value name="GL_REPEAT"/> - <value name="GL_MIRRORED_REPEAT" category="GLES2.0"/> - <value name="GL_MIRRORED_REPEAT_OES" category="OES_texture_mirrored_repeat"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_TEXTURE_MIN_FILTER"/> - - <desc name="param"> - <value name="GL_NEAREST"/> - <value name="GL_LINEAR"/> - <value name="GL_NEAREST_MIPMAP_NEAREST"/> - <value name="GL_NEAREST_MIPMAP_LINEAR"/> - <value name="GL_LINEAR_MIPMAP_NEAREST"/> - <value name="GL_LINEAR_MIPMAP_LINEAR"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_TEXTURE_MAG_FILTER"/> - - <desc name="param"> - <value name="GL_NEAREST"/> - <value name="GL_LINEAR"/> - </desc> - </desc> - - <desc name="pname" category="GLES1.1"> - <value name="GL_GENERATE_MIPMAP"/> - - <desc name="param"> - <value name="GL_TRUE"/> - <value name="GL_FALSE"/> - </desc> - </desc> - - <desc name="pname" category="EXT_texture_filter_anisotropic"> - <value name="GL_TEXTURE_MAX_ANISOTROPY_EXT"/> - <desc name="params" vector_size="1"/> - </desc> - - <desc name="pname" category="OES_draw_texture"> - <value name="GL_TEXTURE_CROP_RECT_OES"/> - <desc name="params" vector_size="4"/> - </desc> -</template> - -<template name="TexImage2D"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="level" type="GLint"/> - <param name="internalFormat" type="GLint"/> <!-- should be 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 *"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/> - </desc> - - <desc name="internalFormat" error="GL_INVALID_VALUE"> - <value name="GL_ALPHA"/> - <value name="GL_RGB"/> - <value name="GL_RGBA"/> - <value name="GL_LUMINANCE"/> - <value name="GL_LUMINANCE_ALPHA"/> - <value name="GL_DEPTH_COMPONENT" category="OES_depth_texture"/> - <value name="GL_DEPTH_STENCIL_OES" category="OES_packed_depth_stencil"/> - </desc> - - <desc name="border" error="GL_INVALID_VALUE"> - <value name="0"/> - </desc> - - <desc name="format"> - <value name="GL_ALPHA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_RGB"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_5_6_5"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_RGBA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_4_4_4_4"/> - <value name="GL_UNSIGNED_SHORT_5_5_5_1"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" category="EXT_texture_type_2_10_10_10_REV"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_LUMINANCE"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_LUMINANCE_ALPHA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format" category="OES_depth_texture"> - <value name="GL_DEPTH_COMPONENT"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_SHORT"/> - <value name="GL_UNSIGNED_INT"/> - </desc> - </desc> - - <desc name="format" category="OES_packed_depth_stencil"> - <value name="GL_DEPTH_STENCIL_OES"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_INT_24_8_OES"/> - </desc> - </desc> -</template> - -<template name="TexEnv"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="const GLtype *" size="dynamic"> - <param name="param" type="GLtype"/> - </vector> - </proto> - - <desc name="target" category="OES_point_sprite"> - <value name="GL_POINT_SPRITE_OES"/> - - <desc name="pname"> - <value name="GL_COORD_REPLACE_OES"/> - </desc> - </desc> - - <desc name="pname" category="OES_point_sprite"> - <value name="GL_COORD_REPLACE_OES"/> - - <desc name="param"> - <value name="GL_TRUE"/> - <value name="GL_FALSE"/> - </desc> - </desc> - - <desc name="target" category="EXT_texture_lod_bias"> - <value name="GL_TEXTURE_FILTER_CONTROL_EXT"/> - - <desc name="pname"> - <value name="GL_TEXTURE_LOD_BIAS_EXT"/> - </desc> - </desc> - - <desc name="pname" category="EXT_texture_lod_bias"> - <value name="GL_TEXTURE_LOD_BIAS_EXT"/> - <desc name="params" vector_size="1"/> - </desc> - - <desc name="target"> - <value name="GL_TEXTURE_ENV"/> - - <desc name="pname"> - <value name="GL_TEXTURE_ENV_MODE"/> - <value name="GL_COMBINE_RGB"/> - <value name="GL_COMBINE_ALPHA"/> - <value name="GL_RGB_SCALE"/> - <value name="GL_ALPHA_SCALE"/> - <value name="GL_SRC0_RGB"/> - <value name="GL_SRC1_RGB"/> - <value name="GL_SRC2_RGB"/> - <value name="GL_SRC0_ALPHA"/> - <value name="GL_SRC1_ALPHA"/> - <value name="GL_SRC2_ALPHA"/> - <value name="GL_OPERAND0_RGB"/> - <value name="GL_OPERAND1_RGB"/> - <value name="GL_OPERAND2_RGB"/> - <value name="GL_OPERAND0_ALPHA"/> - <value name="GL_OPERAND1_ALPHA"/> - <value name="GL_OPERAND2_ALPHA"/> - <value name="GL_TEXTURE_ENV_COLOR"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_TEXTURE_ENV_MODE"/> - - <desc name="param"> - <value name="GL_REPLACE"/> - <value name="GL_MODULATE"/> - <value name="GL_DECAL"/> - <value name="GL_BLEND"/> - <value name="GL_ADD"/> - <value name="GL_COMBINE"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_COMBINE_RGB"/> - - <desc name="param"> - <value name="GL_REPLACE"/> - <value name="GL_MODULATE"/> - <value name="GL_ADD"/> - <value name="GL_ADD_SIGNED"/> - <value name="GL_INTERPOLATE"/> - <value name="GL_SUBTRACT"/> - <value name="GL_DOT3_RGB"/> - <value name="GL_DOT3_RGBA"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_COMBINE_ALPHA"/> - - <desc name="param"> - <value name="GL_REPLACE"/> - <value name="GL_MODULATE"/> - <value name="GL_ADD"/> - <value name="GL_ADD_SIGNED"/> - <value name="GL_INTERPOLATE"/> - <value name="GL_SUBTRACT"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_RGB_SCALE"/> - <value name="GL_ALPHA_SCALE"/> - - <desc name="param" convert="true" error="GL_INVALID_VALUE"> - <value name="1.0"/> - <value name="2.0"/> - <value name="4.0"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_SRC0_RGB"/> - <value name="GL_SRC1_RGB"/> - <value name="GL_SRC2_RGB"/> - <value name="GL_SRC0_ALPHA"/> - <value name="GL_SRC1_ALPHA"/> - <value name="GL_SRC2_ALPHA"/> - - <desc name="param"> - <value name="GL_TEXTURE"/> - <value name="GL_CONSTANT"/> - <value name="GL_PRIMARY_COLOR"/> - <value name="GL_PREVIOUS"/> - - <range base="GL_TEXTURE" from="0" to="31" category="OES_texture_env_crossbar"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_OPERAND0_RGB"/> - <value name="GL_OPERAND1_RGB"/> - <value name="GL_OPERAND2_RGB"/> - - <desc name="param"> - <value name="GL_SRC_COLOR"/> - <value name="GL_ONE_MINUS_SRC_COLOR"/> - <value name="GL_SRC_ALPHA"/> - <value name="GL_ONE_MINUS_SRC_ALPHA"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_OPERAND0_ALPHA"/> - <value name="GL_OPERAND1_ALPHA"/> - <value name="GL_OPERAND2_ALPHA"/> - - <desc name="param"> - <value name="GL_SRC_ALPHA"/> - <value name="GL_ONE_MINUS_SRC_ALPHA"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_TEXTURE_ENV_COLOR"/> - - <desc name="params" vector_size="4"/> - </desc> -</template> - -<template name="TexGen"> - <proto> - <return type="void"/> - <param name="coord" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="const GLtype *" size="dynamic"> - <param name="param" type="GLtype"/> - </vector> - </proto> - - <desc name="coord" category="OES_texture_cube_map"> - <value name="GL_TEXTURE_GEN_STR_OES"/> - </desc> - - <desc name="pname" category="OES_texture_cube_map"> - <value name="GL_TEXTURE_GEN_MODE_OES"/> - - <desc name="param"> - <value name="GL_NORMAL_MAP_OES"/> - <value name="GL_REFLECTION_MAP_OES"/> - </desc> - </desc> -</template> - -<template name="Clear"> - <proto> - <return type="void"/> - <param name="mask" type="GLbitfield"/> - </proto> - - <desc name="mask" error="GL_INVALID_VALUE"> - <value name="0"/> - <value name="(GL_COLOR_BUFFER_BIT)"/> - <value name="(GL_DEPTH_BUFFER_BIT)"/> - <value name="(GL_STENCIL_BUFFER_BIT)"/> - <value name="(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)"/> - <value name="(GL_COLOR_BUFFER_BIT|GL_STENCIL_BUFFER_BIT)"/> - <value name="(GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT)"/> - <value name="(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT)"/> - </desc> -</template> - -<template name="ClearColor"> - <proto> - <return type="void"/> - <param name="red" type="GLtype"/> - <param name="green" type="GLtype"/> - <param name="blue" type="GLtype"/> - <param name="alpha" type="GLtype"/> - </proto> -</template> - -<template name="ClearStencil"> - <proto> - <return type="void"/> - <param name="s" type="GLint"/> - </proto> -</template> - -<template name="ClearDepth"> - <proto> - <return type="void"/> - <param name="depth" type="GLtype"/> - </proto> -</template> - -<template name="StencilMask"> - <proto> - <return type="void"/> - <param name="mask" type="GLuint"/> - </proto> -</template> - -<template name="StencilMaskSeparate"> - <proto> - <return type="void"/> - <param name="face" type="GLenum"/> - <param name="mask" type="GLuint"/> - </proto> - - <desc name="face"> - <value name="GL_FRONT"/> - <value name="GL_BACK"/> - <value name="GL_FRONT_AND_BACK"/> - </desc> -</template> - -<template name="ColorMask"> - <proto> - <return type="void"/> - <param name="red" type="GLboolean"/> - <param name="green" type="GLboolean"/> - <param name="blue" type="GLboolean"/> - <param name="alpha" type="GLboolean"/> - </proto> -</template> - -<template name="DepthMask"> - <proto> - <return type="void"/> - <param name="flag" type="GLboolean"/> - </proto> -</template> - -<template name="Disable"> - <proto> - <return type="void"/> - <param name="cap" type="GLenum"/> - </proto> - - <desc name="cap" category="GLES1.1"> - <value name="GL_NORMALIZE"/> - <value name="GL_RESCALE_NORMAL"/> - - <range base="GL_CLIP_PLANE" from="0" to="5"/> - - <value name="GL_FOG"/> - <value name="GL_LIGHTING"/> - <value name="GL_COLOR_MATERIAL"/> - - <range base="GL_LIGHT" from="0" to="7"/> - - <value name="GL_POINT_SMOOTH"/> - <value name="GL_LINE_SMOOTH"/> - <value name="GL_CULL_FACE"/> - <value name="GL_POLYGON_OFFSET_FILL"/> - <value name="GL_MULTISAMPLE"/> - <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/> - <value name="GL_SAMPLE_ALPHA_TO_ONE"/> - <value name="GL_SAMPLE_COVERAGE"/> - <value name="GL_TEXTURE_2D"/> - <value name="GL_SCISSOR_TEST"/> - <value name="GL_ALPHA_TEST"/> - <value name="GL_STENCIL_TEST"/> - <value name="GL_DEPTH_TEST"/> - <value name="GL_BLEND"/> - <value name="GL_DITHER"/> - <value name="GL_COLOR_LOGIC_OP"/> - - <value name="GL_POINT_SPRITE_OES" category="OES_point_sprite"/> - <value name="GL_MATRIX_PALETTE_OES" category="OES_matrix_palette"/> - <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_GEN_STR_OES" category="OES_texture_cube_map"/> - </desc> - - <desc name="cap" category="GLES2.0"> - <value name="GL_CULL_FACE"/> - <value name="GL_SCISSOR_TEST"/> - <value name="GL_POLYGON_OFFSET_FILL"/> - <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/> - <value name="GL_SAMPLE_COVERAGE"/> - <value name="GL_STENCIL_TEST"/> - <value name="GL_DEPTH_TEST"/> - <value name="GL_DITHER"/> - <value name="GL_BLEND"/> - </desc> -</template> - -<!-- it is exactly the same as Disable --> -<template name="Enable"> - <proto> - <return type="void"/> - <param name="cap" type="GLenum"/> - </proto> - - <desc name="cap" category="GLES1.1"> - <value name="GL_NORMALIZE"/> - <value name="GL_RESCALE_NORMAL"/> - - <range base="GL_CLIP_PLANE" from="0" to="5"/> - - <value name="GL_FOG"/> - <value name="GL_LIGHTING"/> - <value name="GL_COLOR_MATERIAL"/> - - <range base="GL_LIGHT" from="0" to="7"/> - - <value name="GL_POINT_SMOOTH"/> - <value name="GL_LINE_SMOOTH"/> - <value name="GL_CULL_FACE"/> - <value name="GL_POLYGON_OFFSET_FILL"/> - <value name="GL_MULTISAMPLE"/> - <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/> - <value name="GL_SAMPLE_ALPHA_TO_ONE"/> - <value name="GL_SAMPLE_COVERAGE"/> - <value name="GL_TEXTURE_2D"/> - <value name="GL_SCISSOR_TEST"/> - <value name="GL_ALPHA_TEST"/> - <value name="GL_STENCIL_TEST"/> - <value name="GL_DEPTH_TEST"/> - <value name="GL_BLEND"/> - <value name="GL_DITHER"/> - <value name="GL_COLOR_LOGIC_OP"/> - - <value name="GL_POINT_SPRITE_OES" category="OES_point_sprite"/> - <value name="GL_MATRIX_PALETTE_OES" category="OES_matrix_palette"/> - <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_GEN_STR_OES" category="OES_texture_cube_map"/> - </desc> - - <desc name="cap" category="GLES2.0"> - <value name="GL_CULL_FACE"/> - <value name="GL_SCISSOR_TEST"/> - <value name="GL_POLYGON_OFFSET_FILL"/> - <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/> - <value name="GL_SAMPLE_COVERAGE"/> - <value name="GL_STENCIL_TEST"/> - <value name="GL_DEPTH_TEST"/> - <value name="GL_DITHER"/> - <value name="GL_BLEND"/> - </desc> -</template> - -<template name="Finish"> - <proto> - <return type="void"/> - </proto> -</template> - -<template name="Flush"> - <proto> - <return type="void"/> - </proto> -</template> - -<template name="AlphaFunc"> - <proto> - <return type="void"/> - <param name="func" type="GLenum"/> - <param name="ref" type="GLtype"/> - </proto> - <desc name="func"> - <value name="GL_NEVER"/> - <value name="GL_LESS"/> - <value name="GL_EQUAL"/> - <value name="GL_LEQUAL"/> - <value name="GL_GREATER"/> - <value name="GL_NOTEQUAL"/> - <value name="GL_GEQUAL"/> - <value name="GL_ALWAYS"/> - </desc> -</template> - -<template name="BlendFunc"> - <proto> - <return type="void"/> - <param name="sfactor" type="GLenum"/> - <param name="dfactor" type="GLenum"/> - </proto> - - <desc name="sfactor"> - <value name="GL_ZERO"/> - <value name="GL_ONE"/> - <value name="GL_SRC_COLOR"/> - <value name="GL_ONE_MINUS_SRC_COLOR"/> - <value name="GL_SRC_ALPHA"/> - <value name="GL_ONE_MINUS_SRC_ALPHA"/> - <value name="GL_DST_ALPHA"/> - <value name="GL_ONE_MINUS_DST_ALPHA"/> - <value name="GL_DST_COLOR"/> - <value name="GL_ONE_MINUS_DST_COLOR"/> - <value name="GL_SRC_ALPHA_SATURATE"/> - - <value name="GL_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/> - </desc> - - <desc name="dfactor"> - <value name="GL_ZERO"/> - <value name="GL_ONE"/> - <value name="GL_SRC_COLOR"/> - <value name="GL_ONE_MINUS_SRC_COLOR"/> - <value name="GL_SRC_ALPHA"/> - <value name="GL_ONE_MINUS_SRC_ALPHA"/> - <value name="GL_DST_ALPHA"/> - <value name="GL_ONE_MINUS_DST_ALPHA"/> - <value name="GL_DST_COLOR"/> - <value name="GL_ONE_MINUS_DST_COLOR"/> - - <value name="GL_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/> - </desc> -</template> - -<template name="LogicOp"> - <proto> - <return type="void"/> - <param name="opcode" type="GLenum"/> - </proto> - - <desc name="opcode"> - <value name="GL_CLEAR"/> - <value name="GL_SET"/> - <value name="GL_COPY"/> - <value name="GL_COPY_INVERTED"/> - <value name="GL_NOOP"/> - <value name="GL_INVERT"/> - <value name="GL_AND"/> - <value name="GL_NAND"/> - <value name="GL_OR"/> - <value name="GL_NOR"/> - <value name="GL_XOR"/> - <value name="GL_EQUIV"/> - <value name="GL_AND_REVERSE"/> - <value name="GL_AND_INVERTED"/> - <value name="GL_OR_REVERSE"/> - <value name="GL_OR_INVERTED"/> - </desc> -</template> - -<template name="StencilFunc"> - <proto> - <return type="void"/> - <param name="func" type="GLenum"/> - <param name="ref" type="GLint"/> - <param name="mask" type="GLuint"/> - </proto> - - <desc name="func"> - <value name="GL_NEVER"/> - <value name="GL_LESS"/> - <value name="GL_LEQUAL"/> - <value name="GL_GREATER"/> - <value name="GL_GEQUAL"/> - <value name="GL_EQUAL"/> - <value name="GL_NOTEQUAL"/> - <value name="GL_ALWAYS"/> - </desc> -</template> - -<template name="StencilFuncSeparate"> - <proto> - <return type="void"/> - <param name="face" type="GLenum"/> - <param name="func" type="GLenum"/> - <param name="ref" type="GLint"/> - <param name="mask" type="GLuint"/> - </proto> - - <desc name="face"> - <value name="GL_FRONT"/> - <value name="GL_BACK"/> - <value name="GL_FRONT_AND_BACK"/> - </desc> - - <desc name="func"> - <value name="GL_NEVER"/> - <value name="GL_LESS"/> - <value name="GL_LEQUAL"/> - <value name="GL_GREATER"/> - <value name="GL_GEQUAL"/> - <value name="GL_EQUAL"/> - <value name="GL_NOTEQUAL"/> - <value name="GL_ALWAYS"/> - </desc> -</template> - -<template name="StencilOp"> - <proto> - <return type="void"/> - <param name="fail" type="GLenum"/> - <param name="zfail" type="GLenum"/> - <param name="zpass" type="GLenum"/> - </proto> - - <desc name="fail"> - <value name="GL_KEEP"/> - <value name="GL_ZERO"/> - <value name="GL_REPLACE"/> - <value name="GL_INCR"/> - <value name="GL_DECR"/> - <value name="GL_INVERT"/> - <value name="GL_INCR_WRAP" category="GLES2.0"/> - <value name="GL_DECR_WRAP" category="GLES2.0"/> - <value name="GL_INCR_WRAP_OES" category="OES_stencil_wrap"/> - <value name="GL_DECR_WRAP_OES" category="OES_stencil_wrap"/> - </desc> - - <desc name="zfail"> - <value name="GL_KEEP"/> - <value name="GL_ZERO"/> - <value name="GL_REPLACE"/> - <value name="GL_INCR"/> - <value name="GL_DECR"/> - <value name="GL_INVERT"/> - <value name="GL_INCR_WRAP" category="GLES2.0"/> - <value name="GL_DECR_WRAP" category="GLES2.0"/> - <value name="GL_INCR_WRAP_OES" category="OES_stencil_wrap"/> - <value name="GL_DECR_WRAP_OES" category="OES_stencil_wrap"/> - </desc> - - <desc name="zpass"> - <value name="GL_KEEP"/> - <value name="GL_ZERO"/> - <value name="GL_REPLACE"/> - <value name="GL_INCR"/> - <value name="GL_DECR"/> - <value name="GL_INVERT"/> - <value name="GL_INCR_WRAP" category="GLES2.0"/> - <value name="GL_DECR_WRAP" category="GLES2.0"/> - <value name="GL_INCR_WRAP_OES" category="OES_stencil_wrap"/> - <value name="GL_DECR_WRAP_OES" category="OES_stencil_wrap"/> - </desc> -</template> - -<template name="StencilOpSeparate"> - <proto> - <return type="void"/> - <param name="face" type="GLenum"/> - <param name="fail" type="GLenum"/> - <param name="zfail" type="GLenum"/> - <param name="zpass" type="GLenum"/> - </proto> - - <desc name="face"> - <value name="GL_FRONT"/> - <value name="GL_BACK"/> - <value name="GL_FRONT_AND_BACK"/> - </desc> - - <desc name="fail"> - <value name="GL_KEEP"/> - <value name="GL_ZERO"/> - <value name="GL_REPLACE"/> - <value name="GL_INCR"/> - <value name="GL_DECR"/> - <value name="GL_INVERT"/> - <value name="GL_INCR_WRAP"/> - <value name="GL_DECR_WRAP"/> - </desc> - - <desc name="zfail"> - <value name="GL_KEEP"/> - <value name="GL_ZERO"/> - <value name="GL_REPLACE"/> - <value name="GL_INCR"/> - <value name="GL_DECR"/> - <value name="GL_INVERT"/> - <value name="GL_INCR_WRAP"/> - <value name="GL_DECR_WRAP"/> - </desc> - - <desc name="zpass"> - <value name="GL_KEEP"/> - <value name="GL_ZERO"/> - <value name="GL_REPLACE"/> - <value name="GL_INCR"/> - <value name="GL_DECR"/> - <value name="GL_INVERT"/> - <value name="GL_INCR_WRAP"/> - <value name="GL_DECR_WRAP"/> - </desc> -</template> - -<template name="DepthFunc"> - <proto> - <return type="void"/> - <param name="func" type="GLenum"/> - </proto> - - <desc name="func"> - <value name="GL_NEVER"/> - <value name="GL_LESS"/> - <value name="GL_EQUAL"/> - <value name="GL_LEQUAL"/> - <value name="GL_GREATER"/> - <value name="GL_NOTEQUAL"/> - <value name="GL_GEQUAL"/> - <value name="GL_ALWAYS"/> - </desc> -</template> - -<template name="PixelStore"> - <proto> - <return type="void"/> - <param name="pname" type="GLenum"/> - <param name="param" type="GLtype"/> - </proto> - - <desc name="pname"> - <value name="GL_PACK_ALIGNMENT"/> - <value name="GL_UNPACK_ALIGNMENT"/> - </desc> - - <desc name="param" error="GL_INVALID_VALUE"> - <value name="1"/> - <value name="2"/> - <value name="4"/> - <value name="8"/> - </desc> -</template> - -<template name="ReadPixels" direction="get"> - <proto> - <return type="void"/> - <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 *"/> - </proto> - - <!-- 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.--> - <desc name="format"> - <value name="GL_ALPHA"/> - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_RGB"/> - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_5_6_5"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_RGBA"/> - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_4_4_4_4"/> - <value name="GL_UNSIGNED_SHORT_5_5_5_1"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_LUMINANCE"/> - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_LUMINANCE_ALPHA"/> - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - </desc> - </desc> - - <desc name="format" category="EXT_read_format_bgra"> - <value name="GL_BGRA_EXT"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT"/> - <value name="GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT"/> - </desc> - </desc> -</template> - -<template name="GetClipPlane" direction="get"> - <proto> - <return type="void"/> - <param name="plane" type="GLenum"/> - <vector name="equation" type="GLtype *" size="4"/> - </proto> - - <desc name="plane"> - <range base="GL_CLIP_PLANE" from="0" to="5"/> - </desc> -</template> - -<template name="GetError" direction="get"> - <proto> - <return type="GLenum"/> - </proto> -</template> - -<!-- template for GetFloatv, GetIntegerv, GetBoolean, and GetFixedv --> -<template name="GetState" direction="get"> - <proto> - <return type="void"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - <!-- param checking is done in mesa --> -</template> - -<template name="GetLight" direction="get"> - <proto> - <return type="void"/> - <param name="light" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - - <desc name="light"> - <range base="GL_LIGHT" from="0" to="7"/> - </desc> - - <desc name="pname"> - <value name="GL_AMBIENT"/> - <value name="GL_DIFFUSE"/> - <value name="GL_SPECULAR"/> - <value name="GL_POSITION"/> - - <desc name="params" vector_size="4"/> - </desc> - - <desc name="pname"> - <value name="GL_SPOT_DIRECTION"/> - - <desc name="params" vector_size="3"/> - </desc> - - <desc name="pname"> - <value name="GL_SPOT_EXPONENT"/> - <value name="GL_SPOT_CUTOFF"/> - <value name="GL_CONSTANT_ATTENUATION"/> - <value name="GL_LINEAR_ATTENUATION"/> - <value name="GL_QUADRATIC_ATTENUATION"/> - - <desc name="params" vector_size="1"/> - </desc> -</template> - -<template name="GetMaterial" direction="get"> - <proto> - <return type="void"/> - <param name="face" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"> - <param name="param" type="GLtype"/> - </vector> - </proto> - - <desc name="face"> - <value name="GL_FRONT"/> - <value name="GL_BACK"/> - </desc> - - <desc name="pname"> - <value name="GL_SHININESS"/> - <desc name="params" vector_size="1"/> - </desc> - - <desc name="pname"> - <value name="GL_AMBIENT"/> - <value name="GL_DIFFUSE"/> - <value name="GL_AMBIENT_AND_DIFFUSE"/> - <value name="GL_SPECULAR"/> - <value name="GL_EMISSION"/> - - <desc name="params" vector_size="4"/> - </desc> -</template> - -<template name="GetString" direction="get"> - <proto> - <return type="const GLubyte *"/> - <param name="name" type="GLenum"/> - </proto> - - <desc name="name"> - <value name="GL_VENDOR"/> - <value name="GL_RENDERER"/> - <value name="GL_VERSION"/> - <value name="GL_EXTENSIONS"/> - <value name="GL_SHADING_LANGUAGE_VERSION" category="GLES2.0"/> - </desc> -</template> - -<template name="GetTexEnv" direction="get"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - - <desc name="target" category="OES_point_sprite"> - <value name="GL_POINT_SPRITE_OES"/> - <desc name="pname"> - <value name="GL_COORD_REPLACE_OES"/> - </desc> - </desc> - - <desc name="pname" category="OES_point_sprite"> - <value name="GL_COORD_REPLACE_OES"/> - <desc name="params" vector_size="1" convert="false"/> - </desc> - - <desc name="target" category="EXT_texture_lod_bias"> - <value name="GL_TEXTURE_FILTER_CONTROL_EXT"/> - - <desc name="pname"> - <value name="GL_TEXTURE_LOD_BIAS_EXT"/> - </desc> - </desc> - - <desc name="pname" category="EXT_texture_lod_bias"> - <value name="GL_TEXTURE_LOD_BIAS_EXT"/> - <desc name="params" vector_size="1"/> - </desc> - - <desc name="target"> - <value name="GL_TEXTURE_ENV"/> - - <desc name="pname"> - <value name="GL_TEXTURE_ENV_COLOR"/> - <value name="GL_RGB_SCALE"/> - <value name="GL_ALPHA_SCALE"/> - <value name="GL_TEXTURE_ENV_MODE"/> - <value name="GL_COMBINE_RGB"/> - <value name="GL_COMBINE_ALPHA"/> - <value name="GL_SRC0_RGB"/> - <value name="GL_SRC1_RGB"/> - <value name="GL_SRC2_RGB"/> - <value name="GL_SRC0_ALPHA"/> - <value name="GL_SRC1_ALPHA"/> - <value name="GL_SRC2_ALPHA"/> - <value name="GL_OPERAND0_RGB"/> - <value name="GL_OPERAND1_RGB"/> - <value name="GL_OPERAND2_RGB"/> - <value name="GL_OPERAND0_ALPHA"/> - <value name="GL_OPERAND1_ALPHA"/> - <value name="GL_OPERAND2_ALPHA"/> - </desc> - </desc> - - <desc name="pname"> - <value name="GL_TEXTURE_ENV_COLOR"/> - <desc name="params" vector_size="4"/> - </desc> - - <desc name="pname"> - <value name="GL_RGB_SCALE"/> - <value name="GL_ALPHA_SCALE"/> - - <desc name="params" vector_size="1"/> - </desc> - - <desc name="pname"> - <value name="GL_TEXTURE_ENV_MODE"/> - <value name="GL_COMBINE_RGB"/> - <value name="GL_COMBINE_ALPHA"/> - <value name="GL_SRC0_RGB"/> - <value name="GL_SRC1_RGB"/> - <value name="GL_SRC2_RGB"/> - <value name="GL_SRC0_ALPHA"/> - <value name="GL_SRC1_ALPHA"/> - <value name="GL_SRC2_ALPHA"/> - <value name="GL_OPERAND0_RGB"/> - <value name="GL_OPERAND1_RGB"/> - <value name="GL_OPERAND2_RGB"/> - <value name="GL_OPERAND0_ALPHA"/> - <value name="GL_OPERAND1_ALPHA"/> - <value name="GL_OPERAND2_ALPHA"/> - - <desc name="params" vector_size="1" convert="false"/> - </desc> -</template> - -<template name="GetTexGen" direction="get"> - <proto> - <return type="void"/> - <param name="coord" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - - <desc name="coord"> - <value name="GL_TEXTURE_GEN_STR_OES"/> - </desc> - <desc name="pname"> - <value name="GL_TEXTURE_GEN_MODE_OES"/> - <desc name="params" vector_size="1" convert="false"/> - </desc> -</template> - -<template name="GetTexParameter" direction="get"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/> - </desc> - - <desc name="pname"> - <value name="GL_TEXTURE_WRAP_S"/> - <value name="GL_TEXTURE_WRAP_T"/> - <value name="GL_TEXTURE_WRAP_R_OES" category="OES_texture_3D"/> - <value name="GL_TEXTURE_MIN_FILTER"/> - <value name="GL_TEXTURE_MAG_FILTER"/> - <value name="GL_GENERATE_MIPMAP" category="GLES1.1"/> - - <desc name="params" vector_size="1" convert="false"/> - </desc> - - <desc name="pname" category="OES_draw_texture"> - <value name="GL_TEXTURE_CROP_RECT_OES"/> - <desc name="params" vector_size="4"/> - </desc> -</template> - -<template name="IsEnabled" direction="get"> - <proto> - <return type="GLboolean"/> - <param name="cap" type="GLenum"/> - </proto> - - <desc name="cap" category="GLES1.1"> - <value name="GL_NORMALIZE"/> - <value name="GL_RESCALE_NORMAL"/> - - <range base="GL_CLIP_PLANE" from="0" to="5"/> - - <value name="GL_FOG"/> - <value name="GL_LIGHTING"/> - <value name="GL_COLOR_MATERIAL"/> - - <range base="GL_LIGHT" from="0" to="7"/> - - <value name="GL_POINT_SMOOTH"/> - <value name="GL_LINE_SMOOTH"/> - <value name="GL_CULL_FACE"/> - <value name="GL_POLYGON_OFFSET_FILL"/> - <value name="GL_MULTISAMPLE"/> - <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/> - <value name="GL_SAMPLE_ALPHA_TO_ONE"/> - <value name="GL_SAMPLE_COVERAGE"/> - <value name="GL_TEXTURE_2D"/> - <value name="GL_SCISSOR_TEST"/> - <value name="GL_ALPHA_TEST"/> - <value name="GL_STENCIL_TEST"/> - <value name="GL_DEPTH_TEST"/> - <value name="GL_BLEND"/> - <value name="GL_DITHER"/> - <value name="GL_COLOR_LOGIC_OP"/> - - <value name="GL_POINT_SPRITE_OES" category="OES_point_sprite"/> - <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_GEN_STR_OES" category="OES_texture_cube_map"/> - - <value name="GL_VERTEX_ARRAY"/> - <value name="GL_NORMAL_ARRAY"/> - <value name="GL_COLOR_ARRAY"/> - <value name="GL_TEXTURE_COORD_ARRAY"/> - <value name="GL_MATRIX_INDEX_ARRAY_OES" category="OES_matrix_palette"/> - <value name="GL_WEIGHT_ARRAY_OES" category="OES_matrix_palette"/> - <value name="GL_POINT_SIZE_ARRAY_OES" category="OES_point_size_array"/> - </desc> - - <desc name="cap" category="GLES2.0"> - <value name="GL_CULL_FACE"/> - <value name="GL_SCISSOR_TEST"/> - <value name="GL_POLYGON_OFFSET_FILL"/> - <value name="GL_SAMPLE_ALPHA_TO_COVERAGE"/> - <value name="GL_SAMPLE_COVERAGE"/> - <value name="GL_STENCIL_TEST"/> - <value name="GL_DEPTH_TEST"/> - <value name="GL_DITHER"/> - <value name="GL_BLEND"/> - </desc> -</template> - -<template name="DepthRange"> - <proto> - <return type="void"/> - <param name="zNear" type="GLtype"/> - <param name="zFar" type="GLtype"/> - </proto> -</template> - -<template name="Frustum"> - <proto> - <return type="void"/> - <param name="left" type="GLtype"/> - <param name="right" type="GLtype"/> - <param name="bottom" type="GLtype"/> - <param name="top" type="GLtype"/> - <param name="zNear" type="GLtype"/> - <param name="zFar" type="GLtype"/> - </proto> -</template> - -<template name="LoadIdentity"> - <proto> - <return type="void"/> - </proto> -</template> - -<template name="LoadMatrix"> - <proto> - <return type="void"/> - <vector name="m" type="const GLtype *" size="16"/> - </proto> -</template> - -<template name="MatrixMode"> - <proto> - <return type="void"/> - <param name="mode" type="GLenum"/> - </proto> - - <desc name="mode"> - <value name="GL_MODELVIEW"/> - <value name="GL_PROJECTION"/> - <value name="GL_TEXTURE"/> - <value name="GL_MATRIX_PALETTE_OES" category="OES_matrix_palette"/> - </desc> -</template> - -<template name="MultMatrix"> - <proto> - <return type="void"/> - <vector name="m" type="const GLtype *" size="16"/> - </proto> -</template> - -<template name="Ortho"> - <proto> - <return type="void"/> - <param name="left" type="GLtype"/> - <param name="right" type="GLtype"/> - <param name="bottom" type="GLtype"/> - <param name="top" type="GLtype"/> - <param name="zNear" type="GLtype"/> - <param name="zFar" type="GLtype"/> - </proto> -</template> - -<template name="PopMatrix"> - <proto> - <return type="void"/> - </proto> -</template> - -<template name="PushMatrix"> - <proto> - <return type="void"/> - </proto> -</template> - -<template name="Rotate"> - <proto> - <return type="void"/> - <param name="angle" type="GLtype"/> - <param name="x" type="GLtype"/> - <param name="y" type="GLtype"/> - <param name="z" type="GLtype"/> - </proto> -</template> - -<template name="Scale"> - <proto> - <return type="void"/> - <param name="x" type="GLtype"/> - <param name="y" type="GLtype"/> - <param name="z" type="GLtype"/> - </proto> -</template> - -<template name="Translate"> - <proto> - <return type="void"/> - <param name="x" type="GLtype"/> - <param name="y" type="GLtype"/> - <param name="z" type="GLtype"/> - </proto> -</template> - -<template name="Viewport"> - <proto> - <return type="void"/> - <param name="x" type="GLint"/> - <param name="y" type="GLint"/> - <param name="width" type="GLsizei"/> - <param name="height" type="GLsizei"/> - </proto> -</template> - -<template name="ColorPointer"> - <proto> - <return type="void"/> - <param name="size" type="GLint"/> - <param name="type" type="GLenum"/> - <param name="stride" type="GLsizei"/> - <param name="pointer" type="const GLvoid *"/> - </proto> - - <desc name="size" error="GL_INVALID_VALUE"> - <value name="4"/> - </desc> - - <desc name="type"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT"/> - <value name="GL_FIXED"/> - <value name="GL_HALF_FLOAT_OES" category="OES_vertex_half_float"/> - </desc> -</template> - -<template name="DisableClientState"> - <proto> - <return type="void"/> - <param name="array" type="GLenum"/> - </proto> - - <desc name="array"> - <value name="GL_VERTEX_ARRAY"/> - <value name="GL_NORMAL_ARRAY"/> - <value name="GL_COLOR_ARRAY"/> - <value name="GL_TEXTURE_COORD_ARRAY"/> - <value name="GL_MATRIX_INDEX_ARRAY_OES" category="OES_matrix_palette"/> - <value name="GL_WEIGHT_ARRAY_OES" category="OES_matrix_palette"/> - <value name="GL_POINT_SIZE_ARRAY_OES" category="OES_point_size_array"/> - </desc> -</template> - -<template name="DrawArrays"> - <proto> - <return type="void"/> - <param name="mode" type="GLenum"/> - <param name="first" type="GLint"/> - <param name="count" type="GLsizei"/> - </proto> - - <desc name="mode"> - <value name="GL_POINTS"/> - <value name="GL_LINES"/> - <value name="GL_LINE_LOOP"/> - <value name="GL_LINE_STRIP"/> - <value name="GL_TRIANGLES"/> - <value name="GL_TRIANGLE_STRIP"/> - <value name="GL_TRIANGLE_FAN"/> - </desc> -</template> - -<template name="DrawElements"> - <proto> - <return type="void"/> - <param name="mode" type="GLenum"/> - <param name="count" type="GLsizei"/> - <param name="type" type="GLenum"/> - <param name="indices" type="const GLvoid *"/> - </proto> - - <desc name="mode"> - <value name="GL_POINTS"/> - <value name="GL_LINES"/> - <value name="GL_LINE_LOOP"/> - <value name="GL_LINE_STRIP"/> - <value name="GL_TRIANGLES"/> - <value name="GL_TRIANGLE_STRIP"/> - <value name="GL_TRIANGLE_FAN"/> - </desc> - - <desc name="type"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT"/> - <!-- GL_UNSIGNED_INT is not defined in GLES1.1 headers --> - <value name="(0x1405 /* GL_UNSIGNED_INT */)" category="OES_element_index_uint"/> - </desc> -</template> - -<template name="EnableClientState"> - <proto> - <return type="void"/> - <param name="array" type="GLenum"/> - </proto> - - <desc name="array"> - <value name="GL_VERTEX_ARRAY"/> - <value name="GL_NORMAL_ARRAY"/> - <value name="GL_COLOR_ARRAY"/> - <value name="GL_TEXTURE_COORD_ARRAY"/> - <value name="GL_MATRIX_INDEX_ARRAY_OES" category="OES_matrix_palette"/> - <value name="GL_WEIGHT_ARRAY_OES" category="OES_matrix_palette"/> - <value name="GL_POINT_SIZE_ARRAY_OES" category="OES_point_size_array"/> - </desc> -</template> - -<template name="GetPointer" direction="get"> - <proto> - <return type="void"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLvoid **" size="dynamic"/> - </proto> - - <desc name="pname"> - <value name="GL_VERTEX_ARRAY_POINTER"/> - <value name="GL_NORMAL_ARRAY_POINTER"/> - <value name="GL_COLOR_ARRAY_POINTER"/> - <value name="GL_TEXTURE_COORD_ARRAY_POINTER"/> - <value name="GL_MATRIX_INDEX_ARRAY_POINTER_OES" category="OES_matrix_palette"/> - <value name="GL_WEIGHT_ARRAY_POINTER_OES" category="OES_matrix_palette"/> - <value name="GL_POINT_SIZE_ARRAY_POINTER_OES" category="OES_point_size_array"/> - </desc> -</template> - -<template name="Normal"> - <proto> - <return type="void"/> - <vector name="v" type="const GLtype *" size="3"> - <param name="nx" type="GLtype"/> - <param name="ny" type="GLtype"/> - <param name="nz" type="GLtype"/> - </vector> - </proto> -</template> - -<template name="NormalPointer"> - <proto> - <return type="void"/> - <param name="type" type="GLenum"/> - <param name="stride" type="GLsizei"/> - <param name="pointer" type="const GLvoid *"/> - </proto> - - <desc name="type"> - <value name="GL_BYTE"/> - <value name="GL_SHORT"/> - <value name="GL_FLOAT"/> - <value name="GL_FIXED"/> - <value name="GL_HALF_FLOAT_OES" category="OES_vertex_half_float"/> - </desc> -</template> - -<template name="TexCoordPointer"> - <proto> - <return type="void"/> - <param name="size" type="GLint"/> - <param name="type" type="GLenum"/> - <param name="stride" type="GLsizei"/> - <param name="pointer" type="const GLvoid *"/> - </proto> - - <desc name="size" error="GL_INVALID_VALUE"> - <value name="2"/> - <value name="3"/> - <value name="4"/> - </desc> - - <desc name="type"> - <value name="GL_BYTE"/> - <value name="GL_SHORT"/> - <value name="GL_FLOAT"/> - <value name="GL_FIXED"/> - <value name="GL_HALF_FLOAT_OES" category="OES_vertex_half_float"/> - </desc> -</template> - -<template name="VertexPointer"> - <proto> - <return type="void"/> - <param name="size" type="GLint"/> - <param name="type" type="GLenum"/> - <param name="stride" type="GLsizei"/> - <param name="pointer" type="const GLvoid *"/> - </proto> - - <desc name="size" error="GL_INVALID_VALUE"> - <value name="2"/> - <value name="3"/> - <value name="4"/> - </desc> - - <desc name="type"> - <value name="GL_BYTE"/> - <value name="GL_SHORT"/> - <value name="GL_FLOAT"/> - <value name="GL_FIXED"/> - <value name="GL_HALF_FLOAT_OES" category="OES_vertex_half_float"/> - </desc> -</template> - -<template name="PolygonOffset"> - <proto> - <return type="void"/> - <param name="factor" type="GLtype"/> - <param name="units" type="GLtype"/> - </proto> -</template> - -<template name="CopyTexImage2D"> - <proto> - <return type="void"/> - <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"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/> - </desc> - - <desc name="internalFormat" error="GL_INVALID_VALUE"> - <value name="GL_ALPHA"/> - <value name="GL_RGB"/> - <value name="GL_RGBA"/> - <value name="GL_LUMINANCE"/> - <value name="GL_LUMINANCE_ALPHA"/> - </desc> - - <desc name="border" error="GL_INVALID_VALUE"> - <value name="0"/> - </desc> -</template> - -<template name="CopyTexSubImage2D"> - <proto> - <return type="void"/> - <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"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/> - </desc> -</template> - -<template name="TexSubImage2D"> - <proto> - <return type="void"/> - <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="pixels" type="const GLvoid *"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/> - </desc> - - <desc name="format"> - <value name="GL_ALPHA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_RGB"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_5_6_5"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_RGBA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_4_4_4_4"/> - <value name="GL_UNSIGNED_SHORT_5_5_5_1"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" category="EXT_texture_type_2_10_10_10_REV"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_LUMINANCE"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_LUMINANCE_ALPHA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format" category="OES_depth_texture"> - <value name="GL_DEPTH_COMPONENT"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_SHORT"/> - <value name="GL_UNSIGNED_INT"/> - </desc> - </desc> - - <desc name="format" category="OES_packed_depth_stencil"> - <value name="GL_DEPTH_STENCIL_OES"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_INT_24_8_OES"/> - </desc> - </desc> -</template> - -<template name="BindTexture"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="texture" type="GLuint"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/> - </desc> -</template> - -<template name="DeleteTextures"> - <proto> - <return type="void"/> - <param name="n" type="GLsizei"/> - <param name="textures" type="const GLuint *"/> - </proto> -</template> - -<template name="GenTextures" direction="get"> - <proto> - <return type="void"/> - <param name="n" type="GLsizei"/> - <param name="textures" type="GLuint *"/> - </proto> -</template> - -<template name="IsTexture" direction="get"> - <proto> - <return type="GLboolean"/> - <param name="texture" type="GLuint"/> - </proto> -</template> - -<template name="BlendColor"> - <proto> - <return type="void"/> - <param name="red" type="GLtype"/> - <param name="green" type="GLtype"/> - <param name="blue" type="GLtype"/> - <param name="alpha" type="GLtype"/> - </proto> -</template> - -<template name="BlendEquation"> - <proto> - <return type="void"/> - <param name="mode" type="GLenum"/> - </proto> - - <desc name="mode"> - <value name="GL_FUNC_ADD" category="GLES2.0"/> - <value name="GL_FUNC_SUBTRACT" category="GLES2.0"/> - <value name="GL_FUNC_REVERSE_SUBTRACT" category="GLES2.0"/> - <value name="GL_FUNC_ADD_OES" category="OES_blend_subtract"/> - <value name="GL_FUNC_SUBTRACT_OES" category="OES_blend_subtract"/> - <value name="GL_FUNC_REVERSE_SUBTRACT_OES" category="OES_blend_subtract"/> - - <value name="GL_MIN_EXT" category="EXT_blend_minmax"/> - <value name="GL_MAX_EXT" category="EXT_blend_minmax"/> - </desc> -</template> - -<template name="BlendEquationSeparate"> - <proto> - <return type="void"/> - <param name="modeRGB" type="GLenum"/> - <param name="modeAlpha" type="GLenum"/> - </proto> - - <desc name="modeRGB"> - <value name="GL_FUNC_ADD" category="GLES2.0"/> - <value name="GL_FUNC_SUBTRACT" category="GLES2.0"/> - <value name="GL_FUNC_REVERSE_SUBTRACT" category="GLES2.0"/> - <value name="GL_FUNC_ADD_OES" category="OES_blend_subtract"/> - <value name="GL_FUNC_SUBTRACT_OES" category="OES_blend_subtract"/> - <value name="GL_FUNC_REVERSE_SUBTRACT_OES" category="OES_blend_subtract"/> - - <value name="GL_MIN_EXT" category="EXT_blend_minmax"/> - <value name="GL_MAX_EXT" category="EXT_blend_minmax"/> - </desc> - - <desc name="modeAlpha"> - <value name="GL_FUNC_ADD" category="GLES2.0"/> - <value name="GL_FUNC_SUBTRACT" category="GLES2.0"/> - <value name="GL_FUNC_REVERSE_SUBTRACT" category="GLES2.0"/> - <value name="GL_FUNC_ADD_OES" category="OES_blend_subtract"/> - <value name="GL_FUNC_SUBTRACT_OES" category="OES_blend_subtract"/> - <value name="GL_FUNC_REVERSE_SUBTRACT_OES" category="OES_blend_subtract"/> - - <value name="GL_MIN_EXT" category="EXT_blend_minmax"/> - <value name="GL_MAX_EXT" category="EXT_blend_minmax"/> - </desc> -</template> - -<template name="TexImage3D"> - <proto> - <return type="void"/> - <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 *"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_3D_OES"/> - </desc> - - <desc name="internalFormat"> - <value name="GL_ALPHA"/> - <value name="GL_RGB"/> - <value name="GL_RGBA"/> - <value name="GL_LUMINANCE"/> - <value name="GL_LUMINANCE_ALPHA"/> - </desc> - - <desc name="format"> - <value name="GL_ALPHA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_RGB"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_5_6_5"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_RGBA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_4_4_4_4"/> - <value name="GL_UNSIGNED_SHORT_5_5_5_1"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" category="EXT_texture_type_2_10_10_10_REV"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_LUMINANCE"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_LUMINANCE_ALPHA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> -</template> - -<template name="TexSubImage3D"> - <proto> - <return type="void"/> - <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="pixels" type="const GLvoid *"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_3D_OES"/> - </desc> - - <desc name="format"> - <value name="GL_ALPHA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_RGB"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_5_6_5"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_RGBA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT_4_4_4_4"/> - <value name="GL_UNSIGNED_SHORT_5_5_5_1"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" category="EXT_texture_type_2_10_10_10_REV"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_LUMINANCE"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> - - <desc name="format"> - <value name="GL_LUMINANCE_ALPHA"/> - - <desc name="type" error="GL_INVALID_OPERATION"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_FLOAT" category="OES_texture_float"/> - <value name="GL_HALF_FLOAT_OES" category="OES_texture_half_float"/> - </desc> - </desc> -</template> - -<template name="CopyTexSubImage3D"> - <proto> - <return type="void"/> - <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"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_3D_OES"/> - </desc> -</template> - -<template name="MultiTexCoord"> - <proto> - <return type="void"/> - <param name="texture" type="GLenum"/> - <vector name="v" type="const GLtype *" size="dynamic"> - <param name="s" type="GLtype"/> - <param name="t" type="GLtype"/> - <param name="r" type="GLtype"/> - <param name="q" type="GLtype"/> - </vector> - </proto> - - <desc name="texture"> - <range base="GL_TEXTURE" from="0" to="31"/> - </desc> -</template> - -<template name="CompressedTexImage3D"> - <proto> - <return type="void"/> - <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"/> - <param name="data" type="const GLvoid *"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_3D_OES"/> - </desc> - - <desc name="internalFormat"> - <value name="GL_3DC_X_AMD" category="AMD_compressed_3DC_texture"/> - <value name="GL_3DC_XY_AMD" category="AMD_compressed_3DC_texture"/> - <value name="GL_ATC_RGB_AMD" category="AMD_compressed_ATC_texture"/> - <value name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD" category="AMD_compressed_ATC_texture"/> - <value name="GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD" category="AMD_compressed_ATC_texture"/> - </desc> -</template> - -<template name="CompressedTexSubImage3D"> - <proto> - <return type="void"/> - <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"/> - <param name="data" type="const GLvoid *"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_3D_OES"/> - </desc> -</template> - -<template name="ActiveTexture"> - <proto> - <return type="void"/> - <param name="texture" type="GLenum"/> - </proto> - - <desc name="texture"> - <range base="GL_TEXTURE" from="0" to="31"/> - </desc> -</template> - -<template name="ClientActiveTexture"> - <proto> - <return type="void"/> - <param name="texture" type="GLenum"/> - </proto> - - <desc name="texture"> - <range base="GL_TEXTURE" from="0" to="31"/> - </desc> -</template> - -<template name="SampleCoverage"> - <proto> - <return type="void"/> - <param name="value" type="GLtype"/> - <param name="invert" type="GLboolean"/> - </proto> -</template> - -<template name="CompressedTexImage2D"> - <proto> - <return type="void"/> - <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"/> - <param name="data" type="const GLvoid *"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/> - </desc> - - <desc name="internalFormat"> - <value name="GL_ETC1_RGB8_OES" category="OES_compressed_ETC1_RGB8_texture"/> - - <value name="GL_PALETTE4_RGB8_OES" category="OES_compressed_paletted_texture"/> - <value name="GL_PALETTE4_RGBA8_OES" category="OES_compressed_paletted_texture"/> - <value name="GL_PALETTE4_R5_G6_B5_OES" category="OES_compressed_paletted_texture"/> - <value name="GL_PALETTE4_RGBA4_OES" category="OES_compressed_paletted_texture"/> - <value name="GL_PALETTE4_RGB5_A1_OES" category="OES_compressed_paletted_texture"/> - <value name="GL_PALETTE8_RGB8_OES" category="OES_compressed_paletted_texture"/> - <value name="GL_PALETTE8_RGBA8_OES" category="OES_compressed_paletted_texture"/> - <value name="GL_PALETTE8_R5_G6_B5_OES" category="OES_compressed_paletted_texture"/> - <value name="GL_PALETTE8_RGBA4_OES" category="OES_compressed_paletted_texture"/> - <value name="GL_PALETTE8_RGB5_A1_OES" category="OES_compressed_paletted_texture"/> - - <value name="GL_3DC_X_AMD" category="AMD_compressed_3DC_texture"/> - <value name="GL_3DC_XY_AMD" category="AMD_compressed_3DC_texture"/> - - <value name="GL_ATC_RGB_AMD" category="AMD_compressed_ATC_texture"/> - <value name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD" category="AMD_compressed_ATC_texture"/> - <value name="GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD" category="AMD_compressed_ATC_texture"/> - - <value name="GL_COMPRESSED_RGB_S3TC_DXT1_EXT" category="EXT_texture_compression_dxt1"/> - <value name="GL_COMPRESSED_RGBA_S3TC_DXT1_EXT" category="EXT_texture_compression_dxt1"/> - </desc> - - <desc name="border" error="GL_INVALID_VALUE"> - <value name="0"/> - </desc> -</template> - -<template name="CompressedTexSubImage2D"> - <proto> - <return type="void"/> - <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"/> - <param name="data" type="const GLvoid *"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/> - </desc> - - <desc name="format"> - <value name="GL_COMPRESSED_RGB_S3TC_DXT1_EXT" category="EXT_texture_compression_dxt1"/> - <value name="GL_COMPRESSED_RGBA_S3TC_DXT1_EXT" category="EXT_texture_compression_dxt1"/> - </desc> -</template> - -<template name="BlendFuncSeparate"> - <proto> - <return type="void"/> - <param name="srcRGB" type="GLenum"/> - <param name="dstRGB" type="GLenum"/> - <param name="srcAlpha" type="GLenum"/> - <param name="dstAlpha" type="GLenum"/> - </proto> - - <desc name="srcRGB"> - <value name="GL_ZERO"/> - <value name="GL_ONE"/> - <value name="GL_SRC_COLOR"/> - <value name="GL_ONE_MINUS_SRC_COLOR"/> - <value name="GL_SRC_ALPHA"/> - <value name="GL_ONE_MINUS_SRC_ALPHA"/> - <value name="GL_DST_ALPHA"/> - <value name="GL_ONE_MINUS_DST_ALPHA"/> - <value name="GL_DST_COLOR"/> - <value name="GL_ONE_MINUS_DST_COLOR"/> - <value name="GL_SRC_ALPHA_SATURATE"/> - - <value name="GL_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/> - </desc> - - <desc name="dstRGB"> - <value name="GL_ZERO"/> - <value name="GL_ONE"/> - <value name="GL_SRC_COLOR"/> - <value name="GL_ONE_MINUS_SRC_COLOR"/> - <value name="GL_SRC_ALPHA"/> - <value name="GL_ONE_MINUS_SRC_ALPHA"/> - <value name="GL_DST_ALPHA"/> - <value name="GL_ONE_MINUS_DST_ALPHA"/> - <value name="GL_DST_COLOR"/> - <value name="GL_ONE_MINUS_DST_COLOR"/> - - <value name="GL_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/> - </desc> - - <desc name="srcAlpha"> - <value name="GL_ZERO"/> - <value name="GL_ONE"/> - <value name="GL_SRC_COLOR"/> - <value name="GL_ONE_MINUS_SRC_COLOR"/> - <value name="GL_SRC_ALPHA"/> - <value name="GL_ONE_MINUS_SRC_ALPHA"/> - <value name="GL_DST_ALPHA"/> - <value name="GL_ONE_MINUS_DST_ALPHA"/> - <value name="GL_DST_COLOR"/> - <value name="GL_ONE_MINUS_DST_COLOR"/> - <value name="GL_SRC_ALPHA_SATURATE"/> - - <value name="GL_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/> - </desc> - - <desc name="dstAlpha"> - <value name="GL_ZERO"/> - <value name="GL_ONE"/> - <value name="GL_SRC_COLOR"/> - <value name="GL_ONE_MINUS_SRC_COLOR"/> - <value name="GL_SRC_ALPHA"/> - <value name="GL_ONE_MINUS_SRC_ALPHA"/> - <value name="GL_DST_ALPHA"/> - <value name="GL_ONE_MINUS_DST_ALPHA"/> - <value name="GL_DST_COLOR"/> - <value name="GL_ONE_MINUS_DST_COLOR"/> - - <value name="GL_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/> - <value name="GL_CONSTANT_ALPHA" category="GLES2.0"/> - <value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/> - </desc> -</template> - -<template name="PointParameter"> - <proto> - <return type="void"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="const GLtype *" size="dynamic"> - <param name="param" type="GLtype"/> - </vector> - </proto> - - <desc name="pname"> - <value name="GL_POINT_SIZE_MIN"/> - <value name="GL_POINT_SIZE_MAX"/> - <value name="GL_POINT_FADE_THRESHOLD_SIZE"/> - - <desc name="params" vector_size="1"/> - </desc> - - <desc name="pname"> - <value name="GL_POINT_DISTANCE_ATTENUATION"/> - <desc name="params" vector_size="3"/> - </desc> -</template> - -<template name="VertexAttrib"> - <proto> - <return type="void"/> - <param name="index" type="GLuint"/> - <vector name="v" type="const GLtype *" size="dynamic"> - <param name="x" type="GLtype"/> - <param name="y" type="GLtype"/> - <param name="z" type="GLtype"/> - <param name="w" type="GLtype"/> - </vector> - </proto> -</template> - -<template name="VertexAttribPointer"> - <proto> - <return type="void"/> - <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 *"/> - </proto> - - <desc name="size" error="GL_INVALID_VALUE"> - <value name="1"/> - <value name="2"/> - <value name="3"/> - <value name="4"/> - </desc> - - <desc name="type" error="GL_INVALID_VALUE"> - <value name="GL_BYTE"/> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_SHORT"/> - <value name="GL_UNSIGNED_SHORT"/> - <value name="GL_FLOAT"/> - <value name="GL_FIXED"/> - <value name="GL_HALF_FLOAT_OES" category="OES_vertex_half_float"/> - <value name="GL_UNSIGNED_INT_10_10_10_2_OES" category="OES_vertex_type_10_10_10_2"/> - <value name="GL_INT_10_10_10_2_OES" category="OES_vertex_type_10_10_10_2"/> - </desc> - - <desc name="type" category="OES_vertex_type_10_10_10_2"> - <value name="GL_UNSIGNED_INT_10_10_10_2_OES"/> - <value name="GL_INT_10_10_10_2_OES"/> - - <desc name="size"> - <value name="3"/> - <value name="4"/> - </desc> - </desc> -</template> - -<template name="EnableVertexAttribArray"> - <proto> - <return type="void"/> - <param name="index" type="GLuint"/> - </proto> -</template> - -<template name="DisableVertexAttribArray"> - <proto> - <return type="void"/> - <param name="index" type="GLuint"/> - </proto> -</template> - -<template name="IsProgram" direction="get"> - <proto> - <return type="GLboolean"/> - <param name="program" type="GLuint"/> - </proto> -</template> - -<template name="GetProgram" direction="get"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - - <desc name="pname"> - <value name="GL_DELETE_STATUS"/> - <value name="GL_LINK_STATUS"/> - <value name="GL_VALIDATE_STATUS"/> - <value name="GL_INFO_LOG_LENGTH"/> - <value name="GL_ATTACHED_SHADERS"/> - <value name="GL_ACTIVE_ATTRIBUTES"/> - <value name="GL_ACTIVE_ATTRIBUTE_MAX_LENGTH"/> - <value name="GL_ACTIVE_UNIFORMS"/> - <value name="GL_ACTIVE_UNIFORM_MAX_LENGTH"/> - <value name="GL_PROGRAM_BINARY_LENGTH_OES" category="OES_get_program_binary"/> - - <desc name="params" convert="false"/> - </desc> -</template> - -<template name="GetVertexAttrib" direction="get"> - <proto> - <return type="void"/> - <param name="index" type="GLuint"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - - <desc name="pname"> - <value name="GL_VERTEX_ATTRIB_ARRAY_ENABLED"/> - <value name="GL_VERTEX_ATTRIB_ARRAY_SIZE"/> - <value name="GL_VERTEX_ATTRIB_ARRAY_STRIDE"/> - <value name="GL_VERTEX_ATTRIB_ARRAY_TYPE"/> - <value name="GL_VERTEX_ATTRIB_ARRAY_NORMALIZED"/> - <value name="GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"/> - - <desc name="params" vector_size="1" convert="false"/> - </desc> - - <desc name="pname"> - <value name="GL_CURRENT_VERTEX_ATTRIB"/> - <desc name="params" vector_size="16?" convert="false"/> - </desc> -</template> - -<template name="GetVertexAttribPointer" direction="get"> - <proto> - <return type="void"/> - <param name="index" type="GLuint"/> - <param name="pname" type="GLenum"/> - <vector name="pointer" type="GLvoid **" size="dynamic"/> - </proto> - - <desc name="pname"> - <value name="GL_VERTEX_ATTRIB_ARRAY_POINTER"/> - </desc> -</template> - -<template name="GetBufferPointer" direction="get"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLvoid **" size="dynamic"/> - </proto> - - <desc name="target"> - <value name="GL_ARRAY_BUFFER"/> - <value name="GL_ELEMENT_ARRAY_BUFFER"/> - </desc> - - <desc name="pname"> - <value name="GL_BUFFER_MAP_POINTER_OES"/> - </desc> -</template> - -<template name="MapBuffer" direction="get"> - <proto> - <return type="void *"/> - <param name="target" type="GLenum"/> - <param name="access" type="GLenum"/> - </proto> - - <desc name="target"> - <value name="GL_ARRAY_BUFFER"/> - <value name="GL_ELEMENT_ARRAY_BUFFER"/> - </desc> - - <desc name="access"> - <value name="GL_WRITE_ONLY_OES"/> - </desc> -</template> - -<template name="UnmapBuffer" direction="get"> - <proto> - <return type="GLboolean"/> - <param name="target" type="GLenum"/> - </proto> - - <desc name="target"> - <value name="GL_ARRAY_BUFFER"/> - <value name="GL_ELEMENT_ARRAY_BUFFER"/> - </desc> -</template> - -<template name="BindBuffer"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="buffer" type="GLuint"/> - </proto> - - <desc name="target"> - <value name="GL_ARRAY_BUFFER"/> - <value name="GL_ELEMENT_ARRAY_BUFFER"/> - </desc> -</template> - -<template name="BufferData"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="size" type="GLsizeiptr"/> - <param name="data" type="const GLvoid *"/> - <param name="usage" type="GLenum"/> - </proto> - - <desc name="target"> - <value name="GL_ARRAY_BUFFER"/> - <value name="GL_ELEMENT_ARRAY_BUFFER"/> - </desc> - - <desc name="usage"> - <value name="GL_STATIC_DRAW"/> - <value name="GL_DYNAMIC_DRAW"/> - <value name="GL_STREAM_DRAW" category="GLES2.0"/> - </desc> -</template> - -<template name="BufferSubData"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="offset" type="GLintptr"/> - <param name="size" type="GLsizeiptr"/> - <param name="data" type="const GLvoid *"/> - </proto> - - <desc name="target"> - <value name="GL_ARRAY_BUFFER"/> - <value name="GL_ELEMENT_ARRAY_BUFFER"/> - </desc> -</template> - -<template name="DeleteBuffers"> - <proto> - <return type="void"/> - <param name="n" type="GLsizei"/> - <param name="buffer" type="const GLuint *"/> - </proto> -</template> - -<template name="GenBuffers" direction="get"> - <proto> - <return type="void"/> - <param name="n" type="GLsizei"/> - <param name="buffer" type="GLuint *"/> - </proto> -</template> - -<template name="GetBufferParameter" direction="get"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - - <desc name="target"> - <value name="GL_ARRAY_BUFFER"/> - <value name="GL_ELEMENT_ARRAY_BUFFER"/> - </desc> - - <desc name="pname"> - <value name="GL_BUFFER_SIZE"/> - <value name="GL_BUFFER_USAGE"/> - <value name="GL_BUFFER_ACCESS_OES" category="OES_mapbuffer"/> - <value name="GL_BUFFER_MAPPED_OES" category="OES_mapbuffer"/> - </desc> -</template> - -<template name="IsBuffer" direction="get"> - <proto> - <return type="GLboolean"/> - <param name="buffer" type="GLuint"/> - </proto> -</template> - -<template name="CreateShader"> - <proto> - <return type="GLuint"/> - <param name="type" type="GLenum"/> - </proto> - - <desc name="type"> - <value name="GL_VERTEX_SHADER"/> - <value name="GL_FRAGMENT_SHADER"/> - </desc> -</template> - -<template name="ShaderSource"> - <proto> - <return type="void"/> - <param name="shader" type="GLuint"/> - <param name="count" type="GLsizei"/> - <param name="string" type="const GLchar **"/> - <param name="length" type="const int *"/> - </proto> -</template> - -<template name="CompileShader"> - <proto> - <return type="void"/> - <param name="shader" type="GLuint"/> - </proto> -</template> - -<template name="ReleaseShaderCompiler"> - <proto> - <return type="void"/> - </proto> -</template> - -<template name="DeleteShader"> - <proto> - <return type="void"/> - <param name="shader" type="GLuint"/> - </proto> -</template> - -<template name="ShaderBinary"> - <proto> - <return type="void"/> - <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"/> - </proto> -</template> - -<template name="CreateProgram"> - <proto> - <return type="GLuint"/> - </proto> -</template> - -<template name="AttachShader"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - <param name="shader" type="GLuint"/> - </proto> -</template> - -<template name="DetachShader"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - <param name="shader" type="GLuint"/> - </proto> -</template> - -<template name="LinkProgram"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - </proto> -</template> - -<template name="UseProgram"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - </proto> -</template> - -<template name="DeleteProgram"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - </proto> -</template> - -<template name="GetActiveAttrib" direction="get"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - <param name="index" type="GLuint"/> - <param name="bufSize" type="GLsizei"/> - <param name="length" type="GLsizei *"/> - <param name="size" type="GLint *"/> - <param name="type" type="GLenum *"/> - <param name="name" type="GLchar *"/> - </proto> -</template> - -<template name="GetAttribLocation" direction="get"> - <proto> - <return type="GLint"/> - <param name="program" type="GLuint"/> - <param name="name" type="const char *"/> - </proto> -</template> - -<template name="BindAttribLocation"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - <param name="index" type="GLuint"/> - <param name="name" type="const char *"/> - </proto> -</template> - -<template name="GetUniformLocation" direction="get"> - <proto> - <return type="GLint"/> - <param name="program" type="GLuint"/> - <param name="name" type="const char *"/> - </proto> -</template> - -<template name="GetActiveUniform" direction="get"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - <param name="index" type="GLuint"/> - <param name="bufSize" type="GLsizei"/> - <param name="length" type="GLsizei *"/> - <param name="size" type="GLint *"/> - <param name="type" type="GLenum *"/> - <param name="name" type="GLchar *"/> - </proto> -</template> - -<template name="Uniform"> - <proto> - <return type="void"/> - <param name="location" type="GLint"/> - <param name="count" type="GLsizei" hide_if_expanded="true"/> - <vector name="values" type="const GLtype *" size="dynamic"> - <param name="v0" type="GLtype"/> - <param name="v1" type="GLtype"/> - <param name="v2" type="GLtype"/> - <param name="v3" type="GLtype"/> - </vector> - </proto> -</template> - -<template name="UniformMatrix"> - <proto> - <return type="void"/> - <param name="location" type="GLint"/> - <param name="count" type="GLsizei"/> - <param name="transpose" type="GLboolean"/> - <vector name="value" type="const GLtype *" size="dynamic"/> - </proto> -</template> - -<template name="ValidateProgram"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - </proto> -</template> - -<template name="GenerateMipmap"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/> - </desc> -</template> - -<template name="BindFramebuffer"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="framebuffer" type="GLuint"/> - </proto> - - <desc name="target"> - <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_FRAMEBUFFER" category="GLES2.0"/> - </desc> -</template> - -<template name="DeleteFramebuffers"> - <proto> - <return type="void"/> - <param name="n" type="GLsizei"/> - <param name="framebuffers" type="const GLuint *"/> - </proto> -</template> - -<template name="GenFramebuffers"> - <proto> - <return type="void"/> - <param name="n" type="GLsizei"/> - <param name="ids" type="GLuint *"/> - </proto> -</template> - -<template name="BindRenderbuffer"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="renderbuffer" type="GLuint"/> - </proto> - - <desc name="target"> - <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_RENDERBUFFER" category="GLES2.0"/> - </desc> -</template> - -<template name="DeleteRenderbuffers"> - <proto> - <return type="void"/> - <param name="n" type="GLsizei"/> - <param name="renderbuffers" type="const GLuint *"/> - </proto> -</template> - -<template name="GenRenderbuffers"> - <proto> - <return type="void"/> - <param name="n" type="GLsizei"/> - <param name="renderbuffers" type="GLuint *"/> - </proto> -</template> - -<template name="RenderbufferStorage"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="internalFormat" type="GLenum"/> - <param name="width" type="GLsizei"/> - <param name="height" type="GLsizei"/> - </proto> - - <desc name="target"> - <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_RENDERBUFFER" category="GLES2.0"/> - </desc> - - <desc name="internalFormat"> - <value name="GL_DEPTH_COMPONENT16_OES" category="OES_framebuffer_object"/> - <value name="GL_RGBA4_OES" category="OES_framebuffer_object"/> - <value name="GL_RGB5_A1_OES" category="OES_framebuffer_object"/> - <value name="GL_RGB565_OES" category="OES_framebuffer_object"/> - <value name="GL_STENCIL_INDEX8_OES" category="OES_stencil8"/> - - <value name="GL_DEPTH_COMPONENT16" category="GLES2.0"/> - <value name="GL_RGBA4" category="GLES2.0"/> - <value name="GL_RGB5_A1" category="GLES2.0"/> - <value name="GL_RGB565" category="GLES2.0"/> - <value name="GL_STENCIL_INDEX8" category="GLES2.0"/> - - <value name="GL_DEPTH_COMPONENT24_OES" category="OES_depth24"/> - <value name="GL_DEPTH_COMPONENT32_OES" category="OES_depth32"/> - <value name="GL_RGB8_OES" category="OES_rgb8_rgba8"/> - <value name="GL_RGBA8_OES" category="OES_rgb8_rgba8"/> - <value name="GL_STENCIL_INDEX1_OES" category="OES_stencil1"/> - <value name="GL_STENCIL_INDEX4_OES" category="OES_stencil4"/> - <value name="GL_DEPTH24_STENCIL8_OES" category="OES_packed_depth_stencil"/> - </desc> -</template> - -<template name="FramebufferRenderbuffer"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="attachment" type="GLenum"/> - <param name="renderbuffertarget" type="GLenum"/> - <param name="renderbuffer" type="GLuint"/> - </proto> - - <desc name="target"> - <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_FRAMEBUFFER" category="GLES2.0"/> - </desc> - - <desc name="attachment"> - <value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/> - <value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/> - <value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/> - <value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/> - <value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/> - <value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/> - </desc> - - <desc name="renderbuffertarget"> - <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_RENDERBUFFER" category="GLES2.0"/> - </desc> -</template> - -<template name="FramebufferTexture2D"> - <proto> - <return type="void"/> - <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"/> - </proto> - - <desc name="target"> - <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_FRAMEBUFFER" category="GLES2.0"/> - </desc> - - <desc name="attachment"> - <value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/> - <value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/> - <value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/> - <value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/> - <value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/> - <value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/> - </desc> - - <desc name="textarget" error="GL_INVALID_OPERATION"> - <value name="GL_TEXTURE_2D"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" category="GLES2.0"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" category="OES_texture_cube_map"/> - <value name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" category="OES_texture_cube_map"/> - </desc> - <!-- 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. --> -</template> - -<template name="FramebufferTexture3D"> - <proto> - <return type="void"/> - <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"/> - </proto> - - <desc name="target"> - <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_FRAMEBUFFER" category="GLES2.0"/> - </desc> - - <desc name="attachment"> - <value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/> - <value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/> - <value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/> - <value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/> - <value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/> - <value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/> - </desc> - - <desc name="textarget" error="GL_INVALID_OPERATION"> - <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/> - </desc> -</template> - -<template name="CheckFramebufferStatus" direction="get"> - <proto> - <return type="GLenum"/> - <param name="target" type="GLenum"/> - </proto> - - <desc name="target"> - <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_FRAMEBUFFER" category="GLES2.0"/> - </desc> -</template> - -<template name="GetFramebufferAttachmentParameter" direction="get"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="attachment" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - - <desc name="target"> - <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_FRAMEBUFFER" category="GLES2.0"/> - </desc> - - <desc name="pname"> - <value name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES" category="OES_framebuffer_object"/> - <value name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES" category="OES_framebuffer_object"/> - <value name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" category="OES_framebuffer_object"/> - <value name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" category="OES_framebuffer_object"/> - - <value name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE" category="GLES2.0"/> - <value name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME" category="GLES2.0"/> - <value name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL" category="GLES2.0"/> - <value name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE" category="GLES2.0"/> - <value name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" category="OES_texture_3D"/> - - <desc name="params" vector_size="1" convert="false"/> - </desc> -</template> - -<template name="GetRenderbufferParameter" direction="get"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - - <desc name="target"> - <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_RENDERBUFFER" category="GLES2.0"/> - </desc> - - <desc name="pname" category="OES_framebuffer_object"> - <value name="GL_RENDERBUFFER_WIDTH_OES"/> - <value name="GL_RENDERBUFFER_HEIGHT_OES"/> - <value name="GL_RENDERBUFFER_INTERNAL_FORMAT_OES"/> - <value name="GL_RENDERBUFFER_RED_SIZE_OES"/> - <value name="GL_RENDERBUFFER_GREEN_SIZE_OES"/> - <value name="GL_RENDERBUFFER_BLUE_SIZE_OES"/> - <value name="GL_RENDERBUFFER_ALPHA_SIZE_OES"/> - <value name="GL_RENDERBUFFER_DEPTH_SIZE_OES"/> - <value name="GL_RENDERBUFFER_STENCIL_SIZE_OES"/> - - <desc name="params" vector_size="1" convert="false"/> - </desc> - - <desc name="pname" category="GLES2.0"> - <value name="GL_RENDERBUFFER_WIDTH"/> - <value name="GL_RENDERBUFFER_HEIGHT"/> - <value name="GL_RENDERBUFFER_INTERNAL_FORMAT"/> - <value name="GL_RENDERBUFFER_RED_SIZE"/> - <value name="GL_RENDERBUFFER_GREEN_SIZE"/> - <value name="GL_RENDERBUFFER_BLUE_SIZE"/> - <value name="GL_RENDERBUFFER_ALPHA_SIZE"/> - <value name="GL_RENDERBUFFER_DEPTH_SIZE"/> - <value name="GL_RENDERBUFFER_STENCIL_SIZE"/> - - <desc name="params" vector_size="1" convert="false"/> - </desc> -</template> - -<template name="IsRenderbuffer" direction="get"> - <proto> - <return type="GLboolean"/> - <param name="renderbuffer" type="GLuint"/> - </proto> -</template> - -<template name="IsFramebuffer" direction="get"> - <proto> - <return type="GLboolean"/> - <param name="framebuffer" type="GLuint"/> - </proto> -</template> - -<template name="IsShader" direction="get"> - <proto> - <return type="GLboolean"/> - <param name="shader" type="GLuint"/> - </proto> -</template> - -<template name="GetShader" direction="get"> - <proto> - <return type="void"/> - <param name="shader" type="GLuint"/> - <param name="pname" type="GLenum"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> - - <desc name="pname"> - <value name="GL_SHADER_TYPE"/> - <value name="GL_COMPILE_STATUS"/> - <value name="GL_DELETE_STATUS"/> - <value name="GL_INFO_LOG_LENGTH"/> - <value name="GL_SHADER_SOURCE_LENGTH"/> - </desc> -</template> - -<template name="GetAttachedShaders" direction="get"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - <param name="maxCount" type="GLsizei"/> - <param name="count" type="GLsizei *"/> - <param name="shaders" type="GLuint *"/> - </proto> -</template> - -<template name="GetShaderInfoLog" direction="get"> - <proto> - <return type="void"/> - <param name="shader" type="GLuint"/> - <param name="bufSize" type="GLsizei"/> - <param name="length" type="GLsizei *"/> - <param name="infoLog" type="GLchar *"/> - </proto> -</template> - -<template name="GetProgramInfoLog" direction="get"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - <param name="bufSize" type="GLsizei"/> - <param name="length" type="GLsizei *"/> - <param name="infoLog" type="GLchar *"/> - </proto> -</template> - -<template name="GetShaderSource" direction="get"> - <proto> - <return type="void"/> - <param name="shader" type="GLuint"/> - <param name="bufSize" type="GLsizei"/> - <param name="length" type="GLsizei *"/> - <param name="source" type="GLchar *"/> - </proto> -</template> - -<template name="GetShaderPrecisionFormat" direction="get"> - <proto> - <return type="void"/> - <param name="shadertype" type="GLenum"/> - <param name="precisiontype" type="GLenum"/> - <param name="range" type="GLint *"/> - <param name="precision" type="GLint *"/> - </proto> - - <desc name="shadertype"> - <value name="GL_VERTEX_SHADER"/> - <value name="GL_FRAGMENT_SHADER"/> - </desc> - - <desc name="precisiontype"> - <value name="GL_LOW_FLOAT"/> - <value name="GL_MEDIUM_FLOAT"/> - <value name="GL_HIGH_FLOAT"/> - <value name="GL_LOW_INT"/> - <value name="GL_MEDIUM_INT"/> - <value name="GL_HIGH_INT"/> - </desc> -</template> - -<template name="GetUniform" direction="get"> - <proto> - <return type="void"/> - <param name="program" type="GLuint"/> - <param name="location" type="GLint"/> - <vector name="params" type="GLtype *" size="dynamic"/> - </proto> -</template> - -<template name="QueryMatrix" direction="get"> - <proto> - <return type="GLbitfield"/> - <vector name="mantissa" type="GLtype *" size="16"/> - <vector name="exponent" type="GLint *" size="16"/> - </proto> -</template> - -<template name="DrawTex"> - <proto> - <return type="void"/> - <vector name="coords" type="const GLtype *" size="5"> - <param name="x" type="GLtype"/> - <param name="y" type="GLtype"/> - <param name="z" type="GLtype"/> - <param name="w" type="GLtype"/> - <param name="h" type="GLtype"/> - </vector> - </proto> -</template> - -<template name="MultiDrawArrays"> - <proto> - <return type="void"/> - <param name="mode" type="GLenum"/> - <param name="first" type="GLint *"/> - <param name="count" type="GLsizei *"/> - <param name="primcount" type="GLsizei"/> - </proto> - - <desc name="mode"> - <value name="GL_POINTS"/> - <value name="GL_LINES"/> - <value name="GL_LINE_LOOP"/> - <value name="GL_LINE_STRIP"/> - <value name="GL_TRIANGLES"/> - <value name="GL_TRIANGLE_STRIP"/> - <value name="GL_TRIANGLE_FAN"/> - </desc> -</template> - -<template name="MultiDrawElements"> - <proto> - <return type="void"/> - <param name="mode" type="GLenum"/> - <param name="count" type="const GLsizei *"/> - <param name="type" type="GLenum"/> - <param name="indices" type="const GLvoid **"/> - <param name="primcount" type="GLsizei"/> - </proto> - - <desc name="mode"> - <value name="GL_POINTS"/> - <value name="GL_LINES"/> - <value name="GL_LINE_LOOP"/> - <value name="GL_LINE_STRIP"/> - <value name="GL_TRIANGLES"/> - <value name="GL_TRIANGLE_STRIP"/> - <value name="GL_TRIANGLE_FAN"/> - </desc> - - <desc name="type"> - <value name="GL_UNSIGNED_BYTE"/> - <value name="GL_UNSIGNED_SHORT"/> - <!-- GL_UNSIGNED_INT is not defined in GLES1.1 headers --> - <value name="(0x1405 /* GL_UNSIGNED_INT */)" category="OES_element_index_uint"/> - </desc> -</template> - -<template name="EGLImageTargetTexture2D"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="image" type="GLeglImageOES"/> - </proto> - - <desc name="target"> - <value name="GL_TEXTURE_2D"/> - </desc> -</template> - -<template name="EGLImageTargetRenderbufferStorage"> - <proto> - <return type="void"/> - <param name="target" type="GLenum"/> - <param name="image" type="GLeglImageOES"/> - </proto> - - <desc name="target"> - <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/> - <value name="GL_RENDERBUFFER" category="GLES2.0"/> - </desc> -</template> - -<api name="mesa" implementation="true"> - <category name="MESA"/> - - <function name="Color4f" default_prefix="_vbo_" template="Color" gltype="GLfloat" vector_size="4" expand_vector="true"/> - <function name="ClipPlane" template="ClipPlane" gltype="GLdouble"/> - <function name="CullFace" template="CullFace"/> - - <function name="Fogf" template="Fog" gltype="GLfloat" expand_vector="true"/> - <function name="Fogfv" template="Fog" gltype="GLfloat"/> - - <function name="FrontFace" template="FrontFace"/> - <function name="Hint" template="Hint"/> - - <function name="Lightf" template="Light" gltype="GLfloat" expand_vector="true"/> - <function name="Lightfv" template="Light" gltype="GLfloat"/> - - <function name="LightModelf" template="LightModel" gltype="GLfloat" expand_vector="true"/> - <function name="LightModelfv" template="LightModel" gltype="GLfloat"/> - - <function name="LineWidth" template="LineWidth" gltype="GLfloat"/> - - <function name="Materialf" default_prefix="_vbo_" template="Material" gltype="GLfloat" expand_vector="true"/> - <function name="Materialfv" default_prefix="_vbo_" template="Material" gltype="GLfloat"/> - - <function name="PointSize" template="PointSize" gltype="GLfloat"/> - <function name="PointSizePointer" template="PointSizePointer"/> - - <function name="Scissor" template="Scissor"/> - <function name="ShadeModel" template="ShadeModel"/> - - <function name="TexParameterf" template="TexParameter" gltype="GLfloat" expand_vector="true"/> - <function name="TexParameterfv" template="TexParameter" gltype="GLfloat"/> - <function name="TexParameteri" template="TexParameter" gltype="GLint" expand_vector="true"/> - <function name="TexParameteriv" template="TexParameter" gltype="GLint"/> - - <function name="TexImage2D" template="TexImage2D"/> - - <function name="TexEnvf" template="TexEnv" gltype="GLfloat" expand_vector="true"/> - <function name="TexEnvi" template="TexEnv" gltype="GLint" expand_vector="true"/> - <function name="TexEnvfv" template="TexEnv" gltype="GLfloat"/> - <function name="TexEnviv" template="TexEnv" gltype="GLint"/> - - <function name="TexGenf" template="TexGen" gltype="GLfloat" expand_vector="true"/> - <function name="TexGenfv" template="TexGen" gltype="GLfloat"/> - - <function name="Clear" template="Clear"/> - <function name="ClearColor" template="ClearColor" gltype="GLclampf"/> - <function name="ClearStencil" template="ClearStencil"/> - <function name="ClearDepth" template="ClearDepth" gltype="GLclampd"/> - - <function name="StencilMask" template="StencilMask"/> - <function name="StencilMaskSeparate" template="StencilMaskSeparate"/> - <function name="ColorMask" template="ColorMask"/> - <function name="DepthMask" template="DepthMask"/> - <function name="Disable" template="Disable"/> - <function name="Enable" template="Enable"/> - <function name="Finish" template="Finish"/> - <function name="Flush" template="Flush"/> - - <function name="AlphaFunc" template="AlphaFunc" gltype="GLclampf"/> - - <function name="BlendFunc" template="BlendFunc"/> - <function name="LogicOp" template="LogicOp"/> - <function name="StencilFunc" template="StencilFunc"/> - <function name="StencilFuncSeparate" template="StencilFuncSeparate"/> - <function name="StencilOp" template="StencilOp"/> - <function name="StencilOpSeparate" template="StencilOpSeparate"/> - <function name="DepthFunc" template="DepthFunc"/> - <function name="PixelStorei" template="PixelStore" gltype="GLint"/> - - <function name="ReadPixels" template="ReadPixels"/> - <function name="GetBooleanv" template="GetState" gltype="GLboolean"/> - <function name="GetClipPlane" template="GetClipPlane" gltype="GLdouble"/> - <function name="GetError" template="GetError"/> - <function name="GetFloatv" template="GetState" gltype="GLfloat"/> - <function name="GetFixedv" template="GetState" gltype="GLfixed"/> - <function name="GetIntegerv" template="GetState" gltype="GLint"/> - - <function name="GetLightfv" template="GetLight" gltype="GLfloat"/> - <function name="GetMaterialfv" template="GetMaterial" gltype="GLfloat"/> - <function name="GetMaterialiv" template="GetMaterial" gltype="GLint"/> - - <function name="GetString" template="GetString"/> - - <function name="GetTexEnvfv" template="GetTexEnv" gltype="GLfloat"/> - <function name="GetTexEnviv" template="GetTexEnv" gltype="GLint"/> - <function name="GetTexGenfv" template="GetTexGen" gltype="GLfloat"/> - <function name="GetTexParameterfv" template="GetTexParameter" gltype="GLfloat"/> - <function name="GetTexParameteriv" template="GetTexParameter" gltype="GLint"/> - - <function name="IsEnabled" template="IsEnabled"/> - - <function name="DepthRange" template="DepthRange" gltype="GLclampd"/> - <function name="Frustum" template="Frustum" gltype="GLdouble"/> - - <function name="LoadIdentity" template="LoadIdentity"/> - <function name="LoadMatrixf" template="LoadMatrix" gltype="GLfloat"/> - <function name="MatrixMode" template="MatrixMode"/> - - <function name="MultMatrixf" template="MultMatrix" gltype="GLfloat"/> - <function name="Ortho" template="Ortho" gltype="GLdouble"/> - <function name="PopMatrix" template="PopMatrix"/> - <function name="PushMatrix" template="PushMatrix"/> - - <function name="Rotatef" template="Rotate" gltype="GLfloat"/> - <function name="Scalef" template="Scale" gltype="GLfloat"/> - <function name="Translatef" template="Translate" gltype="GLfloat"/> - - <function name="Viewport" template="Viewport"/> - - <function name="ColorPointer" template="ColorPointer"/> - <function name="DisableClientState" template="DisableClientState"/> - <function name="DrawArrays" template="DrawArrays"/> - <function name="DrawElements" template="DrawElements"/> - <function name="EnableClientState" template="EnableClientState"/> - - <function name="GetPointerv" template="GetPointer"/> - <function name="Normal3f" default_prefix="_vbo_" template="Normal" gltype="GLfloat" expand_vector="true"/> - <function name="NormalPointer" template="NormalPointer"/> - <function name="TexCoordPointer" template="TexCoordPointer"/> - <function name="VertexPointer" template="VertexPointer"/> - - <function name="PolygonOffset" template="PolygonOffset" gltype="GLfloat"/> - <function name="CopyTexImage2D" template="CopyTexImage2D"/> - <function name="CopyTexSubImage2D" template="CopyTexSubImage2D"/> - <function name="TexSubImage2D" template="TexSubImage2D"/> - - <function name="BindTexture" template="BindTexture"/> - <function name="DeleteTextures" template="DeleteTextures"/> - <function name="GenTextures" template="GenTextures"/> - <function name="IsTexture" template="IsTexture"/> - - <function name="BlendColor" template="BlendColor" gltype="GLclampf"/> - <function name="BlendEquation" template="BlendEquation"/> - <function name="BlendEquationSeparateEXT" template="BlendEquationSeparate"/> - - <function name="TexImage3D" template="TexImage3D"/> - <function name="TexSubImage3D" template="TexSubImage3D"/> - <function name="CopyTexSubImage3D" template="CopyTexSubImage3D"/> - - <function name="CompressedTexImage3DARB" template="CompressedTexImage3D"/> - <function name="CompressedTexSubImage3DARB" template="CompressedTexSubImage3D"/> - - <function name="ActiveTextureARB" template="ActiveTexture"/> - <function name="ClientActiveTextureARB" template="ClientActiveTexture"/> - - <function name="MultiTexCoord4f" default_prefix="_vbo_" template="MultiTexCoord" gltype="GLfloat" vector_size="4" expand_vector="true"/> - - <function name="SampleCoverageARB" template="SampleCoverage" gltype="GLclampf"/> - - <function name="CompressedTexImage2DARB" template="CompressedTexImage2D"/> - <function name="CompressedTexSubImage2DARB" template="CompressedTexSubImage2D"/> - - <function name="BlendFuncSeparateEXT" template="BlendFuncSeparate"/> - - <function name="PointParameterf" template="PointParameter" gltype="GLfloat" expand_vector="true"/> - <function name="PointParameterfv" template="PointParameter" gltype="GLfloat"/> - - <function name="VertexAttrib1f" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="1" expand_vector="true"/> - <function name="VertexAttrib2f" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="2" expand_vector="true"/> - <function name="VertexAttrib3f" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="3" expand_vector="true"/> - <function name="VertexAttrib4f" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="4" expand_vector="true"/> - <function name="VertexAttrib1fv" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="1"/> - <function name="VertexAttrib2fv" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="2"/> - <function name="VertexAttrib3fv" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="3"/> - <function name="VertexAttrib4fv" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="4"/> - - <function name="VertexAttribPointerARB" template="VertexAttribPointer"/> - <function name="EnableVertexAttribArrayARB" template="EnableVertexAttribArray"/> - <function name="DisableVertexAttribArrayARB" template="DisableVertexAttribArray"/> - - <function name="IsProgram" template="IsProgram"/> - <function name="GetProgramiv" template="GetProgram" gltype="GLint"/> - - <function name="GetVertexAttribfvARB" template="GetVertexAttrib" gltype="GLfloat"/> - <function name="GetVertexAttribivARB" template="GetVertexAttrib" gltype="GLint"/> - <function name="GetVertexAttribPointervARB" template="GetVertexAttribPointer"/> - - <function name="GetBufferPointervARB" template="GetBufferPointer"/> - <function name="MapBufferARB" template="MapBuffer"/> - <function name="UnmapBufferARB" template="UnmapBuffer"/> - <function name="BindBufferARB" template="BindBuffer"/> - <function name="BufferDataARB" template="BufferData"/> - <function name="BufferSubDataARB" template="BufferSubData"/> - <function name="DeleteBuffersARB" template="DeleteBuffers"/> - <function name="GenBuffersARB" template="GenBuffers"/> - <function name="GetBufferParameterivARB" template="GetBufferParameter" gltype="GLint"/> - <function name="IsBufferARB" template="IsBuffer"/> - - <function name="CreateShader" template="CreateShader"/> - <function name="ShaderSourceARB" template="ShaderSource"/> - <function name="CompileShaderARB" template="CompileShader"/> - <function name="ReleaseShaderCompiler" template="ReleaseShaderCompiler"/> - <function name="DeleteShader" template="DeleteShader"/> - <function name="ShaderBinary" template="ShaderBinary"/> - <function name="CreateProgram" template="CreateProgram"/> - <function name="AttachShader" template="AttachShader"/> - <function name="DetachShader" template="DetachShader"/> - <function name="LinkProgramARB" template="LinkProgram"/> - <function name="UseProgramObjectARB" template="UseProgram"/> - <function name="DeleteProgram" template="DeleteProgram"/> - - <function name="GetActiveAttribARB" template="GetActiveAttrib"/> - <function name="GetAttribLocationARB" template="GetAttribLocation"/> - <function name="BindAttribLocationARB" template="BindAttribLocation"/> - <function name="GetUniformLocationARB" template="GetUniformLocation"/> - <function name="GetActiveUniformARB" template="GetActiveUniform"/> - - <function name="Uniform1fARB" template="Uniform" gltype="GLfloat" vector_size="1" expand_vector="true"/> - <function name="Uniform2fARB" template="Uniform" gltype="GLfloat" vector_size="2" expand_vector="true"/> - <function name="Uniform3fARB" template="Uniform" gltype="GLfloat" vector_size="3" expand_vector="true"/> - <function name="Uniform4fARB" template="Uniform" gltype="GLfloat" vector_size="4" expand_vector="true"/> - <function name="Uniform1iARB" template="Uniform" gltype="GLint" vector_size="1" expand_vector="true"/> - <function name="Uniform2iARB" template="Uniform" gltype="GLint" vector_size="2" expand_vector="true"/> - <function name="Uniform3iARB" template="Uniform" gltype="GLint" vector_size="3" expand_vector="true"/> - <function name="Uniform4iARB" template="Uniform" gltype="GLint" vector_size="4" expand_vector="true"/> - <function name="Uniform1fvARB" template="Uniform" gltype="GLfloat" vector_size="1"/> - <function name="Uniform2fvARB" template="Uniform" gltype="GLfloat" vector_size="2"/> - <function name="Uniform3fvARB" template="Uniform" gltype="GLfloat" vector_size="3"/> - <function name="Uniform4fvARB" template="Uniform" gltype="GLfloat" vector_size="4"/> - <function name="Uniform1ivARB" template="Uniform" gltype="GLint" vector_size="1"/> - <function name="Uniform2ivARB" template="Uniform" gltype="GLint" vector_size="2"/> - <function name="Uniform3ivARB" template="Uniform" gltype="GLint" vector_size="3"/> - <function name="Uniform4ivARB" template="Uniform" gltype="GLint" vector_size="4"/> - - <function name="UniformMatrix2fvARB" template="UniformMatrix" gltype="GLfloat" vector_size="2"/> - <function name="UniformMatrix3fvARB" template="UniformMatrix" gltype="GLfloat" vector_size="3"/> - <function name="UniformMatrix4fvARB" template="UniformMatrix" gltype="GLfloat" vector_size="4"/> - - <function name="ValidateProgramARB" template="ValidateProgram"/> - - <function name="GenerateMipmapEXT" template="GenerateMipmap"/> - <function name="BindFramebufferEXT" template="BindFramebuffer"/> - <function name="DeleteFramebuffersEXT" template="DeleteFramebuffers"/> - <function name="GenFramebuffersEXT" template="GenFramebuffers"/> - <function name="BindRenderbufferEXT" template="BindRenderbuffer"/> - <function name="DeleteRenderbuffersEXT" template="DeleteRenderbuffers"/> - <function name="GenRenderbuffersEXT" template="GenRenderbuffers"/> - <function name="RenderbufferStorageEXT" template="RenderbufferStorage"/> - <function name="FramebufferRenderbufferEXT" template="FramebufferRenderbuffer"/> - <function name="FramebufferTexture2DEXT" template="FramebufferTexture2D"/> - <function name="FramebufferTexture3DEXT" template="FramebufferTexture3D"/> - <function name="CheckFramebufferStatusEXT" template="CheckFramebufferStatus"/> - <function name="GetFramebufferAttachmentParameterivEXT" template="GetFramebufferAttachmentParameter" gltype="GLint"/> - <function name="GetRenderbufferParameterivEXT" template="GetRenderbufferParameter" gltype="GLint"/> - <function name="IsRenderbufferEXT" template="IsRenderbuffer"/> - <function name="IsFramebufferEXT" template="IsFramebuffer"/> - - <function name="IsShader" template="IsShader"/> - <function name="GetShaderiv" template="GetShader" gltype="GLint"/> - <function name="GetAttachedShaders" template="GetAttachedShaders"/> - <function name="GetShaderInfoLog" template="GetShaderInfoLog"/> - <function name="GetProgramInfoLog" template="GetProgramInfoLog"/> - <function name="GetShaderSourceARB" template="GetShaderSource"/> - <function name="GetShaderPrecisionFormat" template="GetShaderPrecisionFormat"/> - <function name="GetUniformfvARB" template="GetUniform" gltype="GLfloat"/> - <function name="GetUniformivARB" template="GetUniform" gltype="GLint"/> - - <function name="DrawTexf" template="DrawTex" gltype="GLfloat" expand_vector="true"/> - <function name="DrawTexfv" template="DrawTex" gltype="GLfloat"/> - <function name="DrawTexi" template="DrawTex" gltype="GLint" expand_vector="true"/> - <function name="DrawTexiv" template="DrawTex" gltype="GLint"/> - <function name="DrawTexs" template="DrawTex" gltype="GLshort" expand_vector="true"/> - <function name="DrawTexsv" template="DrawTex" gltype="GLshort"/> - - <!-- EXT_multi_draw_arrays --> - <function name="MultiDrawArraysEXT" template="MultiDrawArrays"/> - <function name="MultiDrawElementsEXT" template="MultiDrawElements"/> - - <!-- OES_EGL_image --> - <function name="EGLImageTargetTexture2DOES" template="EGLImageTargetTexture2D"/> - <function name="EGLImageTargetRenderbufferStorageOES" template="EGLImageTargetRenderbufferStorage"/> -</api> - -<api name="GLES1.1"> - <category name="GLES1.1"/> - - <category name="OES_byte_coordinates"/> - <category name="OES_fixed_point"/> - <category name="OES_single_precision"/> - <category name="OES_matrix_get"/> - <category name="OES_read_format"/> - <category name="OES_compressed_paletted_texture"/> - <category name="OES_point_size_array"/> - <category name="OES_point_sprite"/> - <category name="OES_query_matrix"/> - <category name="OES_draw_texture"/> - <category name="OES_blend_equation_separate"/> - <category name="OES_blend_func_separate"/> - <category name="OES_blend_subtract"/> - <category name="OES_stencil_wrap"/> - <category name="OES_texture_cube_map"/> - <category name="OES_texture_env_crossbar"/> - <category name="OES_texture_mirrored_repeat"/> - <category name="OES_framebuffer_object"/> - <category name="OES_depth24"/> - <category name="OES_depth32"/> - <category name="OES_fbo_render_mipmap"/> - <category name="OES_rgb8_rgba8"/> - <category name="OES_stencil1"/> - <category name="OES_stencil4"/> - <category name="OES_stencil8"/> - <category name="OES_element_index_uint"/> - <category name="OES_mapbuffer"/> - <category name="EXT_texture_filter_anisotropic"/> - - <category name="ARB_texture_non_power_of_two"/> - <!-- disabled due to missing enums - <category name="EXT_texture_compression_dxt1"/> - <category name="EXT_texture_lod_bias"/> - <category name="EXT_blend_minmax"/> - --> - <category name="EXT_multi_draw_arrays"/> - <category name="OES_EGL_image"/> - - <category name="OES_matrix_palette"/> - - <function name="Color4f" template="Color" gltype="GLfloat" vector_size="4" expand_vector="true"/> - <function name="Color4ub" template="Color" gltype="GLubyte" vector_size="4" expand_vector="true"/> - <function name="Color4x" template="Color" gltype="GLfixed" vector_size="4" expand_vector="true"/> - - <function name="ClipPlanef" template="ClipPlane" gltype="GLfloat"/> - <function name="ClipPlanex" template="ClipPlane" gltype="GLfixed"/> - - <function name="CullFace" template="CullFace"/> - - <function name="Fogf" template="Fog" gltype="GLfloat" expand_vector="true"/> - <function name="Fogx" template="Fog" gltype="GLfixed" expand_vector="true"/> - <function name="Fogfv" template="Fog" gltype="GLfloat"/> - <function name="Fogxv" template="Fog" gltype="GLfixed"/> - - <function name="FrontFace" template="FrontFace"/> - <function name="Hint" template="Hint"/> - - <function name="Lightf" template="Light" gltype="GLfloat" expand_vector="true"/> - <function name="Lightx" template="Light" gltype="GLfixed" expand_vector="true"/> - <function name="Lightfv" template="Light" gltype="GLfloat"/> - <function name="Lightxv" template="Light" gltype="GLfixed"/> - - <function name="LightModelf" template="LightModel" gltype="GLfloat" expand_vector="true"/> - <function name="LightModelx" template="LightModel" gltype="GLfixed" expand_vector="true"/> - <function name="LightModelfv" template="LightModel" gltype="GLfloat"/> - <function name="LightModelxv" template="LightModel" gltype="GLfixed"/> - - <function name="LineWidth" template="LineWidth" gltype="GLfloat"/> - <function name="LineWidthx" template="LineWidth" gltype="GLfixed"/> - - <function name="Materialf" template="Material" gltype="GLfloat" expand_vector="true"/> - <function name="Materialfv" template="Material" gltype="GLfloat"/> - <function name="Materialx" template="Material" gltype="GLfixed" expand_vector="true"/> - <function name="Materialxv" template="Material" gltype="GLfixed"/> - - <function name="PointSize" template="PointSize" gltype="GLfloat"/> - <function name="PointSizex" template="PointSize" gltype="GLfixed"/> - <function name="PointSizePointerOES" template="PointSizePointer"/> - - <function name="Scissor" template="Scissor"/> - <function name="ShadeModel" template="ShadeModel"/> - - <function name="TexParameterf" template="TexParameter" gltype="GLfloat" expand_vector="true"/> - <function name="TexParameterfv" template="TexParameter" gltype="GLfloat"/> - <function name="TexParameteri" template="TexParameter" gltype="GLint" expand_vector="true"/> - <function name="TexParameteriv" template="TexParameter" gltype="GLint"/> - <function name="TexParameterx" template="TexParameter" gltype="GLfixed" expand_vector="true"/> - <function name="TexParameterxv" template="TexParameter" gltype="GLfixed"/> - - <function name="TexImage2D" template="TexImage2D"/> - - <function name="TexEnvf" template="TexEnv" gltype="GLfloat" expand_vector="true"/> - <function name="TexEnvfv" template="TexEnv" gltype="GLfloat"/> - <function name="TexEnvi" template="TexEnv" gltype="GLint" expand_vector="true"/> - <function name="TexEnviv" template="TexEnv" gltype="GLint"/> - <function name="TexEnvx" template="TexEnv" gltype="GLfixed" expand_vector="true"/> - <function name="TexEnvxv" template="TexEnv" gltype="GLfixed"/> - - <function name="TexGenfOES" external="true" template="TexGen" gltype="GLfloat" expand_vector="true"/> - <function name="TexGenfvOES" external="true" template="TexGen" gltype="GLfloat"/> - <function name="TexGeniOES" external="true" template="TexGen" gltype="GLint" expand_vector="true"/> - <function name="TexGenivOES" external="true" template="TexGen" gltype="GLint"/> - <function name="TexGenxOES" external="true" template="TexGen" gltype="GLfixed" expand_vector="true"/> - <function name="TexGenxvOES" external="true" template="TexGen" gltype="GLfixed"/> - - <function name="Clear" template="Clear"/> - <function name="ClearColor" template="ClearColor" gltype="GLclampf"/> - <function name="ClearColorx" template="ClearColor" gltype="GLclampx"/> - - <function name="ClearStencil" template="ClearStencil"/> - <function name="ClearDepthf" template="ClearDepth" gltype="GLclampf"/> - <function name="ClearDepthx" template="ClearDepth" gltype="GLclampx"/> - - <function name="StencilMask" template="StencilMask"/> - <function name="ColorMask" template="ColorMask"/> - <function name="DepthMask" template="DepthMask"/> - - <function name="Disable" external="true" template="Disable"/> - <function name="Enable" external="true" template="Enable"/> - <function name="Finish" template="Finish"/> - <function name="Flush" template="Flush"/> - - <function name="AlphaFunc" template="AlphaFunc" gltype="GLclampf"/> - <function name="AlphaFuncx" template="AlphaFunc" gltype="GLclampx"/> - - <function name="BlendFunc" template="BlendFunc"/> - <function name="LogicOp" template="LogicOp"/> - <function name="StencilFunc" template="StencilFunc"/> - - <function name="StencilOp" template="StencilOp"/> - <function name="DepthFunc" template="DepthFunc"/> - - <function name="PixelStorei" template="PixelStore" gltype="GLint"/> - <function name="ReadPixels" template="ReadPixels"/> - - <function name="GetBooleanv" template="GetState" gltype="GLboolean"/> - - <function name="GetClipPlanef" template="GetClipPlane" gltype="GLfloat"/> - <function name="GetClipPlanex" template="GetClipPlane" gltype="GLfixed"/> - - <function name="GetError" template="GetError"/> - <function name="GetFloatv" template="GetState" gltype="GLfloat"/> - <function name="GetFixedv" template="GetState" gltype="GLfixed"/> - <function name="GetIntegerv" template="GetState" gltype="GLint"/> - - <function name="GetLightfv" template="GetLight" gltype="GLfloat"/> - <function name="GetLightxv" template="GetLight" gltype="GLfixed"/> - - <function name="GetMaterialfv" template="GetMaterial" gltype="GLfloat"/> - <function name="GetMaterialxv" template="GetMaterial" gltype="GLfixed"/> - - <function name="GetString" external="true" template="GetString"/> - - <function name="GetTexEnvfv" template="GetTexEnv" gltype="GLfloat"/> - <function name="GetTexEnviv" template="GetTexEnv" gltype="GLint"/> - <function name="GetTexEnvxv" template="GetTexEnv" gltype="GLfixed"/> - - <function name="GetTexGenfvOES" external="true" template="GetTexGen" gltype="GLfloat"/> - <function name="GetTexGenivOES" external="true" template="GetTexGen" gltype="GLint"/> - <function name="GetTexGenxvOES" external="true" template="GetTexGen" gltype="GLfixed"/> - - <function name="GetTexParameterfv" template="GetTexParameter" gltype="GLfloat"/> - <function name="GetTexParameteriv" template="GetTexParameter" gltype="GLint"/> - <function name="GetTexParameterxv" template="GetTexParameter" gltype="GLfixed"/> - - <function name="IsEnabled" external="true" template="IsEnabled"/> - - <function name="DepthRangef" template="DepthRange" gltype="GLclampf"/> - <function name="DepthRangex" template="DepthRange" gltype="GLclampx"/> - - <function name="Frustumf" template="Frustum" gltype="GLfloat"/> - <function name="Frustumx" template="Frustum" gltype="GLfixed"/> - - <function name="LoadIdentity" template="LoadIdentity"/> - <function name="LoadMatrixf" template="LoadMatrix" gltype="GLfloat"/> - <function name="LoadMatrixx" template="LoadMatrix" gltype="GLfixed"/> - <function name="MatrixMode" template="MatrixMode"/> - - <function name="MultMatrixf" template="MultMatrix" gltype="GLfloat"/> - <function name="MultMatrixx" template="MultMatrix" gltype="GLfixed"/> - <function name="Orthof" template="Ortho" gltype="GLfloat"/> - <function name="Orthox" template="Ortho" gltype="GLfixed"/> - - <function name="PopMatrix" template="PopMatrix"/> - <function name="PushMatrix" template="PushMatrix"/> - - <function name="Rotatef" template="Rotate" gltype="GLfloat"/> - <function name="Rotatex" template="Rotate" gltype="GLfixed"/> - <function name="Scalef" template="Scale" gltype="GLfloat"/> - <function name="Scalex" template="Scale" gltype="GLfixed"/> - <function name="Translatef" template="Translate" gltype="GLfloat"/> - <function name="Translatex" template="Translate" gltype="GLfixed"/> - - <function name="Viewport" template="Viewport"/> - <function name="ColorPointer" template="ColorPointer"/> - <function name="DisableClientState" template="DisableClientState"/> - <function name="DrawArrays" template="DrawArrays"/> - <function name="DrawElements" template="DrawElements"/> - <function name="EnableClientState" template="EnableClientState"/> - - <function name="GetPointerv" template="GetPointer"/> - - <function name="Normal3f" template="Normal" gltype="GLfloat" expand_vector="true"/> - <function name="Normal3x" template="Normal" gltype="GLfixed" expand_vector="true"/> - <function name="NormalPointer" template="NormalPointer"/> - <function name="TexCoordPointer" template="TexCoordPointer"/> - <function name="VertexPointer" template="VertexPointer"/> - - <function name="PolygonOffset" template="PolygonOffset" gltype="GLfloat"/> - <function name="PolygonOffsetx" template="PolygonOffset" gltype="GLfixed"/> - - <function name="CopyTexImage2D" template="CopyTexImage2D"/> - <function name="CopyTexSubImage2D" template="CopyTexSubImage2D"/> - - <function name="TexSubImage2D" template="TexSubImage2D"/> - - <function name="BindTexture" template="BindTexture"/> - <function name="DeleteTextures" template="DeleteTextures"/> - <function name="GenTextures" template="GenTextures"/> - <function name="IsTexture" template="IsTexture"/> - - <function name="BlendEquationOES" template="BlendEquation"/> - <function name="BlendEquationSeparateOES" template="BlendEquationSeparate"/> - - <function name="MultiTexCoord4x" template="MultiTexCoord" gltype="GLfixed" vector_size="4" expand_vector="true"/> - - <function name="ActiveTexture" template="ActiveTexture"/> - <function name="ClientActiveTexture" template="ClientActiveTexture"/> - - <function name="MultiTexCoord4f" template="MultiTexCoord" gltype="GLfloat" vector_size="4" expand_vector="true"/> - - <function name="SampleCoverage" template="SampleCoverage" gltype="GLclampf"/> - <function name="SampleCoveragex" template="SampleCoverage" gltype="GLclampx"/> - - <!-- CompressedTexImage2D calls out to two different functions based on - whether the image is a paletted image or not --> - <function name="CompressedTexImage2D" external="true" template="CompressedTexImage2D"/> - <function name="CompressedTexSubImage2D" template="CompressedTexSubImage2D"/> - - <function name="BlendFuncSeparateOES" template="BlendFuncSeparate"/> - - <function name="PointParameterf" template="PointParameter" gltype="GLfloat" expand_vector="true"/> - <function name="PointParameterfv" template="PointParameter" gltype="GLfloat"/> - <function name="PointParameterx" template="PointParameter" gltype="GLfixed" expand_vector="true"/> - <function name="PointParameterxv" template="PointParameter" gltype="GLfixed"/> - - <!-- OES_mapbuffer --> - <function name="GetBufferPointervOES" template="GetBufferPointer"/> - <function name="MapBufferOES" template="MapBuffer"/> - <function name="UnmapBufferOES" template="UnmapBuffer"/> - - <function name="BindBuffer" template="BindBuffer"/> - <function name="BufferData" template="BufferData"/> - <function name="BufferSubData" template="BufferSubData"/> - <function name="DeleteBuffers" template="DeleteBuffers"/> - <function name="GenBuffers" template="GenBuffers"/> - <function name="GetBufferParameteriv" template="GetBufferParameter" gltype="GLint"/> - <function name="IsBuffer" template="IsBuffer"/> - - <!-- OES_framebuffer_object --> - <function name="GenerateMipmapOES" template="GenerateMipmap"/> - <function name="BindFramebufferOES" template="BindFramebuffer"/> - <function name="DeleteFramebuffersOES" template="DeleteFramebuffers"/> - <function name="GenFramebuffersOES" template="GenFramebuffers"/> - <function name="BindRenderbufferOES" template="BindRenderbuffer"/> - <function name="DeleteRenderbuffersOES" template="DeleteRenderbuffers"/> - <function name="GenRenderbuffersOES" template="GenRenderbuffers"/> - <function name="RenderbufferStorageOES" external="true" template="RenderbufferStorage"/> - <function name="FramebufferRenderbufferOES" template="FramebufferRenderbuffer"/> - <function name="FramebufferTexture2DOES" template="FramebufferTexture2D"/> - <function name="CheckFramebufferStatusOES" template="CheckFramebufferStatus"/> - <function name="GetFramebufferAttachmentParameterivOES" template="GetFramebufferAttachmentParameter" gltype="GLint"/> - <function name="GetRenderbufferParameterivOES" template="GetRenderbufferParameter" gltype="GLint"/> - <function name="IsRenderbufferOES" template="IsRenderbuffer"/> - <function name="IsFramebufferOES" template="IsFramebuffer"/> - - <!-- OES_query_matrix --> - <!-- QueryMatrixx returns values in an unusual, decomposed, fixed-value - form; it has its own code for this --> - <function name="QueryMatrixxOES" external="true" template="QueryMatrix" gltype="GLfixed"/> - - <!-- OES_draw_texture --> - <function name="DrawTexfOES" template="DrawTex" gltype="GLfloat" expand_vector="true"/> - <function name="DrawTexiOES" template="DrawTex" gltype="GLint" expand_vector="true"/> - <function name="DrawTexsOES" template="DrawTex" gltype="GLshort" expand_vector="true"/> - <function name="DrawTexxOES" template="DrawTex" gltype="GLfixed" expand_vector="true"/> - <function name="DrawTexfvOES" template="DrawTex" gltype="GLfloat"/> - <function name="DrawTexivOES" template="DrawTex" gltype="GLint"/> - <function name="DrawTexsvOES" template="DrawTex" gltype="GLshort"/> - <function name="DrawTexxvOES" template="DrawTex" gltype="GLfixed"/> - - <!-- EXT_multi_draw_arrays --> - <function name="MultiDrawArraysEXT" template="MultiDrawArrays"/> - <function name="MultiDrawElementsEXT" template="MultiDrawElements"/> - - <!-- OES_EGL_image --> - <function name="EGLImageTargetTexture2DOES" template="EGLImageTargetTexture2D"/> - <function name="EGLImageTargetRenderbufferStorageOES" template="EGLImageTargetRenderbufferStorage"/> -</api> - -<api name="GLES2.0"> - <category name="GLES2.0"/> - - <category name="OES_compressed_paletted_texture"/> - <category name="OES_depth24"/> - <category name="OES_depth32"/> - <category name="OES_fbo_render_mipmap"/> - <category name="OES_rgb8_rgba8"/> - <category name="OES_stencil1"/> - <category name="OES_stencil4"/> - <category name="OES_element_index_uint"/> - <category name="OES_mapbuffer"/> - <category name="OES_texture_3D"/> - <category name="OES_texture_npot"/> - <category name="EXT_texture_filter_anisotropic"/> - <category name="EXT_texture_type_2_10_10_10_REV"/> - <category name="OES_depth_texture"/> - <category name="OES_packed_depth_stencil"/> - <category name="OES_standard_derivatives"/> - - <!-- disabled due to missing enums - <category name="EXT_texture_compression_dxt1"/> - <category name="EXT_blend_minmax"/> - --> - <category name="EXT_multi_draw_arrays"/> - <category name="OES_EGL_image"/> - - <function name="CullFace" template="CullFace"/> - - <function name="FrontFace" template="FrontFace"/> - <function name="Hint" template="Hint"/> - - <function name="LineWidth" template="LineWidth" gltype="GLfloat"/> - - <function name="Scissor" template="Scissor"/> - - <function name="TexParameterf" template="TexParameter" gltype="GLfloat" expand_vector="true"/> - <function name="TexParameterfv" template="TexParameter" gltype="GLfloat"/> - <function name="TexParameteri" template="TexParameter" gltype="GLint" expand_vector="true"/> - <function name="TexParameteriv" template="TexParameter" gltype="GLint"/> - - <function name="TexImage2D" template="TexImage2D"/> - - <function name="Clear" template="Clear"/> - <function name="ClearColor" template="ClearColor" gltype="GLclampf"/> - <function name="ClearStencil" template="ClearStencil"/> - <function name="ClearDepthf" template="ClearDepth" gltype="GLclampf"/> - - <function name="StencilMask" template="StencilMask"/> - <function name="StencilMaskSeparate" template="StencilMaskSeparate"/> - <function name="ColorMask" template="ColorMask"/> - <function name="DepthMask" template="DepthMask"/> - <function name="Disable" template="Disable"/> - <function name="Enable" template="Enable"/> - <function name="Finish" template="Finish"/> - <function name="Flush" template="Flush"/> - - <function name="BlendFunc" template="BlendFunc"/> - - <function name="StencilFunc" template="StencilFunc"/> - <function name="StencilFuncSeparate" template="StencilFuncSeparate"/> - <function name="StencilOp" template="StencilOp"/> - <function name="StencilOpSeparate" template="StencilOpSeparate"/> - - <function name="DepthFunc" template="DepthFunc"/> - - <function name="PixelStorei" template="PixelStore" gltype="GLint"/> - <function name="ReadPixels" template="ReadPixels"/> - - <function name="GetBooleanv" template="GetState" gltype="GLboolean"/> - <function name="GetError" template="GetError"/> - <function name="GetFloatv" template="GetState" gltype="GLfloat"/> - <function name="GetIntegerv" template="GetState" gltype="GLint"/> - - <function name="GetString" external="true" template="GetString"/> - - <function name="GetTexParameterfv" template="GetTexParameter" gltype="GLfloat"/> - <function name="GetTexParameteriv" template="GetTexParameter" gltype="GLint"/> - - <function name="IsEnabled" template="IsEnabled"/> - - <function name="DepthRangef" template="DepthRange" gltype="GLclampf"/> - - <function name="Viewport" template="Viewport"/> - - <function name="DrawArrays" template="DrawArrays"/> - <function name="DrawElements" template="DrawElements"/> - - <function name="PolygonOffset" template="PolygonOffset" gltype="GLfloat"/> - <function name="CopyTexImage2D" template="CopyTexImage2D"/> - <function name="CopyTexSubImage2D" template="CopyTexSubImage2D"/> - <function name="TexSubImage2D" template="TexSubImage2D"/> - - <function name="BindTexture" template="BindTexture"/> - <function name="DeleteTextures" template="DeleteTextures"/> - <function name="GenTextures" template="GenTextures"/> - <function name="IsTexture" template="IsTexture"/> - - <function name="BlendColor" template="BlendColor" gltype="GLclampf"/> - <function name="BlendEquation" template="BlendEquation"/> - <function name="BlendEquationSeparate" template="BlendEquationSeparate"/> - - <function name="TexImage3DOES" template="TexImage3D"/> - <function name="TexSubImage3DOES" template="TexSubImage3D"/> - <function name="CopyTexSubImage3DOES" template="CopyTexSubImage3D"/> - - <function name="CompressedTexImage3DOES" template="CompressedTexImage3D"/> - <function name="CompressedTexSubImage3DOES" template="CompressedTexSubImage3D"/> - - <function name="ActiveTexture" template="ActiveTexture"/> - - <function name="SampleCoverage" template="SampleCoverage" gltype="GLclampf"/> - - <function name="CompressedTexImage2D" external="true" template="CompressedTexImage2D"/> - <function name="CompressedTexSubImage2D" template="CompressedTexSubImage2D"/> - - <function name="BlendFuncSeparate" template="BlendFuncSeparate"/> - - <function name="VertexAttrib1f" template="VertexAttrib" gltype="GLfloat" vector_size="1" expand_vector="true"/> - <function name="VertexAttrib2f" template="VertexAttrib" gltype="GLfloat" vector_size="2" expand_vector="true"/> - <function name="VertexAttrib3f" template="VertexAttrib" gltype="GLfloat" vector_size="3" expand_vector="true"/> - <function name="VertexAttrib4f" template="VertexAttrib" gltype="GLfloat" vector_size="4" expand_vector="true"/> - <function name="VertexAttrib1fv" template="VertexAttrib" gltype="GLfloat" vector_size="1"/> - <function name="VertexAttrib2fv" template="VertexAttrib" gltype="GLfloat" vector_size="2"/> - <function name="VertexAttrib3fv" template="VertexAttrib" gltype="GLfloat" vector_size="3"/> - <function name="VertexAttrib4fv" template="VertexAttrib" gltype="GLfloat" vector_size="4"/> - - <function name="VertexAttribPointer" template="VertexAttribPointer"/> - - <function name="EnableVertexAttribArray" template="EnableVertexAttribArray"/> - <function name="DisableVertexAttribArray" template="DisableVertexAttribArray"/> - - <function name="IsProgram" template="IsProgram"/> - <function name="GetProgramiv" template="GetProgram" gltype="GLint"/> - - <function name="GetVertexAttribfv" template="GetVertexAttrib" gltype="GLfloat"/> - <function name="GetVertexAttribiv" template="GetVertexAttrib" gltype="GLint"/> - <function name="GetVertexAttribPointerv" template="GetVertexAttribPointer"/> - - <function name="GetBufferPointervOES" template="GetBufferPointer"/> - <function name="MapBufferOES" template="MapBuffer"/> - <function name="UnmapBufferOES" template="UnmapBuffer"/> - <function name="BindBuffer" template="BindBuffer"/> - <function name="BufferData" template="BufferData"/> - <function name="BufferSubData" template="BufferSubData"/> - <function name="DeleteBuffers" template="DeleteBuffers"/> - <function name="GenBuffers" template="GenBuffers"/> - <function name="GetBufferParameteriv" template="GetBufferParameter" gltype="GLint"/> - <function name="IsBuffer" template="IsBuffer"/> - - <function name="CreateShader" template="CreateShader"/> - <function name="ShaderSource" template="ShaderSource"/> - <function name="CompileShader" template="CompileShader"/> - <function name="ReleaseShaderCompiler" template="ReleaseShaderCompiler"/> - <function name="DeleteShader" template="DeleteShader"/> - <function name="ShaderBinary" template="ShaderBinary"/> - <function name="CreateProgram" template="CreateProgram"/> - <function name="AttachShader" template="AttachShader"/> - <function name="DetachShader" template="DetachShader"/> - <function name="LinkProgram" template="LinkProgram"/> - <function name="UseProgram" template="UseProgram"/> - <function name="DeleteProgram" template="DeleteProgram"/> - - <function name="GetActiveAttrib" template="GetActiveAttrib"/> - <function name="GetAttribLocation" template="GetAttribLocation"/> - <function name="BindAttribLocation" template="BindAttribLocation"/> - <function name="GetUniformLocation" template="GetUniformLocation"/> - <function name="GetActiveUniform" template="GetActiveUniform"/> - - <function name="Uniform1f" template="Uniform" gltype="GLfloat" vector_size="1" expand_vector="true"/> - <function name="Uniform2f" template="Uniform" gltype="GLfloat" vector_size="2" expand_vector="true"/> - <function name="Uniform3f" template="Uniform" gltype="GLfloat" vector_size="3" expand_vector="true"/> - <function name="Uniform4f" template="Uniform" gltype="GLfloat" vector_size="4" expand_vector="true"/> - <function name="Uniform1i" template="Uniform" gltype="GLint" vector_size="1" expand_vector="true"/> - <function name="Uniform2i" template="Uniform" gltype="GLint" vector_size="2" expand_vector="true"/> - <function name="Uniform3i" template="Uniform" gltype="GLint" vector_size="3" expand_vector="true"/> - <function name="Uniform4i" template="Uniform" gltype="GLint" vector_size="4" expand_vector="true"/> - - <function name="Uniform1fv" template="Uniform" gltype="GLfloat" vector_size="1"/> - <function name="Uniform2fv" template="Uniform" gltype="GLfloat" vector_size="2"/> - <function name="Uniform3fv" template="Uniform" gltype="GLfloat" vector_size="3"/> - <function name="Uniform4fv" template="Uniform" gltype="GLfloat" vector_size="4"/> - <function name="Uniform1iv" template="Uniform" gltype="GLint" vector_size="1"/> - <function name="Uniform2iv" template="Uniform" gltype="GLint" vector_size="2"/> - <function name="Uniform3iv" template="Uniform" gltype="GLint" vector_size="3"/> - <function name="Uniform4iv" template="Uniform" gltype="GLint" vector_size="4"/> - - <function name="UniformMatrix2fv" template="UniformMatrix" gltype="GLfloat" vector_size="2"/> - <function name="UniformMatrix3fv" template="UniformMatrix" gltype="GLfloat" vector_size="3"/> - <function name="UniformMatrix4fv" template="UniformMatrix" gltype="GLfloat" vector_size="4"/> - - <function name="ValidateProgram" template="ValidateProgram"/> - - <function name="GenerateMipmap" template="GenerateMipmap"/> - <function name="BindFramebuffer" template="BindFramebuffer"/> - <function name="DeleteFramebuffers" template="DeleteFramebuffers"/> - <function name="GenFramebuffers" template="GenFramebuffers"/> - <function name="BindRenderbuffer" template="BindRenderbuffer"/> - <function name="DeleteRenderbuffers" template="DeleteRenderbuffers"/> - <function name="GenRenderbuffers" template="GenRenderbuffers"/> - <function name="RenderbufferStorage" external="true" template="RenderbufferStorage"/> - <function name="FramebufferRenderbuffer" template="FramebufferRenderbuffer"/> - <function name="FramebufferTexture2D" template="FramebufferTexture2D"/> - <function name="FramebufferTexture3DOES" template="FramebufferTexture3D"/> - <function name="CheckFramebufferStatus" template="CheckFramebufferStatus"/> - <function name="GetFramebufferAttachmentParameteriv" template="GetFramebufferAttachmentParameter" gltype="GLint"/> - <function name="GetRenderbufferParameteriv" template="GetRenderbufferParameter" gltype="GLint"/> - <function name="IsRenderbuffer" template="IsRenderbuffer"/> - <function name="IsFramebuffer" template="IsFramebuffer"/> - - <function name="IsShader" template="IsShader"/> - <function name="GetShaderiv" template="GetShader" gltype="GLint"/> - <function name="GetAttachedShaders" template="GetAttachedShaders"/> - <function name="GetShaderInfoLog" template="GetShaderInfoLog"/> - <function name="GetProgramInfoLog" template="GetProgramInfoLog"/> - <function name="GetShaderSource" template="GetShaderSource"/> - <function name="GetShaderPrecisionFormat" template="GetShaderPrecisionFormat"/> - <function name="GetUniformfv" template="GetUniform" gltype="GLfloat"/> - <function name="GetUniformiv" template="GetUniform" gltype="GLint"/> - - <!-- EXT_multi_draw_arrays --> - <function name="MultiDrawArraysEXT" template="MultiDrawArrays"/> - <function name="MultiDrawElementsEXT" template="MultiDrawElements"/> - - <!-- OES_EGL_image --> - <function name="EGLImageTargetTexture2DOES" template="EGLImageTargetTexture2D"/> - <function name="EGLImageTargetRenderbufferStorageOES" template="EGLImageTargetRenderbufferStorage"/> -</api> - -</apispec> diff --git a/src/mesa/es/main/APIspecutil.py b/src/mesa/es/main/APIspecutil.py deleted file mode 100644 index 27a8fe8a6d4..00000000000 --- a/src/mesa/es/main/APIspecutil.py +++ /dev/null @@ -1,265 +0,0 @@ -#!/usr/bin/python -# -# Copyright (C) 2009 Chia-I Wu <[email protected]> -# -# 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. -""" -Minimal apiutil.py interface for use by es_generator.py. -""" - -import sys -import libxml2 - -import APIspec - -__spec = {} -__functions = {} -__aliases = {} - -def _ParseXML(filename, apiname): - conversions = { - # from to - 'GLfloat': [ 'GLdouble' ], - 'GLclampf': [ 'GLclampd' ], - 'GLubyte': [ 'GLfloat', 'GLdouble' ], - 'GLint': [ 'GLfloat', 'GLdouble' ], - 'GLfixed': [ 'GLfloat', 'GLdouble' ], - 'GLclampx': [ 'GLclampf', 'GLclampd' ], - } - - doc = libxml2.readFile(filename, None, - libxml2.XML_PARSE_DTDLOAD + - libxml2.XML_PARSE_DTDVALID + - libxml2.XML_PARSE_NOBLANKS) - spec = APIspec.Spec(doc) - impl = spec.get_impl() - api = spec.get_api(apiname) - doc.freeDoc() - - __spec["impl"] = impl - __spec["api"] = api - - for func in api.functions: - alias, need_conv = impl.match(func, conversions) - if not alias: - # external functions are manually dispatched - if not func.is_external: - print >>sys.stderr, "Error: unable to dispatch %s" % func.name - alias = func - need_conv = False - - __functions[func.name] = func - __aliases[func.name] = (alias, need_conv) - - -def AllSpecials(notused=None): - """Return a list of all external functions in the API.""" - api = __spec["api"] - - specials = [] - for func in api.functions: - if func.is_external: - specials.append(func.name) - - return specials - - -def GetAllFunctions(filename, api): - """Return sorted list of all functions in the API.""" - if not __spec: - _ParseXML(filename, api) - - api = __spec["api"] - names = [] - for func in api.functions: - names.append(func.name) - names.sort() - return names - - -def ReturnType(funcname): - """Return the C return type of named function.""" - func = __functions[funcname] - return func.return_type - - -def Properties(funcname): - """Return list of properties of the named GL function.""" - func = __functions[funcname] - return [func.direction] - - -def _ValidValues(func, param): - """Return the valid values of a parameter.""" - valid_values = [] - switch = func.checker.switches.get(param.name, []) - for desc in switch: - # no dependent vector - if not desc.checker.switches: - for val in desc.values: - valid_values.append((val, None, None, [], desc.error, None)) - continue - - items = desc.checker.switches.items() - if len(items) > 1: - print >>sys.stderr, "%s: more than one parameter depend on %s" % \ - (func.name, desc.name) - dep_name, dep_switch = items[0] - - for dep_desc in dep_switch: - if dep_desc.index >= 0 and dep_desc.index != 0: - print >>sys.stderr, "%s: not first element of a vector" % func.name - if dep_desc.checker.switches: - print >>sys.stderr, "%s: deep nested dependence" % func.name - - convert = None if dep_desc.convert else "noconvert" - for val in desc.values: - valid_values.append((val, dep_desc.size_str, dep_desc.name, - dep_desc.values, dep_desc.error, convert)) - return valid_values - - -def _Conversion(func, src_param): - """Return the destination type of the conversion, or None.""" - alias, need_conv = __aliases[func.name] - if need_conv: - dst_param = alias.get_param(src_param.name) - if src_param.type == dst_param.type: - need_conv = False - if not need_conv: - return (None, "none") - - converts = { True: 0, False: 0 } - - # In Fogx, for example, pname may be GL_FOG_DENSITY/GL_FOG_START/GL_FOG_END - # or GL_FOG_MODE. In the former three cases, param is not checked and the - # default is to convert. - if not func.checker.always_check(src_param.name): - converts[True] += 1 - - for desc in func.checker.flatten(src_param.name): - converts[desc.convert] += 1 - if converts[True] and converts[False]: - break - - # it should be "never", "sometimes", and "always"... - if converts[False]: - if converts[True]: - conversion = "some" - else: - conversion = "none" - else: - conversion = "all" - - return (dst_param.base_type(), conversion) - - -def _MaxVecSize(func, param): - """Return the largest possible size of a vector.""" - if not param.is_vector: - return 0 - if param.size: - return param.size - - # need to look at all descriptions - size = 0 - for desc in func.checker.flatten(param.name): - if desc.size_str and desc.size_str.isdigit(): - s = int(desc.size_str) - if s > size: - size = s - if not size: - need_conv = __aliases[func.name][1] - if need_conv: - print >>sys.stderr, \ - "Error: unable to dicide the max size of %s in %s" % \ - (param.name, func.name) - return size - - -def _ParameterTuple(func, param): - """Return a parameter tuple. - - [0] -- parameter name - [1] -- parameter type - [2] -- max vector size or 0 - [3] -- dest type the parameter converts to, or None - [4] -- valid values - [5] -- how often does the conversion happen - - """ - vec_size = _MaxVecSize(func, param) - dst_type, conversion = _Conversion(func, param) - valid_values = _ValidValues(func, param) - - return (param.name, param.type, vec_size, dst_type, valid_values, conversion) - - -def Parameters(funcname): - """Return list of tuples of function parameters.""" - func = __functions[funcname] - params = [] - for param in func.params: - params.append(_ParameterTuple(func, param)) - - return params - - -def FindParamIndex(params, paramname): - """Find the index of a named parameter.""" - for i in xrange(len(params)): - if params[i][0] == paramname: - return i - return None - - -def MakeDeclarationString(params): - """Return a C-style parameter declaration string.""" - string = [] - for p in params: - sep = "" if p[1].endswith("*") else " " - string.append("%s%s%s" % (p[1], sep, p[0])) - if not string: - return "void" - return ", ".join(string) - - -def AliasPrefix(funcname): - """Return the prefix of the function the named function is an alias of.""" - alias = __aliases[funcname][0] - return alias.prefix - - -def Alias(funcname): - """Return the name of the function the named function is an alias of.""" - alias, need_conv = __aliases[funcname] - return alias.name if not need_conv else None - - -def ConversionFunction(funcname): - """Return the name of the function the named function converts to.""" - alias, need_conv = __aliases[funcname] - return alias.name if need_conv else None - - -def Categories(funcname): - """Return all the categories of the named GL function.""" - api = __spec["api"] - return [api.name] diff --git a/src/mesa/es/main/drawtex.c b/src/mesa/es/main/drawtex.c deleted file mode 100644 index 42f44093972..00000000000 --- a/src/mesa/es/main/drawtex.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (C) 2009 Chia-I Wu <[email protected]> - * - * 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 "main/dispatch.h" - - -#if FEATURE_OES_draw_texture - - -static 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]); -} - - -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); -} - - -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 deleted file mode 100644 index 0f3bac38c77..00000000000 --- a/src/mesa/es/main/drawtex.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2009 Chia-I Wu <[email protected]> - * - * 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); - -extern void GLAPIENTRY -_mesa_DrawTexx(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); - -extern void GLAPIENTRY -_mesa_DrawTexxv(const GLfixed *coords); - -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/es_cpaltex.c b/src/mesa/es/main/es_cpaltex.c deleted file mode 100644 index 0c497774ff8..00000000000 --- a/src/mesa/es/main/es_cpaltex.c +++ /dev/null @@ -1,231 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - **************************************************************************/ - - -/** - * Code to convert compressed/paletted texture images to ordinary images. - * See the GL_OES_compressed_paletted_texture spec at - * http://khronos.org/registry/gles/extensions/OES/OES_compressed_paletted_texture.txt - * - * XXX this makes it impossible to add hardware support... - */ - - -#include "GLES/gl.h" -#include "GLES/glext.h" - -#include "main/compiler.h" /* for ASSERT */ - - -void GL_APIENTRY _es_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); - -void GL_APIENTRY _mesa_GetIntegerv(GLenum pname, GLint *params); -void GL_APIENTRY _mesa_PixelStorei(GLenum pname, GLint param); -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); - -void *_mesa_get_current_context(void); -void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... ); - - -static const struct cpal_format_info { - GLenum cpal_format; - GLenum format; - GLenum type; - GLuint palette_size; - GLuint size; -} formats[] = { - { GL_PALETTE4_RGB8_OES, GL_RGB, GL_UNSIGNED_BYTE, 16, 3 }, - { GL_PALETTE4_RGBA8_OES, GL_RGBA, GL_UNSIGNED_BYTE, 16, 4 }, - { GL_PALETTE4_R5_G6_B5_OES, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, 16, 2 }, - { GL_PALETTE4_RGBA4_OES, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 16, 2 }, - { GL_PALETTE4_RGB5_A1_OES, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, 16, 2 }, - { GL_PALETTE8_RGB8_OES, GL_RGB, GL_UNSIGNED_BYTE, 256, 3 }, - { GL_PALETTE8_RGBA8_OES, GL_RGBA, GL_UNSIGNED_BYTE, 256, 4 }, - { GL_PALETTE8_R5_G6_B5_OES, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, 256, 2 }, - { GL_PALETTE8_RGBA4_OES, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 256, 2 }, - { GL_PALETTE8_RGB5_A1_OES, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, 256, 2 } -}; - - -/** - * Get a color/entry from the palette. - */ -static GLuint -get_palette_entry(const struct cpal_format_info *info, const GLubyte *palette, - GLuint index, GLubyte *pixel) -{ - memcpy(pixel, palette + info->size * index, info->size); - return info->size; -} - - -/** - * Convert paletted texture to color texture. - */ -static void -paletted_to_color(const struct cpal_format_info *info, const GLubyte *palette, - const void *indices, GLuint num_pixels, GLubyte *image) -{ - GLubyte *pix = image; - GLuint remain, i; - - if (info->palette_size == 16) { - /* 4 bits per index */ - const GLubyte *ind = (const GLubyte *) indices; - - /* two pixels per iteration */ - remain = num_pixels % 2; - for (i = 0; i < num_pixels / 2; i++) { - pix += get_palette_entry(info, palette, (ind[i] >> 4) & 0xf, pix); - pix += get_palette_entry(info, palette, ind[i] & 0xf, pix); - } - if (remain) { - get_palette_entry(info, palette, (ind[i] >> 4) & 0xf, pix); - } - } - else { - /* 8 bits per index */ - const GLubyte *ind = (const GLubyte *) indices; - for (i = 0; i < num_pixels; i++) - pix += get_palette_entry(info, palette, ind[i], pix); - } -} - - -static const struct cpal_format_info * -cpal_get_info(GLint level, GLenum internalFormat, - GLsizei width, GLsizei height, GLsizei imageSize) -{ - const struct cpal_format_info *info; - GLint lvl, num_levels; - GLsizei w, h, expect_size; - - info = &formats[internalFormat - GL_PALETTE4_RGB8_OES]; - ASSERT(info->cpal_format == internalFormat); - - if (level > 0) { - _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, - "glCompressedTexImage2D(level=%d)", level); - return NULL; - } - - num_levels = -level + 1; - expect_size = info->palette_size * info->size; - for (lvl = 0; lvl < num_levels; lvl++) { - w = width >> lvl; - if (!w) - w = 1; - h = height >> lvl; - if (!h) - h = 1; - - if (info->palette_size == 16) - expect_size += (w * h + 1) / 2; - else - expect_size += w * h; - } - if (expect_size > imageSize) { - _mesa_error(_mesa_get_current_context(), GL_INVALID_VALUE, - "glCompressedTexImage2D(imageSize=%d)", imageSize); - return NULL; - } - return info; -} - -/** - * 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, GLsizei imageSize, - const void *palette) -{ - const struct cpal_format_info *info; - GLint lvl, num_levels; - const GLubyte *indices; - GLint saved_align, align; - - info = cpal_get_info(level, internalFormat, width, height, imageSize); - if (!info) - return; - - info = &formats[internalFormat - GL_PALETTE4_RGB8_OES]; - ASSERT(info->cpal_format == internalFormat); - num_levels = -level + 1; - - /* first image follows the palette */ - indices = (const GLubyte *) palette + info->palette_size * info->size; - - _mesa_GetIntegerv(GL_UNPACK_ALIGNMENT, &saved_align); - align = saved_align; - - for (lvl = 0; lvl < num_levels; lvl++) { - GLsizei w, h; - GLuint num_texels; - GLubyte *image = NULL; - - w = width >> lvl; - if (!w) - w = 1; - h = height >> lvl; - if (!h) - h = 1; - num_texels = w * h; - if (w * info->size % align) { - _mesa_PixelStorei(GL_UNPACK_ALIGNMENT, 1); - align = 1; - } - - /* allocate and fill dest image buffer */ - if (palette) { - image = (GLubyte *) malloc(num_texels * info->size); - paletted_to_color(info, palette, indices, num_texels, image); - } - - _mesa_TexImage2D(target, lvl, info->format, w, h, 0, - info->format, info->type, image); - if (image) - free(image); - - /* advance index pointer to point to next src mipmap */ - if (info->palette_size == 16) - indices += (num_texels + 1) / 2; - else - indices += num_texels; - } - - if (saved_align != align) - _mesa_PixelStorei(GL_UNPACK_ALIGNMENT, saved_align); -} - - -void GL_APIENTRY -_es_CompressedTexImage2DARB(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, imageSize, data); - break; - default: - _mesa_CompressedTexImage2DARB(target, level, internalFormat, - width, height, border, imageSize, data); - } -} diff --git a/src/mesa/es/main/es_enable.c b/src/mesa/es/main/es_enable.c deleted file mode 100644 index 351caacd776..00000000000 --- a/src/mesa/es/main/es_enable.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2009 Chia-I Wu <[email protected]> - * - * 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 "GLES/gl.h" -#include "GLES/glext.h" - -#include "main/compiler.h" /* for ASSERT */ - - -#ifndef GL_TEXTURE_GEN_S -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GEN_R 0x0C62 -#endif - - -extern void GL_APIENTRY _es_Disable(GLenum cap); -extern void GL_APIENTRY _es_Enable(GLenum cap); -extern GLboolean GL_APIENTRY _es_IsEnabled(GLenum cap); - -extern void GL_APIENTRY _mesa_Disable(GLenum cap); -extern void GL_APIENTRY _mesa_Enable(GLenum cap); -extern GLboolean GL_APIENTRY _mesa_IsEnabled(GLenum cap); - - -void GL_APIENTRY -_es_Disable(GLenum cap) -{ - switch (cap) { - case GL_TEXTURE_GEN_STR_OES: - /* disable S, T, and R at the same time */ - _mesa_Disable(GL_TEXTURE_GEN_S); - _mesa_Disable(GL_TEXTURE_GEN_T); - _mesa_Disable(GL_TEXTURE_GEN_R); - break; - default: - _mesa_Disable(cap); - break; - } -} - - -void GL_APIENTRY -_es_Enable(GLenum cap) -{ - switch (cap) { - case GL_TEXTURE_GEN_STR_OES: - /* enable S, T, and R at the same time */ - _mesa_Enable(GL_TEXTURE_GEN_S); - _mesa_Enable(GL_TEXTURE_GEN_T); - _mesa_Enable(GL_TEXTURE_GEN_R); - break; - default: - _mesa_Enable(cap); - break; - } -} - - -GLboolean GL_APIENTRY -_es_IsEnabled(GLenum cap) -{ - switch (cap) { - case GL_TEXTURE_GEN_STR_OES: - cap = GL_TEXTURE_GEN_S; - default: - break; - } - - return _mesa_IsEnabled(cap); -} diff --git a/src/mesa/es/main/es_fbo.c b/src/mesa/es/main/es_fbo.c deleted file mode 100644 index 18036378304..00000000000 --- a/src/mesa/es/main/es_fbo.c +++ /dev/null @@ -1,37 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - **************************************************************************/ - - -#include "GLES2/gl2.h" -#include "GLES2/gl2ext.h" - - -#ifndef GL_RGB5 -#define GL_RGB5 0x8050 -#endif - - -extern void GL_APIENTRY _es_RenderbufferStorageEXT(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_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, - GLsizei width, GLsizei height) -{ - switch (internalFormat) { - case GL_RGB565: - /* XXX this confuses GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ - /* choose a closest format */ - internalFormat = GL_RGB5; - break; - default: - break; - } - _mesa_RenderbufferStorageEXT(target, internalFormat, width, height); -} diff --git a/src/mesa/es/main/es_generator.py b/src/mesa/es/main/es_generator.py deleted file mode 100644 index f736792deca..00000000000 --- a/src/mesa/es/main/es_generator.py +++ /dev/null @@ -1,685 +0,0 @@ -#************************************************************************* -# 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 APIspecutil as apiutil - -# These dictionary entries are used for automatic conversion. -# The string will be used as a format string with the conversion -# variable. -Converters = { - 'GLfloat': { - 'GLdouble': "(GLdouble) (%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): - print >> sys.stderr, "No base converter for type '%s' found. Ignoring." % fromType - return value - - if not Converters[fromType].has_key(toType): - print >> sys.stderr, "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 - -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 -VersionSpecificValues = { - 'GLES1.1' : { - 'description' : 'GLES1.1 functions', - 'header' : 'GLES/gl.h', - 'extheader' : 'GLES/glext.h', - }, - 'GLES2.0': { - 'description' : 'GLES2.0 functions', - 'header' : 'GLES2/gl2.h', - 'extheader' : 'GLES2/gl2ext.h', - } -} - - -###################################################################### -# 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]) - -# Set default values -verbose = 0 -functionList = "APIspec.xml" -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'] - -# 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) - -allSpecials = apiutil.AllSpecials() - -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" - -#include "main/dispatch.h" - -typedef void (*_glapi_proc)(void); /* generic function pointer */ -""" - -# 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... - if funcName in allSpecials: - # perform checks and pass through - funcPrefix = "_check_" - aliasprefix = "_es_" - else: - funcPrefix = "_es_" - 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, paramBaseType, 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 in allSpecials: - print "/* this function is special and is defined elsewhere */" - 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 - extensionSuffix = "" - else: - # This is an extension function. We'll need to append - # the extension suffix. - extensionName = compoundCategory[1] - extensionSuffix = extensionName.split("_")[0] - fullFuncName = funcPrefix + 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 (not variables and - not switchCode and - not conversionCodeOutgoing and - not conversionCodeIncoming): - # pass through directly - print "#define %s %s" % (fullFuncName, passthroughFuncName) - 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: - prefix = "_es_" if func not in allSpecials else "_check_" - 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, %s%s);" % (entry, prefix, entry) -print "}" diff --git a/src/mesa/es/main/es_query_matrix.c b/src/mesa/es/main/es_query_matrix.c deleted file mode 100644 index 82b6fe7ab9f..00000000000 --- a/src/mesa/es/main/es_query_matrix.c +++ /dev/null @@ -1,199 +0,0 @@ -/************************************************************************** - * - * 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/es_texgen.c b/src/mesa/es/main/es_texgen.c deleted file mode 100644 index c29a0a7f138..00000000000 --- a/src/mesa/es/main/es_texgen.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2009 Chia-I Wu <[email protected]> - * - * 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 "GLES/gl.h" -#include "GLES/glext.h" - -#include "main/compiler.h" /* for ASSERT */ - - -#ifndef GL_S -#define GL_S 0x2000 -#define GL_T 0x2001 -#define GL_R 0x2002 -#endif - - -extern void GL_APIENTRY _es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); -extern void GL_APIENTRY _es_TexGenf(GLenum coord, GLenum pname, GLfloat param); -extern void GL_APIENTRY _es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params); - -extern void GL_APIENTRY _mesa_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); -extern void GL_APIENTRY _mesa_TexGenf(GLenum coord, GLenum pname, GLfloat param); -extern void GL_APIENTRY _mesa_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params); - - -void GL_APIENTRY -_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) -{ - ASSERT(coord == GL_TEXTURE_GEN_STR_OES); - _mesa_GetTexGenfv(GL_S, pname, params); -} - - -void GL_APIENTRY -_es_TexGenf(GLenum coord, GLenum pname, GLfloat param) -{ - ASSERT(coord == GL_TEXTURE_GEN_STR_OES); - /* set S, T, and R at the same time */ - _mesa_TexGenf(GL_S, pname, param); - _mesa_TexGenf(GL_T, pname, param); - _mesa_TexGenf(GL_R, pname, param); -} - - -void GL_APIENTRY -_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params) -{ - ASSERT(coord == GL_TEXTURE_GEN_STR_OES); - /* set S, T, and R at the same time */ - _mesa_TexGenfv(GL_S, pname, params); - _mesa_TexGenfv(GL_T, pname, params); - _mesa_TexGenfv(GL_R, pname, params); -} diff --git a/src/mesa/es/main/get_gen.py b/src/mesa/es/main/get_gen.py deleted file mode 100644 index b820157be0c..00000000000 --- a/src/mesa/es/main/get_gen.py +++ /dev/null @@ -1,810 +0,0 @@ -#!/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 -GLfixed = 7 - - -TypeStrings = { - GLint : "GLint", - GLenum : "GLenum", - GLfloat : "GLfloat", - GLdouble : "GLdouble", - GLboolean : "GLboolean", - GLfixed : "GLfixed" -} - - -# 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, - ["_mesa_get_color_read_type(ctx)"], "", ["OES_read_format"] ), - ( "GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES", GLint, - ["_mesa_get_color_read_format(ctx)"], "", ["OES_read_format"] ), - - # 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_STR_OES", GLboolean, - # S, T, and R are always set at the same time - ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_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_lod_bias - ( "GL_MAX_TEXTURE_LOD_BIAS_EXT", GLfloat, - ["ctx->Const.MaxTextureLodBias"], "", ["EXT_texture_lod_bias"]), - - # 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 or - returnType == GLfixed) - - 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" - elif returnType == GLfixed: - function = "_mesa_GetFixedv" - 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" -#include "main/framebuffer.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 - -/* GL_OES_texture_cube_map */ -#ifndef GL_OES_texture_cube_map -#define GL_TEXTURE_GEN_STR_OES 0x8D60 -#endif - -#define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE ) -#define FLOAT_TO_FIXED(F) ( ((F) * 65536.0f > INT_MAX) ? INT_MAX : \\ - ((F) * 65536.0f < INT_MIN) ? INT_MIN : \\ - (GLint) ((F) * 65536.0f) ) - -#define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE ) -#define INT_TO_FIXED(I) ( ((I) > SHRT_MAX) ? INT_MAX : \\ - ((I) < SHRT_MIN) ? INT_MIN : \\ - (GLint) ((I) * 65536) ) - -#define BOOLEAN_TO_INT(B) ( (GLint) (B) ) -#define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F ) -#define BOOLEAN_TO_FIXED(B) ( (GLint) ((B) ? 1 : 0) << 16 ) - -#define ENUM_TO_FIXED(E) (E) - - -/* - * 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])) - -void GLAPIENTRY -_mesa_GetFixedv( GLenum pname, GLfixed *params ); - -""" - return - - -def EmitAll(stateVars, API): - EmitHeader() - EmitGetFunction(stateVars, GLboolean) - EmitGetFunction(stateVars, GLfloat) - EmitGetFunction(stateVars, GLint) - if API == 1: - EmitGetFunction(stateVars, GLfixed) - - -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, API) - - -main(sys.argv) diff --git a/src/mesa/es/main/specials_es1.c b/src/mesa/es/main/specials_es1.c deleted file mode 100644 index 92e24a03fe5..00000000000 --- a/src/mesa/es/main/specials_es1.c +++ /dev/null @@ -1,218 +0,0 @@ -/************************************************************************** - * - * 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 FEATURE_OES_draw_texture - if (ctx->Extensions.OES_draw_texture) - len += append_extension(&str, "GL_OES_draw_texture"); -#endif - - 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.EXT_stencil_wrap) - len += append_extension(&str, "GL_OES_stencil_wrap"); - - 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"); - - /* some applications check this for NPOT support */ - if (ctx->Extensions.ARB_texture_non_power_of_two) - len += append_extension(&str, "GL_ARB_texture_non_power_of_two"); - - if (ctx->Extensions.EXT_texture_compression_s3tc) - len += append_extension(&str, "GL_EXT_texture_compression_dxt1"); - if (ctx->Extensions.EXT_texture_lod_bias) - len += append_extension(&str, "GL_EXT_texture_lod_bias"); - if (ctx->Extensions.EXT_blend_minmax) - len += append_extension(&str, "GL_EXT_blend_minmax"); - if (ctx->Extensions.EXT_multi_draw_arrays) - len += append_extension(&str, "GL_EXT_multi_draw_arrays"); - -#if FEATURE_OES_EGL_image - if (ctx->Extensions.OES_EGL_image) - len += append_extension(&str, "GL_OES_EGL_image"); -#endif - - 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 *) 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) -{ - GLuint i; - - /** - * GL_OES_texture_cube_map says - * "Initially all texture generation modes are set to REFLECTION_MAP_OES" - */ - for (i = 0; i < MAX_TEXTURE_UNITS; i++) { - struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i]; - texUnit->GenS.Mode = GL_REFLECTION_MAP_NV; - texUnit->GenT.Mode = GL_REFLECTION_MAP_NV; - texUnit->GenR.Mode = GL_REFLECTION_MAP_NV; - texUnit->GenS._ModeBit = TEXGEN_REFLECTION_MAP_NV; - texUnit->GenT._ModeBit = TEXGEN_REFLECTION_MAP_NV; - texUnit->GenR._ModeBit = TEXGEN_REFLECTION_MAP_NV; - } -} diff --git a/src/mesa/es/main/specials_es2.c b/src/mesa/es/main/specials_es2.c deleted file mode 100644 index 046cda6fc18..00000000000 --- a/src/mesa/es/main/specials_es2.c +++ /dev/null @@ -1,179 +0,0 @@ -/************************************************************************** - * - * 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; - - len += append_extension(&str, "GL_OES_compressed_paletted_texture"); - - if (ctx->Extensions.ARB_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"); - } - - 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"); - - if (ctx->Extensions.EXT_texture_compression_s3tc) - len += append_extension(&str, "GL_EXT_texture_compression_dxt1"); - if (ctx->Extensions.EXT_blend_minmax) - len += append_extension(&str, "GL_EXT_blend_minmax"); - if (ctx->Extensions.EXT_multi_draw_arrays) - len += append_extension(&str, "GL_EXT_multi_draw_arrays"); - -#if FEATURE_OES_EGL_image - if (ctx->Extensions.OES_EGL_image) - len += append_extension(&str, "GL_OES_EGL_image"); -#endif - - 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 *) 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 deleted file mode 100644 index b829543cc01..00000000000 --- a/src/mesa/es/main/stubs.c +++ /dev/null @@ -1,131 +0,0 @@ -/************************************************************************** - * - * 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) - - -/* 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 index 55bb31b80dd..9bb7a6ff38c 100644 --- a/src/mesa/es/sources.mak +++ b/src/mesa/es/sources.mak @@ -1,45 +1,13 @@ include $(MESA)/sources.mak -# LOCAL sources - -LOCAL_ES1_SOURCES := \ - main/api_exec_es1.c \ - main/get_es1.c \ - main/specials_es1.c \ - main/drawtex.c \ - main/es_cpaltex.c \ - main/es_enable.c \ - main/es_fbo.c \ - main/es_query_matrix.c \ - main/es_texgen.c \ - main/stubs.c \ - glapi/glapi-es1/main/enums.c - -LOCAL_ES1_GALLIUM_SOURCES := \ - $(LOCAL_ES1_SOURCES) \ - state_tracker/st_cb_drawtex.c - # always use local version of GLAPI_ASM_SOURCES LOCAL_ES1_API_ASM := $(addprefix glapi/glapi-es1/, $(GLAPI_ASM_SOURCES)) LOCAL_ES1_INCLUDES := \ -I. \ -I./glapi/glapi-es1 \ - -I./state_tracker \ -I$(MESA)/state_tracker -LOCAL_ES2_SOURCES := \ - main/api_exec_es2.c \ - main/get_es2.c \ - main/specials_es2.c \ - main/es_cpaltex.c \ - main/es_fbo.c \ - main/stubs.c \ - glapi/glapi-es2/main/enums.c - -LOCAL_ES2_GALLIUM_SOURCES := \ - $(LOCAL_ES2_SOURCES) - LOCAL_ES2_API_ASM := $(subst es1,es2, $(LOCAL_ES1_API_ASM)) LOCAL_ES2_INCLUDES := $(subst es1,es2, $(LOCAL_ES1_INCLUDES)) @@ -50,7 +18,6 @@ MAIN_OMITTED := \ main/api_exec.c \ main/condrender.c \ main/dlopen.c \ - main/enums.c \ main/get.c MAIN_SOURCES := $(filter-out $(MAIN_OMITTED), $(MAIN_SOURCES)) @@ -101,10 +68,6 @@ MESA_ES1_API_SOURCES := \ MESA_ES1_INCLUDES := $(INCLUDE_DIRS) -# remove LOCAL sources from MESA sources -MESA_ES1_SOURCES := $(filter-out $(LOCAL_ES1_SOURCES), $(MESA_ES1_SOURCES)) -MESA_ES1_GALLIUM_SOURCES := $(filter-out $(LOCAL_ES1_GALLIUM_SOURCES), $(MESA_ES1_GALLIUM_SOURCES)) - # right now es2 and es1 share MESA sources MESA_ES2_SOURCES := $(MESA_ES1_SOURCES) MESA_ES2_GALLIUM_SOURCES := $(MESA_ES1_GALLIUM_SOURCES) @@ -116,12 +79,12 @@ MESA_ES2_INCLUDES := $(MESA_ES1_INCLUDES) MESA_ES_ASM := $(MESA_ASM_SOURCES) # collect sources, adjust the pathes -ES1_SOURCES := $(LOCAL_ES1_SOURCES) $(addprefix $(MESA)/,$(MESA_ES1_SOURCES)) -ES1_GALLIUM_SOURCES := $(LOCAL_ES1_GALLIUM_SOURCES) $(addprefix $(MESA)/,$(MESA_ES1_GALLIUM_SOURCES)) +ES1_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_SOURCES)) +ES1_GALLIUM_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_GALLIUM_SOURCES)) ES1_API_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_API_SOURCES)) -ES2_SOURCES := $(LOCAL_ES2_SOURCES) $(addprefix $(MESA)/,$(MESA_ES2_SOURCES)) -ES2_GALLIUM_SOURCES := $(LOCAL_ES2_GALLIUM_SOURCES) $(addprefix $(MESA)/,$(MESA_ES2_GALLIUM_SOURCES)) +ES2_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_SOURCES)) +ES2_GALLIUM_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_GALLIUM_SOURCES)) ES2_API_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_API_SOURCES)) # collect includes @@ -130,12 +93,10 @@ ES2_INCLUDES := $(LOCAL_ES2_INCLUDES) $(MESA_ES2_INCLUDES) # collect objects, including asm ES1_OBJECTS := \ - $(LOCAL_ES1_SOURCES:.c=.o) \ $(MESA_ES1_SOURCES:.c=.o) \ $(MESA_ES_ASM:.S=.o) ES1_GALLIUM_OBJECTS := \ - $(LOCAL_ES1_GALLIUM_SOURCES:.c=.o) \ $(MESA_ES1_GALLIUM_SOURCES:.c=.o) \ $(MESA_ES_ASM:.S=.o) @@ -144,12 +105,10 @@ ES1_API_OBJECTS := \ $(MESA_ES1_API_SOURCES:.c=.o) ES2_OBJECTS := \ - $(LOCAL_ES2_SOURCES:.c=.o) \ $(MESA_ES2_SOURCES:.c=.o) \ $(MESA_ES_ASM:.S=.o) ES2_GALLIUM_OBJECTS := \ - $(LOCAL_ES2_GALLIUM_SOURCES:.c=.o) \ $(MESA_ES2_GALLIUM_SOURCES:.c=.o) \ $(MESA_ES_ASM:.S=.o) diff --git a/src/mesa/es/state_tracker/st_cb_drawtex.c b/src/mesa/es/state_tracker/st_cb_drawtex.c deleted file mode 100644 index 6d387d5ccf1..00000000000 --- a/src/mesa/es/state_tracker/st_cb_drawtex.c +++ /dev/null @@ -1,312 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - **************************************************************************/ - - -/** - * Implementation of glDrawTex() for GL_OES_draw_tex - */ - - - -#include "main/imports.h" -#include "main/image.h" -#include "main/bufferobj.h" -#include "main/drawtex.h" -#include "main/macros.h" -#include "main/state.h" -#include "main/texformat.h" -#include "shader/program.h" -#include "shader/prog_parameter.h" -#include "shader/prog_print.h" - -#include "st_context.h" -#include "st_atom.h" -#include "st_atom_constbuf.h" -#include "st_draw.h" -#include "st_cb_drawtex.h" - -#include "pipe/p_context.h" -#include "pipe/p_defines.h" -#include "util/u_inlines.h" -#include "pipe/p_shader_tokens.h" -#include "util/u_tile.h" -#include "util/u_draw_quad.h" -#include "util/u_simple_shaders.h" - -#include "cso_cache/cso_context.h" - - -struct cached_shader -{ - //struct pipe_shader_state shader; - void *handle; - - uint num_attribs; - uint semantic_names[2 + MAX_TEXTURE_UNITS]; - uint semantic_indexes[2 + MAX_TEXTURE_UNITS]; -}; - -#define MAX_SHADERS (2 * MAX_TEXTURE_UNITS) - -/** - * Simple linear list cache. - * Most of the time there'll only be one cached shader. - */ -static struct cached_shader CachedShaders[MAX_SHADERS]; -static GLuint NumCachedShaders = 0; - - -#if FEATURE_OES_draw_texture - - -static void * -lookup_shader(struct pipe_context *pipe, - uint num_attribs, - const uint *semantic_names, - const uint *semantic_indexes) -{ - GLuint i, j; - - /* look for existing shader with same attributes */ - for (i = 0; i < NumCachedShaders; i++) { - if (CachedShaders[i].num_attribs == num_attribs) { - GLboolean match = GL_TRUE; - for (j = 0; j < num_attribs; j++) { - if (semantic_names[j] != CachedShaders[i].semantic_names[j] || - semantic_indexes[j] != CachedShaders[i].semantic_indexes[j]) { - match = GL_FALSE; - break; - } - } - if (match) - return CachedShaders[i].handle; - } - } - - /* not found - create new one now */ - if (NumCachedShaders >= MAX_SHADERS) { - return NULL; - } - - CachedShaders[i].num_attribs = num_attribs; - for (j = 0; j < num_attribs; j++) { - CachedShaders[i].semantic_names[j] = semantic_names[j]; - CachedShaders[i].semantic_indexes[j] = semantic_indexes[j]; - } - - CachedShaders[i].handle = - util_make_vertex_passthrough_shader(pipe, - num_attribs, - semantic_names, - semantic_indexes); - NumCachedShaders++; - - return CachedShaders[i].handle; -} - -static void -st_DrawTex(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, - GLfloat width, GLfloat height) -{ - struct st_context *st = ctx->st; - struct pipe_context *pipe = st->pipe; - struct cso_context *cso = ctx->st->cso_context; - struct pipe_resource *vbuffer; - struct pipe_transfer *vbuffer_transfer; - GLuint i, numTexCoords, numAttribs; - GLboolean emitColor; - uint semantic_names[2 + MAX_TEXTURE_UNITS]; - uint semantic_indexes[2 + MAX_TEXTURE_UNITS]; - struct pipe_vertex_element velements[2 + MAX_TEXTURE_UNITS]; - GLbitfield inputs = VERT_BIT_POS; - - st_validate_state(st); - - /* determine if we need vertex color */ - if (ctx->FragmentProgram._Current->Base.InputsRead & FRAG_BIT_COL0) - emitColor = GL_TRUE; - else - emitColor = GL_FALSE; - - /* determine how many enabled sets of texcoords */ - numTexCoords = 0; - for (i = 0; i < ctx->Const.MaxTextureUnits; i++) { - if (ctx->Texture.Unit[i]._ReallyEnabled & TEXTURE_2D_BIT) { - inputs |= VERT_BIT_TEX(i); - numTexCoords++; - } - } - - /* total number of attributes per vertex */ - numAttribs = 1 + emitColor + numTexCoords; - - - /* create the vertex buffer */ - vbuffer = pipe_buffer_create(pipe->screen, PIPE_BIND_VERTEX_BUFFER, - numAttribs * 4 * 4 * sizeof(GLfloat)); - - /* load vertex buffer */ - { -#define SET_ATTRIB(VERT, ATTR, X, Y, Z, W) \ - do { \ - GLuint k = (((VERT) * numAttribs + (ATTR)) * 4); \ - assert(k < 4 * 4 * numAttribs); \ - vbuf[k + 0] = X; \ - vbuf[k + 1] = Y; \ - vbuf[k + 2] = Z; \ - vbuf[k + 3] = W; \ - } while (0) - - const GLfloat x0 = x, y0 = y, x1 = x + width, y1 = y + height; - GLfloat *vbuf = (GLfloat *) pipe_buffer_map(pipe, vbuffer, - PIPE_TRANSFER_WRITE, - &vbuffer_transfer); - GLuint attr; - - z = CLAMP(z, 0.0f, 1.0f); - - /* positions (in clip coords) */ - { - const struct gl_framebuffer *fb = st->ctx->DrawBuffer; - const GLfloat fb_width = (GLfloat)fb->Width; - const GLfloat fb_height = (GLfloat)fb->Height; - - const GLfloat clip_x0 = (GLfloat)(x0 / fb_width * 2.0 - 1.0); - const GLfloat clip_y0 = (GLfloat)(y0 / fb_height * 2.0 - 1.0); - const GLfloat clip_x1 = (GLfloat)(x1 / fb_width * 2.0 - 1.0); - const GLfloat clip_y1 = (GLfloat)(y1 / fb_height * 2.0 - 1.0); - - SET_ATTRIB(0, 0, clip_x0, clip_y0, z, 1.0f); /* lower left */ - SET_ATTRIB(1, 0, clip_x1, clip_y0, z, 1.0f); /* lower right */ - SET_ATTRIB(2, 0, clip_x1, clip_y1, z, 1.0f); /* upper right */ - SET_ATTRIB(3, 0, clip_x0, clip_y1, z, 1.0f); /* upper left */ - - semantic_names[0] = TGSI_SEMANTIC_POSITION; - semantic_indexes[0] = 0; - } - - /* colors */ - if (emitColor) { - const GLfloat *c = ctx->Current.Attrib[VERT_ATTRIB_COLOR0]; - SET_ATTRIB(0, 1, c[0], c[1], c[2], c[3]); - SET_ATTRIB(1, 1, c[0], c[1], c[2], c[3]); - SET_ATTRIB(2, 1, c[0], c[1], c[2], c[3]); - SET_ATTRIB(3, 1, c[0], c[1], c[2], c[3]); - semantic_names[1] = TGSI_SEMANTIC_COLOR; - semantic_indexes[1] = 0; - attr = 2; - } - else { - attr = 1; - } - - /* texcoords */ - for (i = 0; i < ctx->Const.MaxTextureUnits; i++) { - if (ctx->Texture.Unit[i]._ReallyEnabled & TEXTURE_2D_BIT) { - struct gl_texture_object *obj = ctx->Texture.Unit[i]._Current; - struct gl_texture_image *img = obj->Image[0][obj->BaseLevel]; - const GLfloat wt = (GLfloat) img->Width; - const GLfloat ht = (GLfloat) img->Height; - const GLfloat s0 = obj->CropRect[0] / wt; - const GLfloat t0 = obj->CropRect[1] / ht; - const GLfloat s1 = (obj->CropRect[0] + obj->CropRect[2]) / wt; - const GLfloat t1 = (obj->CropRect[1] + obj->CropRect[3]) / ht; - - /*printf("crop texcoords: %g, %g .. %g, %g\n", s0, t0, s1, t1);*/ - SET_ATTRIB(0, attr, s0, t0, 0.0f, 1.0f); /* lower left */ - SET_ATTRIB(1, attr, s1, t0, 0.0f, 1.0f); /* lower right */ - SET_ATTRIB(2, attr, s1, t1, 0.0f, 1.0f); /* upper right */ - SET_ATTRIB(3, attr, s0, t1, 0.0f, 1.0f); /* upper left */ - - semantic_names[attr] = TGSI_SEMANTIC_GENERIC; - semantic_indexes[attr] = 0; - - attr++; - } - } - - pipe_buffer_unmap(pipe, vbuffer, vbuffer_transfer); - -#undef SET_ATTRIB - } - - - cso_save_viewport(cso); - cso_save_vertex_shader(cso); - cso_save_vertex_elements(cso); - - { - void *vs = lookup_shader(pipe, numAttribs, - semantic_names, semantic_indexes); - cso_set_vertex_shader_handle(cso, vs); - } - - for (i = 0; i < numAttribs; i++) { - velements[i].src_offset = i * 4 * sizeof(float); - velements[i].instance_divisor = 0; - velements[i].vertex_buffer_index = 0; - velements[i].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - } - cso_set_vertex_elements(cso, numAttribs, velements); - - /* viewport state: viewport matching window dims */ - { - const struct gl_framebuffer *fb = st->ctx->DrawBuffer; - const GLboolean invert = (st_fb_orientation(fb) == Y_0_TOP); - const GLfloat width = (GLfloat)fb->Width; - const GLfloat height = (GLfloat)fb->Height; - struct pipe_viewport_state vp; - vp.scale[0] = 0.5f * width; - vp.scale[1] = height * (invert ? -0.5f : 0.5f); - vp.scale[2] = 1.0f; - vp.scale[3] = 1.0f; - vp.translate[0] = 0.5f * width; - vp.translate[1] = 0.5f * height; - vp.translate[2] = 0.0f; - vp.translate[3] = 0.0f; - cso_set_viewport(cso, &vp); - } - - - util_draw_vertex_buffer(pipe, vbuffer, - 0, /* offset */ - PIPE_PRIM_TRIANGLE_FAN, - 4, /* verts */ - numAttribs); /* attribs/vert */ - - - pipe_resource_reference(&vbuffer, NULL); - - /* restore state */ - cso_restore_viewport(cso); - cso_restore_vertex_shader(cso); - cso_restore_vertex_elements(cso); -} - - -#endif /* FEATURE_OES_draw_texture */ - - -void -st_init_drawtex_functions(struct dd_function_table *functions) -{ - _MESA_INIT_DRAWTEX_FUNCTIONS(functions, st_); -} - - -/** - * Free any cached shaders - */ -void -st_destroy_drawtex(struct st_context *st) -{ - GLuint i; - for (i = 0; i < NumCachedShaders; i++) { - cso_delete_vertex_shader(st->cso_context, CachedShaders[i].handle); - } - NumCachedShaders = 0; -} diff --git a/src/mesa/es/state_tracker/st_cb_drawtex.h b/src/mesa/es/state_tracker/st_cb_drawtex.h deleted file mode 100644 index 7b0da702798..00000000000 --- a/src/mesa/es/state_tracker/st_cb_drawtex.h +++ /dev/null @@ -1,18 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - **************************************************************************/ - - -#ifndef ST_CB_DRAWTEX_H -#define ST_CB_DRAWTEX_H - -extern void -st_init_drawtex_functions(struct dd_function_table *functions); - -extern void -st_destroy_drawtex(struct st_context *st); - -#endif /* ST_CB_DRAWTEX_H */ |