pax_global_header00006660000000000000000000000064142034427540014517gustar00rootroot0000000000000052 comment=c84bc9459357a40e46e2fec0408d04fbdde2c973 libepoxy-1.5.10/000077500000000000000000000000001420344275400134365ustar00rootroot00000000000000libepoxy-1.5.10/.dir-locals.el000066400000000000000000000001211420344275400160610ustar00rootroot00000000000000((nil (indent-tabs-mode . nil) (tab-width . 8) (c-basic-offset . 4) ) ) libepoxy-1.5.10/.editorconfig000066400000000000000000000004571420344275400161210ustar00rootroot00000000000000root = true [*] charset = utf-8 [*.{c,h}] indent_style = space indent_size = 4 end_of_line = lf trim_trailing_whitespace = true insert_final_newline = true [.travis.yml] indent_style = space indent_size = 2 [*.md] trim_trailing_whitespace = false [meson.build] indent_style = space indent_size = 8 libepoxy-1.5.10/.github/000077500000000000000000000000001420344275400147765ustar00rootroot00000000000000libepoxy-1.5.10/.github/scripts/000077500000000000000000000000001420344275400164655ustar00rootroot00000000000000libepoxy-1.5.10/.github/scripts/epoxy-ci-linux.sh000077500000000000000000000007151420344275400217210ustar00rootroot00000000000000#!/bin/bash dump_log_and_quit() { local exitcode=$1 cat meson-logs/testlog.txt exit $exitcode } # Start Xvfb XVFB_WHD=${XVFB_WHD:-1280x720x16} Xvfb :99 -ac -screen 0 $XVFB_WHD -nolisten tcp & xvfb=$! export DISPLAY=:99 srcdir=$( pwd ) builddir=$( mktemp -d build_XXXXXX ) meson --prefix /usr "$@" $builddir $srcdir || exit $? cd $builddir ninja || exit $? meson test || dump_log_and_quit $? cd .. # Stop Xvfb kill -9 ${xvfb} libepoxy-1.5.10/.github/scripts/epoxy-ci-osx.sh000077500000000000000000000007271420344275400213760ustar00rootroot00000000000000#!/bin/sh dump_log_and_quit() { local exitcode=$1 cat meson-logs/testlog.txt exit $exitcode } export SDKROOT=$( xcodebuild -version -sdk macosx Path ) export CPPFLAGS=-I/usr/local/include export LDFLAGS=-L/usr/local/lib export OBJC=$CC export PATH=$HOME/tools:$PATH srcdir=$( pwd ) builddir=$( mktemp -d build_XXXXXX ) meson ${BUILDOPTS} $builddir $srcdir || exit $? cd $builddir ninja || exit $? meson test || dump_log_and_quit $? cd .. libepoxy-1.5.10/.github/workflows/000077500000000000000000000000001420344275400170335ustar00rootroot00000000000000libepoxy-1.5.10/.github/workflows/linux.yml000066400000000000000000000016211420344275400207150ustar00rootroot00000000000000name: Ubuntu on: push: branches-ignore: - debian - khronos-registry jobs: build: strategy: matrix: os: - ubuntu-18.04 compiler: - gcc - clang build-opts: - '' - '-Dglx=no' - '-Degl=no' - '-Dx11=false' runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - run: > sudo apt-get update && sudo apt-get install --no-install-recommends libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev libgl1-mesa-dri ninja-build - uses: actions/setup-python@v2 with: python-version: 3.x - run: | python -m pip install --upgrade pip pip3 install meson /bin/sh -c "CC=${{ matrix.compiler }} .github/scripts/epoxy-ci-linux.sh ${{ matrix.build-opts }}" libepoxy-1.5.10/.github/workflows/macos.yml000066400000000000000000000011231420344275400206550ustar00rootroot00000000000000name: macOS on: push: branches-ignore: - debian - khronos-registry jobs: build: strategy: matrix: build-opts: - '' - '-Dglx=no' - '-Degl=no' - '-Dx11=false' runs-on: macos-10.15 steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.x - run: | brew install ninja python -m pip install --upgrade pip pip3 install meson /bin/sh -c "CC=clang .github/scripts/epoxy-ci-osx.sh ${{ matrix.build-opts }}" libepoxy-1.5.10/.github/workflows/msvc-env.yml000066400000000000000000000007601420344275400213170ustar00rootroot00000000000000name: MSVC Build on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: windows-latest env: PYTHONIOENCODING: "utf-8" steps: - uses: actions/checkout@master - uses: actions/setup-python@v1 - uses: seanmiddleditch/gha-setup-vsdevenv@master - uses: BSFishy/meson-build@v1.0.1 with: action: test directory: _build options: --verbose --fatal-meson-warnings meson-version: 0.54.3 libepoxy-1.5.10/.github/workflows/msys2.yml000066400000000000000000000012071420344275400206330ustar00rootroot00000000000000name: MSYS2 Build on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: windows-latest defaults: run: shell: msys2 {0} env: PYTHONIOENCODING: "utf-8" steps: - uses: actions/checkout@master - uses: msys2/setup-msys2@v2 with: msystem: MINGW64 update: true install: base-devel git mingw-w64-x86_64-meson mingw-w64-x86_64-ninja mingw-w64-x86_64-pkg-config mingw-w64-x86_64-python3 mingw-w64-x86_64-python3-pip mingw-w64-x86_64-toolchain - name: Build run: | meson setup _build meson compile -C _build libepoxy-1.5.10/.gitignore000066400000000000000000000020151420344275400154240ustar00rootroot00000000000000# # X.Org module default exclusion patterns # The next section if for module specific patterns # # Do not edit the following section # GNU Build System (Autotools) aclocal.m4 autom4te.cache/ autoscan.log ChangeLog compile config.guess config.h config.h.in config.log config-ml.in config.py config.status config.status.lineno config.sub configure configure.scan depcomp .deps/ INSTALL install-sh .libs/ libtool libtool.m4 ltmain.sh lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 Makefile Makefile.in mdate-sh missing mkinstalldirs *.pc py-compile stamp-h? symlink-tree texinfo.tex ylwrap src/sna/git_version.h src/sna/brw/brw_test # Do not edit the following section # Edit Compile Debug Document Distribute *~ *.[0-9] *.[0-9]x *.bak *.bin core *.dll *.exe *-ISO*.bdf *-JIS*.bdf *-KOI8*.bdf *.kld *.ko *.ko.cmd *.lai *.l[oa] *.[oa] *.obj *.so *.pcf.gz *.pdb *.tar.bz2 *.tar.gz # # Add & Override patterns for gldispatch # # Edit the following section as needed # For example, !report.pc overrides *.pc. See 'man gitignore' # libepoxy-1.5.10/COPYING000066400000000000000000000046411420344275400144760ustar00rootroot00000000000000The libepoxy project code is covered by the MIT license: /* * Copyright © 2013-2014 Intel Corporation * * 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. */ The generated code is derived from Khronos's xml files, which appear under the following license: /* * Copyright (c) 2013 The Khronos Group Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and/or associated documentation files (the * "Materials"), to deal in the Materials without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Materials, and to * permit persons to whom the Materials are 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 Materials. * * THE MATERIALS ARE 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 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. */ libepoxy-1.5.10/README.md000066400000000000000000000102231420344275400147130ustar00rootroot00000000000000![Ubuntu](https://github.com/anholt/libepoxy/workflows/Ubuntu/badge.svg) ![macOS](https://github.com/anholt/libepoxy/workflows/macOS/badge.svg) ![MSVC Build](https://github.com/anholt/libepoxy/workflows/MSVC%20Build/badge.svg) ![MSYS2 Build](https://github.com/anholt/libepoxy/workflows/MSYS2%20Build/badge.svg) [![License: MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT) Epoxy is a library for handling OpenGL function pointer management for you. It hides the complexity of `dlopen()`, `dlsym()`, `glXGetProcAddress()`, `eglGetProcAddress()`, etc. from the app developer, with very little knowledge needed on their part. They get to read GL specs and write code using undecorated function names like `glCompileShader()`. Don't forget to check for your extensions or versions being present before you use them, just like before! We'll tell you what you forgot to check for instead of just segfaulting, though. Features -------- * Automatically initializes as new GL functions are used. * GL 4.6 core and compatibility context support. * GLES 1/2/3 context support. * Knows about function aliases so (e.g.) `glBufferData()` can be used with `GL_ARB_vertex_buffer_object` implementations, along with GL 1.5+ implementations. * EGL, GLX, and WGL support. * Can be mixed with non-epoxy GL usage. Building -------- ```sh mkdir _build && cd _build meson ninja sudo ninja install ``` Dependencies for Debian: * meson * libegl1-mesa-dev Dependencies for macOS (using MacPorts): * pkgconfig * meson The test suite has additional dependencies depending on the platform. (X11, EGL, a running X Server). Switching your code to using epoxy ---------------------------------- It should be as easy as replacing: ```cpp #include #include #include ``` with: ```cpp #include #include ``` As long as epoxy's headers appear first, you should be ready to go. Additionally, some new helpers become available, so you don't have to write them: `int epoxy_gl_version()` returns the GL version: * 12 for GL 1.2 * 20 for GL 2.0 * 44 for GL 4.4 `bool epoxy_has_gl_extension()` returns whether a GL extension is available (`GL_ARB_texture_buffer_object`, for example). Note that this is not terribly fast, so keep it out of your hot paths, ok? Why not use libGLEW? -------------------- GLEW has several issues: * Doesn't know about aliases of functions (There are 5 providers of `glPointParameterfv()`, for example, and you don't want to have to choose which one to call when they're all the same). * Doesn't support OpenGL ES. * Has a hard-to-maintain parser of extension specification text instead of using the old .spec file or the new .xml. * Has significant startup time overhead when `glewInit()` autodetects the world. * User-visible multithreading support choice for win32. The motivation for this project came out of previous use of libGLEW in [piglit](http://piglit.freedesktop.org/). Other GL dispatch code generation projects had similar failures. Ideally, piglit wants to be able to build a single binary for a test that can run on whatever context or window system it chooses, not based on link time choices. We had to solve some of GLEW's problems for piglit and solving them meant replacing every single piece of GLEW, so we built piglit-dispatch from scratch. And since we wanted to reuse it in other GL-related projects, this is the result. Known issues when running on Windows ------------------------------------ The automatic per-context symbol resolution for win32 requires that epoxy knows when `wglMakeCurrent()` is called, because `wglGetProcAddress()` returns values depend on the context's device and pixel format. If `wglMakeCurrent()` is called from outside of epoxy (in a way that might change the device or pixel format), then epoxy needs to be notified of the change using the `epoxy_handle_external_wglMakeCurrent()` function. The win32 `wglMakeCurrent()` variants are slower than they should be, because they should be caching the resolved dispatch tables instead of resetting an entire thread-local dispatch table every time. libepoxy-1.5.10/cross/000077500000000000000000000000001420344275400145675ustar00rootroot00000000000000libepoxy-1.5.10/cross/fedora-mingw64.txt000066400000000000000000000011371420344275400200630ustar00rootroot00000000000000[binaries] c = '/usr/bin/x86_64-w64-mingw32-gcc' cpp = '/usr/bin/x86_64-w64-mingw32-cpp' ar = '/usr/bin/x86_64-w64-mingw32-ar' strip = '/usr/bin/x86_64-w64-mingw32-strip' pkgconfig = '/usr/bin/x86_64-w64-mingw32-pkg-config' exe_wrapper = 'wine' [properties] root = '/usr/x86_64-w64-mingw32/sys-root/mingw' c_args = [ '-pipe', '-Wp,-D_FORTIFY_SOURCE=2', '-fexceptions', '--param=ssp-buffer-size=4', '-I/usr/x86_64-w64-mingw32/sys-root/mingw/include' ] c_link_args = [ '-L/usr/x86_64-w64-mingw32/sys-root/mingw/lib' ] [host_machine] system = 'windows' cpu_family = 'x86_64' cpu = 'x86_64' endian = 'little' libepoxy-1.5.10/doc/000077500000000000000000000000001420344275400142035ustar00rootroot00000000000000libepoxy-1.5.10/doc/Doxyfile.in000066400000000000000000000155421420344275400163250ustar00rootroot00000000000000DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = @PACKAGE_NAME@ PROJECT_NUMBER = @PACKAGE_VERSION@ PROJECT_BRIEF = PROJECT_LOGO = OUTPUT_DIRECTORY = doc CREATE_SUBDIRS = NO ALLOW_UNICODE_NAMES = YES OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = YES STRIP_FROM_PATH = "@top_srcdir@/include" "@top_builddir@/include" SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 8 ALIASES = "newin{2}=\xrefitem since_\1_\2 \"Since @PACKAGE_NAME@ \1.\2\" \"New API in @PACKAGE_NAME@ \1.\2\"" TCL_SUBST = OPTIMIZE_OUTPUT_FOR_C = YES OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO EXTENSION_MAPPING = MARKDOWN_SUPPORT = YES AUTOLINK_SUPPORT = YES BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = NO DISTRIBUTE_GROUP_DOC = NO GROUP_NESTED_COMPOUNDS = NO SUBGROUPING = YES INLINE_GROUPED_CLASSES = NO INLINE_SIMPLE_STRUCTS = NO TYPEDEF_HIDES_STRUCT = NO LOOKUP_CACHE_SIZE = 0 EXTRACT_ALL = YES EXTRACT_PRIVATE = NO EXTRACT_PACKAGE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = NO EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO HIDE_UNDOC_MEMBERS = YES HIDE_UNDOC_CLASSES = YES HIDE_FRIEND_COMPOUNDS = YES HIDE_IN_BODY_DOCS = YES INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO HIDE_COMPOUND_REFERENCE= NO SHOW_INCLUDE_FILES = YES SHOW_GROUPED_MEMB_INC = NO FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_MEMBERS_CTORS_1ST = YES SORT_GROUP_NAMES = YES SORT_BY_SCOPE_NAME = YES STRICT_PROTO_MATCHING = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = NO GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 2 SHOW_USED_FILES = YES SHOW_FILES = YES SHOW_NAMESPACES = NO FILE_VERSION_FILTER = LAYOUT_FILE = CITE_BIB_FILES = QUIET = YES WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = YES WARN_AS_ERROR = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = doc/doxygen.log INPUT = "@top_srcdir@/include/epoxy" "@top_srcdir@/src" INPUT_ENCODING = UTF-8 FILE_PATTERNS = "*.h" "*.c" RECURSIVE = NO EXCLUDE = "@top_srcdir@/src/gen_dispatch.py" EXCLUDE_SYMLINKS = YES EXCLUDE_PATTERNS = EXCLUDE_SYMBOLS = _* GLAPI* KHRONOS_* APIENTRY* GLX* wgl* EPOXY_CALLSPEC EPOXY_BEGIN_DECLS EPOXY_END_DECLS EXAMPLE_PATH = EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO FILTER_SOURCE_PATTERNS = USE_MDFILE_AS_MAINPAGE = SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO REFERENCES_LINK_SOURCE = YES SOURCE_TOOLTIPS = YES USE_HTAGS = NO VERBATIM_HEADERS = NO ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 3 IGNORE_PREFIX = "epoxy" GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = HTML_EXTRA_FILES = HTML_COLORSTYLE_HUE = 220 HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_GAMMA = 80 HTML_TIMESTAMP = YES HTML_DYNAMIC_SECTIONS = NO HTML_INDEX_NUM_ENTRIES = 100 GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" DOCSET_BUNDLE_ID = org.doxygen.Project DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_NAME = Publisher GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO CHM_INDEX_ENCODING = BINARY_TOC = NO TOC_EXPAND = NO GENERATE_QHP = NO QCH_FILE = QHP_NAMESPACE = QHP_VIRTUAL_FOLDER = doc QHP_CUST_FILTER_NAME = QHP_CUST_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS = QHG_LOCATION = GENERATE_ECLIPSEHELP = NO ECLIPSE_DOC_ID = org.doxygen.Project DISABLE_INDEX = NO GENERATE_TREEVIEW = NO ENUM_VALUES_PER_LINE = 1 TREEVIEW_WIDTH = 250 EXT_LINKS_IN_WINDOW = NO FORMULA_FONTSIZE = 10 FORMULA_TRANSPARENT = YES USE_MATHJAX = NO MATHJAX_FORMAT = HTML-CSS MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest MATHJAX_EXTENSIONS = MATHJAX_CODEFILE = SEARCHENGINE = NO SERVER_BASED_SEARCH = NO EXTERNAL_SEARCH = NO SEARCHENGINE_URL = SEARCHDATA_FILE = EXTERNAL_SEARCH_ID = EXTRA_SEARCH_MAPPINGS = GENERATE_LATEX = NO GENERATE_RTF = NO GENERATE_MAN = NO GENERATE_XML = NO GENERATE_DOCBOOK = NO GENERATE_AUTOGEN_DEF = NO GENERATE_PERLMOD = NO ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES SEARCH_INCLUDES = YES INCLUDE_PATH = "@top_srcdir@/include" \ "@top_builddir@/include" INCLUDE_FILE_PATTERNS = *.h PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS \ "EPOXY_BEGIN_DECLS=" \ "EPOXY_END_DECLS=" \ "EPOXY_PUBLIC=" EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES ALLEXTERNALS = NO EXTERNAL_GROUPS = NO EXTERNAL_PAGES = NO HAVE_DOT = @HAVE_DOT@ CLASS_DIAGRAMS = NO MSCGEN_PATH = DIA_PATH = HIDE_UNDOC_RELATIONS = NO DOT_NUM_THREADS = 0 DOT_FONTNAME = Sans DOT_FONTSIZE = 10 DOT_FONTPATH = CLASS_GRAPH = NO COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES UML_LOOK = NO UML_LIMIT_NUM_FIELDS = 10 TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = NO INCLUDED_BY_GRAPH = NO CALL_GRAPH = NO CALLER_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = png INTERACTIVE_SVG = NO DOT_PATH = DOTFILE_DIRS = MSCFILE_DIRS = DIAFILE_DIRS = PLANTUML_JAR_PATH = PLANTUML_INCLUDE_PATH = DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 0 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = YES GENERATE_LEGEND = YES DOT_CLEANUP = YES libepoxy-1.5.10/doc/meson.build000066400000000000000000000016641420344275400163540ustar00rootroot00000000000000doxyfile_conf = configuration_data() doxyfile_conf.set('PACKAGE_NAME', meson.project_name()) doxyfile_conf.set('PACKAGE_VERSION', meson.project_version()) doxyfile_conf.set('top_srcdir', meson.source_root()) doxyfile_conf.set('top_builddir', meson.build_root()) if find_program('dot', required: false).found() doxyfile_conf.set('HAVE_DOT', 'YES') else doxyfile_conf.set('HAVE_DOT', 'NO') endif doxyfile = configure_file(input: 'Doxyfile.in', output: 'Doxyfile', configuration: doxyfile_conf, install: false) docdir = join_paths(epoxy_datadir, 'doc') html_target = custom_target('epoxy-docs', input: [ doxyfile ], output: [ 'html' ], command: [ doxygen, doxyfile ], install: true, install_dir: join_paths(docdir, 'epoxy')) libepoxy-1.5.10/include/000077500000000000000000000000001420344275400150615ustar00rootroot00000000000000libepoxy-1.5.10/include/epoxy/000077500000000000000000000000001420344275400162255ustar00rootroot00000000000000libepoxy-1.5.10/include/epoxy/common.h000066400000000000000000000037061420344275400176740ustar00rootroot00000000000000/* * Copyright 2017 Emmanuele Bassi * * 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. */ /** @file common.h * * A common header file, used to define macros and shared symbols. */ #ifndef EPOXY_COMMON_H #define EPOXY_COMMON_H #ifdef __cplusplus # define EPOXY_BEGIN_DECLS extern "C" { # define EPOXY_END_DECLS } #else # define EPOXY_BEGIN_DECLS # define EPOXY_END_DECLS #endif #ifndef EPOXY_PUBLIC # if defined(_MSC_VER) # define EPOXY_PUBLIC __declspec(dllimport) extern # else # define EPOXY_PUBLIC extern # endif #endif #if defined(_MSC_VER) && !defined(__bool_true_false_are_defined) && (_MSC_VER < 1800) typedef unsigned char bool; # define false 0 # define true 1 #else # include #endif EPOXY_BEGIN_DECLS EPOXY_PUBLIC bool epoxy_extension_in_string(const char *extension_list, const char *ext); EPOXY_END_DECLS #endif /* EPOXY_COMMON_H */ libepoxy-1.5.10/include/epoxy/egl.h000066400000000000000000000034601420344275400171500ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** @file egl.h * * Provides an implementation of an EGL dispatch layer using global * function pointers * * You should include `` instead of ``. */ #ifndef EPOXY_EGL_H #define EPOXY_EGL_H #include "epoxy/common.h" #if defined(__egl_h_) || defined(__eglext_h_) #error epoxy/egl.h must be included before (or in place of) GL/egl.h #else #define __egl_h_ #define __eglext_h_ #endif EPOXY_BEGIN_DECLS #include "epoxy/egl_generated.h" EPOXY_PUBLIC bool epoxy_has_egl_extension(EGLDisplay dpy, const char *extension); EPOXY_PUBLIC int epoxy_egl_version(EGLDisplay dpy); EPOXY_PUBLIC bool epoxy_has_egl(void); EPOXY_END_DECLS #endif /* EPOXY_EGL_H */ libepoxy-1.5.10/include/epoxy/gl.h000066400000000000000000000060401420344275400170000ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** @file gl.h * * Provides an implementation of a GL dispatch layer using either * global function pointers or a hidden vtable. * * You should include `` instead of `` and ``. */ #ifndef EPOXY_GL_H #define EPOXY_GL_H #include "epoxy/common.h" #if defined(__gl_h_) || defined(__glext_h_) #error epoxy/gl.h must be included before (or in place of) GL/gl.h #else #define __gl_h_ #define __glext_h_ #endif #define KHRONOS_SUPPORT_INT64 1 #define KHRONOS_SUPPORT_FLOAT 1 #define KHRONOS_APIATTRIBUTES #ifndef _WIN32 /* APIENTRY and GLAPIENTRY are not used on Linux or Mac. */ #define APIENTRY #define GLAPIENTRY #define EPOXY_CALLSPEC #define GLAPI #define KHRONOS_APIENTRY #define KHRONOS_APICALL #else #ifndef APIENTRY #define APIENTRY __stdcall #endif #ifndef GLAPIENTRY #define GLAPIENTRY APIENTRY #endif #ifndef EPOXY_CALLSPEC #define EPOXY_CALLSPEC __stdcall #endif #ifndef GLAPI #define GLAPI extern #endif #define KHRONOS_APIENTRY __stdcall #define KHRONOS_APICALL __declspec(dllimport) __stdcall #endif /* _WIN32 */ #ifndef APIENTRYP #define APIENTRYP APIENTRY * #endif #ifndef GLAPIENTRYP #define GLAPIENTRYP GLAPIENTRY * #endif EPOXY_BEGIN_DECLS #include "epoxy/gl_generated.h" EPOXY_PUBLIC bool epoxy_has_gl_extension(const char *extension); EPOXY_PUBLIC bool epoxy_is_desktop_gl(void); EPOXY_PUBLIC int epoxy_gl_version(void); EPOXY_PUBLIC int epoxy_glsl_version(void); /* * the type of the stub function that the failure handler must return; * this function will be called on subsequent calls to the same bogus * function name */ typedef void (*epoxy_resolver_stub_t)(void); /* the type of the failure handler itself */ typedef epoxy_resolver_stub_t (*epoxy_resolver_failure_handler_t)(const char *name); EPOXY_PUBLIC epoxy_resolver_failure_handler_t epoxy_set_resolver_failure_handler(epoxy_resolver_failure_handler_t handler); EPOXY_END_DECLS #endif /* EPOXY_GL_H */ libepoxy-1.5.10/include/epoxy/glx.h000066400000000000000000000036001420344275400171670ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** @file glx.h * * Provides an implementation of a GLX dispatch layer using global * function pointers. * * You should include `` instead of ``. */ #ifndef EPOXY_GLX_H #define EPOXY_GLX_H #include #include #include #if defined(GLX_H) || defined(__glxext_h_) #error epoxy/glx.h must be included before (or in place of) GL/glx.h #else #define GLX_H #define __glx_h__ #define __glxext_h_ #endif EPOXY_BEGIN_DECLS #include "epoxy/glx_generated.h" EPOXY_PUBLIC bool epoxy_has_glx_extension(Display *dpy, int screen, const char *extension); EPOXY_PUBLIC int epoxy_glx_version(Display *dpy, int screen); EPOXY_PUBLIC bool epoxy_has_glx(Display *dpy); EPOXY_END_DECLS #endif /* EPOXY_GLX_H */ libepoxy-1.5.10/include/epoxy/meson.build000066400000000000000000000022721420344275400203720ustar00rootroot00000000000000headers = [ 'common.h' ] # GL is always generated generated_headers = [ [ 'gl.h', 'gl_generated.h', gl_registry ] ] if build_egl generated_headers += [ [ 'egl.h', 'egl_generated.h', egl_registry ] ] endif if build_glx generated_headers += [ [ 'glx.h', 'glx_generated.h', glx_registry ] ] endif if build_wgl generated_headers += [ [ 'wgl.h', 'wgl_generated.h', wgl_registry ] ] endif gen_headers = [] foreach g: generated_headers header = g[0] gen_header = g[1] registry = g[2] generated = custom_target(gen_header, input: registry, output: [ gen_header ], command: [ gen_dispatch_py, '--header', '--no-source', '--outputdir=@OUTDIR@', '@INPUT@', ], install: true, install_dir: join_paths(epoxy_includedir, 'epoxy')) gen_headers += [ generated ] headers += [ header ] endforeach epoxy_headers = files(headers) + gen_headers install_headers(headers, subdir: 'epoxy') libepoxy-1.5.10/include/epoxy/wgl.h000066400000000000000000000035321420344275400171720ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** @file wgl.h * * Provides an implementation of a WGL dispatch layer using a hidden * vtable. */ #ifndef EPOXY_WGL_H #define EPOXY_WGL_H #include #include "epoxy/common.h" #undef wglUseFontBitmaps #undef wglUseFontOutlines #if defined(__wglxext_h_) #error epoxy/wgl.h must be included before (or in place of) wgl.h #else #define __wglxext_h_ #endif #ifdef UNICODE #define wglUseFontBitmaps wglUseFontBitmapsW #else #define wglUseFontBitmaps wglUseFontBitmapsA #endif EPOXY_BEGIN_DECLS #include "epoxy/wgl_generated.h" EPOXY_PUBLIC bool epoxy_has_wgl_extension(HDC hdc, const char *extension); EPOXY_PUBLIC void epoxy_handle_external_wglMakeCurrent(void); EPOXY_END_DECLS #endif /* EPOXY_WGL_H */ libepoxy-1.5.10/meson.build000066400000000000000000000166211420344275400156060ustar00rootroot00000000000000project('libepoxy', 'c', version: '1.5.10', default_options: [ 'buildtype=debugoptimized', 'c_std=gnu99', 'warning_level=1', ], license: 'MIT', meson_version: '>= 0.54.0') epoxy_version = meson.project_version().split('.') epoxy_major_version = epoxy_version[0].to_int() epoxy_minor_version = epoxy_version[1].to_int() epoxy_micro_version = epoxy_version[2].to_int() epoxy_prefix = get_option('prefix') epoxy_libdir = join_paths(epoxy_prefix, get_option('libdir')) epoxy_datadir = join_paths(epoxy_prefix, get_option('datadir')) epoxy_includedir = join_paths(epoxy_prefix, get_option('includedir')) cc = meson.get_compiler('c') host_system = host_machine.system() conf = configuration_data() conf.set_quoted('PACKAGE_NAME', meson.project_name()) conf.set_quoted('PACKAGE_VERSION', meson.project_version()) conf.set_quoted('PACKAGE_STRING', '@0@-@1@'.format(meson.project_name(), meson.project_version())) conf.set_quoted('PACKAGE_DATADIR', join_paths(get_option('prefix'), get_option('datadir'))) conf.set_quoted('PACKAGE_LIBDIR', join_paths(get_option('prefix'), get_option('libdir'))) conf.set_quoted('PACKAGE_LOCALEDIR', join_paths(get_option('prefix'), get_option('datadir'), 'locale')) conf.set_quoted('PACKAGE_LIBEXECDIR', join_paths(get_option('prefix'), get_option('libexecdir'))) conf.set('HAVE_KHRPLATFORM_H', cc.has_header('KHR/khrplatform.h')) # GLX can be used on different platforms, so we expose a # configure time switch to enable or disable it; in case # the "auto" default value is set, we only enable GLX # support on Linux and Unix enable_glx = get_option('glx') if enable_glx == 'auto' build_glx = not ['windows', 'darwin', 'android', 'haiku'].contains(host_system) else build_glx = enable_glx == 'yes' endif enable_egl = get_option('egl') if enable_egl == 'auto' build_egl = not ['windows', 'darwin'].contains(host_system) else build_egl = enable_egl == 'yes' endif enable_x11 = get_option('x11') if not enable_x11 if enable_glx == 'yes' error('GLX support is explicitly enabled, but X11 was disabled') endif build_glx = false endif # The remaining platform specific API for GL/GLES are enabled # depending on the platform we're building for if host_system == 'windows' build_wgl = true has_znow = true elif host_system == 'darwin' build_wgl = false has_znow = false else build_wgl = false has_znow = true endif conf.set10('ENABLE_GLX', build_glx) conf.set10('ENABLE_EGL', build_egl) conf.set10('ENABLE_X11', enable_x11) # Compiler flags, taken from the Xorg macros if cc.get_id() == 'msvc' # Compiler options taken from msvc_recommended_pragmas.h # in GLib, based on _Win32_Programming_ by Rector and Newcomer test_cflags = [ '-we4002', # too many actual parameters for macro '-we4003', # not enough actual parameters for macro '-w14010', # single-line comment contains line-continuation character '-we4013', # 'function' undefined; assuming extern returning int '-w14016', # no function return type; using int as default '-we4020', # too many actual parameters '-we4021', # too few actual parameters '-we4027', # function declared without formal parameter list '-we4029', # declared formal parameter list different from definition '-we4033', # 'function' must return a value '-we4035', # 'function' : no return value '-we4045', # array bounds overflow '-we4047', # different levels of indirection '-we4049', # terminating line number emission '-we4053', # an expression of type void was used as an operand '-we4071', # no function prototype given '-we4819', # the file contains a character that cannot be represented in the current code page '/utf-8', # Set the input and exec encoding to utf-8, like is the default with GCC ] elif cc.get_id() == 'gcc' or cc.get_id() == 'clang' test_cflags = [ '-Wpointer-arith', '-Wmissing-declarations', '-Wformat=2', '-Wstrict-prototypes', '-Wmissing-prototypes', '-Wnested-externs', '-Wbad-function-cast', '-Wold-style-definition', '-Wdeclaration-after-statement', '-Wunused', '-Wuninitialized', '-Wshadow', '-Wmissing-noreturn', '-Wmissing-format-attribute', '-Wredundant-decls', '-Wlogical-op', '-Werror=implicit', '-Werror=nonnull', '-Werror=init-self', '-Werror=main', '-Werror=missing-braces', '-Werror=sequence-point', '-Werror=return-type', '-Werror=trigraphs', '-Werror=array-bounds', '-Werror=write-strings', '-Werror=address', '-Werror=int-to-pointer-cast', '-Werror=pointer-to-int-cast', '-fno-strict-aliasing', '-Wno-int-conversion', ] else test_cflags = [] endif common_cflags = cc.get_supported_arguments(test_cflags) libtype = get_option('default_library') # Visibility compiler flags; we only use this for shared libraries visibility_cflags = [] if libtype == 'shared' if host_system == 'windows' conf.set('DLL_EXPORT', true) conf.set('EPOXY_PUBLIC', '__declspec(dllexport) extern') if cc.get_id() != 'msvc' visibility_cflags += [ '-fvisibility=hidden' ] endif else conf.set('EPOXY_PUBLIC', '__attribute__((visibility("default"))) extern') visibility_cflags += [ '-fvisibility=hidden' ] endif endif # The inline keyword is available only for C++ in MSVC. # So we need to use Microsoft specific __inline. if host_system == 'windows' if cc.get_id() == 'msvc' conf.set('inline', '__inline') endif endif # Dependencies dl_dep = cc.find_library('dl', required: false) gl_dep = dependency('gl', required: false) egl_dep = dependency('egl', required: false) elg_headers_dep = egl_dep.partial_dependency(compile_args: true, includes: true) # Optional dependencies for tests x11_dep = dependency('x11', required: false) x11_headers_dep = x11_dep.partial_dependency(compile_args: true, includes: true) # GLES v2 and v1 may have pkg-config files, courtesy of downstream # packagers; let's check those first, and fall back to find_library() # if we fail gles2_dep = dependency('glesv2', required: false) if not gles2_dep.found() gles2_dep = cc.find_library('libGLESv2', required: false) endif gles1_dep = dependency('glesv1_cm', required: false) if not gles1_dep.found() gles1_dep = cc.find_library('libGLESv1_CM', required: false) endif # On windows, the DLL has to have all of its functions # resolved at link time, so we have to link directly against # opengl32. But that's the only GL provider, anyway. if host_system == 'windows' opengl32_dep = cc.find_library('opengl32', required: true) # When building against static libraries, we need to control # the order of the dependencies, and gdi32 provides symbols # needed when using opengl32, like SetPixelFormat and # ChoosePixelFormat. This is mostly a workaround for older # versions of Meson. gdi32_dep = cc.find_library('gdi32', required: true) endif # Generates the dispatch tables gen_dispatch_py = find_program('src/gen_dispatch.py') gl_registry = files('registry/gl.xml') egl_registry = files('registry/egl.xml') glx_registry = files('registry/glx.xml') wgl_registry = files('registry/wgl.xml') libepoxy_inc = [ include_directories('include'), include_directories('src'), ] subdir('include/epoxy') subdir('src') if get_option('tests') subdir('test') endif if get_option('docs') doxygen = find_program('doxygen', required: false) if doxygen.found() subdir('doc') else message('Documentation disabled without doxygen') endif endif libepoxy-1.5.10/meson_options.txt000066400000000000000000000012021420344275400170660ustar00rootroot00000000000000option('docs', type: 'boolean', value: false, description: 'Enable generating the Epoxy API reference (depends on Doxygen)') option('glx', type: 'combo', choices: [ 'auto', 'yes', 'no' ], value: 'auto', description: 'Enable GLX support') option('egl', type: 'combo', choices: [ 'auto', 'yes', 'no' ], value: 'auto', description: 'Enable EGL support') option('x11', type: 'boolean', value: true, description: 'Enable X11 support (GLX or EGL-X11)') option('tests', type: 'boolean', value: true, description: 'Build the test suite') libepoxy-1.5.10/registry/000077500000000000000000000000001420344275400153065ustar00rootroot00000000000000libepoxy-1.5.10/registry/README.md000066400000000000000000000011261420344275400165650ustar00rootroot00000000000000## Updating the registry XML In order to update the registry XML files and retain the history you cannot simply download the files the [Khronos website](https://khronos.org/registry/OpenGL/index_gl.php) and copy them into this directory. You should follow these steps, instead: 1. check out the `khronos-registry` branch 2. download the XML files from the Khronos repository 3. copy them under the `registry` directory 4. check the result for consistency and commit it 5. check out the `master` branch and merge the `khronos-registry` branch into it with the appropriate commit message libepoxy-1.5.10/registry/egl.xml000066400000000000000000005316511420344275400166120ustar00rootroot00000000000000 #include <KHR/khrplatform.h> #include <EGL/eglplatform.h> struct AHardwareBuffer; typedef unsigned int EGLBoolean; typedef unsigned int EGLenum; typedef intptr_t EGLAttribKHR; typedef intptr_t EGLAttrib; typedef void *EGLClientBuffer; typedef void *EGLConfig; typedef void *EGLContext; typedef void *EGLDeviceEXT; typedef void *EGLDisplay; typedef void *EGLImage; typedef void *EGLImageKHR; typedef void *EGLLabelKHR; typedef void *EGLObjectKHR; typedef void *EGLOutputLayerEXT; typedef void *EGLOutputPortEXT; typedef void *EGLStreamKHR; typedef void *EGLSurface; typedef void *EGLSync; typedef void *EGLSyncKHR; typedef void *EGLSyncNV; typedef void (*__eglMustCastToProperFunctionPointerType)(void); typedef khronos_utime_nanoseconds_t EGLTimeKHR; typedef khronos_utime_nanoseconds_t EGLTime; typedef khronos_utime_nanoseconds_t EGLTimeNV; typedef khronos_utime_nanoseconds_t EGLuint64NV; typedef khronos_uint64_t EGLuint64KHR; typedef khronos_stime_nanoseconds_t EGLnsecsANDROID; typedef int EGLNativeFileDescriptorKHR; typedef khronos_ssize_t EGLsizeiANDROID; typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize); typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize); struct EGLClientPixmapHI { void *pData; EGLint iWidth; EGLint iHeight; EGLint iStride; }; typedef void ( *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message); EGLBoolean eglBindAPI EGLenum api EGLBoolean eglBindTexImage EGLDisplay dpy EGLSurface surface EGLint buffer EGLBoolean eglChooseConfig EGLDisplay dpy const EGLint *attrib_list EGLConfig *configs EGLint config_size EGLint *num_config EGLBoolean eglClientSignalSyncEXT EGLDisplay dpy EGLSync sync const EGLAttrib *attrib_list EGLint eglClientWaitSync EGLDisplay dpy EGLSync sync EGLint flags EGLTime timeout EGLint eglClientWaitSyncKHR EGLDisplay dpy EGLSyncKHR sync EGLint flags EGLTimeKHR timeout EGLint eglClientWaitSyncNV EGLSyncNV sync EGLint flags EGLTimeNV timeout EGLBoolean eglCopyBuffers EGLDisplay dpy EGLSurface surface EGLNativePixmapType target EGLContext eglCreateContext EGLDisplay dpy EGLConfig config EGLContext share_context const EGLint *attrib_list EGLImageKHR eglCreateDRMImageMESA EGLDisplay dpy const EGLint *attrib_list EGLSyncNV eglCreateFenceSyncNV EGLDisplay dpy EGLenum condition const EGLint *attrib_list EGLImage eglCreateImage EGLDisplay dpy EGLContext ctx EGLenum target EGLClientBuffer buffer const EGLAttrib *attrib_list EGLImageKHR eglCreateImageKHR EGLDisplay dpy EGLContext ctx EGLenum target EGLClientBuffer buffer const EGLint *attrib_list EGLClientBuffer eglCreateNativeClientBufferANDROID const EGLint *attrib_list EGLSurface eglCreatePbufferFromClientBuffer EGLDisplay dpy EGLenum buftype EGLClientBuffer buffer EGLConfig config const EGLint *attrib_list EGLSurface eglCreatePbufferSurface EGLDisplay dpy EGLConfig config const EGLint *attrib_list EGLSurface eglCreatePixmapSurface EGLDisplay dpy EGLConfig config EGLNativePixmapType pixmap const EGLint *attrib_list EGLSurface eglCreatePixmapSurfaceHI EGLDisplay dpy EGLConfig config struct EGLClientPixmapHI *pixmap EGLSurface eglCreatePlatformPixmapSurface EGLDisplay dpy EGLConfig config void *native_pixmap const EGLAttrib *attrib_list EGLSurface eglCreatePlatformPixmapSurfaceEXT EGLDisplay dpy EGLConfig config void *native_pixmap const EGLint *attrib_list EGLSurface eglCreatePlatformWindowSurface EGLDisplay dpy EGLConfig config void *native_window const EGLAttrib *attrib_list EGLSurface eglCreatePlatformWindowSurfaceEXT EGLDisplay dpy EGLConfig config void *native_window const EGLint *attrib_list EGLStreamKHR eglCreateStreamFromFileDescriptorKHR EGLDisplay dpy EGLNativeFileDescriptorKHR file_descriptor EGLStreamKHR eglCreateStreamKHR EGLDisplay dpy const EGLint *attrib_list EGLStreamKHR eglCreateStreamAttribKHR EGLDisplay dpy const EGLAttrib *attrib_list EGLSurface eglCreateStreamProducerSurfaceKHR EGLDisplay dpy EGLConfig config EGLStreamKHR stream const EGLint *attrib_list EGLSyncKHR eglCreateStreamSyncNV EGLDisplay dpy EGLStreamKHR stream EGLenum type const EGLint *attrib_list EGLSync eglCreateSync EGLDisplay dpy EGLenum type const EGLAttrib *attrib_list EGLSyncKHR eglCreateSyncKHR EGLDisplay dpy EGLenum type const EGLint *attrib_list EGLSyncKHR eglCreateSync64KHR EGLDisplay dpy EGLenum type const EGLAttribKHR *attrib_list EGLSurface eglCreateWindowSurface EGLDisplay dpy EGLConfig config EGLNativeWindowType win const EGLint *attrib_list EGLint eglDebugMessageControlKHR EGLDEBUGPROCKHR callback const EGLAttrib *attrib_list EGLBoolean eglDestroyContext EGLDisplay dpy EGLContext ctx EGLBoolean eglDestroyImage EGLDisplay dpy EGLImage image EGLBoolean eglDestroyImageKHR EGLDisplay dpy EGLImageKHR image EGLBoolean eglDestroyStreamKHR EGLDisplay dpy EGLStreamKHR stream EGLBoolean eglDestroySurface EGLDisplay dpy EGLSurface surface EGLBoolean eglDestroySync EGLDisplay dpy EGLSync sync EGLBoolean eglDestroySyncKHR EGLDisplay dpy EGLSyncKHR sync EGLBoolean eglDestroySyncNV EGLSyncNV sync EGLint eglDupNativeFenceFDANDROID EGLDisplay dpy EGLSyncKHR sync EGLBoolean eglExportDMABUFImageMESA EGLDisplay dpy EGLImageKHR image int *fds EGLint *strides EGLint *offsets EGLBoolean eglExportDMABUFImageQueryMESA EGLDisplay dpy EGLImageKHR image int *fourcc int *num_planes EGLuint64KHR *modifiers EGLBoolean eglExportDRMImageMESA EGLDisplay dpy EGLImageKHR image EGLint *name EGLint *handle EGLint *stride EGLBoolean eglFenceNV EGLSyncNV sync EGLBoolean eglGetConfigAttrib EGLDisplay dpy EGLConfig config EGLint attribute EGLint *value EGLBoolean eglGetConfigs EGLDisplay dpy EGLConfig *configs EGLint config_size EGLint *num_config EGLContext eglGetCurrentContext EGLDisplay eglGetCurrentDisplay EGLSurface eglGetCurrentSurface EGLint readdraw EGLDisplay eglGetDisplay EGLNativeDisplayType display_id char *eglGetDisplayDriverConfig EGLDisplay dpy const char *eglGetDisplayDriverName EGLDisplay dpy EGLint eglGetError EGLClientBuffer eglGetNativeClientBufferANDROID const struct AHardwareBuffer *buffer EGLBoolean eglGetOutputLayersEXT EGLDisplay dpy const EGLAttrib *attrib_list EGLOutputLayerEXT *layers EGLint max_layers EGLint *num_layers EGLBoolean eglGetOutputPortsEXT EGLDisplay dpy const EGLAttrib *attrib_list EGLOutputPortEXT *ports EGLint max_ports EGLint *num_ports EGLDisplay eglGetPlatformDisplay EGLenum platform void *native_display const EGLAttrib *attrib_list EGLDisplay eglGetPlatformDisplayEXT EGLenum platform void *native_display const EGLint *attrib_list __eglMustCastToProperFunctionPointerType eglGetProcAddress const char *procname EGLNativeFileDescriptorKHR eglGetStreamFileDescriptorKHR EGLDisplay dpy EGLStreamKHR stream EGLBoolean eglGetSyncAttrib EGLDisplay dpy EGLSync sync EGLint attribute EGLAttrib *value EGLBoolean eglGetSyncAttribKHR EGLDisplay dpy EGLSyncKHR sync EGLint attribute EGLint *value EGLBoolean eglGetSyncAttribNV EGLSyncNV sync EGLint attribute EGLint *value EGLuint64NV eglGetSystemTimeFrequencyNV EGLuint64NV eglGetSystemTimeNV EGLBoolean eglInitialize EGLDisplay dpy EGLint *major EGLint *minor EGLint eglLabelObjectKHR EGLDisplay display EGLenum objectType EGLObjectKHR object EGLLabelKHR label EGLBoolean eglLockSurfaceKHR EGLDisplay dpy EGLSurface surface const EGLint *attrib_list EGLBoolean eglMakeCurrent EGLDisplay dpy EGLSurface draw EGLSurface read EGLContext ctx EGLBoolean eglOutputLayerAttribEXT EGLDisplay dpy EGLOutputLayerEXT layer EGLint attribute EGLAttrib value EGLBoolean eglOutputPortAttribEXT EGLDisplay dpy EGLOutputPortEXT port EGLint attribute EGLAttrib value EGLBoolean eglPostSubBufferNV EGLDisplay dpy EGLSurface surface EGLint x EGLint y EGLint width EGLint height EGLBoolean eglPresentationTimeANDROID EGLDisplay dpy EGLSurface surface EGLnsecsANDROID time EGLBoolean eglGetCompositorTimingSupportedANDROID EGLDisplay dpy EGLSurface surface EGLint name EGLBoolean eglGetCompositorTimingANDROID EGLDisplay dpy EGLSurface surface EGLint numTimestamps const EGLint *names EGLnsecsANDROID *values EGLBoolean eglGetNextFrameIdANDROID EGLDisplay dpy EGLSurface surface EGLuint64KHR *frameId EGLBoolean eglGetFrameTimestampSupportedANDROID EGLDisplay dpy EGLSurface surface EGLint timestamp EGLBoolean eglGetFrameTimestampsANDROID EGLDisplay dpy EGLSurface surface EGLuint64KHR frameId EGLint numTimestamps const EGLint *timestamps EGLnsecsANDROID *values EGLenum eglQueryAPI EGLBoolean eglQueryContext EGLDisplay dpy EGLContext ctx EGLint attribute EGLint *value EGLBoolean eglQueryDebugKHR EGLint attribute EGLAttrib *value EGLBoolean eglQueryDeviceAttribEXT EGLDeviceEXT device EGLint attribute EGLAttrib *value const char *eglQueryDeviceStringEXT EGLDeviceEXT device EGLint name EGLBoolean eglQueryDevicesEXT EGLint max_devices EGLDeviceEXT *devices EGLint *num_devices EGLBoolean eglQueryDisplayAttribEXT EGLDisplay dpy EGLint attribute EGLAttrib *value EGLBoolean eglQueryDisplayAttribKHR EGLDisplay dpy EGLint name EGLAttrib *value EGLBoolean eglQueryDisplayAttribNV EGLDisplay dpy EGLint attribute EGLAttrib *value EGLBoolean eglQueryDmaBufFormatsEXT EGLDisplay dpy EGLint max_formats EGLint *formats EGLint *num_formats EGLBoolean eglQueryDmaBufModifiersEXT EGLDisplay dpy EGLint format EGLint max_modifiers EGLuint64KHR *modifiers EGLBoolean *external_only EGLint *num_modifiers EGLBoolean eglQueryNativeDisplayNV EGLDisplay dpy EGLNativeDisplayType *display_id EGLBoolean eglQueryNativePixmapNV EGLDisplay dpy EGLSurface surf EGLNativePixmapType *pixmap EGLBoolean eglQueryNativeWindowNV EGLDisplay dpy EGLSurface surf EGLNativeWindowType *window EGLBoolean eglQueryOutputLayerAttribEXT EGLDisplay dpy EGLOutputLayerEXT layer EGLint attribute EGLAttrib *value const char *eglQueryOutputLayerStringEXT EGLDisplay dpy EGLOutputLayerEXT layer EGLint name EGLBoolean eglQueryOutputPortAttribEXT EGLDisplay dpy EGLOutputPortEXT port EGLint attribute EGLAttrib *value const char *eglQueryOutputPortStringEXT EGLDisplay dpy EGLOutputPortEXT port EGLint name EGLBoolean eglQueryStreamKHR EGLDisplay dpy EGLStreamKHR stream EGLenum attribute EGLint *value EGLBoolean eglQueryStreamAttribKHR EGLDisplay dpy EGLStreamKHR stream EGLenum attribute EGLAttrib *value EGLBoolean eglQueryStreamMetadataNV EGLDisplay dpy EGLStreamKHR stream EGLenum name EGLint n EGLint offset EGLint size void *data EGLBoolean eglQueryStreamTimeKHR EGLDisplay dpy EGLStreamKHR stream EGLenum attribute EGLTimeKHR *value EGLBoolean eglQueryStreamu64KHR EGLDisplay dpy EGLStreamKHR stream EGLenum attribute EGLuint64KHR *value const char *eglQueryString EGLDisplay dpy EGLint name EGLBoolean eglQuerySurface EGLDisplay dpy EGLSurface surface EGLint attribute EGLint *value EGLBoolean eglQuerySurface64KHR EGLDisplay dpy EGLSurface surface EGLint attribute EGLAttribKHR *value EGLBoolean eglQuerySurfacePointerANGLE EGLDisplay dpy EGLSurface surface EGLint attribute void **value EGLBoolean eglReleaseTexImage EGLDisplay dpy EGLSurface surface EGLint buffer EGLBoolean eglReleaseThread EGLBoolean eglResetStreamNV EGLDisplay dpy EGLStreamKHR stream void eglSetBlobCacheFuncsANDROID EGLDisplay dpy EGLSetBlobFuncANDROID set EGLGetBlobFuncANDROID get EGLBoolean eglSetDamageRegionKHR EGLDisplay dpy EGLSurface surface EGLint *rects EGLint n_rects EGLBoolean eglSetStreamAttribKHR EGLDisplay dpy EGLStreamKHR stream EGLenum attribute EGLAttrib value EGLBoolean eglSetStreamMetadataNV EGLDisplay dpy EGLStreamKHR stream EGLint n EGLint offset EGLint size const void *data EGLBoolean eglSignalSyncKHR EGLDisplay dpy EGLSyncKHR sync EGLenum mode EGLBoolean eglSignalSyncNV EGLSyncNV sync EGLenum mode EGLBoolean eglStreamAttribKHR EGLDisplay dpy EGLStreamKHR stream EGLenum attribute EGLint value EGLBoolean eglStreamConsumerAcquireKHR EGLDisplay dpy EGLStreamKHR stream EGLBoolean eglStreamConsumerAcquireAttribKHR EGLDisplay dpy EGLStreamKHR stream const EGLAttrib *attrib_list EGLBoolean eglStreamConsumerGLTextureExternalKHR EGLDisplay dpy EGLStreamKHR stream EGLBoolean eglStreamConsumerGLTextureExternalAttribsNV EGLDisplay dpy EGLStreamKHR stream const EGLAttrib *attrib_list EGLBoolean eglStreamConsumerOutputEXT EGLDisplay dpy EGLStreamKHR stream EGLOutputLayerEXT layer EGLBoolean eglStreamConsumerReleaseKHR EGLDisplay dpy EGLStreamKHR stream EGLBoolean eglStreamConsumerReleaseAttribKHR EGLDisplay dpy EGLStreamKHR stream const EGLAttrib *attrib_list EGLBoolean eglStreamFlushNV EGLDisplay dpy EGLStreamKHR stream EGLBoolean eglSurfaceAttrib EGLDisplay dpy EGLSurface surface EGLint attribute EGLint value EGLBoolean eglSwapBuffers EGLDisplay dpy EGLSurface surface EGLBoolean eglSwapBuffersWithDamageEXT EGLDisplay dpy EGLSurface surface EGLint *rects EGLint n_rects EGLBoolean eglSwapBuffersWithDamageKHR EGLDisplay dpy EGLSurface surface EGLint *rects EGLint n_rects EGLBoolean eglSwapBuffersRegionNOK EGLDisplay dpy EGLSurface surface EGLint numRects const EGLint *rects EGLBoolean eglSwapBuffersRegion2NOK EGLDisplay dpy EGLSurface surface EGLint numRects const EGLint *rects EGLBoolean eglSwapInterval EGLDisplay dpy EGLint interval EGLBoolean eglTerminate EGLDisplay dpy EGLBoolean eglUnlockSurfaceKHR EGLDisplay dpy EGLSurface surface EGLBoolean eglUnsignalSyncEXT EGLDisplay dpy EGLSync sync const EGLAttrib *attrib_list EGLBoolean eglWaitClient EGLBoolean eglWaitGL EGLBoolean eglWaitNative EGLint engine EGLBoolean eglWaitSync EGLDisplay dpy EGLSync sync EGLint flags EGLint eglWaitSyncKHR EGLDisplay dpy EGLSyncKHR sync EGLint flags EGLBoolean eglCompositorSetContextListEXT const EGLint *external_ref_ids EGLint num_entries EGLBoolean eglCompositorSetContextAttributesEXT EGLint external_ref_id const EGLint *context_attributes EGLint num_entries EGLBoolean eglCompositorSetWindowListEXT EGLint external_ref_id const EGLint *external_win_ids EGLint num_entries EGLBoolean eglCompositorSetWindowAttributesEXT EGLint external_win_id const EGLint *window_attributes EGLint num_entries EGLBoolean eglCompositorBindTexWindowEXT EGLint external_win_id EGLBoolean eglCompositorSetSizeEXT EGLint external_win_id EGLint width EGLint height EGLBoolean eglCompositorSwapPolicyEXT EGLint external_win_id EGLint policy libepoxy-1.5.10/registry/gl.xml000066400000000000000000125331511420344275400164450ustar00rootroot00000000000000 Copyright (c) 2013-2018 The Khronos Group Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ------------------------------------------------------------------------ This file, gl.xml, is the OpenGL and OpenGL API Registry. The canonical version of the registry, together with documentation, schema, and Python generator scripts used to generate C header files for OpenGL and OpenGL ES, can always be found in the Khronos Registry at https://github.com/KhronosGroup/OpenGL-Registry #include <KHR/khrplatform.h> typedef unsigned int GLenum; typedef unsigned char GLboolean; typedef unsigned int GLbitfield; typedef void GLvoid; typedef khronos_int8_t GLbyte; typedef khronos_uint8_t GLubyte; typedef khronos_int16_t GLshort; typedef khronos_uint16_t GLushort; typedef int GLint; typedef unsigned int GLuint; typedef khronos_int32_t GLclampx; typedef int GLsizei; typedef khronos_float_t GLfloat; typedef khronos_float_t GLclampf; typedef double GLdouble; typedef double GLclampd; typedef void *GLeglClientBufferEXT; typedef void *GLeglImageOES; typedef char GLchar; typedef char GLcharARB; #ifdef __APPLE__ typedef void *GLhandleARB; #else typedef unsigned int GLhandleARB; #endif typedef khronos_uint16_t GLhalf; typedef khronos_uint16_t GLhalfARB; typedef khronos_int32_t GLfixed; typedef khronos_intptr_t GLintptr; typedef khronos_intptr_t GLintptrARB; typedef khronos_ssize_t GLsizeiptr; typedef khronos_ssize_t GLsizeiptrARB; typedef khronos_int64_t GLint64; typedef khronos_int64_t GLint64EXT; typedef khronos_uint64_t GLuint64; typedef khronos_uint64_t GLuint64EXT; typedef struct __GLsync *GLsync; struct _cl_context; struct _cl_event; typedef void ( *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); typedef void ( *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); typedef void ( *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); typedef void ( *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); typedef unsigned short GLhalfNV; typedef GLintptr GLvdpauSurfaceNV; typedef void ( *GLVULKANPROCNV)(void); void glAccum GLenum op GLfloat value void glAccumxOES GLenum op GLfixed value void glActiveProgramEXT GLuint program void glActiveShaderProgram GLuint pipeline GLuint program void glActiveShaderProgramEXT GLuint pipeline GLuint program void glActiveStencilFaceEXT GLenum face void glActiveTexture GLenum texture void glActiveTextureARB GLenum texture void glActiveVaryingNV GLuint program const GLchar *name void glAlphaFragmentOp1ATI GLenum op GLuint dst GLuint dstMod GLuint arg1 GLuint arg1Rep GLuint arg1Mod void glAlphaFragmentOp2ATI GLenum op GLuint dst GLuint dstMod GLuint arg1 GLuint arg1Rep GLuint arg1Mod GLuint arg2 GLuint arg2Rep GLuint arg2Mod void glAlphaFragmentOp3ATI GLenum op GLuint dst GLuint dstMod GLuint arg1 GLuint arg1Rep GLuint arg1Mod GLuint arg2 GLuint arg2Rep GLuint arg2Mod GLuint arg3 GLuint arg3Rep GLuint arg3Mod void glAlphaFunc GLenum func GLfloat ref void glAlphaFuncQCOM GLenum func GLclampf ref void glAlphaFuncx GLenum func GLfixed ref void glAlphaFuncxOES GLenum func GLfixed ref void glAlphaToCoverageDitherControlNV GLenum mode void glApplyFramebufferAttachmentCMAAINTEL void glApplyTextureEXT GLenum mode GLboolean glAcquireKeyedMutexWin32EXT GLuint memory GLuint64 key GLuint timeout GLboolean glAreProgramsResidentNV GLsizei n const GLuint *programs GLboolean *residences GLboolean glAreTexturesResident GLsizei n const GLuint *textures GLboolean *residences GLboolean glAreTexturesResidentEXT GLsizei n const GLuint *textures GLboolean *residences void glArrayElement GLint i void glArrayElementEXT GLint i void glArrayObjectATI GLenum array GLint size GLenum type GLsizei stride GLuint buffer GLuint offset GLuint glAsyncCopyBufferSubDataNVX GLsizei waitSemaphoreCount const GLuint *waitSemaphoreArray const GLuint64 *fenceValueArray GLuint readGpu GLbitfield writeGpuMask GLuint readBuffer GLuint writeBuffer GLintptr readOffset GLintptr writeOffset GLsizeiptr size GLsizei signalSemaphoreCount const GLuint *signalSemaphoreArray const GLuint64 *signalValueArray GLuint glAsyncCopyImageSubDataNVX GLsizei waitSemaphoreCount const GLuint *waitSemaphoreArray const GLuint64 *waitValueArray GLuint srcGpu GLbitfield dstGpuMask GLuint srcName GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLuint dstName GLenum dstTarget GLint dstLevel GLint dstX GLint dstY GLint dstZ GLsizei srcWidth GLsizei srcHeight GLsizei srcDepth GLsizei signalSemaphoreCount const GLuint *signalSemaphoreArray const GLuint64 *signalValueArray void glAsyncMarkerSGIX GLuint marker void glAttachObjectARB GLhandleARB containerObj GLhandleARB obj void glAttachShader GLuint program GLuint shader void glBegin GLenum mode void glBeginConditionalRender GLuint id GLenum mode void glBeginConditionalRenderNV GLuint id GLenum mode void glBeginConditionalRenderNVX GLuint id void glBeginFragmentShaderATI void glBeginOcclusionQueryNV GLuint id void glBeginPerfMonitorAMD GLuint monitor void glBeginPerfQueryINTEL GLuint queryHandle void glBeginQuery GLenum target GLuint id void glBeginQueryARB GLenum target GLuint id void glBeginQueryEXT GLenum target GLuint id void glBeginQueryIndexed GLenum target GLuint index GLuint id void glBeginTransformFeedback GLenum primitiveMode void glBeginTransformFeedbackEXT GLenum primitiveMode void glBeginTransformFeedbackNV GLenum primitiveMode void glBeginVertexShaderEXT void glBeginVideoCaptureNV GLuint video_capture_slot void glBindAttribLocation GLuint program GLuint index const GLchar *name void glBindAttribLocationARB GLhandleARB programObj GLuint index const GLcharARB *name void glBindBuffer GLenum target GLuint buffer void glBindBufferARB GLenum target GLuint buffer void glBindBufferBase GLenum target GLuint index GLuint buffer void glBindBufferBaseEXT GLenum target GLuint index GLuint buffer void glBindBufferBaseNV GLenum target GLuint index GLuint buffer void glBindBufferOffsetEXT GLenum target GLuint index GLuint buffer GLintptr offset void glBindBufferOffsetNV GLenum target GLuint index GLuint buffer GLintptr offset void glBindBufferRange GLenum target GLuint index GLuint buffer GLintptr offset GLsizeiptr size void glBindBufferRangeEXT GLenum target GLuint index GLuint buffer GLintptr offset GLsizeiptr size void glBindBufferRangeNV GLenum target GLuint index GLuint buffer GLintptr offset GLsizeiptr size void glBindBuffersBase GLenum target GLuint first GLsizei count const GLuint *buffers void glBindBuffersRange GLenum target GLuint first GLsizei count const GLuint *buffers const GLintptr *offsets const GLsizeiptr *sizes void glBindFragDataLocation GLuint program GLuint color const GLchar *name void glBindFragDataLocationEXT GLuint program GLuint color const GLchar *name void glBindFragDataLocationIndexed GLuint program GLuint colorNumber GLuint index const GLchar *name void glBindFragDataLocationIndexedEXT GLuint program GLuint colorNumber GLuint index const GLchar *name void glBindFragmentShaderATI GLuint id void glBindFramebuffer GLenum target GLuint framebuffer void glBindFramebufferEXT GLenum target GLuint framebuffer void glBindFramebufferOES GLenum target GLuint framebuffer void glBindImageTexture GLuint unit GLuint texture GLint level GLboolean layered GLint layer GLenum access GLenum format void glBindImageTextureEXT GLuint index GLuint texture GLint level GLboolean layered GLint layer GLenum access GLint format void glBindImageTextures GLuint first GLsizei count const GLuint *textures GLuint glBindLightParameterEXT GLenum light GLenum value GLuint glBindMaterialParameterEXT GLenum face GLenum value void glBindMultiTextureEXT GLenum texunit GLenum target GLuint texture GLuint glBindParameterEXT GLenum value void glBindProgramARB GLenum target GLuint program void glBindProgramNV GLenum target GLuint id void glBindProgramPipeline GLuint pipeline void glBindProgramPipelineEXT GLuint pipeline void glBindRenderbuffer GLenum target GLuint renderbuffer void glBindRenderbufferEXT GLenum target GLuint renderbuffer void glBindRenderbufferOES GLenum target GLuint renderbuffer void glBindSampler GLuint unit GLuint sampler void glBindSamplers GLuint first GLsizei count const GLuint *samplers void glBindShadingRateImageNV GLuint texture GLuint glBindTexGenParameterEXT GLenum unit GLenum coord GLenum value void glBindTexture GLenum target GLuint texture void glBindTextureEXT GLenum target GLuint texture void glBindTextureUnit GLuint unit GLuint texture GLuint glBindTextureUnitParameterEXT GLenum unit GLenum value void glBindTextures GLuint first GLsizei count const GLuint *textures void glBindTransformFeedback GLenum target GLuint id void glBindTransformFeedbackNV GLenum target GLuint id void glBindVertexArray GLuint array void glBindVertexArrayAPPLE GLuint array void glBindVertexArrayOES GLuint array void glBindVertexBuffer GLuint bindingindex GLuint buffer GLintptr offset GLsizei stride void glBindVertexBuffers GLuint first GLsizei count const GLuint *buffers const GLintptr *offsets const GLsizei *strides void glBindVertexShaderEXT GLuint id void glBindVideoCaptureStreamBufferNV GLuint video_capture_slot GLuint stream GLenum frame_region GLintptrARB offset void glBindVideoCaptureStreamTextureNV GLuint video_capture_slot GLuint stream GLenum frame_region GLenum target GLuint texture void glBinormal3bEXT GLbyte bx GLbyte by GLbyte bz void glBinormal3bvEXT const GLbyte *v void glBinormal3dEXT GLdouble bx GLdouble by GLdouble bz void glBinormal3dvEXT const GLdouble *v void glBinormal3fEXT GLfloat bx GLfloat by GLfloat bz void glBinormal3fvEXT const GLfloat *v void glBinormal3iEXT GLint bx GLint by GLint bz void glBinormal3ivEXT const GLint *v void glBinormal3sEXT GLshort bx GLshort by GLshort bz void glBinormal3svEXT const GLshort *v void glBinormalPointerEXT GLenum type GLsizei stride const void *pointer void glBitmap GLsizei width GLsizei height GLfloat xorig GLfloat yorig GLfloat xmove GLfloat ymove const GLubyte *bitmap void glBitmapxOES GLsizei width GLsizei height GLfixed xorig GLfixed yorig GLfixed xmove GLfixed ymove const GLubyte *bitmap void glBlendBarrier void glBlendBarrierKHR void glBlendBarrierNV void glBlendColor GLfloat red GLfloat green GLfloat blue GLfloat alpha void glBlendColorEXT GLfloat red GLfloat green GLfloat blue GLfloat alpha void glBlendColorxOES GLfixed red GLfixed green GLfixed blue GLfixed alpha void glBlendEquation GLenum mode void glBlendEquationEXT GLenum mode void glBlendEquationIndexedAMD GLuint buf GLenum mode void glBlendEquationOES GLenum mode void glBlendEquationSeparate GLenum modeRGB GLenum modeAlpha void glBlendEquationSeparateEXT GLenum modeRGB GLenum modeAlpha void glBlendEquationSeparateIndexedAMD GLuint buf GLenum modeRGB GLenum modeAlpha void glBlendEquationSeparateOES GLenum modeRGB GLenum modeAlpha void glBlendEquationSeparatei GLuint buf GLenum modeRGB GLenum modeAlpha void glBlendEquationSeparateiARB GLuint buf GLenum modeRGB GLenum modeAlpha void glBlendEquationSeparateiEXT GLuint buf GLenum modeRGB GLenum modeAlpha void glBlendEquationSeparateiOES GLuint buf GLenum modeRGB GLenum modeAlpha void glBlendEquationi GLuint buf GLenum mode void glBlendEquationiARB GLuint buf GLenum mode void glBlendEquationiEXT GLuint buf GLenum mode void glBlendEquationiOES GLuint buf GLenum mode void glBlendFunc GLenum sfactor GLenum dfactor void glBlendFuncIndexedAMD GLuint buf GLenum src GLenum dst void glBlendFuncSeparate GLenum sfactorRGB GLenum dfactorRGB GLenum sfactorAlpha GLenum dfactorAlpha void glBlendFuncSeparateEXT GLenum sfactorRGB GLenum dfactorRGB GLenum sfactorAlpha GLenum dfactorAlpha void glBlendFuncSeparateINGR GLenum sfactorRGB GLenum dfactorRGB GLenum sfactorAlpha GLenum dfactorAlpha void glBlendFuncSeparateIndexedAMD GLuint buf GLenum srcRGB GLenum dstRGB GLenum srcAlpha GLenum dstAlpha void glBlendFuncSeparateOES GLenum srcRGB GLenum dstRGB GLenum srcAlpha GLenum dstAlpha void glBlendFuncSeparatei GLuint buf GLenum srcRGB GLenum dstRGB GLenum srcAlpha GLenum dstAlpha void glBlendFuncSeparateiARB GLuint buf GLenum srcRGB GLenum dstRGB GLenum srcAlpha GLenum dstAlpha void glBlendFuncSeparateiEXT GLuint buf GLenum srcRGB GLenum dstRGB GLenum srcAlpha GLenum dstAlpha void glBlendFuncSeparateiOES GLuint buf GLenum srcRGB GLenum dstRGB GLenum srcAlpha GLenum dstAlpha void glBlendFunci GLuint buf GLenum src GLenum dst void glBlendFunciARB GLuint buf GLenum src GLenum dst void glBlendFunciEXT GLuint buf GLenum src GLenum dst void glBlendFunciOES GLuint buf GLenum src GLenum dst void glBlendParameteriNV GLenum pname GLint value void glBlitFramebuffer GLint srcX0 GLint srcY0 GLint srcX1 GLint srcY1 GLint dstX0 GLint dstY0 GLint dstX1 GLint dstY1 GLbitfield mask GLenum filter void glBlitFramebufferANGLE GLint srcX0 GLint srcY0 GLint srcX1 GLint srcY1 GLint dstX0 GLint dstY0 GLint dstX1 GLint dstY1 GLbitfield mask GLenum filter void glBlitFramebufferEXT GLint srcX0 GLint srcY0 GLint srcX1 GLint srcY1 GLint dstX0 GLint dstY0 GLint dstX1 GLint dstY1 GLbitfield mask GLenum filter void glBlitFramebufferNV GLint srcX0 GLint srcY0 GLint srcX1 GLint srcY1 GLint dstX0 GLint dstY0 GLint dstX1 GLint dstY1 GLbitfield mask GLenum filter void glBlitNamedFramebuffer GLuint readFramebuffer GLuint drawFramebuffer GLint srcX0 GLint srcY0 GLint srcX1 GLint srcY1 GLint dstX0 GLint dstY0 GLint dstX1 GLint dstY1 GLbitfield mask GLenum filter void glBufferAddressRangeNV GLenum pname GLuint index GLuint64EXT address GLsizeiptr length void glBufferAttachMemoryNV GLenum target GLuint memory GLuint64 offset void glBufferData GLenum target GLsizeiptr size const void *data GLenum usage void glBufferDataARB GLenum target GLsizeiptrARB size const void *data GLenum usage void glBufferPageCommitmentARB GLenum target GLintptr offset GLsizeiptr size GLboolean commit void glBufferParameteriAPPLE GLenum target GLenum pname GLint param void glBufferStorage GLenum target GLsizeiptr size const void *data GLbitfield flags void glBufferStorageEXT GLenum target GLsizeiptr size const void *data GLbitfield flags void glBufferStorageExternalEXT GLenum target GLintptr offset GLsizeiptr size GLeglClientBufferEXT clientBuffer GLbitfield flags void glBufferStorageMemEXT GLenum target GLsizeiptr size GLuint memory GLuint64 offset void glBufferSubData GLenum target GLintptr offset GLsizeiptr size const void *data void glBufferSubDataARB GLenum target GLintptrARB offset GLsizeiptrARB size const void *data void glCallCommandListNV GLuint list void glCallList GLuint list void glCallLists GLsizei n GLenum type const void *lists GLenum glCheckFramebufferStatus GLenum target GLenum glCheckFramebufferStatusEXT GLenum target GLenum glCheckFramebufferStatusOES GLenum target GLenum glCheckNamedFramebufferStatus GLuint framebuffer GLenum target GLenum glCheckNamedFramebufferStatusEXT GLuint framebuffer GLenum target void glClampColor GLenum target GLenum clamp void glClampColorARB GLenum target GLenum clamp void glClear GLbitfield mask void glClearAccum GLfloat red GLfloat green GLfloat blue GLfloat alpha void glClearAccumxOES GLfixed red GLfixed green GLfixed blue GLfixed alpha void glClearBufferData GLenum target GLenum internalformat GLenum format GLenum type const void *data void glClearBufferSubData GLenum target GLenum internalformat GLintptr offset GLsizeiptr size GLenum format GLenum type const void *data void glClearBufferfi GLenum buffer GLint drawbuffer GLfloat depth GLint stencil void glClearBufferfv GLenum buffer GLint drawbuffer const GLfloat *value void glClearBufferiv GLenum buffer GLint drawbuffer const GLint *value void glClearBufferuiv GLenum buffer GLint drawbuffer const GLuint *value void glClearColor GLfloat red GLfloat green GLfloat blue GLfloat alpha void glClearColorIiEXT GLint red GLint green GLint blue GLint alpha void glClearColorIuiEXT GLuint red GLuint green GLuint blue GLuint alpha void glClearColorx GLfixed red GLfixed green GLfixed blue GLfixed alpha void glClearColorxOES GLfixed red GLfixed green GLfixed blue GLfixed alpha void glClearDepth GLdouble depth void glClearDepthdNV GLdouble depth void glClearDepthf GLfloat d void glClearDepthfOES GLclampf depth void glClearDepthx GLfixed depth void glClearDepthxOES GLfixed depth void glClearIndex GLfloat c void glClearNamedBufferData GLuint buffer GLenum internalformat GLenum format GLenum type const void *data void glClearNamedBufferDataEXT GLuint buffer GLenum internalformat GLenum format GLenum type const void *data void glClearNamedBufferSubData GLuint buffer GLenum internalformat GLintptr offset GLsizeiptr size GLenum format GLenum type const void *data void glClearNamedBufferSubDataEXT GLuint buffer GLenum internalformat GLsizeiptr offset GLsizeiptr size GLenum format GLenum type const void *data void glClearNamedFramebufferfi GLuint framebuffer GLenum buffer GLint drawbuffer GLfloat depth GLint stencil void glClearNamedFramebufferfv GLuint framebuffer GLenum buffer GLint drawbuffer const GLfloat *value void glClearNamedFramebufferiv GLuint framebuffer GLenum buffer GLint drawbuffer const GLint *value void glClearNamedFramebufferuiv GLuint framebuffer GLenum buffer GLint drawbuffer const GLuint *value void glClearPixelLocalStorageuiEXT GLsizei offset GLsizei n const GLuint *values void glClearStencil GLint s void glClearTexImage GLuint texture GLint level GLenum format GLenum type const void *data void glClearTexImageEXT GLuint texture GLint level GLenum format GLenum type const void *data void glClearTexSubImage GLuint texture GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLenum type const void *data void glClearTexSubImageEXT GLuint texture GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLenum type const void *data void glClientActiveTexture GLenum texture void glClientActiveTextureARB GLenum texture void glClientActiveVertexStreamATI GLenum stream void glClientAttribDefaultEXT GLbitfield mask void glClientWaitSemaphoreui64NVX GLsizei fenceObjectCount const GLuint *semaphoreArray const GLuint64 *fenceValueArray GLenum glClientWaitSync GLsync sync GLbitfield flags GLuint64 timeout GLenum glClientWaitSyncAPPLE GLsync sync GLbitfield flags GLuint64 timeout void glClipControl GLenum origin GLenum depth void glClipControlEXT GLenum origin GLenum depth void glClipPlane GLenum plane const GLdouble *equation void glClipPlanef GLenum p const GLfloat *eqn void glClipPlanefIMG GLenum p const GLfloat *eqn void glClipPlanefOES GLenum plane const GLfloat *equation void glClipPlanex GLenum plane const GLfixed *equation void glClipPlanexIMG GLenum p const GLfixed *eqn void glClipPlanexOES GLenum plane const GLfixed *equation void glColor3b GLbyte red GLbyte green GLbyte blue void glColor3bv const GLbyte *v void glColor3d GLdouble red GLdouble green GLdouble blue void glColor3dv const GLdouble *v void glColor3f GLfloat red GLfloat green GLfloat blue void glColor3fVertex3fSUN GLfloat r GLfloat g GLfloat b GLfloat x GLfloat y GLfloat z void glColor3fVertex3fvSUN const GLfloat *c const GLfloat *v void glColor3fv const GLfloat *v void glColor3hNV GLhalfNV red GLhalfNV green GLhalfNV blue void glColor3hvNV const GLhalfNV *v void glColor3i GLint red GLint green GLint blue void glColor3iv const GLint *v void glColor3s GLshort red GLshort green GLshort blue void glColor3sv const GLshort *v void glColor3ub GLubyte red GLubyte green GLubyte blue void glColor3ubv const GLubyte *v void glColor3ui GLuint red GLuint green GLuint blue void glColor3uiv const GLuint *v void glColor3us GLushort red GLushort green GLushort blue void glColor3usv const GLushort *v void glColor3xOES GLfixed red GLfixed green GLfixed blue void glColor3xvOES const GLfixed *components void glColor4b GLbyte red GLbyte green GLbyte blue GLbyte alpha void glColor4bv const GLbyte *v void glColor4d GLdouble red GLdouble green GLdouble blue GLdouble alpha void glColor4dv const GLdouble *v void glColor4f GLfloat red GLfloat green GLfloat blue GLfloat alpha void glColor4fNormal3fVertex3fSUN GLfloat r GLfloat g GLfloat b GLfloat a GLfloat nx GLfloat ny GLfloat nz GLfloat x GLfloat y GLfloat z void glColor4fNormal3fVertex3fvSUN const GLfloat *c const GLfloat *n const GLfloat *v void glColor4fv const GLfloat *v void glColor4hNV GLhalfNV red GLhalfNV green GLhalfNV blue GLhalfNV alpha void glColor4hvNV const GLhalfNV *v void glColor4i GLint red GLint green GLint blue GLint alpha void glColor4iv const GLint *v void glColor4s GLshort red GLshort green GLshort blue GLshort alpha void glColor4sv const GLshort *v void glColor4ub GLubyte red GLubyte green GLubyte blue GLubyte alpha void glColor4ubVertex2fSUN GLubyte r GLubyte g GLubyte b GLubyte a GLfloat x GLfloat y void glColor4ubVertex2fvSUN const GLubyte *c const GLfloat *v void glColor4ubVertex3fSUN GLubyte r GLubyte g GLubyte b GLubyte a GLfloat x GLfloat y GLfloat z void glColor4ubVertex3fvSUN const GLubyte *c const GLfloat *v void glColor4ubv const GLubyte *v void glColor4ui GLuint red GLuint green GLuint blue GLuint alpha void glColor4uiv const GLuint *v void glColor4us GLushort red GLushort green GLushort blue GLushort alpha void glColor4usv const GLushort *v void glColor4x GLfixed red GLfixed green GLfixed blue GLfixed alpha void glColor4xOES GLfixed red GLfixed green GLfixed blue GLfixed alpha void glColor4xvOES const GLfixed *components void glColorFormatNV GLint size GLenum type GLsizei stride void glColorFragmentOp1ATI GLenum op GLuint dst GLuint dstMask GLuint dstMod GLuint arg1 GLuint arg1Rep GLuint arg1Mod void glColorFragmentOp2ATI GLenum op GLuint dst GLuint dstMask GLuint dstMod GLuint arg1 GLuint arg1Rep GLuint arg1Mod GLuint arg2 GLuint arg2Rep GLuint arg2Mod void glColorFragmentOp3ATI GLenum op GLuint dst GLuint dstMask GLuint dstMod GLuint arg1 GLuint arg1Rep GLuint arg1Mod GLuint arg2 GLuint arg2Rep GLuint arg2Mod GLuint arg3 GLuint arg3Rep GLuint arg3Mod void glColorMask GLboolean red GLboolean green GLboolean blue GLboolean alpha void glColorMaskIndexedEXT GLuint index GLboolean r GLboolean g GLboolean b GLboolean a void glColorMaski GLuint index GLboolean r GLboolean g GLboolean b GLboolean a void glColorMaskiEXT GLuint index GLboolean r GLboolean g GLboolean b GLboolean a void glColorMaskiOES GLuint index GLboolean r GLboolean g GLboolean b GLboolean a void glColorMaterial GLenum face GLenum mode void glColorP3ui GLenum type GLuint color void glColorP3uiv GLenum type const GLuint *color void glColorP4ui GLenum type GLuint color void glColorP4uiv GLenum type const GLuint *color void glColorPointer GLint size GLenum type GLsizei stride const void *pointer void glColorPointerEXT GLint size GLenum type GLsizei stride GLsizei count const void *pointer void glColorPointerListIBM GLint size GLenum type GLint stride const void **pointer GLint ptrstride void glColorPointervINTEL GLint size GLenum type const void **pointer void glColorSubTable GLenum target GLsizei start GLsizei count GLenum format GLenum type const void *data void glColorSubTableEXT GLenum target GLsizei start GLsizei count GLenum format GLenum type const void *data void glColorTable GLenum target GLenum internalformat GLsizei width GLenum format GLenum type const void *table void glColorTableEXT GLenum target GLenum internalFormat GLsizei width GLenum format GLenum type const void *table void glColorTableParameterfv GLenum target GLenum pname const GLfloat *params void glColorTableParameterfvSGI GLenum target GLenum pname const GLfloat *params void glColorTableParameteriv GLenum target GLenum pname const GLint *params void glColorTableParameterivSGI GLenum target GLenum pname const GLint *params void glColorTableSGI GLenum target GLenum internalformat GLsizei width GLenum format GLenum type const void *table void glCombinerInputNV GLenum stage GLenum portion GLenum variable GLenum input GLenum mapping GLenum componentUsage void glCombinerOutputNV GLenum stage GLenum portion GLenum abOutput GLenum cdOutput GLenum sumOutput GLenum scale GLenum bias GLboolean abDotProduct GLboolean cdDotProduct GLboolean muxSum void glCombinerParameterfNV GLenum pname GLfloat param void glCombinerParameterfvNV GLenum pname const GLfloat *params void glCombinerParameteriNV GLenum pname GLint param void glCombinerParameterivNV GLenum pname const GLint *params void glCombinerStageParameterfvNV GLenum stage GLenum pname const GLfloat *params void glCommandListSegmentsNV GLuint list GLuint segments void glCompileCommandListNV GLuint list void glCompileShader GLuint shader void glCompileShaderARB GLhandleARB shaderObj void glCompileShaderIncludeARB GLuint shader GLsizei count const GLchar *const*path const GLint *length void glCompressedMultiTexImage1DEXT GLenum texunit GLenum target GLint level GLenum internalformat GLsizei width GLint border GLsizei imageSize const void *bits void glCompressedMultiTexImage2DEXT GLenum texunit GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLint border GLsizei imageSize const void *bits void glCompressedMultiTexImage3DEXT GLenum texunit GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLsizei depth GLint border GLsizei imageSize const void *bits void glCompressedMultiTexSubImage1DEXT GLenum texunit GLenum target GLint level GLint xoffset GLsizei width GLenum format GLsizei imageSize const void *bits void glCompressedMultiTexSubImage2DEXT GLenum texunit GLenum target GLint level GLint xoffset GLint yoffset GLsizei width GLsizei height GLenum format GLsizei imageSize const void *bits void glCompressedMultiTexSubImage3DEXT GLenum texunit GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLsizei imageSize const void *bits void glCompressedTexImage1D GLenum target GLint level GLenum internalformat GLsizei width GLint border GLsizei imageSize const void *data void glCompressedTexImage1DARB GLenum target GLint level GLenum internalformat GLsizei width GLint border GLsizei imageSize const void *data void glCompressedTexImage2D GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLint border GLsizei imageSize const void *data void glCompressedTexImage2DARB GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLint border GLsizei imageSize const void *data void glCompressedTexImage3D GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLsizei depth GLint border GLsizei imageSize const void *data void glCompressedTexImage3DARB GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLsizei depth GLint border GLsizei imageSize const void *data void glCompressedTexImage3DOES GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLsizei depth GLint border GLsizei imageSize const void *data void glCompressedTexSubImage1D GLenum target GLint level GLint xoffset GLsizei width GLenum format GLsizei imageSize const void *data void glCompressedTexSubImage1DARB GLenum target GLint level GLint xoffset GLsizei width GLenum format GLsizei imageSize const void *data void glCompressedTexSubImage2D GLenum target GLint level GLint xoffset GLint yoffset GLsizei width GLsizei height GLenum format GLsizei imageSize const void *data void glCompressedTexSubImage2DARB GLenum target GLint level GLint xoffset GLint yoffset GLsizei width GLsizei height GLenum format GLsizei imageSize const void *data void glCompressedTexSubImage3D GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLsizei imageSize const void *data void glCompressedTexSubImage3DARB GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLsizei imageSize const void *data void glCompressedTexSubImage3DOES GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLsizei imageSize const void *data void glCompressedTextureImage1DEXT GLuint texture GLenum target GLint level GLenum internalformat GLsizei width GLint border GLsizei imageSize const void *bits void glCompressedTextureImage2DEXT GLuint texture GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLint border GLsizei imageSize const void *bits void glCompressedTextureImage3DEXT GLuint texture GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLsizei depth GLint border GLsizei imageSize const void *bits void glCompressedTextureSubImage1D GLuint texture GLint level GLint xoffset GLsizei width GLenum format GLsizei imageSize const void *data void glCompressedTextureSubImage1DEXT GLuint texture GLenum target GLint level GLint xoffset GLsizei width GLenum format GLsizei imageSize const void *bits void glCompressedTextureSubImage2D GLuint texture GLint level GLint xoffset GLint yoffset GLsizei width GLsizei height GLenum format GLsizei imageSize const void *data void glCompressedTextureSubImage2DEXT GLuint texture GLenum target GLint level GLint xoffset GLint yoffset GLsizei width GLsizei height GLenum format GLsizei imageSize const void *bits void glCompressedTextureSubImage3D GLuint texture GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLsizei imageSize const void *data void glCompressedTextureSubImage3DEXT GLuint texture GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLsizei imageSize const void *bits void glConservativeRasterParameterfNV GLenum pname GLfloat value void glConservativeRasterParameteriNV GLenum pname GLint param void glConvolutionFilter1D GLenum target GLenum internalformat GLsizei width GLenum format GLenum type const void *image void glConvolutionFilter1DEXT GLenum target GLenum internalformat GLsizei width GLenum format GLenum type const void *image void glConvolutionFilter2D GLenum target GLenum internalformat GLsizei width GLsizei height GLenum format GLenum type const void *image void glConvolutionFilter2DEXT GLenum target GLenum internalformat GLsizei width GLsizei height GLenum format GLenum type const void *image void glConvolutionParameterf GLenum target GLenum pname GLfloat params void glConvolutionParameterfEXT GLenum target GLenum pname GLfloat params void glConvolutionParameterfv GLenum target GLenum pname const GLfloat *params void glConvolutionParameterfvEXT GLenum target GLenum pname const GLfloat *params void glConvolutionParameteri GLenum target GLenum pname GLint params void glConvolutionParameteriEXT GLenum target GLenum pname GLint params void glConvolutionParameteriv GLenum target GLenum pname const GLint *params void glConvolutionParameterivEXT GLenum target GLenum pname const GLint *params void glConvolutionParameterxOES GLenum target GLenum pname GLfixed param void glConvolutionParameterxvOES GLenum target GLenum pname const GLfixed *params void glCopyBufferSubData GLenum readTarget GLenum writeTarget GLintptr readOffset GLintptr writeOffset GLsizeiptr size void glCopyBufferSubDataNV GLenum readTarget GLenum writeTarget GLintptr readOffset GLintptr writeOffset GLsizeiptr size void glCopyColorSubTable GLenum target GLsizei start GLint x GLint y GLsizei width void glCopyColorSubTableEXT GLenum target GLsizei start GLint x GLint y GLsizei width void glCopyColorTable GLenum target GLenum internalformat GLint x GLint y GLsizei width void glCopyColorTableSGI GLenum target GLenum internalformat GLint x GLint y GLsizei width void glCopyConvolutionFilter1D GLenum target GLenum internalformat GLint x GLint y GLsizei width void glCopyConvolutionFilter1DEXT GLenum target GLenum internalformat GLint x GLint y GLsizei width void glCopyConvolutionFilter2D GLenum target GLenum internalformat GLint x GLint y GLsizei width GLsizei height void glCopyConvolutionFilter2DEXT GLenum target GLenum internalformat GLint x GLint y GLsizei width GLsizei height void glCopyImageSubData GLuint srcName GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLuint dstName GLenum dstTarget GLint dstLevel GLint dstX GLint dstY GLint dstZ GLsizei srcWidth GLsizei srcHeight GLsizei srcDepth void glCopyImageSubDataEXT GLuint srcName GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLuint dstName GLenum dstTarget GLint dstLevel GLint dstX GLint dstY GLint dstZ GLsizei srcWidth GLsizei srcHeight GLsizei srcDepth void glCopyImageSubDataNV GLuint srcName GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLuint dstName GLenum dstTarget GLint dstLevel GLint dstX GLint dstY GLint dstZ GLsizei width GLsizei height GLsizei depth void glCopyImageSubDataOES GLuint srcName GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLuint dstName GLenum dstTarget GLint dstLevel GLint dstX GLint dstY GLint dstZ GLsizei srcWidth GLsizei srcHeight GLsizei srcDepth void glCopyMultiTexImage1DEXT GLenum texunit GLenum target GLint level GLenum internalformat GLint x GLint y GLsizei width GLint border void glCopyMultiTexImage2DEXT GLenum texunit GLenum target GLint level GLenum internalformat GLint x GLint y GLsizei width GLsizei height GLint border void glCopyMultiTexSubImage1DEXT GLenum texunit GLenum target GLint level GLint xoffset GLint x GLint y GLsizei width void glCopyMultiTexSubImage2DEXT GLenum texunit GLenum target GLint level GLint xoffset GLint yoffset GLint x GLint y GLsizei width GLsizei height void glCopyMultiTexSubImage3DEXT GLenum texunit GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLint x GLint y GLsizei width GLsizei height void glCopyNamedBufferSubData GLuint readBuffer GLuint writeBuffer GLintptr readOffset GLintptr writeOffset GLsizeiptr size void glCopyPathNV GLuint resultPath GLuint srcPath void glCopyPixels GLint x GLint y GLsizei width GLsizei height GLenum type void glCopyTexImage1D GLenum target GLint level GLenum internalformat GLint x GLint y GLsizei width GLint border void glCopyTexImage1DEXT GLenum target GLint level GLenum internalformat GLint x GLint y GLsizei width GLint border void glCopyTexImage2D GLenum target GLint level GLenum internalformat GLint x GLint y GLsizei width GLsizei height GLint border void glCopyTexImage2DEXT GLenum target GLint level GLenum internalformat GLint x GLint y GLsizei width GLsizei height GLint border void glCopyTexSubImage1D GLenum target GLint level GLint xoffset GLint x GLint y GLsizei width void glCopyTexSubImage1DEXT GLenum target GLint level GLint xoffset GLint x GLint y GLsizei width void glCopyTexSubImage2D GLenum target GLint level GLint xoffset GLint yoffset GLint x GLint y GLsizei width GLsizei height void glCopyTexSubImage2DEXT GLenum target GLint level GLint xoffset GLint yoffset GLint x GLint y GLsizei width GLsizei height void glCopyTexSubImage3D GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLint x GLint y GLsizei width GLsizei height void glCopyTexSubImage3DEXT GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLint x GLint y GLsizei width GLsizei height void glCopyTexSubImage3DOES GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLint x GLint y GLsizei width GLsizei height void glCopyTextureImage1DEXT GLuint texture GLenum target GLint level GLenum internalformat GLint x GLint y GLsizei width GLint border void glCopyTextureImage2DEXT GLuint texture GLenum target GLint level GLenum internalformat GLint x GLint y GLsizei width GLsizei height GLint border void glCopyTextureLevelsAPPLE GLuint destinationTexture GLuint sourceTexture GLint sourceBaseLevel GLsizei sourceLevelCount void glCopyTextureSubImage1D GLuint texture GLint level GLint xoffset GLint x GLint y GLsizei width void glCopyTextureSubImage1DEXT GLuint texture GLenum target GLint level GLint xoffset GLint x GLint y GLsizei width void glCopyTextureSubImage2D GLuint texture GLint level GLint xoffset GLint yoffset GLint x GLint y GLsizei width GLsizei height void glCopyTextureSubImage2DEXT GLuint texture GLenum target GLint level GLint xoffset GLint yoffset GLint x GLint y GLsizei width GLsizei height void glCopyTextureSubImage3D GLuint texture GLint level GLint xoffset GLint yoffset GLint zoffset GLint x GLint y GLsizei width GLsizei height void glCopyTextureSubImage3DEXT GLuint texture GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLint x GLint y GLsizei width GLsizei height void glCoverFillPathInstancedNV GLsizei numPaths GLenum pathNameType const void *paths GLuint pathBase GLenum coverMode GLenum transformType const GLfloat *transformValues void glCoverFillPathNV GLuint path GLenum coverMode void glCoverStrokePathInstancedNV GLsizei numPaths GLenum pathNameType const void *paths GLuint pathBase GLenum coverMode GLenum transformType const GLfloat *transformValues void glCoverStrokePathNV GLuint path GLenum coverMode void glCoverageMaskNV GLboolean mask void glCoverageModulationNV GLenum components void glCoverageModulationTableNV GLsizei n const GLfloat *v void glCoverageOperationNV GLenum operation void glCreateBuffers GLsizei n GLuint *buffers void glCreateCommandListsNV GLsizei n GLuint *lists void glCreateFramebuffers GLsizei n GLuint *framebuffers void glCreateMemoryObjectsEXT GLsizei n GLuint *memoryObjects void glCreatePerfQueryINTEL GLuint queryId GLuint *queryHandle GLuint glCreateProgram GLhandleARB glCreateProgramObjectARB void glCreateProgramPipelines GLsizei n GLuint *pipelines GLuint glCreateProgressFenceNVX void glCreateQueries GLenum target GLsizei n GLuint *ids void glCreateRenderbuffers GLsizei n GLuint *renderbuffers void glCreateSamplers GLsizei n GLuint *samplers GLuint glCreateShader GLenum type GLhandleARB glCreateShaderObjectARB GLenum shaderType GLuint glCreateShaderProgramEXT GLenum type const GLchar *string GLuint glCreateShaderProgramv GLenum type GLsizei count const GLchar *const*strings GLuint glCreateShaderProgramvEXT GLenum type GLsizei count const GLchar **strings void glCreateStatesNV GLsizei n GLuint *states GLsync glCreateSyncFromCLeventARB struct _cl_context *context struct _cl_event *event GLbitfield flags void glCreateTextures GLenum target GLsizei n GLuint *textures void glCreateTransformFeedbacks GLsizei n GLuint *ids void glCreateVertexArrays GLsizei n GLuint *arrays void glCullFace GLenum mode void glCullParameterdvEXT GLenum pname GLdouble *params void glCullParameterfvEXT GLenum pname GLfloat *params void glCurrentPaletteMatrixARB GLint index void glCurrentPaletteMatrixOES GLuint matrixpaletteindex void glDebugMessageCallback GLDEBUGPROC callback const void *userParam void glDebugMessageCallbackAMD GLDEBUGPROCAMD callback void *userParam void glDebugMessageCallbackARB GLDEBUGPROCARB callback const void *userParam void glDebugMessageCallbackKHR GLDEBUGPROCKHR callback const void *userParam void glDebugMessageControl GLenum source GLenum type GLenum severity GLsizei count const GLuint *ids GLboolean enabled void glDebugMessageControlARB GLenum source GLenum type GLenum severity GLsizei count const GLuint *ids GLboolean enabled void glDebugMessageControlKHR GLenum source GLenum type GLenum severity GLsizei count const GLuint *ids GLboolean enabled void glDebugMessageEnableAMD GLenum category GLenum severity GLsizei count const GLuint *ids GLboolean enabled void glDebugMessageInsert GLenum source GLenum type GLuint id GLenum severity GLsizei length const GLchar *buf void glDebugMessageInsertAMD GLenum category GLenum severity GLuint id GLsizei length const GLchar *buf void glDebugMessageInsertARB GLenum source GLenum type GLuint id GLenum severity GLsizei length const GLchar *buf void glDebugMessageInsertKHR GLenum source GLenum type GLuint id GLenum severity GLsizei length const GLchar *buf void glDeformSGIX GLbitfield mask void glDeformationMap3dSGIX GLenum target GLdouble u1 GLdouble u2 GLint ustride GLint uorder GLdouble v1 GLdouble v2 GLint vstride GLint vorder GLdouble w1 GLdouble w2 GLint wstride GLint worder const GLdouble *points void glDeformationMap3fSGIX GLenum target GLfloat u1 GLfloat u2 GLint ustride GLint uorder GLfloat v1 GLfloat v2 GLint vstride GLint vorder GLfloat w1 GLfloat w2 GLint wstride GLint worder const GLfloat *points void glDeleteAsyncMarkersSGIX GLuint marker GLsizei range void glDeleteBuffers GLsizei n const GLuint *buffers void glDeleteBuffersARB GLsizei n const GLuint *buffers void glDeleteCommandListsNV GLsizei n const GLuint *lists void glDeleteFencesAPPLE GLsizei n const GLuint *fences void glDeleteFencesNV GLsizei n const GLuint *fences void glDeleteFragmentShaderATI GLuint id void glDeleteFramebuffers GLsizei n const GLuint *framebuffers void glDeleteFramebuffersEXT GLsizei n const GLuint *framebuffers void glDeleteFramebuffersOES GLsizei n const GLuint *framebuffers void glDeleteLists GLuint list GLsizei range void glDeleteMemoryObjectsEXT GLsizei n const GLuint *memoryObjects void glDeleteNamedStringARB GLint namelen const GLchar *name void glDeleteNamesAMD GLenum identifier GLuint num const GLuint *names void glDeleteObjectARB GLhandleARB obj void glDeleteOcclusionQueriesNV GLsizei n const GLuint *ids void glDeletePathsNV GLuint path GLsizei range void glDeletePerfMonitorsAMD GLsizei n GLuint *monitors void glDeletePerfQueryINTEL GLuint queryHandle void glDeleteProgram GLuint program void glDeleteProgramPipelines GLsizei n const GLuint *pipelines void glDeleteProgramPipelinesEXT GLsizei n const GLuint *pipelines void glDeleteProgramsARB GLsizei n const GLuint *programs void glDeleteProgramsNV GLsizei n const GLuint *programs void glDeleteQueries GLsizei n const GLuint *ids void glDeleteQueriesARB GLsizei n const GLuint *ids void glDeleteQueriesEXT GLsizei n const GLuint *ids void glDeleteQueryResourceTagNV GLsizei n const GLint *tagIds void glDeleteRenderbuffers GLsizei n const GLuint *renderbuffers void glDeleteRenderbuffersEXT GLsizei n const GLuint *renderbuffers void glDeleteRenderbuffersOES GLsizei n const GLuint *renderbuffers void glDeleteSamplers GLsizei count const GLuint *samplers void glDeleteSemaphoresEXT GLsizei n const GLuint *semaphores void glDeleteShader GLuint shader void glDeleteStatesNV GLsizei n const GLuint *states void glDeleteSync GLsync sync void glDeleteSyncAPPLE GLsync sync void glDeleteTextures GLsizei n const GLuint *textures void glDeleteTexturesEXT GLsizei n const GLuint *textures void glDeleteTransformFeedbacks GLsizei n const GLuint *ids void glDeleteTransformFeedbacksNV GLsizei n const GLuint *ids void glDeleteVertexArrays GLsizei n const GLuint *arrays void glDeleteVertexArraysAPPLE GLsizei n const GLuint *arrays void glDeleteVertexArraysOES GLsizei n const GLuint *arrays void glDeleteVertexShaderEXT GLuint id void glDepthBoundsEXT GLclampd zmin GLclampd zmax void glDepthBoundsdNV GLdouble zmin GLdouble zmax void glDepthFunc GLenum func void glDepthMask GLboolean flag void glDepthRange GLdouble n GLdouble f void glDepthRangeArrayfvNV GLuint first GLsizei count const GLfloat *v void glDepthRangeArrayfvOES GLuint first GLsizei count const GLfloat *v void glDepthRangeArrayv GLuint first GLsizei count const GLdouble *v void glDepthRangeIndexed GLuint index GLdouble n GLdouble f void glDepthRangeIndexedfNV GLuint index GLfloat n GLfloat f void glDepthRangeIndexedfOES GLuint index GLfloat n GLfloat f void glDepthRangedNV GLdouble zNear GLdouble zFar void glDepthRangef GLfloat n GLfloat f void glDepthRangefOES GLclampf n GLclampf f void glDepthRangex GLfixed n GLfixed f void glDepthRangexOES GLfixed n GLfixed f void glDetachObjectARB GLhandleARB containerObj GLhandleARB attachedObj void glDetachShader GLuint program GLuint shader void glDetailTexFuncSGIS GLenum target GLsizei n const GLfloat *points void glDisable GLenum cap void glDisableClientState GLenum array void glDisableClientStateIndexedEXT GLenum array GLuint index void glDisableClientStateiEXT GLenum array GLuint index void glDisableDriverControlQCOM GLuint driverControl void glDisableIndexedEXT GLenum target GLuint index void glDisableVariantClientStateEXT GLuint id void glDisableVertexArrayAttrib GLuint vaobj GLuint index void glDisableVertexArrayAttribEXT GLuint vaobj GLuint index void glDisableVertexArrayEXT GLuint vaobj GLenum array void glDisableVertexAttribAPPLE GLuint index GLenum pname void glDisableVertexAttribArray GLuint index void glDisableVertexAttribArrayARB GLuint index void glDisablei GLenum target GLuint index void glDisableiEXT GLenum target GLuint index void glDisableiNV GLenum target GLuint index void glDisableiOES GLenum target GLuint index void glDiscardFramebufferEXT GLenum target GLsizei numAttachments const GLenum *attachments void glDispatchCompute GLuint num_groups_x GLuint num_groups_y GLuint num_groups_z void glDispatchComputeGroupSizeARB GLuint num_groups_x GLuint num_groups_y GLuint num_groups_z GLuint group_size_x GLuint group_size_y GLuint group_size_z void glDispatchComputeIndirect GLintptr indirect void glDrawArrays GLenum mode GLint first GLsizei count void glDrawArraysEXT GLenum mode GLint first GLsizei count void glDrawArraysIndirect GLenum mode const void *indirect void glDrawArraysInstanced GLenum mode GLint first GLsizei count GLsizei instancecount void glDrawArraysInstancedANGLE GLenum mode GLint first GLsizei count GLsizei primcount void glDrawArraysInstancedARB GLenum mode GLint first GLsizei count GLsizei primcount void glDrawArraysInstancedBaseInstance GLenum mode GLint first GLsizei count GLsizei instancecount GLuint baseinstance void glDrawArraysInstancedBaseInstanceEXT GLenum mode GLint first GLsizei count GLsizei instancecount GLuint baseinstance void glDrawArraysInstancedEXT GLenum mode GLint start GLsizei count GLsizei primcount void glDrawArraysInstancedNV GLenum mode GLint first GLsizei count GLsizei primcount void glDrawBuffer GLenum buf void glDrawBuffers GLsizei n const GLenum *bufs void glDrawBuffersARB GLsizei n const GLenum *bufs void glDrawBuffersATI GLsizei n const GLenum *bufs void glDrawBuffersEXT GLsizei n const GLenum *bufs void glDrawBuffersIndexedEXT GLint n const GLenum *location const GLint *indices void glDrawBuffersNV GLsizei n const GLenum *bufs void glDrawCommandsAddressNV GLenum primitiveMode const GLuint64 *indirects const GLsizei *sizes GLuint count void glDrawCommandsNV GLenum primitiveMode GLuint buffer const GLintptr *indirects const GLsizei *sizes GLuint count void glDrawCommandsStatesAddressNV const GLuint64 *indirects const GLsizei *sizes const GLuint *states const GLuint *fbos GLuint count void glDrawCommandsStatesNV GLuint buffer const GLintptr *indirects const GLsizei *sizes const GLuint *states const GLuint *fbos GLuint count void glDrawElementArrayAPPLE GLenum mode GLint first GLsizei count void glDrawElementArrayATI GLenum mode GLsizei count void glDrawElements GLenum mode GLsizei count GLenum type const void *indices void glDrawElementsBaseVertex GLenum mode GLsizei count GLenum type const void *indices GLint basevertex void glDrawElementsBaseVertexEXT GLenum mode GLsizei count GLenum type const void *indices GLint basevertex void glDrawElementsBaseVertexOES GLenum mode GLsizei count GLenum type const void *indices GLint basevertex void glDrawElementsIndirect GLenum mode GLenum type const void *indirect void glDrawElementsInstanced GLenum mode GLsizei count GLenum type const void *indices GLsizei instancecount void glDrawElementsInstancedANGLE GLenum mode GLsizei count GLenum type const void *indices GLsizei primcount void glDrawElementsInstancedARB GLenum mode GLsizei count GLenum type const void *indices GLsizei primcount void glDrawElementsInstancedBaseInstance GLenum mode GLsizei count GLenum type const void *indices GLsizei instancecount GLuint baseinstance void glDrawElementsInstancedBaseInstanceEXT GLenum mode GLsizei count GLenum type const void *indices GLsizei instancecount GLuint baseinstance void glDrawElementsInstancedBaseVertex GLenum mode GLsizei count GLenum type const void *indices GLsizei instancecount GLint basevertex void glDrawElementsInstancedBaseVertexBaseInstance GLenum mode GLsizei count GLenum type const void *indices GLsizei instancecount GLint basevertex GLuint baseinstance void glDrawElementsInstancedBaseVertexBaseInstanceEXT GLenum mode GLsizei count GLenum type const void *indices GLsizei instancecount GLint basevertex GLuint baseinstance void glDrawElementsInstancedBaseVertexEXT GLenum mode GLsizei count GLenum type const void *indices GLsizei instancecount GLint basevertex void glDrawElementsInstancedBaseVertexOES GLenum mode GLsizei count GLenum type const void *indices GLsizei instancecount GLint basevertex void glDrawElementsInstancedEXT GLenum mode GLsizei count GLenum type const void *indices GLsizei primcount void glDrawElementsInstancedNV GLenum mode GLsizei count GLenum type const void *indices GLsizei primcount void glDrawMeshArraysSUN GLenum mode GLint first GLsizei count GLsizei width void glDrawMeshTasksNV GLuint first GLuint count void glDrawMeshTasksIndirectNV GLintptr indirect void glDrawPixels GLsizei width GLsizei height GLenum format GLenum type const void *pixels void glDrawRangeElementArrayAPPLE GLenum mode GLuint start GLuint end GLint first GLsizei count void glDrawRangeElementArrayATI GLenum mode GLuint start GLuint end GLsizei count void glDrawRangeElements GLenum mode GLuint start GLuint end GLsizei count GLenum type const void *indices void glDrawRangeElementsBaseVertex GLenum mode GLuint start GLuint end GLsizei count GLenum type const void *indices GLint basevertex void glDrawRangeElementsBaseVertexEXT GLenum mode GLuint start GLuint end GLsizei count GLenum type const void *indices GLint basevertex void glDrawRangeElementsBaseVertexOES GLenum mode GLuint start GLuint end GLsizei count GLenum type const void *indices GLint basevertex void glDrawRangeElementsEXT GLenum mode GLuint start GLuint end GLsizei count GLenum type const void *indices void glDrawTexfOES GLfloat x GLfloat y GLfloat z GLfloat width GLfloat height void glDrawTexfvOES const GLfloat *coords void glDrawTexiOES GLint x GLint y GLint z GLint width GLint height void glDrawTexivOES const GLint *coords void glDrawTexsOES GLshort x GLshort y GLshort z GLshort width GLshort height void glDrawTexsvOES const GLshort *coords void glDrawTextureNV GLuint texture GLuint sampler GLfloat x0 GLfloat y0 GLfloat x1 GLfloat y1 GLfloat z GLfloat s0 GLfloat t0 GLfloat s1 GLfloat t1 void glDrawTexxOES GLfixed x GLfixed y GLfixed z GLfixed width GLfixed height void glDrawTexxvOES const GLfixed *coords void glDrawTransformFeedback GLenum mode GLuint id void glDrawTransformFeedbackEXT GLenum mode GLuint id void glDrawTransformFeedbackInstanced GLenum mode GLuint id GLsizei instancecount void glDrawTransformFeedbackInstancedEXT GLenum mode GLuint id GLsizei instancecount void glDrawTransformFeedbackNV GLenum mode GLuint id void glDrawTransformFeedbackStream GLenum mode GLuint id GLuint stream void glDrawTransformFeedbackStreamInstanced GLenum mode GLuint id GLuint stream GLsizei instancecount void glEGLImageTargetRenderbufferStorageOES GLenum target GLeglImageOES image void glEGLImageTargetTexStorageEXT GLenum target GLeglImageOES image const GLint* attrib_list void glEGLImageTargetTexture2DOES GLenum target GLeglImageOES image void glEGLImageTargetTextureStorageEXT GLuint texture GLeglImageOES image const GLint* attrib_list void glEdgeFlag GLboolean flag void glEdgeFlagFormatNV GLsizei stride void glEdgeFlagPointer GLsizei stride const void *pointer void glEdgeFlagPointerEXT GLsizei stride GLsizei count const GLboolean *pointer void glEdgeFlagPointerListIBM GLint stride const GLboolean **pointer GLint ptrstride void glEdgeFlagv const GLboolean *flag void glElementPointerAPPLE GLenum type const void *pointer void glElementPointerATI GLenum type const void *pointer void glEnable GLenum cap void glEnableClientState GLenum array void glEnableClientStateIndexedEXT GLenum array GLuint index void glEnableClientStateiEXT GLenum array GLuint index void glEnableDriverControlQCOM GLuint driverControl void glEnableIndexedEXT GLenum target GLuint index void glEnableVariantClientStateEXT GLuint id void glEnableVertexArrayAttrib GLuint vaobj GLuint index void glEnableVertexArrayAttribEXT GLuint vaobj GLuint index void glEnableVertexArrayEXT GLuint vaobj GLenum array void glEnableVertexAttribAPPLE GLuint index GLenum pname void glEnableVertexAttribArray GLuint index void glEnableVertexAttribArrayARB GLuint index void glEnablei GLenum target GLuint index void glEnableiEXT GLenum target GLuint index void glEnableiNV GLenum target GLuint index void glEnableiOES GLenum target GLuint index void glEnd void glEndConditionalRender void glEndConditionalRenderNV void glEndConditionalRenderNVX void glEndFragmentShaderATI void glEndList void glEndOcclusionQueryNV void glEndPerfMonitorAMD GLuint monitor void glEndPerfQueryINTEL GLuint queryHandle void glEndQuery GLenum target void glEndQueryARB GLenum target void glEndQueryEXT GLenum target void glEndQueryIndexed GLenum target GLuint index void glEndTilingQCOM GLbitfield preserveMask void glEndTransformFeedback void glEndTransformFeedbackEXT void glEndTransformFeedbackNV void glEndVertexShaderEXT void glEndVideoCaptureNV GLuint video_capture_slot void glEvalCoord1d GLdouble u void glEvalCoord1dv const GLdouble *u void glEvalCoord1f GLfloat u void glEvalCoord1fv const GLfloat *u void glEvalCoord1xOES GLfixed u void glEvalCoord1xvOES const GLfixed *coords void glEvalCoord2d GLdouble u GLdouble v void glEvalCoord2dv const GLdouble *u void glEvalCoord2f GLfloat u GLfloat v void glEvalCoord2fv const GLfloat *u void glEvalCoord2xOES GLfixed u GLfixed v void glEvalCoord2xvOES const GLfixed *coords void glEvalMapsNV GLenum target GLenum mode void glEvalMesh1 GLenum mode GLint i1 GLint i2 void glEvalMesh2 GLenum mode GLint i1 GLint i2 GLint j1 GLint j2 void glEvalPoint1 GLint i void glEvalPoint2 GLint i GLint j void glEvaluateDepthValuesARB void glExecuteProgramNV GLenum target GLuint id const GLfloat *params void glExtGetBufferPointervQCOM GLenum target void **params void glExtGetBuffersQCOM GLuint *buffers GLint maxBuffers GLint *numBuffers void glExtGetFramebuffersQCOM GLuint *framebuffers GLint maxFramebuffers GLint *numFramebuffers void glExtGetProgramBinarySourceQCOM GLuint program GLenum shadertype GLchar *source GLint *length void glExtGetProgramsQCOM GLuint *programs GLint maxPrograms GLint *numPrograms void glExtGetRenderbuffersQCOM GLuint *renderbuffers GLint maxRenderbuffers GLint *numRenderbuffers void glExtGetShadersQCOM GLuint *shaders GLint maxShaders GLint *numShaders void glExtGetTexLevelParameterivQCOM GLuint texture GLenum face GLint level GLenum pname GLint *params void glExtGetTexSubImageQCOM GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLenum type void *texels void glExtGetTexturesQCOM GLuint *textures GLint maxTextures GLint *numTextures GLboolean glExtIsProgramBinaryQCOM GLuint program void glExtTexObjectStateOverrideiQCOM GLenum target GLenum pname GLint param void glExtractComponentEXT GLuint res GLuint src GLuint num void glFeedbackBuffer GLsizei size GLenum type GLfloat *buffer void glFeedbackBufferxOES GLsizei n GLenum type const GLfixed *buffer GLsync glFenceSync GLenum condition GLbitfield flags GLsync glFenceSyncAPPLE GLenum condition GLbitfield flags void glFinalCombinerInputNV GLenum variable GLenum input GLenum mapping GLenum componentUsage void glFinish GLint glFinishAsyncSGIX GLuint *markerp void glFinishFenceAPPLE GLuint fence void glFinishFenceNV GLuint fence void glFinishObjectAPPLE GLenum object GLint name void glFinishTextureSUNX void glFlush void glFlushMappedBufferRange GLenum target GLintptr offset GLsizeiptr length void glFlushMappedBufferRangeAPPLE GLenum target GLintptr offset GLsizeiptr size void glFlushMappedBufferRangeEXT GLenum target GLintptr offset GLsizeiptr length void glFlushMappedNamedBufferRange GLuint buffer GLintptr offset GLsizeiptr length void glFlushMappedNamedBufferRangeEXT GLuint buffer GLintptr offset GLsizeiptr length void glFlushPixelDataRangeNV GLenum target void glFlushRasterSGIX void glFlushStaticDataIBM GLenum target void glFlushVertexArrayRangeAPPLE GLsizei length void *pointer void glFlushVertexArrayRangeNV void glFogCoordFormatNV GLenum type GLsizei stride void glFogCoordPointer GLenum type GLsizei stride const void *pointer void glFogCoordPointerEXT GLenum type GLsizei stride const void *pointer void glFogCoordPointerListIBM GLenum type GLint stride const void **pointer GLint ptrstride void glFogCoordd GLdouble coord void glFogCoorddEXT GLdouble coord void glFogCoorddv const GLdouble *coord void glFogCoorddvEXT const GLdouble *coord void glFogCoordf GLfloat coord void glFogCoordfEXT GLfloat coord void glFogCoordfv const GLfloat *coord void glFogCoordfvEXT const GLfloat *coord void glFogCoordhNV GLhalfNV fog void glFogCoordhvNV const GLhalfNV *fog void glFogFuncSGIS GLsizei n const GLfloat *points void glFogf GLenum pname GLfloat param void glFogfv GLenum pname const GLfloat *params void glFogi GLenum pname GLint param void glFogiv GLenum pname const GLint *params void glFogx GLenum pname GLfixed param void glFogxOES GLenum pname GLfixed param void glFogxv GLenum pname const GLfixed *param void glFogxvOES GLenum pname const GLfixed *param void glFragmentColorMaterialSGIX GLenum face GLenum mode void glFragmentCoverageColorNV GLuint color void glFragmentLightModelfSGIX GLenum pname GLfloat param void glFragmentLightModelfvSGIX GLenum pname const GLfloat *params void glFragmentLightModeliSGIX GLenum pname GLint param void glFragmentLightModelivSGIX GLenum pname const GLint *params void glFragmentLightfSGIX GLenum light GLenum pname GLfloat param void glFragmentLightfvSGIX GLenum light GLenum pname const GLfloat *params void glFragmentLightiSGIX GLenum light GLenum pname GLint param void glFragmentLightivSGIX GLenum light GLenum pname const GLint *params void glFragmentMaterialfSGIX GLenum face GLenum pname GLfloat param void glFragmentMaterialfvSGIX GLenum face GLenum pname const GLfloat *params void glFragmentMaterialiSGIX GLenum face GLenum pname GLint param void glFragmentMaterialivSGIX GLenum face GLenum pname const GLint *params void glFrameTerminatorGREMEDY void glFrameZoomSGIX GLint factor void glFramebufferDrawBufferEXT GLuint framebuffer GLenum mode void glFramebufferDrawBuffersEXT GLuint framebuffer GLsizei n const GLenum *bufs void glFramebufferFetchBarrierEXT void glFramebufferFetchBarrierQCOM void glFramebufferFoveationConfigQCOM GLuint framebuffer GLuint numLayers GLuint focalPointsPerLayer GLuint requestedFeatures GLuint *providedFeatures void glFramebufferFoveationParametersQCOM GLuint framebuffer GLuint layer GLuint focalPoint GLfloat focalX GLfloat focalY GLfloat gainX GLfloat gainY GLfloat foveaArea void glFramebufferParameteri GLenum target GLenum pname GLint param void glFramebufferPixelLocalStorageSizeEXT GLuint target GLsizei size void glFramebufferReadBufferEXT GLuint framebuffer GLenum mode void glFramebufferRenderbuffer GLenum target GLenum attachment GLenum renderbuffertarget GLuint renderbuffer void glFramebufferRenderbufferEXT GLenum target GLenum attachment GLenum renderbuffertarget GLuint renderbuffer void glFramebufferRenderbufferOES GLenum target GLenum attachment GLenum renderbuffertarget GLuint renderbuffer void glFramebufferSampleLocationsfvARB GLenum target GLuint start GLsizei count const GLfloat *v void glFramebufferSampleLocationsfvNV GLenum target GLuint start GLsizei count const GLfloat *v void glFramebufferSamplePositionsfvAMD GLenum target GLuint numsamples GLuint pixelindex const GLfloat *values void glFramebufferTexture GLenum target GLenum attachment GLuint texture GLint level void glFramebufferTexture1D GLenum target GLenum attachment GLenum textarget GLuint texture GLint level void glFramebufferTexture1DEXT GLenum target GLenum attachment GLenum textarget GLuint texture GLint level void glFramebufferTexture2D GLenum target GLenum attachment GLenum textarget GLuint texture GLint level void glFramebufferTexture2DEXT GLenum target GLenum attachment GLenum textarget GLuint texture GLint level void glFramebufferTexture2DDownsampleIMG GLenum target GLenum attachment GLenum textarget GLuint texture GLint level GLint xscale GLint yscale void glFramebufferTexture2DMultisampleEXT GLenum target GLenum attachment GLenum textarget GLuint texture GLint level GLsizei samples void glFramebufferTexture2DMultisampleIMG GLenum target GLenum attachment GLenum textarget GLuint texture GLint level GLsizei samples void glFramebufferTexture2DOES GLenum target GLenum attachment GLenum textarget GLuint texture GLint level void glFramebufferTexture3D GLenum target GLenum attachment GLenum textarget GLuint texture GLint level GLint zoffset void glFramebufferTexture3DEXT GLenum target GLenum attachment GLenum textarget GLuint texture GLint level GLint zoffset void glFramebufferTexture3DOES GLenum target GLenum attachment GLenum textarget GLuint texture GLint level GLint zoffset void glFramebufferTextureARB GLenum target GLenum attachment GLuint texture GLint level void glFramebufferTextureEXT GLenum target GLenum attachment GLuint texture GLint level void glFramebufferTextureFaceARB GLenum target GLenum attachment GLuint texture GLint level GLenum face void glFramebufferTextureFaceEXT GLenum target GLenum attachment GLuint texture GLint level GLenum face void glFramebufferTextureLayer GLenum target GLenum attachment GLuint texture GLint level GLint layer void glFramebufferTextureLayerARB GLenum target GLenum attachment GLuint texture GLint level GLint layer void glFramebufferTextureLayerEXT GLenum target GLenum attachment GLuint texture GLint level GLint layer void glFramebufferTextureLayerDownsampleIMG GLenum target GLenum attachment GLuint texture GLint level GLint layer GLint xscale GLint yscale void glFramebufferTextureMultisampleMultiviewOVR GLenum target GLenum attachment GLuint texture GLint level GLsizei samples GLint baseViewIndex GLsizei numViews void glFramebufferTextureMultiviewOVR GLenum target GLenum attachment GLuint texture GLint level GLint baseViewIndex GLsizei numViews void glFramebufferTextureOES GLenum target GLenum attachment GLuint texture GLint level void glFreeObjectBufferATI GLuint buffer void glFrontFace GLenum mode void glFrustum GLdouble left GLdouble right GLdouble bottom GLdouble top GLdouble zNear GLdouble zFar void glFrustumf GLfloat l GLfloat r GLfloat b GLfloat t GLfloat n GLfloat f void glFrustumfOES GLfloat l GLfloat r GLfloat b GLfloat t GLfloat n GLfloat f void glFrustumx GLfixed l GLfixed r GLfixed b GLfixed t GLfixed n GLfixed f void glFrustumxOES GLfixed l GLfixed r GLfixed b GLfixed t GLfixed n GLfixed f GLuint glGenAsyncMarkersSGIX GLsizei range void glGenBuffers GLsizei n GLuint *buffers void glGenBuffersARB GLsizei n GLuint *buffers void glGenFencesAPPLE GLsizei n GLuint *fences void glGenFencesNV GLsizei n GLuint *fences GLuint glGenFragmentShadersATI GLuint range void glGenFramebuffers GLsizei n GLuint *framebuffers void glGenFramebuffersEXT GLsizei n GLuint *framebuffers void glGenFramebuffersOES GLsizei n GLuint *framebuffers GLuint glGenLists GLsizei range void glGenNamesAMD GLenum identifier GLuint num GLuint *names void glGenOcclusionQueriesNV GLsizei n GLuint *ids GLuint glGenPathsNV GLsizei range void glGenPerfMonitorsAMD GLsizei n GLuint *monitors void glGenProgramPipelines GLsizei n GLuint *pipelines void glGenProgramPipelinesEXT GLsizei n GLuint *pipelines void glGenProgramsARB GLsizei n GLuint *programs void glGenProgramsNV GLsizei n GLuint *programs void glGenQueries GLsizei n GLuint *ids void glGenQueriesARB GLsizei n GLuint *ids void glGenQueriesEXT GLsizei n GLuint *ids void glGenQueryResourceTagNV GLsizei n GLint *tagIds void glGenRenderbuffers GLsizei n GLuint *renderbuffers void glGenRenderbuffersEXT GLsizei n GLuint *renderbuffers void glGenRenderbuffersOES GLsizei n GLuint *renderbuffers void glGenSamplers GLsizei count GLuint *samplers void glGenSemaphoresEXT GLsizei n GLuint *semaphores GLuint glGenSymbolsEXT GLenum datatype GLenum storagetype GLenum range GLuint components void glGenTextures GLsizei n GLuint *textures void glGenTexturesEXT GLsizei n GLuint *textures void glGenTransformFeedbacks GLsizei n GLuint *ids void glGenTransformFeedbacksNV GLsizei n GLuint *ids void glGenVertexArrays GLsizei n GLuint *arrays void glGenVertexArraysAPPLE GLsizei n GLuint *arrays void glGenVertexArraysOES GLsizei n GLuint *arrays GLuint glGenVertexShadersEXT GLuint range void glGenerateMipmap GLenum target void glGenerateMipmapEXT GLenum target void glGenerateMipmapOES GLenum target void glGenerateMultiTexMipmapEXT GLenum texunit GLenum target void glGenerateTextureMipmap GLuint texture void glGenerateTextureMipmapEXT GLuint texture GLenum target void glGetActiveAtomicCounterBufferiv GLuint program GLuint bufferIndex GLenum pname GLint *params void glGetActiveAttrib GLuint program GLuint index GLsizei bufSize GLsizei *length GLint *size GLenum *type GLchar *name void glGetActiveAttribARB GLhandleARB programObj GLuint index GLsizei maxLength GLsizei *length GLint *size GLenum *type GLcharARB *name void glGetActiveSubroutineName GLuint program GLenum shadertype GLuint index GLsizei bufsize GLsizei *length GLchar *name void glGetActiveSubroutineUniformName GLuint program GLenum shadertype GLuint index GLsizei bufsize GLsizei *length GLchar *name void glGetActiveSubroutineUniformiv GLuint program GLenum shadertype GLuint index GLenum pname GLint *values void glGetActiveUniform GLuint program GLuint index GLsizei bufSize GLsizei *length GLint *size GLenum *type GLchar *name void glGetActiveUniformARB GLhandleARB programObj GLuint index GLsizei maxLength GLsizei *length GLint *size GLenum *type GLcharARB *name void glGetActiveUniformBlockName GLuint program GLuint uniformBlockIndex GLsizei bufSize GLsizei *length GLchar *uniformBlockName void glGetActiveUniformBlockiv GLuint program GLuint uniformBlockIndex GLenum pname GLint *params void glGetActiveUniformName GLuint program GLuint uniformIndex GLsizei bufSize GLsizei *length GLchar *uniformName void glGetActiveUniformsiv GLuint program GLsizei uniformCount const GLuint *uniformIndices GLenum pname GLint *params void glGetActiveVaryingNV GLuint program GLuint index GLsizei bufSize GLsizei *length GLsizei *size GLenum *type GLchar *name void glGetArrayObjectfvATI GLenum array GLenum pname GLfloat *params void glGetArrayObjectivATI GLenum array GLenum pname GLint *params void glGetAttachedObjectsARB GLhandleARB containerObj GLsizei maxCount GLsizei *count GLhandleARB *obj void glGetAttachedShaders GLuint program GLsizei maxCount GLsizei *count GLuint *shaders GLint glGetAttribLocation GLuint program const GLchar *name GLint glGetAttribLocationARB GLhandleARB programObj const GLcharARB *name void glGetBooleanIndexedvEXT GLenum target GLuint index GLboolean *data void glGetBooleani_v GLenum target GLuint index GLboolean *data void glGetBooleanv GLenum pname GLboolean *data void glGetBufferParameteri64v GLenum target GLenum pname GLint64 *params void glGetBufferParameteriv GLenum target GLenum pname GLint *params void glGetBufferParameterivARB GLenum target GLenum pname GLint *params void glGetBufferParameterui64vNV GLenum target GLenum pname GLuint64EXT *params void glGetBufferPointerv GLenum target GLenum pname void **params void glGetBufferPointervARB GLenum target GLenum pname void **params void glGetBufferPointervOES GLenum target GLenum pname void **params void glGetBufferSubData GLenum target GLintptr offset GLsizeiptr size void *data void glGetBufferSubDataARB GLenum target GLintptrARB offset GLsizeiptrARB size void *data void glGetClipPlane GLenum plane GLdouble *equation void glGetClipPlanef GLenum plane GLfloat *equation void glGetClipPlanefOES GLenum plane GLfloat *equation void glGetClipPlanex GLenum plane GLfixed *equation void glGetClipPlanexOES GLenum plane GLfixed *equation void glGetColorTable GLenum target GLenum format GLenum type void *table void glGetColorTableEXT GLenum target GLenum format GLenum type void *data void glGetColorTableParameterfv GLenum target GLenum pname GLfloat *params void glGetColorTableParameterfvEXT GLenum target GLenum pname GLfloat *params void glGetColorTableParameterfvSGI GLenum target GLenum pname GLfloat *params void glGetColorTableParameteriv GLenum target GLenum pname GLint *params void glGetColorTableParameterivEXT GLenum target GLenum pname GLint *params void glGetColorTableParameterivSGI GLenum target GLenum pname GLint *params void glGetColorTableSGI GLenum target GLenum format GLenum type void *table void glGetCombinerInputParameterfvNV GLenum stage GLenum portion GLenum variable GLenum pname GLfloat *params void glGetCombinerInputParameterivNV GLenum stage GLenum portion GLenum variable GLenum pname GLint *params void glGetCombinerOutputParameterfvNV GLenum stage GLenum portion GLenum pname GLfloat *params void glGetCombinerOutputParameterivNV GLenum stage GLenum portion GLenum pname GLint *params void glGetCombinerStageParameterfvNV GLenum stage GLenum pname GLfloat *params GLuint glGetCommandHeaderNV GLenum tokenID GLuint size void glGetCompressedMultiTexImageEXT GLenum texunit GLenum target GLint lod void *img void glGetCompressedTexImage GLenum target GLint level void *img void glGetCompressedTexImageARB GLenum target GLint level void *img void glGetCompressedTextureImage GLuint texture GLint level GLsizei bufSize void *pixels void glGetCompressedTextureImageEXT GLuint texture GLenum target GLint lod void *img void glGetCompressedTextureSubImage GLuint texture GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLsizei bufSize void *pixels void glGetConvolutionFilter GLenum target GLenum format GLenum type void *image void glGetConvolutionFilterEXT GLenum target GLenum format GLenum type void *image void glGetConvolutionParameterfv GLenum target GLenum pname GLfloat *params void glGetConvolutionParameterfvEXT GLenum target GLenum pname GLfloat *params void glGetConvolutionParameteriv GLenum target GLenum pname GLint *params void glGetConvolutionParameterivEXT GLenum target GLenum pname GLint *params void glGetConvolutionParameterxvOES GLenum target GLenum pname GLfixed *params void glGetCoverageModulationTableNV GLsizei bufsize GLfloat *v GLuint glGetDebugMessageLog GLuint count GLsizei bufSize GLenum *sources GLenum *types GLuint *ids GLenum *severities GLsizei *lengths GLchar *messageLog GLuint glGetDebugMessageLogAMD GLuint count GLsizei bufsize GLenum *categories GLuint *severities GLuint *ids GLsizei *lengths GLchar *message GLuint glGetDebugMessageLogARB GLuint count GLsizei bufSize GLenum *sources GLenum *types GLuint *ids GLenum *severities GLsizei *lengths GLchar *messageLog GLuint glGetDebugMessageLogKHR GLuint count GLsizei bufSize GLenum *sources GLenum *types GLuint *ids GLenum *severities GLsizei *lengths GLchar *messageLog void glGetDetailTexFuncSGIS GLenum target GLfloat *points void glGetDoubleIndexedvEXT GLenum target GLuint index GLdouble *data void glGetDoublei_v GLenum target GLuint index GLdouble *data void glGetDoublei_vEXT GLenum pname GLuint index GLdouble *params void glGetDoublev GLenum pname GLdouble *data void glGetDriverControlStringQCOM GLuint driverControl GLsizei bufSize GLsizei *length GLchar *driverControlString void glGetDriverControlsQCOM GLint *num GLsizei size GLuint *driverControls GLenum glGetError void glGetFenceivNV GLuint fence GLenum pname GLint *params void glGetFinalCombinerInputParameterfvNV GLenum variable GLenum pname GLfloat *params void glGetFinalCombinerInputParameterivNV GLenum variable GLenum pname GLint *params void glGetFirstPerfQueryIdINTEL GLuint *queryId void glGetFixedv GLenum pname GLfixed *params void glGetFixedvOES GLenum pname GLfixed *params void glGetFloatIndexedvEXT GLenum target GLuint index GLfloat *data void glGetFloati_v GLenum target GLuint index GLfloat *data void glGetFloati_vEXT GLenum pname GLuint index GLfloat *params void glGetFloati_vNV GLenum target GLuint index GLfloat *data void glGetFloati_vOES GLenum target GLuint index GLfloat *data void glGetFloatv GLenum pname GLfloat *data void glGetFogFuncSGIS GLfloat *points GLint glGetFragDataIndex GLuint program const GLchar *name GLint glGetFragDataIndexEXT GLuint program const GLchar *name GLint glGetFragDataLocation GLuint program const GLchar *name GLint glGetFragDataLocationEXT GLuint program const GLchar *name void glGetFragmentLightfvSGIX GLenum light GLenum pname GLfloat *params void glGetFragmentLightivSGIX GLenum light GLenum pname GLint *params void glGetFragmentMaterialfvSGIX GLenum face GLenum pname GLfloat *params void glGetFragmentMaterialivSGIX GLenum face GLenum pname GLint *params void glGetFramebufferAttachmentParameteriv GLenum target GLenum attachment GLenum pname GLint *params void glGetFramebufferAttachmentParameterivEXT GLenum target GLenum attachment GLenum pname GLint *params void glGetFramebufferAttachmentParameterivOES GLenum target GLenum attachment GLenum pname GLint *params void glGetFramebufferParameterfvAMD GLenum target GLenum pname GLuint numsamples GLuint pixelindex GLsizei size GLfloat *values void glGetFramebufferParameteriv GLenum target GLenum pname GLint *params void glGetFramebufferParameterivEXT GLuint framebuffer GLenum pname GLint *params GLsizei glGetFramebufferPixelLocalStorageSizeEXT GLuint target GLenum glGetGraphicsResetStatus GLenum glGetGraphicsResetStatusARB GLenum glGetGraphicsResetStatusEXT GLenum glGetGraphicsResetStatusKHR GLhandleARB glGetHandleARB GLenum pname void glGetHistogram GLenum target GLboolean reset GLenum format GLenum type void *values void glGetHistogramEXT GLenum target GLboolean reset GLenum format GLenum type void *values void glGetHistogramParameterfv GLenum target GLenum pname GLfloat *params void glGetHistogramParameterfvEXT GLenum target GLenum pname GLfloat *params void glGetHistogramParameteriv GLenum target GLenum pname GLint *params void glGetHistogramParameterivEXT GLenum target GLenum pname GLint *params void glGetHistogramParameterxvOES GLenum target GLenum pname GLfixed *params GLuint64 glGetImageHandleARB GLuint texture GLint level GLboolean layered GLint layer GLenum format GLuint64 glGetImageHandleNV GLuint texture GLint level GLboolean layered GLint layer GLenum format void glGetImageTransformParameterfvHP GLenum target GLenum pname GLfloat *params void glGetImageTransformParameterivHP GLenum target GLenum pname GLint *params void glGetInfoLogARB GLhandleARB obj GLsizei maxLength GLsizei *length GLcharARB *infoLog GLint glGetInstrumentsSGIX void glGetInteger64i_v GLenum target GLuint index GLint64 *data void glGetInteger64v GLenum pname GLint64 *data void glGetInteger64vAPPLE GLenum pname GLint64 *params void glGetIntegerIndexedvEXT GLenum target GLuint index GLint *data void glGetIntegeri_v GLenum target GLuint index GLint *data void glGetIntegeri_vEXT GLenum target GLuint index GLint *data void glGetIntegerui64i_vNV GLenum value GLuint index GLuint64EXT *result void glGetIntegerui64vNV GLenum value GLuint64EXT *result void glGetIntegerv GLenum pname GLint *data void glGetInternalformatSampleivNV GLenum target GLenum internalformat GLsizei samples GLenum pname GLsizei bufSize GLint *params void glGetInternalformati64v GLenum target GLenum internalformat GLenum pname GLsizei bufSize GLint64 *params void glGetInternalformativ GLenum target GLenum internalformat GLenum pname GLsizei bufSize GLint *params void glGetInvariantBooleanvEXT GLuint id GLenum value GLboolean *data void glGetInvariantFloatvEXT GLuint id GLenum value GLfloat *data void glGetInvariantIntegervEXT GLuint id GLenum value GLint *data void glGetLightfv GLenum light GLenum pname GLfloat *params void glGetLightiv GLenum light GLenum pname GLint *params void glGetLightxOES GLenum light GLenum pname GLfixed *params void glGetLightxv GLenum light GLenum pname GLfixed *params void glGetLightxvOES GLenum light GLenum pname GLfixed *params void glGetListParameterfvSGIX GLuint list GLenum pname GLfloat *params void glGetListParameterivSGIX GLuint list GLenum pname GLint *params void glGetLocalConstantBooleanvEXT GLuint id GLenum value GLboolean *data void glGetLocalConstantFloatvEXT GLuint id GLenum value GLfloat *data void glGetLocalConstantIntegervEXT GLuint id GLenum value GLint *data void glGetMapAttribParameterfvNV GLenum target GLuint index GLenum pname GLfloat *params void glGetMapAttribParameterivNV GLenum target GLuint index GLenum pname GLint *params void glGetMapControlPointsNV GLenum target GLuint index GLenum type GLsizei ustride GLsizei vstride GLboolean packed void *points void glGetMapParameterfvNV GLenum target GLenum pname GLfloat *params void glGetMapParameterivNV GLenum target GLenum pname GLint *params void glGetMapdv GLenum target GLenum query GLdouble *v void glGetMapfv GLenum target GLenum query GLfloat *v void glGetMapiv GLenum target GLenum query GLint *v void glGetMapxvOES GLenum target GLenum query GLfixed *v void glGetMaterialfv GLenum face GLenum pname GLfloat *params void glGetMaterialiv GLenum face GLenum pname GLint *params void glGetMaterialxOES GLenum face GLenum pname GLfixed param void glGetMaterialxv GLenum face GLenum pname GLfixed *params void glGetMaterialxvOES GLenum face GLenum pname GLfixed *params void glGetMemoryObjectDetachedResourcesuivNV GLuint memory GLenum pname GLint first GLsizei count GLuint *params void glGetMemoryObjectParameterivEXT GLuint memoryObject GLenum pname GLint *params void glGetMinmax GLenum target GLboolean reset GLenum format GLenum type void *values void glGetMinmaxEXT GLenum target GLboolean reset GLenum format GLenum type void *values void glGetMinmaxParameterfv GLenum target GLenum pname GLfloat *params void glGetMinmaxParameterfvEXT GLenum target GLenum pname GLfloat *params void glGetMinmaxParameteriv GLenum target GLenum pname GLint *params void glGetMinmaxParameterivEXT GLenum target GLenum pname GLint *params void glGetMultiTexEnvfvEXT GLenum texunit GLenum target GLenum pname GLfloat *params void glGetMultiTexEnvivEXT GLenum texunit GLenum target GLenum pname GLint *params void glGetMultiTexGendvEXT GLenum texunit GLenum coord GLenum pname GLdouble *params void glGetMultiTexGenfvEXT GLenum texunit GLenum coord GLenum pname GLfloat *params void glGetMultiTexGenivEXT GLenum texunit GLenum coord GLenum pname GLint *params void glGetMultiTexImageEXT GLenum texunit GLenum target GLint level GLenum format GLenum type void *pixels void glGetMultiTexLevelParameterfvEXT GLenum texunit GLenum target GLint level GLenum pname GLfloat *params void glGetMultiTexLevelParameterivEXT GLenum texunit GLenum target GLint level GLenum pname GLint *params void glGetMultiTexParameterIivEXT GLenum texunit GLenum target GLenum pname GLint *params void glGetMultiTexParameterIuivEXT GLenum texunit GLenum target GLenum pname GLuint *params void glGetMultiTexParameterfvEXT GLenum texunit GLenum target GLenum pname GLfloat *params void glGetMultiTexParameterivEXT GLenum texunit GLenum target GLenum pname GLint *params void glGetMultisamplefv GLenum pname GLuint index GLfloat *val void glGetMultisamplefvNV GLenum pname GLuint index GLfloat *val void glGetNamedBufferParameteri64v GLuint buffer GLenum pname GLint64 *params void glGetNamedBufferParameteriv GLuint buffer GLenum pname GLint *params void glGetNamedBufferParameterivEXT GLuint buffer GLenum pname GLint *params void glGetNamedBufferParameterui64vNV GLuint buffer GLenum pname GLuint64EXT *params void glGetNamedBufferPointerv GLuint buffer GLenum pname void **params void glGetNamedBufferPointervEXT GLuint buffer GLenum pname void **params void glGetNamedBufferSubData GLuint buffer GLintptr offset GLsizeiptr size void *data void glGetNamedBufferSubDataEXT GLuint buffer GLintptr offset GLsizeiptr size void *data void glGetNamedFramebufferParameterfvAMD GLuint framebuffer GLenum pname GLuint numsamples GLuint pixelindex GLsizei size GLfloat *values void glGetNamedFramebufferAttachmentParameteriv GLuint framebuffer GLenum attachment GLenum pname GLint *params void glGetNamedFramebufferAttachmentParameterivEXT GLuint framebuffer GLenum attachment GLenum pname GLint *params void glGetNamedFramebufferParameteriv GLuint framebuffer GLenum pname GLint *param void glGetNamedFramebufferParameterivEXT GLuint framebuffer GLenum pname GLint *params void glGetNamedProgramLocalParameterIivEXT GLuint program GLenum target GLuint index GLint *params void glGetNamedProgramLocalParameterIuivEXT GLuint program GLenum target GLuint index GLuint *params void glGetNamedProgramLocalParameterdvEXT GLuint program GLenum target GLuint index GLdouble *params void glGetNamedProgramLocalParameterfvEXT GLuint program GLenum target GLuint index GLfloat *params void glGetNamedProgramStringEXT GLuint program GLenum target GLenum pname void *string void glGetNamedProgramivEXT GLuint program GLenum target GLenum pname GLint *params void glGetNamedRenderbufferParameteriv GLuint renderbuffer GLenum pname GLint *params void glGetNamedRenderbufferParameterivEXT GLuint renderbuffer GLenum pname GLint *params void glGetNamedStringARB GLint namelen const GLchar *name GLsizei bufSize GLint *stringlen GLchar *string void glGetNamedStringivARB GLint namelen const GLchar *name GLenum pname GLint *params void glGetNextPerfQueryIdINTEL GLuint queryId GLuint *nextQueryId void glGetObjectBufferfvATI GLuint buffer GLenum pname GLfloat *params void glGetObjectBufferivATI GLuint buffer GLenum pname GLint *params void glGetObjectLabel GLenum identifier GLuint name GLsizei bufSize GLsizei *length GLchar *label void glGetObjectLabelEXT GLenum type GLuint object GLsizei bufSize GLsizei *length GLchar *label void glGetObjectLabelKHR GLenum identifier GLuint name GLsizei bufSize GLsizei *length GLchar *label void glGetObjectParameterfvARB GLhandleARB obj GLenum pname GLfloat *params void glGetObjectParameterivAPPLE GLenum objectType GLuint name GLenum pname GLint *params void glGetObjectParameterivARB GLhandleARB obj GLenum pname GLint *params void glGetObjectPtrLabel const void *ptr GLsizei bufSize GLsizei *length GLchar *label void glGetObjectPtrLabelKHR const void *ptr GLsizei bufSize GLsizei *length GLchar *label void glGetOcclusionQueryivNV GLuint id GLenum pname GLint *params void glGetOcclusionQueryuivNV GLuint id GLenum pname GLuint *params void glGetPathColorGenfvNV GLenum color GLenum pname GLfloat *value void glGetPathColorGenivNV GLenum color GLenum pname GLint *value void glGetPathCommandsNV GLuint path GLubyte *commands void glGetPathCoordsNV GLuint path GLfloat *coords void glGetPathDashArrayNV GLuint path GLfloat *dashArray GLfloat glGetPathLengthNV GLuint path GLsizei startSegment GLsizei numSegments void glGetPathMetricRangeNV GLbitfield metricQueryMask GLuint firstPathName GLsizei numPaths GLsizei stride GLfloat *metrics void glGetPathMetricsNV GLbitfield metricQueryMask GLsizei numPaths GLenum pathNameType const void *paths GLuint pathBase GLsizei stride GLfloat *metrics void glGetPathParameterfvNV GLuint path GLenum pname GLfloat *value void glGetPathParameterivNV GLuint path GLenum pname GLint *value void glGetPathSpacingNV GLenum pathListMode GLsizei numPaths GLenum pathNameType const void *paths GLuint pathBase GLfloat advanceScale GLfloat kerningScale GLenum transformType GLfloat *returnedSpacing void glGetPathTexGenfvNV GLenum texCoordSet GLenum pname GLfloat *value void glGetPathTexGenivNV GLenum texCoordSet GLenum pname GLint *value void glGetPerfCounterInfoINTEL GLuint queryId GLuint counterId GLuint counterNameLength GLchar *counterName GLuint counterDescLength GLchar *counterDesc GLuint *counterOffset GLuint *counterDataSize GLuint *counterTypeEnum GLuint *counterDataTypeEnum GLuint64 *rawCounterMaxValue void glGetPerfMonitorCounterDataAMD GLuint monitor GLenum pname GLsizei dataSize GLuint *data GLint *bytesWritten void glGetPerfMonitorCounterInfoAMD GLuint group GLuint counter GLenum pname void *data void glGetPerfMonitorCounterStringAMD GLuint group GLuint counter GLsizei bufSize GLsizei *length GLchar *counterString void glGetPerfMonitorCountersAMD GLuint group GLint *numCounters GLint *maxActiveCounters GLsizei counterSize GLuint *counters void glGetPerfMonitorGroupStringAMD GLuint group GLsizei bufSize GLsizei *length GLchar *groupString void glGetPerfMonitorGroupsAMD GLint *numGroups GLsizei groupsSize GLuint *groups void glGetPerfQueryDataINTEL GLuint queryHandle GLuint flags GLsizei dataSize void *data GLuint *bytesWritten void glGetPerfQueryIdByNameINTEL GLchar *queryName GLuint *queryId void glGetPerfQueryInfoINTEL GLuint queryId GLuint queryNameLength GLchar *queryName GLuint *dataSize GLuint *noCounters GLuint *noInstances GLuint *capsMask void glGetPixelMapfv GLenum map GLfloat *values void glGetPixelMapuiv GLenum map GLuint *values void glGetPixelMapusv GLenum map GLushort *values void glGetPixelMapxv GLenum map GLint size GLfixed *values void glGetPixelTexGenParameterfvSGIS GLenum pname GLfloat *params void glGetPixelTexGenParameterivSGIS GLenum pname GLint *params void glGetPixelTransformParameterfvEXT GLenum target GLenum pname GLfloat *params void glGetPixelTransformParameterivEXT GLenum target GLenum pname GLint *params void glGetPointerIndexedvEXT GLenum target GLuint index void **data void glGetPointeri_vEXT GLenum pname GLuint index void **params void glGetPointerv GLenum pname void **params void glGetPointervEXT GLenum pname void **params void glGetPointervKHR GLenum pname void **params void glGetPolygonStipple GLubyte *mask void glGetProgramBinary GLuint program GLsizei bufSize GLsizei *length GLenum *binaryFormat void *binary void glGetProgramBinaryOES GLuint program GLsizei bufSize GLsizei *length GLenum *binaryFormat void *binary void glGetProgramEnvParameterIivNV GLenum target GLuint index GLint *params void glGetProgramEnvParameterIuivNV GLenum target GLuint index GLuint *params void glGetProgramEnvParameterdvARB GLenum target GLuint index GLdouble *params void glGetProgramEnvParameterfvARB GLenum target GLuint index GLfloat *params void glGetProgramInfoLog GLuint program GLsizei bufSize GLsizei *length GLchar *infoLog void glGetProgramInterfaceiv GLuint program GLenum programInterface GLenum pname GLint *params void glGetProgramLocalParameterIivNV GLenum target GLuint index GLint *params void glGetProgramLocalParameterIuivNV GLenum target GLuint index GLuint *params void glGetProgramLocalParameterdvARB GLenum target GLuint index GLdouble *params void glGetProgramLocalParameterfvARB GLenum target GLuint index GLfloat *params void glGetProgramNamedParameterdvNV GLuint id GLsizei len const GLubyte *name GLdouble *params void glGetProgramNamedParameterfvNV GLuint id GLsizei len const GLubyte *name GLfloat *params void glGetProgramParameterdvNV GLenum target GLuint index GLenum pname GLdouble *params void glGetProgramParameterfvNV GLenum target GLuint index GLenum pname GLfloat *params void glGetProgramPipelineInfoLog GLuint pipeline GLsizei bufSize GLsizei *length GLchar *infoLog void glGetProgramPipelineInfoLogEXT GLuint pipeline GLsizei bufSize GLsizei *length GLchar *infoLog void glGetProgramPipelineiv GLuint pipeline GLenum pname GLint *params void glGetProgramPipelineivEXT GLuint pipeline GLenum pname GLint *params GLuint glGetProgramResourceIndex GLuint program GLenum programInterface const GLchar *name GLint glGetProgramResourceLocation GLuint program GLenum programInterface const GLchar *name GLint glGetProgramResourceLocationIndex GLuint program GLenum programInterface const GLchar *name GLint glGetProgramResourceLocationIndexEXT GLuint program GLenum programInterface const GLchar *name void glGetProgramResourceName GLuint program GLenum programInterface GLuint index GLsizei bufSize GLsizei *length GLchar *name void glGetProgramResourcefvNV GLuint program GLenum programInterface GLuint index GLsizei propCount const GLenum *props GLsizei bufSize GLsizei *length GLfloat *params void glGetProgramResourceiv GLuint program GLenum programInterface GLuint index GLsizei propCount const GLenum *props GLsizei bufSize GLsizei *length GLint *params void glGetProgramStageiv GLuint program GLenum shadertype GLenum pname GLint *values void glGetProgramStringARB GLenum target GLenum pname void *string void glGetProgramStringNV GLuint id GLenum pname GLubyte *program void glGetProgramSubroutineParameteruivNV GLenum target GLuint index GLuint *param void glGetProgramiv GLuint program GLenum pname GLint *params void glGetProgramivARB GLenum target GLenum pname GLint *params void glGetProgramivNV GLuint id GLenum pname GLint *params void glGetQueryBufferObjecti64v GLuint id GLuint buffer GLenum pname GLintptr offset void glGetQueryBufferObjectiv GLuint id GLuint buffer GLenum pname GLintptr offset void glGetQueryBufferObjectui64v GLuint id GLuint buffer GLenum pname GLintptr offset void glGetQueryBufferObjectuiv GLuint id GLuint buffer GLenum pname GLintptr offset void glGetQueryIndexediv GLenum target GLuint index GLenum pname GLint *params void glGetQueryObjecti64v GLuint id GLenum pname GLint64 *params void glGetQueryObjecti64vEXT GLuint id GLenum pname GLint64 *params void glGetQueryObjectiv GLuint id GLenum pname GLint *params void glGetQueryObjectivARB GLuint id GLenum pname GLint *params void glGetQueryObjectivEXT GLuint id GLenum pname GLint *params void glGetQueryObjectui64v GLuint id GLenum pname GLuint64 *params void glGetQueryObjectui64vEXT GLuint id GLenum pname GLuint64 *params void glGetQueryObjectuiv GLuint id GLenum pname GLuint *params void glGetQueryObjectuivARB GLuint id GLenum pname GLuint *params void glGetQueryObjectuivEXT GLuint id GLenum pname GLuint *params void glGetQueryiv GLenum target GLenum pname GLint *params void glGetQueryivARB GLenum target GLenum pname GLint *params void glGetQueryivEXT GLenum target GLenum pname GLint *params void glGetRenderbufferParameteriv GLenum target GLenum pname GLint *params void glGetRenderbufferParameterivEXT GLenum target GLenum pname GLint *params void glGetRenderbufferParameterivOES GLenum target GLenum pname GLint *params void glGetSamplerParameterIiv GLuint sampler GLenum pname GLint *params void glGetSamplerParameterIivEXT GLuint sampler GLenum pname GLint *params void glGetSamplerParameterIivOES GLuint sampler GLenum pname GLint *params void glGetSamplerParameterIuiv GLuint sampler GLenum pname GLuint *params void glGetSamplerParameterIuivEXT GLuint sampler GLenum pname GLuint *params void glGetSamplerParameterIuivOES GLuint sampler GLenum pname GLuint *params void glGetSamplerParameterfv GLuint sampler GLenum pname GLfloat *params void glGetSamplerParameteriv GLuint sampler GLenum pname GLint *params void glGetSemaphoreParameterui64vEXT GLuint semaphore GLenum pname GLuint64 *params void glGetSeparableFilter GLenum target GLenum format GLenum type void *row void *column void *span void glGetSeparableFilterEXT GLenum target GLenum format GLenum type void *row void *column void *span void glGetShaderInfoLog GLuint shader GLsizei bufSize GLsizei *length GLchar *infoLog void glGetShaderPrecisionFormat GLenum shadertype GLenum precisiontype GLint *range GLint *precision void glGetShaderSource GLuint shader GLsizei bufSize GLsizei *length GLchar *source void glGetShaderSourceARB GLhandleARB obj GLsizei maxLength GLsizei *length GLcharARB *source void glGetShaderiv GLuint shader GLenum pname GLint *params void glGetShadingRateImagePaletteNV GLuint viewport GLuint entry GLenum *rate void glGetShadingRateSampleLocationivNV GLenum rate GLuint samples GLuint index GLint *location void glGetSharpenTexFuncSGIS GLenum target GLfloat *points GLushort glGetStageIndexNV GLenum shadertype const GLubyte *glGetString GLenum name const GLubyte *glGetStringi GLenum name GLuint index GLuint glGetSubroutineIndex GLuint program GLenum shadertype const GLchar *name GLint glGetSubroutineUniformLocation GLuint program GLenum shadertype const GLchar *name void glGetSynciv GLsync sync GLenum pname GLsizei bufSize GLsizei *length GLint *values void glGetSyncivAPPLE GLsync sync GLenum pname GLsizei bufSize GLsizei *length GLint *values void glGetTexBumpParameterfvATI GLenum pname GLfloat *param void glGetTexBumpParameterivATI GLenum pname GLint *param void glGetTexEnvfv GLenum target GLenum pname GLfloat *params void glGetTexEnviv GLenum target GLenum pname GLint *params void glGetTexEnvxv GLenum target GLenum pname GLfixed *params void glGetTexEnvxvOES GLenum target GLenum pname GLfixed *params void glGetTexFilterFuncSGIS GLenum target GLenum filter GLfloat *weights void glGetTexGendv GLenum coord GLenum pname GLdouble *params void glGetTexGenfv GLenum coord GLenum pname GLfloat *params void glGetTexGenfvOES GLenum coord GLenum pname GLfloat *params void glGetTexGeniv GLenum coord GLenum pname GLint *params void glGetTexGenivOES GLenum coord GLenum pname GLint *params void glGetTexGenxvOES GLenum coord GLenum pname GLfixed *params void glGetTexImage GLenum target GLint level GLenum format GLenum type void *pixels void glGetTexLevelParameterfv GLenum target GLint level GLenum pname GLfloat *params void glGetTexLevelParameteriv GLenum target GLint level GLenum pname GLint *params void glGetTexLevelParameterxvOES GLenum target GLint level GLenum pname GLfixed *params void glGetTexParameterIiv GLenum target GLenum pname GLint *params void glGetTexParameterIivEXT GLenum target GLenum pname GLint *params void glGetTexParameterIivOES GLenum target GLenum pname GLint *params void glGetTexParameterIuiv GLenum target GLenum pname GLuint *params void glGetTexParameterIuivEXT GLenum target GLenum pname GLuint *params void glGetTexParameterIuivOES GLenum target GLenum pname GLuint *params void glGetTexParameterPointervAPPLE GLenum target GLenum pname void **params void glGetTexParameterfv GLenum target GLenum pname GLfloat *params void glGetTexParameteriv GLenum target GLenum pname GLint *params void glGetTexParameterxv GLenum target GLenum pname GLfixed *params void glGetTexParameterxvOES GLenum target GLenum pname GLfixed *params GLuint64 glGetTextureHandleARB GLuint texture GLuint64 glGetTextureHandleIMG GLuint texture GLuint64 glGetTextureHandleNV GLuint texture void glGetTextureImage GLuint texture GLint level GLenum format GLenum type GLsizei bufSize void *pixels void glGetTextureImageEXT GLuint texture GLenum target GLint level GLenum format GLenum type void *pixels void glGetTextureLevelParameterfv GLuint texture GLint level GLenum pname GLfloat *params void glGetTextureLevelParameterfvEXT GLuint texture GLenum target GLint level GLenum pname GLfloat *params void glGetTextureLevelParameteriv GLuint texture GLint level GLenum pname GLint *params void glGetTextureLevelParameterivEXT GLuint texture GLenum target GLint level GLenum pname GLint *params void glGetTextureParameterIiv GLuint texture GLenum pname GLint *params void glGetTextureParameterIivEXT GLuint texture GLenum target GLenum pname GLint *params void glGetTextureParameterIuiv GLuint texture GLenum pname GLuint *params void glGetTextureParameterIuivEXT GLuint texture GLenum target GLenum pname GLuint *params void glGetTextureParameterfv GLuint texture GLenum pname GLfloat *params void glGetTextureParameterfvEXT GLuint texture GLenum target GLenum pname GLfloat *params void glGetTextureParameteriv GLuint texture GLenum pname GLint *params void glGetTextureParameterivEXT GLuint texture GLenum target GLenum pname GLint *params GLuint64 glGetTextureSamplerHandleARB GLuint texture GLuint sampler GLuint64 glGetTextureSamplerHandleIMG GLuint texture GLuint sampler GLuint64 glGetTextureSamplerHandleNV GLuint texture GLuint sampler void glGetTextureSubImage GLuint texture GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLenum type GLsizei bufSize void *pixels void glGetTrackMatrixivNV GLenum target GLuint address GLenum pname GLint *params void glGetTransformFeedbackVarying GLuint program GLuint index GLsizei bufSize GLsizei *length GLsizei *size GLenum *type GLchar *name void glGetTransformFeedbackVaryingEXT GLuint program GLuint index GLsizei bufSize GLsizei *length GLsizei *size GLenum *type GLchar *name void glGetTransformFeedbackVaryingNV GLuint program GLuint index GLint *location void glGetTransformFeedbacki64_v GLuint xfb GLenum pname GLuint index GLint64 *param void glGetTransformFeedbacki_v GLuint xfb GLenum pname GLuint index GLint *param void glGetTransformFeedbackiv GLuint xfb GLenum pname GLint *param void glGetTranslatedShaderSourceANGLE GLuint shader GLsizei bufsize GLsizei *length GLchar *source GLuint glGetUniformBlockIndex GLuint program const GLchar *uniformBlockName GLint glGetUniformBufferSizeEXT GLuint program GLint location void glGetUniformIndices GLuint program GLsizei uniformCount const GLchar *const*uniformNames GLuint *uniformIndices GLint glGetUniformLocation GLuint program const GLchar *name GLint glGetUniformLocationARB GLhandleARB programObj const GLcharARB *name GLintptr glGetUniformOffsetEXT GLuint program GLint location void glGetUniformSubroutineuiv GLenum shadertype GLint location GLuint *params void glGetUniformdv GLuint program GLint location GLdouble *params void glGetUniformfv GLuint program GLint location GLfloat *params void glGetUniformfvARB GLhandleARB programObj GLint location GLfloat *params void glGetUniformi64vARB GLuint program GLint location GLint64 *params void glGetUniformi64vNV GLuint program GLint location GLint64EXT *params void glGetUniformiv GLuint program GLint location GLint *params void glGetUniformivARB GLhandleARB programObj GLint location GLint *params void glGetUniformui64vARB GLuint program GLint location GLuint64 *params void glGetUniformui64vNV GLuint program GLint location GLuint64EXT *params void glGetUniformuiv GLuint program GLint location GLuint *params void glGetUniformuivEXT GLuint program GLint location GLuint *params void glGetUnsignedBytevEXT GLenum pname GLubyte *data void glGetUnsignedBytei_vEXT GLenum target GLuint index GLubyte *data void glGetVariantArrayObjectfvATI GLuint id GLenum pname GLfloat *params void glGetVariantArrayObjectivATI GLuint id GLenum pname GLint *params void glGetVariantBooleanvEXT GLuint id GLenum value GLboolean *data void glGetVariantFloatvEXT GLuint id GLenum value GLfloat *data void glGetVariantIntegervEXT GLuint id GLenum value GLint *data void glGetVariantPointervEXT GLuint id GLenum value void **data GLint glGetVaryingLocationNV GLuint program const GLchar *name void glGetVertexArrayIndexed64iv GLuint vaobj GLuint index GLenum pname GLint64 *param void glGetVertexArrayIndexediv GLuint vaobj GLuint index GLenum pname GLint *param void glGetVertexArrayIntegeri_vEXT GLuint vaobj GLuint index GLenum pname GLint *param void glGetVertexArrayIntegervEXT GLuint vaobj GLenum pname GLint *param void glGetVertexArrayPointeri_vEXT GLuint vaobj GLuint index GLenum pname void **param void glGetVertexArrayPointervEXT GLuint vaobj GLenum pname void **param void glGetVertexArrayiv GLuint vaobj GLenum pname GLint *param void glGetVertexAttribArrayObjectfvATI GLuint index GLenum pname GLfloat *params void glGetVertexAttribArrayObjectivATI GLuint index GLenum pname GLint *params void glGetVertexAttribIiv GLuint index GLenum pname GLint *params void glGetVertexAttribIivEXT GLuint index GLenum pname GLint *params void glGetVertexAttribIuiv GLuint index GLenum pname GLuint *params void glGetVertexAttribIuivEXT GLuint index GLenum pname GLuint *params void glGetVertexAttribLdv GLuint index GLenum pname GLdouble *params void glGetVertexAttribLdvEXT GLuint index GLenum pname GLdouble *params void glGetVertexAttribLi64vNV GLuint index GLenum pname GLint64EXT *params void glGetVertexAttribLui64vARB GLuint index GLenum pname GLuint64EXT *params void glGetVertexAttribLui64vNV GLuint index GLenum pname GLuint64EXT *params void glGetVertexAttribPointerv GLuint index GLenum pname void **pointer void glGetVertexAttribPointervARB GLuint index GLenum pname void **pointer void glGetVertexAttribPointervNV GLuint index GLenum pname void **pointer void glGetVertexAttribdv GLuint index GLenum pname GLdouble *params void glGetVertexAttribdvARB GLuint index GLenum pname GLdouble *params void glGetVertexAttribdvNV GLuint index GLenum pname GLdouble *params void glGetVertexAttribfv GLuint index GLenum pname GLfloat *params void glGetVertexAttribfvARB GLuint index GLenum pname GLfloat *params void glGetVertexAttribfvNV GLuint index GLenum pname GLfloat *params void glGetVertexAttribiv GLuint index GLenum pname GLint *params void glGetVertexAttribivARB GLuint index GLenum pname GLint *params void glGetVertexAttribivNV GLuint index GLenum pname GLint *params void glGetVideoCaptureStreamdvNV GLuint video_capture_slot GLuint stream GLenum pname GLdouble *params void glGetVideoCaptureStreamfvNV GLuint video_capture_slot GLuint stream GLenum pname GLfloat *params void glGetVideoCaptureStreamivNV GLuint video_capture_slot GLuint stream GLenum pname GLint *params void glGetVideoCaptureivNV GLuint video_capture_slot GLenum pname GLint *params void glGetVideoi64vNV GLuint video_slot GLenum pname GLint64EXT *params void glGetVideoivNV GLuint video_slot GLenum pname GLint *params void glGetVideoui64vNV GLuint video_slot GLenum pname GLuint64EXT *params void glGetVideouivNV GLuint video_slot GLenum pname GLuint *params void glGetnColorTable GLenum target GLenum format GLenum type GLsizei bufSize void *table void glGetnColorTableARB GLenum target GLenum format GLenum type GLsizei bufSize void *table void glGetnCompressedTexImage GLenum target GLint lod GLsizei bufSize void *pixels void glGetnCompressedTexImageARB GLenum target GLint lod GLsizei bufSize void *img void glGetnConvolutionFilter GLenum target GLenum format GLenum type GLsizei bufSize void *image void glGetnConvolutionFilterARB GLenum target GLenum format GLenum type GLsizei bufSize void *image void glGetnHistogram GLenum target GLboolean reset GLenum format GLenum type GLsizei bufSize void *values void glGetnHistogramARB GLenum target GLboolean reset GLenum format GLenum type GLsizei bufSize void *values void glGetnMapdv GLenum target GLenum query GLsizei bufSize GLdouble *v void glGetnMapdvARB GLenum target GLenum query GLsizei bufSize GLdouble *v void glGetnMapfv GLenum target GLenum query GLsizei bufSize GLfloat *v void glGetnMapfvARB GLenum target GLenum query GLsizei bufSize GLfloat *v void glGetnMapiv GLenum target GLenum query GLsizei bufSize GLint *v void glGetnMapivARB GLenum target GLenum query GLsizei bufSize GLint *v void glGetnMinmax GLenum target GLboolean reset GLenum format GLenum type GLsizei bufSize void *values void glGetnMinmaxARB GLenum target GLboolean reset GLenum format GLenum type GLsizei bufSize void *values void glGetnPixelMapfv GLenum map GLsizei bufSize GLfloat *values void glGetnPixelMapfvARB GLenum map GLsizei bufSize GLfloat *values void glGetnPixelMapuiv GLenum map GLsizei bufSize GLuint *values void glGetnPixelMapuivARB GLenum map GLsizei bufSize GLuint *values void glGetnPixelMapusv GLenum map GLsizei bufSize GLushort *values void glGetnPixelMapusvARB GLenum map GLsizei bufSize GLushort *values void glGetnPolygonStipple GLsizei bufSize GLubyte *pattern void glGetnPolygonStippleARB GLsizei bufSize GLubyte *pattern void glGetnSeparableFilter GLenum target GLenum format GLenum type GLsizei rowBufSize void *row GLsizei columnBufSize void *column void *span void glGetnSeparableFilterARB GLenum target GLenum format GLenum type GLsizei rowBufSize void *row GLsizei columnBufSize void *column void *span void glGetnTexImage GLenum target GLint level GLenum format GLenum type GLsizei bufSize void *pixels void glGetnTexImageARB GLenum target GLint level GLenum format GLenum type GLsizei bufSize void *img void glGetnUniformdv GLuint program GLint location GLsizei bufSize GLdouble *params void glGetnUniformdvARB GLuint program GLint location GLsizei bufSize GLdouble *params void glGetnUniformfv GLuint program GLint location GLsizei bufSize GLfloat *params void glGetnUniformfvARB GLuint program GLint location GLsizei bufSize GLfloat *params void glGetnUniformfvEXT GLuint program GLint location GLsizei bufSize GLfloat *params void glGetnUniformfvKHR GLuint program GLint location GLsizei bufSize GLfloat *params void glGetnUniformi64vARB GLuint program GLint location GLsizei bufSize GLint64 *params void glGetnUniformiv GLuint program GLint location GLsizei bufSize GLint *params void glGetnUniformivARB GLuint program GLint location GLsizei bufSize GLint *params void glGetnUniformivEXT GLuint program GLint location GLsizei bufSize GLint *params void glGetnUniformivKHR GLuint program GLint location GLsizei bufSize GLint *params void glGetnUniformui64vARB GLuint program GLint location GLsizei bufSize GLuint64 *params void glGetnUniformuiv GLuint program GLint location GLsizei bufSize GLuint *params void glGetnUniformuivARB GLuint program GLint location GLsizei bufSize GLuint *params void glGetnUniformuivKHR GLuint program GLint location GLsizei bufSize GLuint *params void glGlobalAlphaFactorbSUN GLbyte factor void glGlobalAlphaFactordSUN GLdouble factor void glGlobalAlphaFactorfSUN GLfloat factor void glGlobalAlphaFactoriSUN GLint factor void glGlobalAlphaFactorsSUN GLshort factor void glGlobalAlphaFactorubSUN GLubyte factor void glGlobalAlphaFactoruiSUN GLuint factor void glGlobalAlphaFactorusSUN GLushort factor void glHint GLenum target GLenum mode void glHintPGI GLenum target GLint mode void glHistogram GLenum target GLsizei width GLenum internalformat GLboolean sink void glHistogramEXT GLenum target GLsizei width GLenum internalformat GLboolean sink void glIglooInterfaceSGIX GLenum pname const void *params void glImageTransformParameterfHP GLenum target GLenum pname GLfloat param void glImageTransformParameterfvHP GLenum target GLenum pname const GLfloat *params void glImageTransformParameteriHP GLenum target GLenum pname GLint param void glImageTransformParameterivHP GLenum target GLenum pname const GLint *params void glImportMemoryFdEXT GLuint memory GLuint64 size GLenum handleType GLint fd void glImportMemoryWin32HandleEXT GLuint memory GLuint64 size GLenum handleType void *handle void glImportMemoryWin32NameEXT GLuint memory GLuint64 size GLenum handleType const void *name void glImportSemaphoreFdEXT GLuint semaphore GLenum handleType GLint fd void glImportSemaphoreWin32HandleEXT GLuint semaphore GLenum handleType void *handle void glImportSemaphoreWin32NameEXT GLuint semaphore GLenum handleType const void *name GLsync glImportSyncEXT GLenum external_sync_type GLintptr external_sync GLbitfield flags void glIndexFormatNV GLenum type GLsizei stride void glIndexFuncEXT GLenum func GLclampf ref void glIndexMask GLuint mask void glIndexMaterialEXT GLenum face GLenum mode void glIndexPointer GLenum type GLsizei stride const void *pointer void glIndexPointerEXT GLenum type GLsizei stride GLsizei count const void *pointer void glIndexPointerListIBM GLenum type GLint stride const void **pointer GLint ptrstride void glIndexd GLdouble c void glIndexdv const GLdouble *c void glIndexf GLfloat c void glIndexfv const GLfloat *c void glIndexi GLint c void glIndexiv const GLint *c void glIndexs GLshort c void glIndexsv const GLshort *c void glIndexub GLubyte c void glIndexubv const GLubyte *c void glIndexxOES GLfixed component void glIndexxvOES const GLfixed *component void glInitNames void glInsertComponentEXT GLuint res GLuint src GLuint num void glInsertEventMarkerEXT GLsizei length const GLchar *marker void glInstrumentsBufferSGIX GLsizei size GLint *buffer void glInterleavedArrays GLenum format GLsizei stride const void *pointer void glInterpolatePathsNV GLuint resultPath GLuint pathA GLuint pathB GLfloat weight void glInvalidateBufferData GLuint buffer void glInvalidateBufferSubData GLuint buffer GLintptr offset GLsizeiptr length void glInvalidateFramebuffer GLenum target GLsizei numAttachments const GLenum *attachments void glInvalidateNamedFramebufferData GLuint framebuffer GLsizei numAttachments const GLenum *attachments void glInvalidateNamedFramebufferSubData GLuint framebuffer GLsizei numAttachments const GLenum *attachments GLint x GLint y GLsizei width GLsizei height void glInvalidateSubFramebuffer GLenum target GLsizei numAttachments const GLenum *attachments GLint x GLint y GLsizei width GLsizei height void glInvalidateTexImage GLuint texture GLint level void glInvalidateTexSubImage GLuint texture GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLboolean glIsAsyncMarkerSGIX GLuint marker GLboolean glIsBuffer GLuint buffer GLboolean glIsBufferARB GLuint buffer GLboolean glIsBufferResidentNV GLenum target GLboolean glIsCommandListNV GLuint list GLboolean glIsEnabled GLenum cap GLboolean glIsEnabledIndexedEXT GLenum target GLuint index GLboolean glIsEnabledi GLenum target GLuint index GLboolean glIsEnablediEXT GLenum target GLuint index GLboolean glIsEnablediNV GLenum target GLuint index GLboolean glIsEnablediOES GLenum target GLuint index GLboolean glIsFenceAPPLE GLuint fence GLboolean glIsFenceNV GLuint fence GLboolean glIsFramebuffer GLuint framebuffer GLboolean glIsFramebufferEXT GLuint framebuffer GLboolean glIsFramebufferOES GLuint framebuffer GLboolean glIsImageHandleResidentARB GLuint64 handle GLboolean glIsImageHandleResidentNV GLuint64 handle GLboolean glIsList GLuint list GLboolean glIsMemoryObjectEXT GLuint memoryObject GLboolean glIsNameAMD GLenum identifier GLuint name GLboolean glIsNamedBufferResidentNV GLuint buffer GLboolean glIsNamedStringARB GLint namelen const GLchar *name GLboolean glIsObjectBufferATI GLuint buffer GLboolean glIsOcclusionQueryNV GLuint id GLboolean glIsPathNV GLuint path GLboolean glIsPointInFillPathNV GLuint path GLuint mask GLfloat x GLfloat y GLboolean glIsPointInStrokePathNV GLuint path GLfloat x GLfloat y GLboolean glIsProgram GLuint program GLboolean glIsProgramARB GLuint program GLboolean glIsProgramNV GLuint id GLboolean glIsProgramPipeline GLuint pipeline GLboolean glIsProgramPipelineEXT GLuint pipeline GLboolean glIsQuery GLuint id GLboolean glIsQueryARB GLuint id GLboolean glIsQueryEXT GLuint id GLboolean glIsRenderbuffer GLuint renderbuffer GLboolean glIsRenderbufferEXT GLuint renderbuffer GLboolean glIsRenderbufferOES GLuint renderbuffer GLboolean glIsSemaphoreEXT GLuint semaphore GLboolean glIsSampler GLuint sampler GLboolean glIsShader GLuint shader GLboolean glIsStateNV GLuint state GLboolean glIsSync GLsync sync GLboolean glIsSyncAPPLE GLsync sync GLboolean glIsTexture GLuint texture GLboolean glIsTextureEXT GLuint texture GLboolean glIsTextureHandleResidentARB GLuint64 handle GLboolean glIsTextureHandleResidentNV GLuint64 handle GLboolean glIsTransformFeedback GLuint id GLboolean glIsTransformFeedbackNV GLuint id GLboolean glIsVariantEnabledEXT GLuint id GLenum cap GLboolean glIsVertexArray GLuint array GLboolean glIsVertexArrayAPPLE GLuint array GLboolean glIsVertexArrayOES GLuint array GLboolean glIsVertexAttribEnabledAPPLE GLuint index GLenum pname void glLGPUCopyImageSubDataNVX GLuint sourceGpu GLbitfield destinationGpuMask GLuint srcName GLenum srcTarget GLint srcLevel GLint srcX GLint srxY GLint srcZ GLuint dstName GLenum dstTarget GLint dstLevel GLint dstX GLint dstY GLint dstZ GLsizei width GLsizei height GLsizei depth void glLGPUInterlockNVX void glLGPUNamedBufferSubDataNVX GLbitfield gpuMask GLuint buffer GLintptr offset GLsizeiptr size const void *data void glLabelObjectEXT GLenum type GLuint object GLsizei length const GLchar *label void glLightEnviSGIX GLenum pname GLint param void glLightModelf GLenum pname GLfloat param void glLightModelfv GLenum pname const GLfloat *params void glLightModeli GLenum pname GLint param void glLightModeliv GLenum pname const GLint *params void glLightModelx GLenum pname GLfixed param void glLightModelxOES GLenum pname GLfixed param void glLightModelxv GLenum pname const GLfixed *param void glLightModelxvOES GLenum pname const GLfixed *param void glLightf GLenum light GLenum pname GLfloat param void glLightfv GLenum light GLenum pname const GLfloat *params void glLighti GLenum light GLenum pname GLint param void glLightiv GLenum light GLenum pname const GLint *params void glLightx GLenum light GLenum pname GLfixed param void glLightxOES GLenum light GLenum pname GLfixed param void glLightxv GLenum light GLenum pname const GLfixed *params void glLightxvOES GLenum light GLenum pname const GLfixed *params void glLineStipple GLint factor GLushort pattern void glLineWidth GLfloat width void glLineWidthx GLfixed width void glLineWidthxOES GLfixed width void glLinkProgram GLuint program void glLinkProgramARB GLhandleARB programObj void glListBase GLuint base void glListDrawCommandsStatesClientNV GLuint list GLuint segment const void **indirects const GLsizei *sizes const GLuint *states const GLuint *fbos GLuint count void glListParameterfSGIX GLuint list GLenum pname GLfloat param void glListParameterfvSGIX GLuint list GLenum pname const GLfloat *params void glListParameteriSGIX GLuint list GLenum pname GLint param void glListParameterivSGIX GLuint list GLenum pname const GLint *params void glLoadIdentity void glLoadIdentityDeformationMapSGIX GLbitfield mask void glLoadMatrixd const GLdouble *m void glLoadMatrixf const GLfloat *m void glLoadMatrixx const GLfixed *m void glLoadMatrixxOES const GLfixed *m void glLoadName GLuint name void glLoadPaletteFromModelViewMatrixOES void glLoadProgramNV GLenum target GLuint id GLsizei len const GLubyte *program void glLoadTransposeMatrixd const GLdouble *m void glLoadTransposeMatrixdARB const GLdouble *m void glLoadTransposeMatrixf const GLfloat *m void glLoadTransposeMatrixfARB const GLfloat *m void glLoadTransposeMatrixxOES const GLfixed *m void glLockArraysEXT GLint first GLsizei count void glLogicOp GLenum opcode void glMakeBufferNonResidentNV GLenum target void glMakeBufferResidentNV GLenum target GLenum access void glMakeImageHandleNonResidentARB GLuint64 handle void glMakeImageHandleNonResidentNV GLuint64 handle void glMakeImageHandleResidentARB GLuint64 handle GLenum access void glMakeImageHandleResidentNV GLuint64 handle GLenum access void glMakeNamedBufferNonResidentNV GLuint buffer void glMakeNamedBufferResidentNV GLuint buffer GLenum access void glMakeTextureHandleNonResidentARB GLuint64 handle void glMakeTextureHandleNonResidentNV GLuint64 handle void glMakeTextureHandleResidentARB GLuint64 handle void glMakeTextureHandleResidentNV GLuint64 handle void glMap1d GLenum target GLdouble u1 GLdouble u2 GLint stride GLint order const GLdouble *points void glMap1f GLenum target GLfloat u1 GLfloat u2 GLint stride GLint order const GLfloat *points void glMap1xOES GLenum target GLfixed u1 GLfixed u2 GLint stride GLint order GLfixed points void glMap2d GLenum target GLdouble u1 GLdouble u2 GLint ustride GLint uorder GLdouble v1 GLdouble v2 GLint vstride GLint vorder const GLdouble *points void glMap2f GLenum target GLfloat u1 GLfloat u2 GLint ustride GLint uorder GLfloat v1 GLfloat v2 GLint vstride GLint vorder const GLfloat *points void glMap2xOES GLenum target GLfixed u1 GLfixed u2 GLint ustride GLint uorder GLfixed v1 GLfixed v2 GLint vstride GLint vorder GLfixed points void *glMapBuffer GLenum target GLenum access void *glMapBufferARB GLenum target GLenum access void *glMapBufferOES GLenum target GLenum access void *glMapBufferRange GLenum target GLintptr offset GLsizeiptr length GLbitfield access void *glMapBufferRangeEXT GLenum target GLintptr offset GLsizeiptr length GLbitfield access void glMapControlPointsNV GLenum target GLuint index GLenum type GLsizei ustride GLsizei vstride GLint uorder GLint vorder GLboolean packed const void *points void glMapGrid1d GLint un GLdouble u1 GLdouble u2 void glMapGrid1f GLint un GLfloat u1 GLfloat u2 void glMapGrid1xOES GLint n GLfixed u1 GLfixed u2 void glMapGrid2d GLint un GLdouble u1 GLdouble u2 GLint vn GLdouble v1 GLdouble v2 void glMapGrid2f GLint un GLfloat u1 GLfloat u2 GLint vn GLfloat v1 GLfloat v2 void glMapGrid2xOES GLint n GLfixed u1 GLfixed u2 GLfixed v1 GLfixed v2 void *glMapNamedBuffer GLuint buffer GLenum access void *glMapNamedBufferEXT GLuint buffer GLenum access void *glMapNamedBufferRange GLuint buffer GLintptr offset GLsizeiptr length GLbitfield access void *glMapNamedBufferRangeEXT GLuint buffer GLintptr offset GLsizeiptr length GLbitfield access void *glMapObjectBufferATI GLuint buffer void glMapParameterfvNV GLenum target GLenum pname const GLfloat *params void glMapParameterivNV GLenum target GLenum pname const GLint *params void *glMapTexture2DINTEL GLuint texture GLint level GLbitfield access GLint *stride GLenum *layout void glMapVertexAttrib1dAPPLE GLuint index GLuint size GLdouble u1 GLdouble u2 GLint stride GLint order const GLdouble *points void glMapVertexAttrib1fAPPLE GLuint index GLuint size GLfloat u1 GLfloat u2 GLint stride GLint order const GLfloat *points void glMapVertexAttrib2dAPPLE GLuint index GLuint size GLdouble u1 GLdouble u2 GLint ustride GLint uorder GLdouble v1 GLdouble v2 GLint vstride GLint vorder const GLdouble *points void glMapVertexAttrib2fAPPLE GLuint index GLuint size GLfloat u1 GLfloat u2 GLint ustride GLint uorder GLfloat v1 GLfloat v2 GLint vstride GLint vorder const GLfloat *points void glMaterialf GLenum face GLenum pname GLfloat param void glMaterialfv GLenum face GLenum pname const GLfloat *params void glMateriali GLenum face GLenum pname GLint param void glMaterialiv GLenum face GLenum pname const GLint *params void glMaterialx GLenum face GLenum pname GLfixed param void glMaterialxOES GLenum face GLenum pname GLfixed param void glMaterialxv GLenum face GLenum pname const GLfixed *param void glMaterialxvOES GLenum face GLenum pname const GLfixed *param void glMatrixFrustumEXT GLenum mode GLdouble left GLdouble right GLdouble bottom GLdouble top GLdouble zNear GLdouble zFar void glMatrixIndexPointerARB GLint size GLenum type GLsizei stride const void *pointer void glMatrixIndexPointerOES GLint size GLenum type GLsizei stride const void *pointer void glMatrixIndexubvARB GLint size const GLubyte *indices void glMatrixIndexuivARB GLint size const GLuint *indices void glMatrixIndexusvARB GLint size const GLushort *indices void glMatrixLoad3x2fNV GLenum matrixMode const GLfloat *m void glMatrixLoad3x3fNV GLenum matrixMode const GLfloat *m void glMatrixLoadIdentityEXT GLenum mode void glMatrixLoadTranspose3x3fNV GLenum matrixMode const GLfloat *m void glMatrixLoadTransposedEXT GLenum mode const GLdouble *m void glMatrixLoadTransposefEXT GLenum mode const GLfloat *m void glMatrixLoaddEXT GLenum mode const GLdouble *m void glMatrixLoadfEXT GLenum mode const GLfloat *m void glMatrixMode GLenum mode void glMatrixMult3x2fNV GLenum matrixMode const GLfloat *m void glMatrixMult3x3fNV GLenum matrixMode const GLfloat *m void glMatrixMultTranspose3x3fNV GLenum matrixMode const GLfloat *m void glMatrixMultTransposedEXT GLenum mode const GLdouble *m void glMatrixMultTransposefEXT GLenum mode const GLfloat *m void glMatrixMultdEXT GLenum mode const GLdouble *m void glMatrixMultfEXT GLenum mode const GLfloat *m void glMatrixOrthoEXT GLenum mode GLdouble left GLdouble right GLdouble bottom GLdouble top GLdouble zNear GLdouble zFar void glMatrixPopEXT GLenum mode void glMatrixPushEXT GLenum mode void glMatrixRotatedEXT GLenum mode GLdouble angle GLdouble x GLdouble y GLdouble z void glMatrixRotatefEXT GLenum mode GLfloat angle GLfloat x GLfloat y GLfloat z void glMatrixScaledEXT GLenum mode GLdouble x GLdouble y GLdouble z void glMatrixScalefEXT GLenum mode GLfloat x GLfloat y GLfloat z void glMatrixTranslatedEXT GLenum mode GLdouble x GLdouble y GLdouble z void glMatrixTranslatefEXT GLenum mode GLfloat x GLfloat y GLfloat z void glMaxShaderCompilerThreadsKHR GLuint count void glMaxShaderCompilerThreadsARB GLuint count void glMemoryBarrier GLbitfield barriers void glMemoryBarrierByRegion GLbitfield barriers void glMemoryBarrierEXT GLbitfield barriers void glMemoryObjectParameterivEXT GLuint memoryObject GLenum pname const GLint *params void glMinSampleShading GLfloat value void glMinSampleShadingARB GLfloat value void glMinSampleShadingOES GLfloat value void glMinmax GLenum target GLenum internalformat GLboolean sink void glMinmaxEXT GLenum target GLenum internalformat GLboolean sink void glMultMatrixd const GLdouble *m void glMultMatrixf const GLfloat *m void glMultMatrixx const GLfixed *m void glMultMatrixxOES const GLfixed *m void glMultTransposeMatrixd const GLdouble *m void glMultTransposeMatrixdARB const GLdouble *m void glMultTransposeMatrixf const GLfloat *m void glMultTransposeMatrixfARB const GLfloat *m void glMultTransposeMatrixxOES const GLfixed *m void glMultiDrawArrays GLenum mode const GLint *first const GLsizei *count GLsizei drawcount void glMultiDrawArraysEXT GLenum mode const GLint *first const GLsizei *count GLsizei primcount void glMultiDrawArraysIndirect GLenum mode const void *indirect GLsizei drawcount GLsizei stride void glMultiDrawArraysIndirectAMD GLenum mode const void *indirect GLsizei primcount GLsizei stride void glMultiDrawArraysIndirectBindlessCountNV GLenum mode const void *indirect GLsizei drawCount GLsizei maxDrawCount GLsizei stride GLint vertexBufferCount void glMultiDrawArraysIndirectBindlessNV GLenum mode const void *indirect GLsizei drawCount GLsizei stride GLint vertexBufferCount void glMultiDrawArraysIndirectCount GLenum mode const void *indirect GLintptr drawcount GLsizei maxdrawcount GLsizei stride void glMultiDrawArraysIndirectCountARB GLenum mode const void *indirect GLintptr drawcount GLsizei maxdrawcount GLsizei stride void glMultiDrawArraysIndirectEXT GLenum mode const void *indirect GLsizei drawcount GLsizei stride void glMultiDrawElementArrayAPPLE GLenum mode const GLint *first const GLsizei *count GLsizei primcount void glMultiDrawElements GLenum mode const GLsizei *count GLenum type const void *const*indices GLsizei drawcount void glMultiDrawElementsBaseVertex GLenum mode const GLsizei *count GLenum type const void *const*indices GLsizei drawcount const GLint *basevertex void glMultiDrawElementsBaseVertexEXT GLenum mode const GLsizei *count GLenum type const void *const*indices GLsizei primcount const GLint *basevertex void glMultiDrawElementsEXT GLenum mode const GLsizei *count GLenum type const void *const*indices GLsizei primcount void glMultiDrawElementsIndirect GLenum mode GLenum type const void *indirect GLsizei drawcount GLsizei stride void glMultiDrawElementsIndirectAMD GLenum mode GLenum type const void *indirect GLsizei primcount GLsizei stride void glMultiDrawElementsIndirectBindlessCountNV GLenum mode GLenum type const void *indirect GLsizei drawCount GLsizei maxDrawCount GLsizei stride GLint vertexBufferCount void glMultiDrawElementsIndirectBindlessNV GLenum mode GLenum type const void *indirect GLsizei drawCount GLsizei stride GLint vertexBufferCount void glMultiDrawElementsIndirectCount GLenum mode GLenum type const void *indirect GLintptr drawcount GLsizei maxdrawcount GLsizei stride void glMultiDrawElementsIndirectCountARB GLenum mode GLenum type const void *indirect GLintptr drawcount GLsizei maxdrawcount GLsizei stride void glMultiDrawElementsIndirectCountARB GLenum mode GLenum type const void *indirect GLintptr drawcount GLsizei maxdrawcount GLsizei stride void glMultiDrawElementsIndirectEXT GLenum mode GLenum type const void *indirect GLsizei drawcount GLsizei stride void glMultiDrawMeshTasksIndirectNV GLintptr indirect GLsizei drawcount GLsizei stride void glMultiDrawMeshTasksIndirectCountNV GLintptr indirect GLintptr drawcount GLsizei maxdrawcount GLsizei stride void glMultiDrawRangeElementArrayAPPLE GLenum mode GLuint start GLuint end const GLint *first const GLsizei *count GLsizei primcount void glMultiModeDrawArraysIBM const GLenum *mode const GLint *first const GLsizei *count GLsizei primcount GLint modestride void glMultiModeDrawElementsIBM const GLenum *mode const GLsizei *count GLenum type const void *const*indices GLsizei primcount GLint modestride void glMultiTexBufferEXT GLenum texunit GLenum target GLenum internalformat GLuint buffer void glMultiTexCoord1bOES GLenum texture GLbyte s void glMultiTexCoord1bvOES GLenum texture const GLbyte *coords void glMultiTexCoord1d GLenum target GLdouble s void glMultiTexCoord1dARB GLenum target GLdouble s void glMultiTexCoord1dv GLenum target const GLdouble *v void glMultiTexCoord1dvARB GLenum target const GLdouble *v void glMultiTexCoord1f GLenum target GLfloat s void glMultiTexCoord1fARB GLenum target GLfloat s void glMultiTexCoord1fv GLenum target const GLfloat *v void glMultiTexCoord1fvARB GLenum target const GLfloat *v void glMultiTexCoord1hNV GLenum target GLhalfNV s void glMultiTexCoord1hvNV GLenum target const GLhalfNV *v void glMultiTexCoord1i GLenum target GLint s void glMultiTexCoord1iARB GLenum target GLint s void glMultiTexCoord1iv GLenum target const GLint *v void glMultiTexCoord1ivARB GLenum target const GLint *v void glMultiTexCoord1s GLenum target GLshort s void glMultiTexCoord1sARB GLenum target GLshort s void glMultiTexCoord1sv GLenum target const GLshort *v void glMultiTexCoord1svARB GLenum target const GLshort *v void glMultiTexCoord1xOES GLenum texture GLfixed s void glMultiTexCoord1xvOES GLenum texture const GLfixed *coords void glMultiTexCoord2bOES GLenum texture GLbyte s GLbyte t void glMultiTexCoord2bvOES GLenum texture const GLbyte *coords void glMultiTexCoord2d GLenum target GLdouble s GLdouble t void glMultiTexCoord2dARB GLenum target GLdouble s GLdouble t void glMultiTexCoord2dv GLenum target const GLdouble *v void glMultiTexCoord2dvARB GLenum target const GLdouble *v void glMultiTexCoord2f GLenum target GLfloat s GLfloat t void glMultiTexCoord2fARB GLenum target GLfloat s GLfloat t void glMultiTexCoord2fv GLenum target const GLfloat *v void glMultiTexCoord2fvARB GLenum target const GLfloat *v void glMultiTexCoord2hNV GLenum target GLhalfNV s GLhalfNV t void glMultiTexCoord2hvNV GLenum target const GLhalfNV *v void glMultiTexCoord2i GLenum target GLint s GLint t void glMultiTexCoord2iARB GLenum target GLint s GLint t void glMultiTexCoord2iv GLenum target const GLint *v void glMultiTexCoord2ivARB GLenum target const GLint *v void glMultiTexCoord2s GLenum target GLshort s GLshort t void glMultiTexCoord2sARB GLenum target GLshort s GLshort t void glMultiTexCoord2sv GLenum target const GLshort *v void glMultiTexCoord2svARB GLenum target const GLshort *v void glMultiTexCoord2xOES GLenum texture GLfixed s GLfixed t void glMultiTexCoord2xvOES GLenum texture const GLfixed *coords void glMultiTexCoord3bOES GLenum texture GLbyte s GLbyte t GLbyte r void glMultiTexCoord3bvOES GLenum texture const GLbyte *coords void glMultiTexCoord3d GLenum target GLdouble s GLdouble t GLdouble r void glMultiTexCoord3dARB GLenum target GLdouble s GLdouble t GLdouble r void glMultiTexCoord3dv GLenum target const GLdouble *v void glMultiTexCoord3dvARB GLenum target const GLdouble *v void glMultiTexCoord3f GLenum target GLfloat s GLfloat t GLfloat r void glMultiTexCoord3fARB GLenum target GLfloat s GLfloat t GLfloat r void glMultiTexCoord3fv GLenum target const GLfloat *v void glMultiTexCoord3fvARB GLenum target const GLfloat *v void glMultiTexCoord3hNV GLenum target GLhalfNV s GLhalfNV t GLhalfNV r void glMultiTexCoord3hvNV GLenum target const GLhalfNV *v void glMultiTexCoord3i GLenum target GLint s GLint t GLint r void glMultiTexCoord3iARB GLenum target GLint s GLint t GLint r void glMultiTexCoord3iv GLenum target const GLint *v void glMultiTexCoord3ivARB GLenum target const GLint *v void glMultiTexCoord3s GLenum target GLshort s GLshort t GLshort r void glMultiTexCoord3sARB GLenum target GLshort s GLshort t GLshort r void glMultiTexCoord3sv GLenum target const GLshort *v void glMultiTexCoord3svARB GLenum target const GLshort *v void glMultiTexCoord3xOES GLenum texture GLfixed s GLfixed t GLfixed r void glMultiTexCoord3xvOES GLenum texture const GLfixed *coords void glMultiTexCoord4bOES GLenum texture GLbyte s GLbyte t GLbyte r GLbyte q void glMultiTexCoord4bvOES GLenum texture const GLbyte *coords void glMultiTexCoord4d GLenum target GLdouble s GLdouble t GLdouble r GLdouble q void glMultiTexCoord4dARB GLenum target GLdouble s GLdouble t GLdouble r GLdouble q void glMultiTexCoord4dv GLenum target const GLdouble *v void glMultiTexCoord4dvARB GLenum target const GLdouble *v void glMultiTexCoord4f GLenum target GLfloat s GLfloat t GLfloat r GLfloat q void glMultiTexCoord4fARB GLenum target GLfloat s GLfloat t GLfloat r GLfloat q void glMultiTexCoord4fv GLenum target const GLfloat *v void glMultiTexCoord4fvARB GLenum target const GLfloat *v void glMultiTexCoord4hNV GLenum target GLhalfNV s GLhalfNV t GLhalfNV r GLhalfNV q void glMultiTexCoord4hvNV GLenum target const GLhalfNV *v void glMultiTexCoord4i GLenum target GLint s GLint t GLint r GLint q void glMultiTexCoord4iARB GLenum target GLint s GLint t GLint r GLint q void glMultiTexCoord4iv GLenum target const GLint *v void glMultiTexCoord4ivARB GLenum target const GLint *v void glMultiTexCoord4s GLenum target GLshort s GLshort t GLshort r GLshort q void glMultiTexCoord4sARB GLenum target GLshort s GLshort t GLshort r GLshort q void glMultiTexCoord4sv GLenum target const GLshort *v void glMultiTexCoord4svARB GLenum target const GLshort *v void glMultiTexCoord4x GLenum texture GLfixed s GLfixed t GLfixed r GLfixed q void glMultiTexCoord4xOES GLenum texture GLfixed s GLfixed t GLfixed r GLfixed q void glMultiTexCoord4xvOES GLenum texture const GLfixed *coords void glMultiTexCoordP1ui GLenum texture GLenum type GLuint coords void glMultiTexCoordP1uiv GLenum texture GLenum type const GLuint *coords void glMultiTexCoordP2ui GLenum texture GLenum type GLuint coords void glMultiTexCoordP2uiv GLenum texture GLenum type const GLuint *coords void glMultiTexCoordP3ui GLenum texture GLenum type GLuint coords void glMultiTexCoordP3uiv GLenum texture GLenum type const GLuint *coords void glMultiTexCoordP4ui GLenum texture GLenum type GLuint coords void glMultiTexCoordP4uiv GLenum texture GLenum type const GLuint *coords void glMultiTexCoordPointerEXT GLenum texunit GLint size GLenum type GLsizei stride const void *pointer void glMultiTexEnvfEXT GLenum texunit GLenum target GLenum pname GLfloat param void glMultiTexEnvfvEXT GLenum texunit GLenum target GLenum pname const GLfloat *params void glMultiTexEnviEXT GLenum texunit GLenum target GLenum pname GLint param void glMultiTexEnvivEXT GLenum texunit GLenum target GLenum pname const GLint *params void glMultiTexGendEXT GLenum texunit GLenum coord GLenum pname GLdouble param void glMultiTexGendvEXT GLenum texunit GLenum coord GLenum pname const GLdouble *params void glMultiTexGenfEXT GLenum texunit GLenum coord GLenum pname GLfloat param void glMultiTexGenfvEXT GLenum texunit GLenum coord GLenum pname const GLfloat *params void glMultiTexGeniEXT GLenum texunit GLenum coord GLenum pname GLint param void glMultiTexGenivEXT GLenum texunit GLenum coord GLenum pname const GLint *params void glMultiTexImage1DEXT GLenum texunit GLenum target GLint level GLint internalformat GLsizei width GLint border GLenum format GLenum type const void *pixels void glMultiTexImage2DEXT GLenum texunit GLenum target GLint level GLint internalformat GLsizei width GLsizei height GLint border GLenum format GLenum type const void *pixels void glMultiTexImage3DEXT GLenum texunit GLenum target GLint level GLint internalformat GLsizei width GLsizei height GLsizei depth GLint border GLenum format GLenum type const void *pixels void glMultiTexParameterIivEXT GLenum texunit GLenum target GLenum pname const GLint *params void glMultiTexParameterIuivEXT GLenum texunit GLenum target GLenum pname const GLuint *params void glMultiTexParameterfEXT GLenum texunit GLenum target GLenum pname GLfloat param void glMultiTexParameterfvEXT GLenum texunit GLenum target GLenum pname const GLfloat *params void glMultiTexParameteriEXT GLenum texunit GLenum target GLenum pname GLint param void glMultiTexParameterivEXT GLenum texunit GLenum target GLenum pname const GLint *params void glMultiTexRenderbufferEXT GLenum texunit GLenum target GLuint renderbuffer void glMultiTexSubImage1DEXT GLenum texunit GLenum target GLint level GLint xoffset GLsizei width GLenum format GLenum type const void *pixels void glMultiTexSubImage2DEXT GLenum texunit GLenum target GLint level GLint xoffset GLint yoffset GLsizei width GLsizei height GLenum format GLenum type const void *pixels void glMultiTexSubImage3DEXT GLenum texunit GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLenum type const void *pixels void glMulticastBarrierNV void glMulticastBlitFramebufferNV GLuint srcGpu GLuint dstGpu GLint srcX0 GLint srcY0 GLint srcX1 GLint srcY1 GLint dstX0 GLint dstY0 GLint dstX1 GLint dstY1 GLbitfield mask GLenum filter void glMulticastBufferSubDataNV GLbitfield gpuMask GLuint buffer GLintptr offset GLsizeiptr size const void *data void glMulticastCopyBufferSubDataNV GLuint readGpu GLbitfield writeGpuMask GLuint readBuffer GLuint writeBuffer GLintptr readOffset GLintptr writeOffset GLsizeiptr size void glMulticastCopyImageSubDataNV GLuint srcGpu GLbitfield dstGpuMask GLuint srcName GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLuint dstName GLenum dstTarget GLint dstLevel GLint dstX GLint dstY GLint dstZ GLsizei srcWidth GLsizei srcHeight GLsizei srcDepth void glMulticastFramebufferSampleLocationsfvNV GLuint gpu GLuint framebuffer GLuint start GLsizei count const GLfloat *v void glMulticastGetQueryObjecti64vNV GLuint gpu GLuint id GLenum pname GLint64 *params void glMulticastGetQueryObjectivNV GLuint gpu GLuint id GLenum pname GLint *params void glMulticastGetQueryObjectui64vNV GLuint gpu GLuint id GLenum pname GLuint64 *params void glMulticastGetQueryObjectuivNV GLuint gpu GLuint id GLenum pname GLuint *params void glMulticastScissorArrayvNVX GLuint gpu GLuint first GLsizei count const GLint *v void glMulticastViewportArrayvNVX GLuint gpu GLuint first GLsizei count const GLfloat *v void glMulticastViewportPositionWScaleNVX GLuint gpu GLuint index GLfloat xcoeff GLfloat ycoeff void glMulticastWaitSyncNV GLuint signalGpu GLbitfield waitGpuMask void glNamedBufferAttachMemoryNV GLuint buffer GLuint memory GLuint64 offset void glNamedBufferData GLuint buffer GLsizeiptr size const void *data GLenum usage void glNamedBufferDataEXT GLuint buffer GLsizeiptr size const void *data GLenum usage void glNamedBufferPageCommitmentARB GLuint buffer GLintptr offset GLsizeiptr size GLboolean commit void glNamedBufferPageCommitmentEXT GLuint buffer GLintptr offset GLsizeiptr size GLboolean commit void glNamedBufferStorage GLuint buffer GLsizeiptr size const void *data GLbitfield flags void glNamedBufferStorageExternalEXT GLuint buffer GLintptr offset GLsizeiptr size GLeglClientBufferEXT clientBuffer GLbitfield flags void glNamedBufferStorageEXT GLuint buffer GLsizeiptr size const void *data GLbitfield flags void glNamedBufferStorageMemEXT GLuint buffer GLsizeiptr size GLuint memory GLuint64 offset void glNamedBufferSubData GLuint buffer GLintptr offset GLsizeiptr size const void *data void glNamedBufferSubDataEXT GLuint buffer GLintptr offset GLsizeiptr size const void *data void glNamedCopyBufferSubDataEXT GLuint readBuffer GLuint writeBuffer GLintptr readOffset GLintptr writeOffset GLsizeiptr size void glNamedFramebufferDrawBuffer GLuint framebuffer GLenum buf void glNamedFramebufferDrawBuffers GLuint framebuffer GLsizei n const GLenum *bufs void glNamedFramebufferParameteri GLuint framebuffer GLenum pname GLint param void glNamedFramebufferParameteriEXT GLuint framebuffer GLenum pname GLint param void glNamedFramebufferReadBuffer GLuint framebuffer GLenum src void glNamedFramebufferRenderbuffer GLuint framebuffer GLenum attachment GLenum renderbuffertarget GLuint renderbuffer void glNamedFramebufferRenderbufferEXT GLuint framebuffer GLenum attachment GLenum renderbuffertarget GLuint renderbuffer void glNamedFramebufferSampleLocationsfvARB GLuint framebuffer GLuint start GLsizei count const GLfloat *v void glNamedFramebufferSampleLocationsfvNV GLuint framebuffer GLuint start GLsizei count const GLfloat *v void glNamedFramebufferTexture GLuint framebuffer GLenum attachment GLuint texture GLint level void glNamedFramebufferSamplePositionsfvAMD GLuint framebuffer GLuint numsamples GLuint pixelindex const GLfloat *values void glNamedFramebufferTexture1DEXT GLuint framebuffer GLenum attachment GLenum textarget GLuint texture GLint level void glNamedFramebufferTexture2DEXT GLuint framebuffer GLenum attachment GLenum textarget GLuint texture GLint level void glNamedFramebufferTexture3DEXT GLuint framebuffer GLenum attachment GLenum textarget GLuint texture GLint level GLint zoffset void glNamedFramebufferTextureEXT GLuint framebuffer GLenum attachment GLuint texture GLint level void glNamedFramebufferTextureFaceEXT GLuint framebuffer GLenum attachment GLuint texture GLint level GLenum face void glNamedFramebufferTextureLayer GLuint framebuffer GLenum attachment GLuint texture GLint level GLint layer void glNamedFramebufferTextureLayerEXT GLuint framebuffer GLenum attachment GLuint texture GLint level GLint layer void glNamedProgramLocalParameter4dEXT GLuint program GLenum target GLuint index GLdouble x GLdouble y GLdouble z GLdouble w void glNamedProgramLocalParameter4dvEXT GLuint program GLenum target GLuint index const GLdouble *params void glNamedProgramLocalParameter4fEXT GLuint program GLenum target GLuint index GLfloat x GLfloat y GLfloat z GLfloat w void glNamedProgramLocalParameter4fvEXT GLuint program GLenum target GLuint index const GLfloat *params void glNamedProgramLocalParameterI4iEXT GLuint program GLenum target GLuint index GLint x GLint y GLint z GLint w void glNamedProgramLocalParameterI4ivEXT GLuint program GLenum target GLuint index const GLint *params void glNamedProgramLocalParameterI4uiEXT GLuint program GLenum target GLuint index GLuint x GLuint y GLuint z GLuint w void glNamedProgramLocalParameterI4uivEXT GLuint program GLenum target GLuint index const GLuint *params void glNamedProgramLocalParameters4fvEXT GLuint program GLenum target GLuint index GLsizei count const GLfloat *params void glNamedProgramLocalParametersI4ivEXT GLuint program GLenum target GLuint index GLsizei count const GLint *params void glNamedProgramLocalParametersI4uivEXT GLuint program GLenum target GLuint index GLsizei count const GLuint *params void glNamedProgramStringEXT GLuint program GLenum target GLenum format GLsizei len const void *string void glNamedRenderbufferStorage GLuint renderbuffer GLenum internalformat GLsizei width GLsizei height void glNamedRenderbufferStorageEXT GLuint renderbuffer GLenum internalformat GLsizei width GLsizei height void glNamedRenderbufferStorageMultisample GLuint renderbuffer GLsizei samples GLenum internalformat GLsizei width GLsizei height void glNamedRenderbufferStorageMultisampleAdvancedAMD GLuint renderbuffer GLsizei samples GLsizei storageSamples GLenum internalformat GLsizei width GLsizei height void glNamedRenderbufferStorageMultisampleCoverageEXT GLuint renderbuffer GLsizei coverageSamples GLsizei colorSamples GLenum internalformat GLsizei width GLsizei height void glNamedRenderbufferStorageMultisampleEXT GLuint renderbuffer GLsizei samples GLenum internalformat GLsizei width GLsizei height void glNamedStringARB GLenum type GLint namelen const GLchar *name GLint stringlen const GLchar *string void glNewList GLuint list GLenum mode GLuint glNewObjectBufferATI GLsizei size const void *pointer GLenum usage void glNormal3b GLbyte nx GLbyte ny GLbyte nz void glNormal3bv const GLbyte *v void glNormal3d GLdouble nx GLdouble ny GLdouble nz void glNormal3dv const GLdouble *v void glNormal3f GLfloat nx GLfloat ny GLfloat nz void glNormal3fVertex3fSUN GLfloat nx GLfloat ny GLfloat nz GLfloat x GLfloat y GLfloat z void glNormal3fVertex3fvSUN const GLfloat *n const GLfloat *v void glNormal3fv const GLfloat *v void glNormal3hNV GLhalfNV nx GLhalfNV ny GLhalfNV nz void glNormal3hvNV const GLhalfNV *v void glNormal3i GLint nx GLint ny GLint nz void glNormal3iv const GLint *v void glNormal3s GLshort nx GLshort ny GLshort nz void glNormal3sv const GLshort *v void glNormal3x GLfixed nx GLfixed ny GLfixed nz void glNormal3xOES GLfixed nx GLfixed ny GLfixed nz void glNormal3xvOES const GLfixed *coords void glNormalFormatNV GLenum type GLsizei stride void glNormalP3ui GLenum type GLuint coords void glNormalP3uiv GLenum type const GLuint *coords void glNormalPointer GLenum type GLsizei stride const void *pointer void glNormalPointerEXT GLenum type GLsizei stride GLsizei count const void *pointer void glNormalPointerListIBM GLenum type GLint stride const void **pointer GLint ptrstride void glNormalPointervINTEL GLenum type const void **pointer void glNormalStream3bATI GLenum stream GLbyte nx GLbyte ny GLbyte nz void glNormalStream3bvATI GLenum stream const GLbyte *coords void glNormalStream3dATI GLenum stream GLdouble nx GLdouble ny GLdouble nz void glNormalStream3dvATI GLenum stream const GLdouble *coords void glNormalStream3fATI GLenum stream GLfloat nx GLfloat ny GLfloat nz void glNormalStream3fvATI GLenum stream const GLfloat *coords void glNormalStream3iATI GLenum stream GLint nx GLint ny GLint nz void glNormalStream3ivATI GLenum stream const GLint *coords void glNormalStream3sATI GLenum stream GLshort nx GLshort ny GLshort nz void glNormalStream3svATI GLenum stream const GLshort *coords void glObjectLabel GLenum identifier GLuint name GLsizei length const GLchar *label void glObjectLabelKHR GLenum identifier GLuint name GLsizei length const GLchar *label void glObjectPtrLabel const void *ptr GLsizei length const GLchar *label void glObjectPtrLabelKHR const void *ptr GLsizei length const GLchar *label GLenum glObjectPurgeableAPPLE GLenum objectType GLuint name GLenum option GLenum glObjectUnpurgeableAPPLE GLenum objectType GLuint name GLenum option void glOrtho GLdouble left GLdouble right GLdouble bottom GLdouble top GLdouble zNear GLdouble zFar void glOrthof GLfloat l GLfloat r GLfloat b GLfloat t GLfloat n GLfloat f void glOrthofOES GLfloat l GLfloat r GLfloat b GLfloat t GLfloat n GLfloat f void glOrthox GLfixed l GLfixed r GLfixed b GLfixed t GLfixed n GLfixed f void glOrthoxOES GLfixed l GLfixed r GLfixed b GLfixed t GLfixed n GLfixed f void glPNTrianglesfATI GLenum pname GLfloat param void glPNTrianglesiATI GLenum pname GLint param void glPassTexCoordATI GLuint dst GLuint coord GLenum swizzle void glPassThrough GLfloat token void glPassThroughxOES GLfixed token void glPatchParameterfv GLenum pname const GLfloat *values void glPatchParameteri GLenum pname GLint value void glPatchParameteriEXT GLenum pname GLint value void glPatchParameteriOES GLenum pname GLint value void glPathColorGenNV GLenum color GLenum genMode GLenum colorFormat const GLfloat *coeffs void glPathCommandsNV GLuint path GLsizei numCommands const GLubyte *commands GLsizei numCoords GLenum coordType const void *coords void glPathCoordsNV GLuint path GLsizei numCoords GLenum coordType const void *coords void glPathCoverDepthFuncNV GLenum func void glPathDashArrayNV GLuint path GLsizei dashCount const GLfloat *dashArray void glPathFogGenNV GLenum genMode GLenum glPathGlyphIndexArrayNV GLuint firstPathName GLenum fontTarget const void *fontName GLbitfield fontStyle GLuint firstGlyphIndex GLsizei numGlyphs GLuint pathParameterTemplate GLfloat emScale GLenum glPathGlyphIndexRangeNV GLenum fontTarget const void *fontName GLbitfield fontStyle GLuint pathParameterTemplate GLfloat emScale GLuint baseAndCount[2] void glPathGlyphRangeNV GLuint firstPathName GLenum fontTarget const void *fontName GLbitfield fontStyle GLuint firstGlyph GLsizei numGlyphs GLenum handleMissingGlyphs GLuint pathParameterTemplate GLfloat emScale void glPathGlyphsNV GLuint firstPathName GLenum fontTarget const void *fontName GLbitfield fontStyle GLsizei numGlyphs GLenum type const void *charcodes GLenum handleMissingGlyphs GLuint pathParameterTemplate GLfloat emScale GLenum glPathMemoryGlyphIndexArrayNV GLuint firstPathName GLenum fontTarget GLsizeiptr fontSize const void *fontData GLsizei faceIndex GLuint firstGlyphIndex GLsizei numGlyphs GLuint pathParameterTemplate GLfloat emScale void glPathParameterfNV GLuint path GLenum pname GLfloat value void glPathParameterfvNV GLuint path GLenum pname const GLfloat *value void glPathParameteriNV GLuint path GLenum pname GLint value void glPathParameterivNV GLuint path GLenum pname const GLint *value void glPathStencilDepthOffsetNV GLfloat factor GLfloat units void glPathStencilFuncNV GLenum func GLint ref GLuint mask void glPathStringNV GLuint path GLenum format GLsizei length const void *pathString void glPathSubCommandsNV GLuint path GLsizei commandStart GLsizei commandsToDelete GLsizei numCommands const GLubyte *commands GLsizei numCoords GLenum coordType const void *coords void glPathSubCoordsNV GLuint path GLsizei coordStart GLsizei numCoords GLenum coordType const void *coords void glPathTexGenNV GLenum texCoordSet GLenum genMode GLint components const GLfloat *coeffs void glPauseTransformFeedback void glPauseTransformFeedbackNV void glPixelDataRangeNV GLenum target GLsizei length const void *pointer void glPixelMapfv GLenum map GLsizei mapsize const GLfloat *values void glPixelMapuiv GLenum map GLsizei mapsize const GLuint *values void glPixelMapusv GLenum map GLsizei mapsize const GLushort *values void glPixelMapx GLenum map GLint size const GLfixed *values void glPixelStoref GLenum pname GLfloat param void glPixelStorei GLenum pname GLint param void glPixelStorex GLenum pname GLfixed param void glPixelTexGenParameterfSGIS GLenum pname GLfloat param void glPixelTexGenParameterfvSGIS GLenum pname const GLfloat *params void glPixelTexGenParameteriSGIS GLenum pname GLint param void glPixelTexGenParameterivSGIS GLenum pname const GLint *params void glPixelTexGenSGIX GLenum mode void glPixelTransferf GLenum pname GLfloat param void glPixelTransferi GLenum pname GLint param void glPixelTransferxOES GLenum pname GLfixed param void glPixelTransformParameterfEXT GLenum target GLenum pname GLfloat param void glPixelTransformParameterfvEXT GLenum target GLenum pname const GLfloat *params void glPixelTransformParameteriEXT GLenum target GLenum pname GLint param void glPixelTransformParameterivEXT GLenum target GLenum pname const GLint *params void glPixelZoom GLfloat xfactor GLfloat yfactor void glPixelZoomxOES GLfixed xfactor GLfixed yfactor GLboolean glPointAlongPathNV GLuint path GLsizei startSegment GLsizei numSegments GLfloat distance GLfloat *x GLfloat *y GLfloat *tangentX GLfloat *tangentY void glPointParameterf GLenum pname GLfloat param void glPointParameterfARB GLenum pname GLfloat param void glPointParameterfEXT GLenum pname GLfloat param void glPointParameterfSGIS GLenum pname GLfloat param void glPointParameterfv GLenum pname const GLfloat *params void glPointParameterfvARB GLenum pname const GLfloat *params void glPointParameterfvEXT GLenum pname const GLfloat *params void glPointParameterfvSGIS GLenum pname const GLfloat *params void glPointParameteri GLenum pname GLint param void glPointParameteriNV GLenum pname GLint param void glPointParameteriv GLenum pname const GLint *params void glPointParameterivNV GLenum pname const GLint *params void glPointParameterx GLenum pname GLfixed param void glPointParameterxOES GLenum pname GLfixed param void glPointParameterxv GLenum pname const GLfixed *params void glPointParameterxvOES GLenum pname const GLfixed *params void glPointSize GLfloat size void glPointSizePointerOES GLenum type GLsizei stride const void *pointer void glPointSizex GLfixed size void glPointSizexOES GLfixed size GLint glPollAsyncSGIX GLuint *markerp GLint glPollInstrumentsSGIX GLint *marker_p void glPolygonMode GLenum face GLenum mode void glPolygonModeNV GLenum face GLenum mode void glPolygonOffset GLfloat factor GLfloat units void glPolygonOffsetClamp GLfloat factor GLfloat units GLfloat clamp void glPolygonOffsetClampEXT GLfloat factor GLfloat units GLfloat clamp void glPolygonOffsetEXT GLfloat factor GLfloat bias void glPolygonOffsetx GLfixed factor GLfixed units void glPolygonOffsetxOES GLfixed factor GLfixed units void glPolygonStipple const GLubyte *mask void glPopAttrib void glPopClientAttrib void glPopDebugGroup void glPopDebugGroupKHR void glPopGroupMarkerEXT void glPopMatrix void glPopName void glPresentFrameDualFillNV GLuint video_slot GLuint64EXT minPresentTime GLuint beginPresentTimeId GLuint presentDurationId GLenum type GLenum target0 GLuint fill0 GLenum target1 GLuint fill1 GLenum target2 GLuint fill2 GLenum target3 GLuint fill3 void glPresentFrameKeyedNV GLuint video_slot GLuint64EXT minPresentTime GLuint beginPresentTimeId GLuint presentDurationId GLenum type GLenum target0 GLuint fill0 GLuint key0 GLenum target1 GLuint fill1 GLuint key1 void glPrimitiveBoundingBox GLfloat minX GLfloat minY GLfloat minZ GLfloat minW GLfloat maxX GLfloat maxY GLfloat maxZ GLfloat maxW void glPrimitiveBoundingBoxARB GLfloat minX GLfloat minY GLfloat minZ GLfloat minW GLfloat maxX GLfloat maxY GLfloat maxZ GLfloat maxW void glPrimitiveBoundingBoxEXT GLfloat minX GLfloat minY GLfloat minZ GLfloat minW GLfloat maxX GLfloat maxY GLfloat maxZ GLfloat maxW void glPrimitiveBoundingBoxOES GLfloat minX GLfloat minY GLfloat minZ GLfloat minW GLfloat maxX GLfloat maxY GLfloat maxZ GLfloat maxW void glPrimitiveRestartIndex GLuint index void glPrimitiveRestartIndexNV GLuint index void glPrimitiveRestartNV void glPrioritizeTextures GLsizei n const GLuint *textures const GLfloat *priorities void glPrioritizeTexturesEXT GLsizei n const GLuint *textures const GLclampf *priorities void glPrioritizeTexturesxOES GLsizei n const GLuint *textures const GLfixed *priorities void glProgramBinary GLuint program GLenum binaryFormat const void *binary GLsizei length void glProgramBinaryOES GLuint program GLenum binaryFormat const void *binary GLint length void glProgramBufferParametersIivNV GLenum target GLuint bindingIndex GLuint wordIndex GLsizei count const GLint *params void glProgramBufferParametersIuivNV GLenum target GLuint bindingIndex GLuint wordIndex GLsizei count const GLuint *params void glProgramBufferParametersfvNV GLenum target GLuint bindingIndex GLuint wordIndex GLsizei count const GLfloat *params void glProgramEnvParameter4dARB GLenum target GLuint index GLdouble x GLdouble y GLdouble z GLdouble w void glProgramEnvParameter4dvARB GLenum target GLuint index const GLdouble *params void glProgramEnvParameter4fARB GLenum target GLuint index GLfloat x GLfloat y GLfloat z GLfloat w void glProgramEnvParameter4fvARB GLenum target GLuint index const GLfloat *params void glProgramEnvParameterI4iNV GLenum target GLuint index GLint x GLint y GLint z GLint w void glProgramEnvParameterI4ivNV GLenum target GLuint index const GLint *params void glProgramEnvParameterI4uiNV GLenum target GLuint index GLuint x GLuint y GLuint z GLuint w void glProgramEnvParameterI4uivNV GLenum target GLuint index const GLuint *params void glProgramEnvParameters4fvEXT GLenum target GLuint index GLsizei count const GLfloat *params void glProgramEnvParametersI4ivNV GLenum target GLuint index GLsizei count const GLint *params void glProgramEnvParametersI4uivNV GLenum target GLuint index GLsizei count const GLuint *params void glProgramLocalParameter4dARB GLenum target GLuint index GLdouble x GLdouble y GLdouble z GLdouble w void glProgramLocalParameter4dvARB GLenum target GLuint index const GLdouble *params void glProgramLocalParameter4fARB GLenum target GLuint index GLfloat x GLfloat y GLfloat z GLfloat w void glProgramLocalParameter4fvARB GLenum target GLuint index const GLfloat *params void glProgramLocalParameterI4iNV GLenum target GLuint index GLint x GLint y GLint z GLint w void glProgramLocalParameterI4ivNV GLenum target GLuint index const GLint *params void glProgramLocalParameterI4uiNV GLenum target GLuint index GLuint x GLuint y GLuint z GLuint w void glProgramLocalParameterI4uivNV GLenum target GLuint index const GLuint *params void glProgramLocalParameters4fvEXT GLenum target GLuint index GLsizei count const GLfloat *params void glProgramLocalParametersI4ivNV GLenum target GLuint index GLsizei count const GLint *params void glProgramLocalParametersI4uivNV GLenum target GLuint index GLsizei count const GLuint *params void glProgramNamedParameter4dNV GLuint id GLsizei len const GLubyte *name GLdouble x GLdouble y GLdouble z GLdouble w void glProgramNamedParameter4dvNV GLuint id GLsizei len const GLubyte *name const GLdouble *v void glProgramNamedParameter4fNV GLuint id GLsizei len const GLubyte *name GLfloat x GLfloat y GLfloat z GLfloat w void glProgramNamedParameter4fvNV GLuint id GLsizei len const GLubyte *name const GLfloat *v void glProgramParameter4dNV GLenum target GLuint index GLdouble x GLdouble y GLdouble z GLdouble w void glProgramParameter4dvNV GLenum target GLuint index const GLdouble *v void glProgramParameter4fNV GLenum target GLuint index GLfloat x GLfloat y GLfloat z GLfloat w void glProgramParameter4fvNV GLenum target GLuint index const GLfloat *v void glProgramParameteri GLuint program GLenum pname GLint value void glProgramParameteriARB GLuint program GLenum pname GLint value void glProgramParameteriEXT GLuint program GLenum pname GLint value void glProgramParameters4dvNV GLenum target GLuint index GLsizei count const GLdouble *v void glProgramParameters4fvNV GLenum target GLuint index GLsizei count const GLfloat *v void glProgramPathFragmentInputGenNV GLuint program GLint location GLenum genMode GLint components const GLfloat *coeffs void glProgramStringARB GLenum target GLenum format GLsizei len const void *string void glProgramSubroutineParametersuivNV GLenum target GLsizei count const GLuint *params void glProgramUniform1d GLuint program GLint location GLdouble v0 void glProgramUniform1dEXT GLuint program GLint location GLdouble x void glProgramUniform1dv GLuint program GLint location GLsizei count const GLdouble *value void glProgramUniform1dvEXT GLuint program GLint location GLsizei count const GLdouble *value void glProgramUniform1f GLuint program GLint location GLfloat v0 void glProgramUniform1fEXT GLuint program GLint location GLfloat v0 void glProgramUniform1fv GLuint program GLint location GLsizei count const GLfloat *value void glProgramUniform1fvEXT GLuint program GLint location GLsizei count const GLfloat *value void glProgramUniform1i GLuint program GLint location GLint v0 void glProgramUniform1i64ARB GLuint program GLint location GLint64 x void glProgramUniform1i64NV GLuint program GLint location GLint64EXT x void glProgramUniform1i64vARB GLuint program GLint location GLsizei count const GLint64 *value void glProgramUniform1i64vNV GLuint program GLint location GLsizei count const GLint64EXT *value void glProgramUniform1iEXT GLuint program GLint location GLint v0 void glProgramUniform1iv GLuint program GLint location GLsizei count const GLint *value void glProgramUniform1ivEXT GLuint program GLint location GLsizei count const GLint *value void glProgramUniform1ui GLuint program GLint location GLuint v0 void glProgramUniform1ui64ARB GLuint program GLint location GLuint64 x void glProgramUniform1ui64NV GLuint program GLint location GLuint64EXT x void glProgramUniform1ui64vARB GLuint program GLint location GLsizei count const GLuint64 *value void glProgramUniform1ui64vNV GLuint program GLint location GLsizei count const GLuint64EXT *value void glProgramUniform1uiEXT GLuint program GLint location GLuint v0 void glProgramUniform1uiv GLuint program GLint location GLsizei count const GLuint *value void glProgramUniform1uivEXT GLuint program GLint location GLsizei count const GLuint *value void glProgramUniform2d GLuint program GLint location GLdouble v0 GLdouble v1 void glProgramUniform2dEXT GLuint program GLint location GLdouble x GLdouble y void glProgramUniform2dv GLuint program GLint location GLsizei count const GLdouble *value void glProgramUniform2dvEXT GLuint program GLint location GLsizei count const GLdouble *value void glProgramUniform2f GLuint program GLint location GLfloat v0 GLfloat v1 void glProgramUniform2fEXT GLuint program GLint location GLfloat v0 GLfloat v1 void glProgramUniform2fv GLuint program GLint location GLsizei count const GLfloat *value void glProgramUniform2fvEXT GLuint program GLint location GLsizei count const GLfloat *value void glProgramUniform2i GLuint program GLint location GLint v0 GLint v1 void glProgramUniform2i64ARB GLuint program GLint location GLint64 x GLint64 y void glProgramUniform2i64NV GLuint program GLint location GLint64EXT x GLint64EXT y void glProgramUniform2i64vARB GLuint program GLint location GLsizei count const GLint64 *value void glProgramUniform2i64vNV GLuint program GLint location GLsizei count const GLint64EXT *value void glProgramUniform2iEXT GLuint program GLint location GLint v0 GLint v1 void glProgramUniform2iv GLuint program GLint location GLsizei count const GLint *value void glProgramUniform2ivEXT GLuint program GLint location GLsizei count const GLint *value void glProgramUniform2ui GLuint program GLint location GLuint v0 GLuint v1 void glProgramUniform2ui64ARB GLuint program GLint location GLuint64 x GLuint64 y void glProgramUniform2ui64NV GLuint program GLint location GLuint64EXT x GLuint64EXT y void glProgramUniform2ui64vARB GLuint program GLint location GLsizei count const GLuint64 *value void glProgramUniform2ui64vNV GLuint program GLint location GLsizei count const GLuint64EXT *value void glProgramUniform2uiEXT GLuint program GLint location GLuint v0 GLuint v1 void glProgramUniform2uiv GLuint program GLint location GLsizei count const GLuint *value void glProgramUniform2uivEXT GLuint program GLint location GLsizei count const GLuint *value void glProgramUniform3d GLuint program GLint location GLdouble v0 GLdouble v1 GLdouble v2 void glProgramUniform3dEXT GLuint program GLint location GLdouble x GLdouble y GLdouble z void glProgramUniform3dv GLuint program GLint location GLsizei count const GLdouble *value void glProgramUniform3dvEXT GLuint program GLint location GLsizei count const GLdouble *value void glProgramUniform3f GLuint program GLint location GLfloat v0 GLfloat v1 GLfloat v2 void glProgramUniform3fEXT GLuint program GLint location GLfloat v0 GLfloat v1 GLfloat v2 void glProgramUniform3fv GLuint program GLint location GLsizei count const GLfloat *value void glProgramUniform3fvEXT GLuint program GLint location GLsizei count const GLfloat *value void glProgramUniform3i GLuint program GLint location GLint v0 GLint v1 GLint v2 void glProgramUniform3i64ARB GLuint program GLint location GLint64 x GLint64 y GLint64 z void glProgramUniform3i64NV GLuint program GLint location GLint64EXT x GLint64EXT y GLint64EXT z void glProgramUniform3i64vARB GLuint program GLint location GLsizei count const GLint64 *value void glProgramUniform3i64vNV GLuint program GLint location GLsizei count const GLint64EXT *value void glProgramUniform3iEXT GLuint program GLint location GLint v0 GLint v1 GLint v2 void glProgramUniform3iv GLuint program GLint location GLsizei count const GLint *value void glProgramUniform3ivEXT GLuint program GLint location GLsizei count const GLint *value void glProgramUniform3ui GLuint program GLint location GLuint v0 GLuint v1 GLuint v2 void glProgramUniform3ui64ARB GLuint program GLint location GLuint64 x GLuint64 y GLuint64 z void glProgramUniform3ui64NV GLuint program GLint location GLuint64EXT x GLuint64EXT y GLuint64EXT z void glProgramUniform3ui64vARB GLuint program GLint location GLsizei count const GLuint64 *value void glProgramUniform3ui64vNV GLuint program GLint location GLsizei count const GLuint64EXT *value void glProgramUniform3uiEXT GLuint program GLint location GLuint v0 GLuint v1 GLuint v2 void glProgramUniform3uiv GLuint program GLint location GLsizei count const GLuint *value void glProgramUniform3uivEXT GLuint program GLint location GLsizei count const GLuint *value void glProgramUniform4d GLuint program GLint location GLdouble v0 GLdouble v1 GLdouble v2 GLdouble v3 void glProgramUniform4dEXT GLuint program GLint location GLdouble x GLdouble y GLdouble z GLdouble w void glProgramUniform4dv GLuint program GLint location GLsizei count const GLdouble *value void glProgramUniform4dvEXT GLuint program GLint location GLsizei count const GLdouble *value void glProgramUniform4f GLuint program GLint location GLfloat v0 GLfloat v1 GLfloat v2 GLfloat v3 void glProgramUniform4fEXT GLuint program GLint location GLfloat v0 GLfloat v1 GLfloat v2 GLfloat v3 void glProgramUniform4fv GLuint program GLint location GLsizei count const GLfloat *value void glProgramUniform4fvEXT GLuint program GLint location GLsizei count const GLfloat *value void glProgramUniform4i GLuint program GLint location GLint v0 GLint v1 GLint v2 GLint v3 void glProgramUniform4i64ARB GLuint program GLint location GLint64 x GLint64 y GLint64 z GLint64 w void glProgramUniform4i64NV GLuint program GLint location GLint64EXT x GLint64EXT y GLint64EXT z GLint64EXT w void glProgramUniform4i64vARB GLuint program GLint location GLsizei count const GLint64 *value void glProgramUniform4i64vNV GLuint program GLint location GLsizei count const GLint64EXT *value void glProgramUniform4iEXT GLuint program GLint location GLint v0 GLint v1 GLint v2 GLint v3 void glProgramUniform4iv GLuint program GLint location GLsizei count const GLint *value void glProgramUniform4ivEXT GLuint program GLint location GLsizei count const GLint *value void glProgramUniform4ui GLuint program GLint location GLuint v0 GLuint v1 GLuint v2 GLuint v3 void glProgramUniform4ui64ARB GLuint program GLint location GLuint64 x GLuint64 y GLuint64 z GLuint64 w void glProgramUniform4ui64NV GLuint program GLint location GLuint64EXT x GLuint64EXT y GLuint64EXT z GLuint64EXT w void glProgramUniform4ui64vARB GLuint program GLint location GLsizei count const GLuint64 *value void glProgramUniform4ui64vNV GLuint program GLint location GLsizei count const GLuint64EXT *value void glProgramUniform4uiEXT GLuint program GLint location GLuint v0 GLuint v1 GLuint v2 GLuint v3 void glProgramUniform4uiv GLuint program GLint location GLsizei count const GLuint *value void glProgramUniform4uivEXT GLuint program GLint location GLsizei count const GLuint *value void glProgramUniformHandleui64ARB GLuint program GLint location GLuint64 value void glProgramUniformHandleui64IMG GLuint program GLint location GLuint64 value void glProgramUniformHandleui64NV GLuint program GLint location GLuint64 value void glProgramUniformHandleui64vARB GLuint program GLint location GLsizei count const GLuint64 *values void glProgramUniformHandleui64vIMG GLuint program GLint location GLsizei count const GLuint64 *values void glProgramUniformHandleui64vNV GLuint program GLint location GLsizei count const GLuint64 *values void glProgramUniformMatrix2dv GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix2dvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix2fv GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix2fvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix2x3dv GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix2x3dvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix2x3fv GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix2x3fvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix2x4dv GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix2x4dvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix2x4fv GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix2x4fvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix3dv GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix3dvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix3fv GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix3fvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix3x2dv GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix3x2dvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix3x2fv GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix3x2fvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix3x4dv GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix3x4dvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix3x4fv GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix3x4fvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix4dv GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix4dvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix4fv GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix4fvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix4x2dv GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix4x2dvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix4x2fv GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix4x2fvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix4x3dv GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix4x3dvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLdouble *value void glProgramUniformMatrix4x3fv GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformMatrix4x3fvEXT GLuint program GLint location GLsizei count GLboolean transpose const GLfloat *value void glProgramUniformui64NV GLuint program GLint location GLuint64EXT value void glProgramUniformui64vNV GLuint program GLint location GLsizei count const GLuint64EXT *value void glProgramVertexLimitNV GLenum target GLint limit void glProvokingVertex GLenum mode void glProvokingVertexEXT GLenum mode void glPushAttrib GLbitfield mask void glPushClientAttrib GLbitfield mask void glPushClientAttribDefaultEXT GLbitfield mask void glPushDebugGroup GLenum source GLuint id GLsizei length const GLchar *message void glPushDebugGroupKHR GLenum source GLuint id GLsizei length const GLchar *message void glPushGroupMarkerEXT GLsizei length const GLchar *marker void glPushMatrix void glPushName GLuint name void glQueryCounter GLuint id GLenum target void glQueryCounterEXT GLuint id GLenum target GLbitfield glQueryMatrixxOES GLfixed *mantissa GLint *exponent void glQueryObjectParameteruiAMD GLenum target GLuint id GLenum pname GLuint param GLint glQueryResourceNV GLenum queryType GLint tagId GLuint bufSize GLint *buffer void glQueryResourceTagNV GLint tagId const GLchar *tagString void glRasterPos2d GLdouble x GLdouble y void glRasterPos2dv const GLdouble *v void glRasterPos2f GLfloat x GLfloat y void glRasterPos2fv const GLfloat *v void glRasterPos2i GLint x GLint y void glRasterPos2iv const GLint *v void glRasterPos2s GLshort x GLshort y void glRasterPos2sv const GLshort *v void glRasterPos2xOES GLfixed x GLfixed y void glRasterPos2xvOES const GLfixed *coords void glRasterPos3d GLdouble x GLdouble y GLdouble z void glRasterPos3dv const GLdouble *v void glRasterPos3f GLfloat x GLfloat y GLfloat z void glRasterPos3fv const GLfloat *v void glRasterPos3i GLint x GLint y GLint z void glRasterPos3iv const GLint *v void glRasterPos3s GLshort x GLshort y GLshort z void glRasterPos3sv const GLshort *v void glRasterPos3xOES GLfixed x GLfixed y GLfixed z void glRasterPos3xvOES const GLfixed *coords void glRasterPos4d GLdouble x GLdouble y GLdouble z GLdouble w void glRasterPos4dv const GLdouble *v void glRasterPos4f GLfloat x GLfloat y GLfloat z GLfloat w void glRasterPos4fv const GLfloat *v void glRasterPos4i GLint x GLint y GLint z GLint w void glRasterPos4iv const GLint *v void glRasterPos4s GLshort x GLshort y GLshort z GLshort w void glRasterPos4sv const GLshort *v void glRasterPos4xOES GLfixed x GLfixed y GLfixed z GLfixed w void glRasterPos4xvOES const GLfixed *coords void glRasterSamplesEXT GLuint samples GLboolean fixedsamplelocations void glReadBuffer GLenum src void glReadBufferIndexedEXT GLenum src GLint index void glReadBufferNV GLenum mode void glReadInstrumentsSGIX GLint marker void glReadPixels GLint x GLint y GLsizei width GLsizei height GLenum format GLenum type void *pixels void glReadnPixels GLint x GLint y GLsizei width GLsizei height GLenum format GLenum type GLsizei bufSize void *data void glReadnPixelsARB GLint x GLint y GLsizei width GLsizei height GLenum format GLenum type GLsizei bufSize void *data void glReadnPixelsEXT GLint x GLint y GLsizei width GLsizei height GLenum format GLenum type GLsizei bufSize void *data void glReadnPixelsKHR GLint x GLint y GLsizei width GLsizei height GLenum format GLenum type GLsizei bufSize void *data GLboolean glReleaseKeyedMutexWin32EXT GLuint memory GLuint64 key void glRectd GLdouble x1 GLdouble y1 GLdouble x2 GLdouble y2 void glRectdv const GLdouble *v1 const GLdouble *v2 void glRectf GLfloat x1 GLfloat y1 GLfloat x2 GLfloat y2 void glRectfv const GLfloat *v1 const GLfloat *v2 void glRecti GLint x1 GLint y1 GLint x2 GLint y2 void glRectiv const GLint *v1 const GLint *v2 void glRects GLshort x1 GLshort y1 GLshort x2 GLshort y2 void glRectsv const GLshort *v1 const GLshort *v2 void glRectxOES GLfixed x1 GLfixed y1 GLfixed x2 GLfixed y2 void glRectxvOES const GLfixed *v1 const GLfixed *v2 void glReferencePlaneSGIX const GLdouble *equation void glReleaseShaderCompiler void glRenderGpuMaskNV GLbitfield mask GLint glRenderMode GLenum mode void glRenderbufferStorage GLenum target GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageEXT GLenum target GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisample GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleANGLE GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleAPPLE GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleAdvancedAMD GLenum target GLsizei samples GLsizei storageSamples GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleCoverageNV GLenum target GLsizei coverageSamples GLsizei colorSamples GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleEXT GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleIMG GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleNV GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageOES GLenum target GLenum internalformat GLsizei width GLsizei height void glReplacementCodePointerSUN GLenum type GLsizei stride const void **pointer void glReplacementCodeubSUN GLubyte code void glReplacementCodeubvSUN const GLubyte *code void glReplacementCodeuiColor3fVertex3fSUN GLuint rc GLfloat r GLfloat g GLfloat b GLfloat x GLfloat y GLfloat z void glReplacementCodeuiColor3fVertex3fvSUN const GLuint *rc const GLfloat *c const GLfloat *v void glReplacementCodeuiColor4fNormal3fVertex3fSUN GLuint rc GLfloat r GLfloat g GLfloat b GLfloat a GLfloat nx GLfloat ny GLfloat nz GLfloat x GLfloat y GLfloat z void glReplacementCodeuiColor4fNormal3fVertex3fvSUN const GLuint *rc const GLfloat *c const GLfloat *n const GLfloat *v void glReplacementCodeuiColor4ubVertex3fSUN GLuint rc GLubyte r GLubyte g GLubyte b GLubyte a GLfloat x GLfloat y GLfloat z void glReplacementCodeuiColor4ubVertex3fvSUN const GLuint *rc const GLubyte *c const GLfloat *v void glReplacementCodeuiNormal3fVertex3fSUN GLuint rc GLfloat nx GLfloat ny GLfloat nz GLfloat x GLfloat y GLfloat z void glReplacementCodeuiNormal3fVertex3fvSUN const GLuint *rc const GLfloat *n const GLfloat *v void glReplacementCodeuiSUN GLuint code void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLuint rc GLfloat s GLfloat t GLfloat r GLfloat g GLfloat b GLfloat a GLfloat nx GLfloat ny GLfloat nz GLfloat x GLfloat y GLfloat z void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN const GLuint *rc const GLfloat *tc const GLfloat *c const GLfloat *n const GLfloat *v void glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLuint rc GLfloat s GLfloat t GLfloat nx GLfloat ny GLfloat nz GLfloat x GLfloat y GLfloat z void glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN const GLuint *rc const GLfloat *tc const GLfloat *n const GLfloat *v void glReplacementCodeuiTexCoord2fVertex3fSUN GLuint rc GLfloat s GLfloat t GLfloat x GLfloat y GLfloat z void glReplacementCodeuiTexCoord2fVertex3fvSUN const GLuint *rc const GLfloat *tc const GLfloat *v void glReplacementCodeuiVertex3fSUN GLuint rc GLfloat x GLfloat y GLfloat z void glReplacementCodeuiVertex3fvSUN const GLuint *rc const GLfloat *v void glReplacementCodeuivSUN const GLuint *code void glReplacementCodeusSUN GLushort code void glReplacementCodeusvSUN const GLushort *code void glRequestResidentProgramsNV GLsizei n const GLuint *programs void glResetHistogram GLenum target void glResetHistogramEXT GLenum target void glResetMemoryObjectParameterNV GLuint memory GLenum pname void glResetMinmax GLenum target void glResetMinmaxEXT GLenum target void glResizeBuffersMESA void glResolveDepthValuesNV void glResolveMultisampleFramebufferAPPLE void glResumeTransformFeedback void glResumeTransformFeedbackNV void glRotated GLdouble angle GLdouble x GLdouble y GLdouble z void glRotatef GLfloat angle GLfloat x GLfloat y GLfloat z void glRotatex GLfixed angle GLfixed x GLfixed y GLfixed z void glRotatexOES GLfixed angle GLfixed x GLfixed y GLfixed z void glSampleCoverage GLfloat value GLboolean invert void glSampleCoverageARB GLfloat value GLboolean invert void glSampleCoveragex GLclampx value GLboolean invert void glSampleCoveragexOES GLclampx value GLboolean invert void glSampleMapATI GLuint dst GLuint interp GLenum swizzle void glSampleMaskEXT GLclampf value GLboolean invert void glSampleMaskIndexedNV GLuint index GLbitfield mask void glSampleMaskSGIS GLclampf value GLboolean invert void glSampleMaski GLuint maskNumber GLbitfield mask void glSamplePatternEXT GLenum pattern void glSamplePatternSGIS GLenum pattern void glSamplerParameterIiv GLuint sampler GLenum pname const GLint *param void glSamplerParameterIivEXT GLuint sampler GLenum pname const GLint *param void glSamplerParameterIivOES GLuint sampler GLenum pname const GLint *param void glSamplerParameterIuiv GLuint sampler GLenum pname const GLuint *param void glSamplerParameterIuivEXT GLuint sampler GLenum pname const GLuint *param void glSamplerParameterIuivOES GLuint sampler GLenum pname const GLuint *param void glSamplerParameterf GLuint sampler GLenum pname GLfloat param void glSamplerParameterfv GLuint sampler GLenum pname const GLfloat *param void glSamplerParameteri GLuint sampler GLenum pname GLint param void glSamplerParameteriv GLuint sampler GLenum pname const GLint *param void glScaled GLdouble x GLdouble y GLdouble z void glScalef GLfloat x GLfloat y GLfloat z void glScalex GLfixed x GLfixed y GLfixed z void glScalexOES GLfixed x GLfixed y GLfixed z void glScissor GLint x GLint y GLsizei width GLsizei height void glScissorArrayv GLuint first GLsizei count const GLint *v void glScissorArrayvNV GLuint first GLsizei count const GLint *v void glScissorArrayvOES GLuint first GLsizei count const GLint *v void glScissorExclusiveArrayvNV GLuint first GLsizei count const GLint *v void glScissorExclusiveNV GLint x GLint y GLsizei width GLsizei height void glScissorIndexed GLuint index GLint left GLint bottom GLsizei width GLsizei height void glScissorIndexedNV GLuint index GLint left GLint bottom GLsizei width GLsizei height void glScissorIndexedOES GLuint index GLint left GLint bottom GLsizei width GLsizei height void glScissorIndexedv GLuint index const GLint *v void glScissorIndexedvNV GLuint index const GLint *v void glScissorIndexedvOES GLuint index const GLint *v void glSecondaryColor3b GLbyte red GLbyte green GLbyte blue void glSecondaryColor3bEXT GLbyte red GLbyte green GLbyte blue void glSecondaryColor3bv const GLbyte *v void glSecondaryColor3bvEXT const GLbyte *v void glSecondaryColor3d GLdouble red GLdouble green GLdouble blue void glSecondaryColor3dEXT GLdouble red GLdouble green GLdouble blue void glSecondaryColor3dv const GLdouble *v void glSecondaryColor3dvEXT const GLdouble *v void glSecondaryColor3f GLfloat red GLfloat green GLfloat blue void glSecondaryColor3fEXT GLfloat red GLfloat green GLfloat blue void glSecondaryColor3fv const GLfloat *v void glSecondaryColor3fvEXT const GLfloat *v void glSecondaryColor3hNV GLhalfNV red GLhalfNV green GLhalfNV blue void glSecondaryColor3hvNV const GLhalfNV *v void glSecondaryColor3i GLint red GLint green GLint blue void glSecondaryColor3iEXT GLint red GLint green GLint blue void glSecondaryColor3iv const GLint *v void glSecondaryColor3ivEXT const GLint *v void glSecondaryColor3s GLshort red GLshort green GLshort blue void glSecondaryColor3sEXT GLshort red GLshort green GLshort blue void glSecondaryColor3sv const GLshort *v void glSecondaryColor3svEXT const GLshort *v void glSecondaryColor3ub GLubyte red GLubyte green GLubyte blue void glSecondaryColor3ubEXT GLubyte red GLubyte green GLubyte blue void glSecondaryColor3ubv const GLubyte *v void glSecondaryColor3ubvEXT const GLubyte *v void glSecondaryColor3ui GLuint red GLuint green GLuint blue void glSecondaryColor3uiEXT GLuint red GLuint green GLuint blue void glSecondaryColor3uiv const GLuint *v void glSecondaryColor3uivEXT const GLuint *v void glSecondaryColor3us GLushort red GLushort green GLushort blue void glSecondaryColor3usEXT GLushort red GLushort green GLushort blue void glSecondaryColor3usv const GLushort *v void glSecondaryColor3usvEXT const GLushort *v void glSecondaryColorFormatNV GLint size GLenum type GLsizei stride void glSecondaryColorP3ui GLenum type GLuint color void glSecondaryColorP3uiv GLenum type const GLuint *color void glSecondaryColorPointer GLint size GLenum type GLsizei stride const void *pointer void glSecondaryColorPointerEXT GLint size GLenum type GLsizei stride const void *pointer void glSecondaryColorPointerListIBM GLint size GLenum type GLint stride const void **pointer GLint ptrstride void glSelectBuffer GLsizei size GLuint *buffer void glSelectPerfMonitorCountersAMD GLuint monitor GLboolean enable GLuint group GLint numCounters GLuint *counterList void glSemaphoreParameterui64vEXT GLuint semaphore GLenum pname const GLuint64 *params void glSeparableFilter2D GLenum target GLenum internalformat GLsizei width GLsizei height GLenum format GLenum type const void *row const void *column void glSeparableFilter2DEXT GLenum target GLenum internalformat GLsizei width GLsizei height GLenum format GLenum type const void *row const void *column void glSetFenceAPPLE GLuint fence void glSetFenceNV GLuint fence GLenum condition void glSetFragmentShaderConstantATI GLuint dst const GLfloat *value void glSetInvariantEXT GLuint id GLenum type const void *addr void glSetLocalConstantEXT GLuint id GLenum type const void *addr void glSetMultisamplefvAMD GLenum pname GLuint index const GLfloat *val void glShadeModel GLenum mode void glShaderBinary GLsizei count const GLuint *shaders GLenum binaryformat const void *binary GLsizei length void glShaderOp1EXT GLenum op GLuint res GLuint arg1 void glShaderOp2EXT GLenum op GLuint res GLuint arg1 GLuint arg2 void glShaderOp3EXT GLenum op GLuint res GLuint arg1 GLuint arg2 GLuint arg3 void glShaderSource GLuint shader GLsizei count const GLchar *const*string const GLint *length void glShaderSourceARB GLhandleARB shaderObj GLsizei count const GLcharARB **string const GLint *length void glShaderStorageBlockBinding GLuint program GLuint storageBlockIndex GLuint storageBlockBinding void glShadingRateImageBarrierNV GLboolean synchronize void glShadingRateImagePaletteNV GLuint viewport GLuint first GLsizei count const GLenum *rates void glShadingRateSampleOrderNV GLenum order void glShadingRateSampleOrderCustomNV GLenum rate GLuint samples const GLint *locations void glSharpenTexFuncSGIS GLenum target GLsizei n const GLfloat *points void glSignalSemaphoreEXT GLuint semaphore GLuint numBufferBarriers const GLuint *buffers GLuint numTextureBarriers const GLuint *textures const GLenum *dstLayouts void glSignalSemaphoreui64NVX GLuint signalGpu GLsizei fenceObjectCount const GLuint *semaphoreArray const GLuint64 *fenceValueArray void glSpecializeShader GLuint shader const GLchar *pEntryPoint GLuint numSpecializationConstants const GLuint *pConstantIndex const GLuint *pConstantValue void glSpecializeShaderARB GLuint shader const GLchar *pEntryPoint GLuint numSpecializationConstants const GLuint *pConstantIndex const GLuint *pConstantValue void glSpriteParameterfSGIX GLenum pname GLfloat param void glSpriteParameterfvSGIX GLenum pname const GLfloat *params void glSpriteParameteriSGIX GLenum pname GLint param void glSpriteParameterivSGIX GLenum pname const GLint *params void glStartInstrumentsSGIX void glStartTilingQCOM GLuint x GLuint y GLuint width GLuint height GLbitfield preserveMask void glStateCaptureNV GLuint state GLenum mode void glStencilClearTagEXT GLsizei stencilTagBits GLuint stencilClearTag void glStencilFillPathInstancedNV GLsizei numPaths GLenum pathNameType const void *paths GLuint pathBase GLenum fillMode GLuint mask GLenum transformType const GLfloat *transformValues void glStencilFillPathNV GLuint path GLenum fillMode GLuint mask void glStencilFunc GLenum func GLint ref GLuint mask void glStencilFuncSeparate GLenum face GLenum func GLint ref GLuint mask void glStencilFuncSeparateATI GLenum frontfunc GLenum backfunc GLint ref GLuint mask void glStencilMask GLuint mask void glStencilMaskSeparate GLenum face GLuint mask void glStencilOp GLenum fail GLenum zfail GLenum zpass void glStencilOpSeparate GLenum face GLenum sfail GLenum dpfail GLenum dppass void glStencilOpSeparateATI GLenum face GLenum sfail GLenum dpfail GLenum dppass void glStencilOpValueAMD GLenum face GLuint value void glStencilStrokePathInstancedNV GLsizei numPaths GLenum pathNameType const void *paths GLuint pathBase GLint reference GLuint mask GLenum transformType const GLfloat *transformValues void glStencilStrokePathNV GLuint path GLint reference GLuint mask void glStencilThenCoverFillPathInstancedNV GLsizei numPaths GLenum pathNameType const void *paths GLuint pathBase GLenum fillMode GLuint mask GLenum coverMode GLenum transformType const GLfloat *transformValues void glStencilThenCoverFillPathNV GLuint path GLenum fillMode GLuint mask GLenum coverMode void glStencilThenCoverStrokePathInstancedNV GLsizei numPaths GLenum pathNameType const void *paths GLuint pathBase GLint reference GLuint mask GLenum coverMode GLenum transformType const GLfloat *transformValues void glStencilThenCoverStrokePathNV GLuint path GLint reference GLuint mask GLenum coverMode void glStopInstrumentsSGIX GLint marker void glStringMarkerGREMEDY GLsizei len const void *string void glSubpixelPrecisionBiasNV GLuint xbits GLuint ybits void glSwizzleEXT GLuint res GLuint in GLenum outX GLenum outY GLenum outZ GLenum outW void glSyncTextureINTEL GLuint texture void glTagSampleBufferSGIX void glTangent3bEXT GLbyte tx GLbyte ty GLbyte tz void glTangent3bvEXT const GLbyte *v void glTangent3dEXT GLdouble tx GLdouble ty GLdouble tz void glTangent3dvEXT const GLdouble *v void glTangent3fEXT GLfloat tx GLfloat ty GLfloat tz void glTangent3fvEXT const GLfloat *v void glTangent3iEXT GLint tx GLint ty GLint tz void glTangent3ivEXT const GLint *v void glTangent3sEXT GLshort tx GLshort ty GLshort tz void glTangent3svEXT const GLshort *v void glTangentPointerEXT GLenum type GLsizei stride const void *pointer void glTbufferMask3DFX GLuint mask void glTessellationFactorAMD GLfloat factor void glTessellationModeAMD GLenum mode GLboolean glTestFenceAPPLE GLuint fence GLboolean glTestFenceNV GLuint fence GLboolean glTestObjectAPPLE GLenum object GLuint name void glTexAttachMemoryNV GLenum target GLuint memory GLuint64 offset void glTexBuffer GLenum target GLenum internalformat GLuint buffer void glTexBufferARB GLenum target GLenum internalformat GLuint buffer void glTexBufferEXT GLenum target GLenum internalformat GLuint buffer void glTexBufferOES GLenum target GLenum internalformat GLuint buffer void glTexBufferRange GLenum target GLenum internalformat GLuint buffer GLintptr offset GLsizeiptr size void glTexBufferRangeEXT GLenum target GLenum internalformat GLuint buffer GLintptr offset GLsizeiptr size void glTexBufferRangeOES GLenum target GLenum internalformat GLuint buffer GLintptr offset GLsizeiptr size void glTexBumpParameterfvATI GLenum pname const GLfloat *param void glTexBumpParameterivATI GLenum pname const GLint *param void glTexCoord1bOES GLbyte s void glTexCoord1bvOES const GLbyte *coords void glTexCoord1d GLdouble s void glTexCoord1dv const GLdouble *v void glTexCoord1f GLfloat s void glTexCoord1fv const GLfloat *v void glTexCoord1hNV GLhalfNV s void glTexCoord1hvNV const GLhalfNV *v void glTexCoord1i GLint s void glTexCoord1iv const GLint *v void glTexCoord1s GLshort s void glTexCoord1sv const GLshort *v void glTexCoord1xOES GLfixed s void glTexCoord1xvOES const GLfixed *coords void glTexCoord2bOES GLbyte s GLbyte t void glTexCoord2bvOES const GLbyte *coords void glTexCoord2d GLdouble s GLdouble t void glTexCoord2dv const GLdouble *v void glTexCoord2f GLfloat s GLfloat t void glTexCoord2fColor3fVertex3fSUN GLfloat s GLfloat t GLfloat r GLfloat g GLfloat b GLfloat x GLfloat y GLfloat z void glTexCoord2fColor3fVertex3fvSUN const GLfloat *tc const GLfloat *c const GLfloat *v void glTexCoord2fColor4fNormal3fVertex3fSUN GLfloat s GLfloat t GLfloat r GLfloat g GLfloat b GLfloat a GLfloat nx GLfloat ny GLfloat nz GLfloat x GLfloat y GLfloat z void glTexCoord2fColor4fNormal3fVertex3fvSUN const GLfloat *tc const GLfloat *c const GLfloat *n const GLfloat *v void glTexCoord2fColor4ubVertex3fSUN GLfloat s GLfloat t GLubyte r GLubyte g GLubyte b GLubyte a GLfloat x GLfloat y GLfloat z void glTexCoord2fColor4ubVertex3fvSUN const GLfloat *tc const GLubyte *c const GLfloat *v void glTexCoord2fNormal3fVertex3fSUN GLfloat s GLfloat t GLfloat nx GLfloat ny GLfloat nz GLfloat x GLfloat y GLfloat z void glTexCoord2fNormal3fVertex3fvSUN const GLfloat *tc const GLfloat *n const GLfloat *v void glTexCoord2fVertex3fSUN GLfloat s GLfloat t GLfloat x GLfloat y GLfloat z void glTexCoord2fVertex3fvSUN const GLfloat *tc const GLfloat *v void glTexCoord2fv const GLfloat *v void glTexCoord2hNV GLhalfNV s GLhalfNV t void glTexCoord2hvNV const GLhalfNV *v void glTexCoord2i GLint s GLint t void glTexCoord2iv const GLint *v void glTexCoord2s GLshort s GLshort t void glTexCoord2sv const GLshort *v void glTexCoord2xOES GLfixed s GLfixed t void glTexCoord2xvOES const GLfixed *coords void glTexCoord3bOES GLbyte s GLbyte t GLbyte r void glTexCoord3bvOES const GLbyte *coords void glTexCoord3d GLdouble s GLdouble t GLdouble r void glTexCoord3dv const GLdouble *v void glTexCoord3f GLfloat s GLfloat t GLfloat r void glTexCoord3fv const GLfloat *v void glTexCoord3hNV GLhalfNV s GLhalfNV t GLhalfNV r void glTexCoord3hvNV const GLhalfNV *v void glTexCoord3i GLint s GLint t GLint r void glTexCoord3iv const GLint *v void glTexCoord3s GLshort s GLshort t GLshort r void glTexCoord3sv const GLshort *v void glTexCoord3xOES GLfixed s GLfixed t GLfixed r void glTexCoord3xvOES const GLfixed *coords void glTexCoord4bOES GLbyte s GLbyte t GLbyte r GLbyte q void glTexCoord4bvOES const GLbyte *coords void glTexCoord4d GLdouble s GLdouble t GLdouble r GLdouble q void glTexCoord4dv const GLdouble *v void glTexCoord4f GLfloat s GLfloat t GLfloat r GLfloat q void glTexCoord4fColor4fNormal3fVertex4fSUN GLfloat s GLfloat t GLfloat p GLfloat q GLfloat r GLfloat g GLfloat b GLfloat a GLfloat nx GLfloat ny GLfloat nz GLfloat x GLfloat y GLfloat z GLfloat w void glTexCoord4fColor4fNormal3fVertex4fvSUN const GLfloat *tc const GLfloat *c const GLfloat *n const GLfloat *v void glTexCoord4fVertex4fSUN GLfloat s GLfloat t GLfloat p GLfloat q GLfloat x GLfloat y GLfloat z GLfloat w void glTexCoord4fVertex4fvSUN const GLfloat *tc const GLfloat *v void glTexCoord4fv const GLfloat *v void glTexCoord4hNV GLhalfNV s GLhalfNV t GLhalfNV r GLhalfNV q void glTexCoord4hvNV const GLhalfNV *v void glTexCoord4i GLint s GLint t GLint r GLint q void glTexCoord4iv const GLint *v void glTexCoord4s GLshort s GLshort t GLshort r GLshort q void glTexCoord4sv const GLshort *v void glTexCoord4xOES GLfixed s GLfixed t GLfixed r GLfixed q void glTexCoord4xvOES const GLfixed *coords void glTexCoordFormatNV GLint size GLenum type GLsizei stride void glTexCoordP1ui GLenum type GLuint coords void glTexCoordP1uiv GLenum type const GLuint *coords void glTexCoordP2ui GLenum type GLuint coords void glTexCoordP2uiv GLenum type const GLuint *coords void glTexCoordP3ui GLenum type GLuint coords void glTexCoordP3uiv GLenum type const GLuint *coords void glTexCoordP4ui GLenum type GLuint coords void glTexCoordP4uiv GLenum type const GLuint *coords void glTexCoordPointer GLint size GLenum type GLsizei stride const void *pointer void glTexCoordPointerEXT GLint size GLenum type GLsizei stride GLsizei count const void *pointer void glTexCoordPointerListIBM GLint size GLenum type GLint stride const void **pointer GLint ptrstride void glTexCoordPointervINTEL GLint size GLenum type const void **pointer void glTexEnvf GLenum target GLenum pname GLfloat param void glTexEnvfv GLenum target GLenum pname const GLfloat *params void glTexEnvi GLenum target GLenum pname GLint param void glTexEnviv GLenum target GLenum pname const GLint *params void glTexEnvx GLenum target GLenum pname GLfixed param void glTexEnvxOES GLenum target GLenum pname GLfixed param void glTexEnvxv GLenum target GLenum pname const GLfixed *params void glTexEnvxvOES GLenum target GLenum pname const GLfixed *params void glTexFilterFuncSGIS GLenum target GLenum filter GLsizei n const GLfloat *weights void glTexGend GLenum coord GLenum pname GLdouble param void glTexGendv GLenum coord GLenum pname const GLdouble *params void glTexGenf GLenum coord GLenum pname GLfloat param void glTexGenfOES GLenum coord GLenum pname GLfloat param void glTexGenfv GLenum coord GLenum pname const GLfloat *params void glTexGenfvOES GLenum coord GLenum pname const GLfloat *params void glTexGeni GLenum coord GLenum pname GLint param void glTexGeniOES GLenum coord GLenum pname GLint param void glTexGeniv GLenum coord GLenum pname const GLint *params void glTexGenivOES GLenum coord GLenum pname const GLint *params void glTexGenxOES GLenum coord GLenum pname GLfixed param void glTexGenxvOES GLenum coord GLenum pname const GLfixed *params void glTexImage1D GLenum target GLint level GLint internalformat GLsizei width GLint border GLenum format GLenum type const void *pixels void glTexImage2D GLenum target GLint level GLint internalformat GLsizei width GLsizei height GLint border GLenum format GLenum type const void *pixels void glTexImage2DMultisample GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height GLboolean fixedsamplelocations void glTexImage2DMultisampleCoverageNV GLenum target GLsizei coverageSamples GLsizei colorSamples GLint internalFormat GLsizei width GLsizei height GLboolean fixedSampleLocations void glTexImage3D GLenum target GLint level GLint internalformat GLsizei width GLsizei height GLsizei depth GLint border GLenum format GLenum type const void *pixels void glTexImage3DEXT GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLsizei depth GLint border GLenum format GLenum type const void *pixels void glTexImage3DMultisample GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height GLsizei depth GLboolean fixedsamplelocations void glTexImage3DMultisampleCoverageNV GLenum target GLsizei coverageSamples GLsizei colorSamples GLint internalFormat GLsizei width GLsizei height GLsizei depth GLboolean fixedSampleLocations void glTexImage3DOES GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLsizei depth GLint border GLenum format GLenum type const void *pixels void glTexImage4DSGIS GLenum target GLint level GLenum internalformat GLsizei width GLsizei height GLsizei depth GLsizei size4d GLint border GLenum format GLenum type const void *pixels void glTexPageCommitmentARB GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLboolean commit void glTexPageCommitmentEXT GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLboolean commit void glTexParameterIiv GLenum target GLenum pname const GLint *params void glTexParameterIivEXT GLenum target GLenum pname const GLint *params void glTexParameterIivOES GLenum target GLenum pname const GLint *params void glTexParameterIuiv GLenum target GLenum pname const GLuint *params void glTexParameterIuivEXT GLenum target GLenum pname const GLuint *params void glTexParameterIuivOES GLenum target GLenum pname const GLuint *params void glTexParameterf GLenum target GLenum pname GLfloat param void glTexParameterfv GLenum target GLenum pname const GLfloat *params void glTexParameteri GLenum target GLenum pname GLint param void glTexParameteriv GLenum target GLenum pname const GLint *params void glTexParameterx GLenum target GLenum pname GLfixed param void glTexParameterxOES GLenum target GLenum pname GLfixed param void glTexParameterxv GLenum target GLenum pname const GLfixed *params void glTexParameterxvOES GLenum target GLenum pname const GLfixed *params void glTexRenderbufferNV GLenum target GLuint renderbuffer void glTexStorage1D GLenum target GLsizei levels GLenum internalformat GLsizei width void glTexStorage1DEXT GLenum target GLsizei levels GLenum internalformat GLsizei width void glTexStorage2D GLenum target GLsizei levels GLenum internalformat GLsizei width GLsizei height void glTexStorage2DEXT GLenum target GLsizei levels GLenum internalformat GLsizei width GLsizei height void glTexStorage2DMultisample GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height GLboolean fixedsamplelocations void glTexStorage3D GLenum target GLsizei levels GLenum internalformat GLsizei width GLsizei height GLsizei depth void glTexStorage3DEXT GLenum target GLsizei levels GLenum internalformat GLsizei width GLsizei height GLsizei depth void glTexStorage3DMultisample GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height GLsizei depth GLboolean fixedsamplelocations void glTexStorage3DMultisampleOES GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height GLsizei depth GLboolean fixedsamplelocations void glTexStorageMem1DEXT GLenum target GLsizei levels GLenum internalFormat GLsizei width GLuint memory GLuint64 offset void glTexStorageMem2DEXT GLenum target GLsizei levels GLenum internalFormat GLsizei width GLsizei height GLuint memory GLuint64 offset void glTexStorageMem2DMultisampleEXT GLenum target GLsizei samples GLenum internalFormat GLsizei width GLsizei height GLboolean fixedSampleLocations GLuint memory GLuint64 offset void glTexStorageMem3DEXT GLenum target GLsizei levels GLenum internalFormat GLsizei width GLsizei height GLsizei depth GLuint memory GLuint64 offset void glTexStorageMem3DMultisampleEXT GLenum target GLsizei samples GLenum internalFormat GLsizei width GLsizei height GLsizei depth GLboolean fixedSampleLocations GLuint memory GLuint64 offset void glTexStorageSparseAMD GLenum target GLenum internalFormat GLsizei width GLsizei height GLsizei depth GLboolean fixedSampleLocations GLuint memory GLuint64 offset void glTexStorageSparseAMD GLenum target GLenum internalFormat GLsizei width GLsizei height GLsizei depth GLsizei layers GLbitfield flags void glTexSubImage1D GLenum target GLint level GLint xoffset GLsizei width GLenum format GLenum type const void *pixels void glTexSubImage1DEXT GLenum target GLint level GLint xoffset GLsizei width GLenum format GLenum type const void *pixels void glTexSubImage2D GLenum target GLint level GLint xoffset GLint yoffset GLsizei width GLsizei height GLenum format GLenum type const void *pixels void glTexSubImage2DEXT GLenum target GLint level GLint xoffset GLint yoffset GLsizei width GLsizei height GLenum format GLenum type const void *pixels void glTexSubImage3D GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLenum type const void *pixels void glTexSubImage3DEXT GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLenum type const void *pixels void glTexSubImage3DOES GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLenum type const void *pixels void glTexSubImage4DSGIS GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLint woffset GLsizei width GLsizei height GLsizei depth GLsizei size4d GLenum format GLenum type const void *pixels void glTextureAttachMemoryNV GLuint texture GLuint memory GLuint64 offset void glTextureBarrier void glTextureBarrierNV void glTextureBuffer GLuint texture GLenum internalformat GLuint buffer void glTextureBufferEXT GLuint texture GLenum target GLenum internalformat GLuint buffer void glTextureBufferRange GLuint texture GLenum internalformat GLuint buffer GLintptr offset GLsizeiptr size void glTextureBufferRangeEXT GLuint texture GLenum target GLenum internalformat GLuint buffer GLintptr offset GLsizeiptr size void glTextureColorMaskSGIS GLboolean red GLboolean green GLboolean blue GLboolean alpha void glTextureFoveationParametersQCOM GLuint texture GLuint layer GLuint focalPoint GLfloat focalX GLfloat focalY GLfloat gainX GLfloat gainY GLfloat foveaArea void glTextureImage1DEXT GLuint texture GLenum target GLint level GLint internalformat GLsizei width GLint border GLenum format GLenum type const void *pixels void glTextureImage2DEXT GLuint texture GLenum target GLint level GLint internalformat GLsizei width GLsizei height GLint border GLenum format GLenum type const void *pixels void glTextureImage2DMultisampleCoverageNV GLuint texture GLenum target GLsizei coverageSamples GLsizei colorSamples GLint internalFormat GLsizei width GLsizei height GLboolean fixedSampleLocations void glTextureImage2DMultisampleNV GLuint texture GLenum target GLsizei samples GLint internalFormat GLsizei width GLsizei height GLboolean fixedSampleLocations void glTextureImage3DEXT GLuint texture GLenum target GLint level GLint internalformat GLsizei width GLsizei height GLsizei depth GLint border GLenum format GLenum type const void *pixels void glTextureImage3DMultisampleCoverageNV GLuint texture GLenum target GLsizei coverageSamples GLsizei colorSamples GLint internalFormat GLsizei width GLsizei height GLsizei depth GLboolean fixedSampleLocations void glTextureImage3DMultisampleNV GLuint texture GLenum target GLsizei samples GLint internalFormat GLsizei width GLsizei height GLsizei depth GLboolean fixedSampleLocations void glTextureLightEXT GLenum pname void glTextureMaterialEXT GLenum face GLenum mode void glTextureNormalEXT GLenum mode void glTexturePageCommitmentEXT GLuint texture GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLboolean commit void glTextureParameterIiv GLuint texture GLenum pname const GLint *params void glTextureParameterIivEXT GLuint texture GLenum target GLenum pname const GLint *params void glTextureParameterIuiv GLuint texture GLenum pname const GLuint *params void glTextureParameterIuivEXT GLuint texture GLenum target GLenum pname const GLuint *params void glTextureParameterf GLuint texture GLenum pname GLfloat param void glTextureParameterfEXT GLuint texture GLenum target GLenum pname GLfloat param void glTextureParameterfv GLuint texture GLenum pname const GLfloat *param void glTextureParameterfvEXT GLuint texture GLenum target GLenum pname const GLfloat *params void glTextureParameteri GLuint texture GLenum pname GLint param void glTextureParameteriEXT GLuint texture GLenum target GLenum pname GLint param void glTextureParameteriv GLuint texture GLenum pname const GLint *param void glTextureParameterivEXT GLuint texture GLenum target GLenum pname const GLint *params void glTextureRangeAPPLE GLenum target GLsizei length const void *pointer void glTextureRenderbufferEXT GLuint texture GLenum target GLuint renderbuffer void glTextureStorage1D GLuint texture GLsizei levels GLenum internalformat GLsizei width void glTextureStorage1DEXT GLuint texture GLenum target GLsizei levels GLenum internalformat GLsizei width void glTextureStorage2D GLuint texture GLsizei levels GLenum internalformat GLsizei width GLsizei height void glTextureStorage2DEXT GLuint texture GLenum target GLsizei levels GLenum internalformat GLsizei width GLsizei height void glTextureStorage2DMultisample GLuint texture GLsizei samples GLenum internalformat GLsizei width GLsizei height GLboolean fixedsamplelocations void glTextureStorage2DMultisampleEXT GLuint texture GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height GLboolean fixedsamplelocations void glTextureStorage3D GLuint texture GLsizei levels GLenum internalformat GLsizei width GLsizei height GLsizei depth void glTextureStorage3DEXT GLuint texture GLenum target GLsizei levels GLenum internalformat GLsizei width GLsizei height GLsizei depth void glTextureStorage3DMultisample GLuint texture GLsizei samples GLenum internalformat GLsizei width GLsizei height GLsizei depth GLboolean fixedsamplelocations void glTextureStorage3DMultisampleEXT GLuint texture GLenum target GLsizei samples GLenum internalformat GLsizei width GLsizei height GLsizei depth GLboolean fixedsamplelocations void glTextureStorageMem1DEXT GLuint texture GLsizei levels GLenum internalFormat GLsizei width GLuint memory GLuint64 offset void glTextureStorageMem2DEXT GLuint texture GLsizei levels GLenum internalFormat GLsizei width GLsizei height GLuint memory GLuint64 offset void glTextureStorageMem2DMultisampleEXT GLuint texture GLsizei samples GLenum internalFormat GLsizei width GLsizei height GLboolean fixedSampleLocations GLuint memory GLuint64 offset void glTextureStorageMem3DEXT GLuint texture GLsizei levels GLenum internalFormat GLsizei width GLsizei height GLsizei depth GLuint memory GLuint64 offset void glTextureStorageMem3DMultisampleEXT GLuint texture GLsizei samples GLenum internalFormat GLsizei width GLsizei height GLsizei depth GLboolean fixedSampleLocations GLuint memory GLuint64 offset void glTextureStorageSparseAMD GLuint texture GLenum target GLenum internalFormat GLsizei width GLsizei height GLsizei depth GLsizei layers GLbitfield flags void glTextureSubImage1D GLuint texture GLint level GLint xoffset GLsizei width GLenum format GLenum type const void *pixels void glTextureSubImage1DEXT GLuint texture GLenum target GLint level GLint xoffset GLsizei width GLenum format GLenum type const void *pixels void glTextureSubImage2D GLuint texture GLint level GLint xoffset GLint yoffset GLsizei width GLsizei height GLenum format GLenum type const void *pixels void glTextureSubImage2DEXT GLuint texture GLenum target GLint level GLint xoffset GLint yoffset GLsizei width GLsizei height GLenum format GLenum type const void *pixels void glTextureSubImage3D GLuint texture GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLenum type const void *pixels void glTextureSubImage3DEXT GLuint texture GLenum target GLint level GLint xoffset GLint yoffset GLint zoffset GLsizei width GLsizei height GLsizei depth GLenum format GLenum type const void *pixels void glTextureView GLuint texture GLenum target GLuint origtexture GLenum internalformat GLuint minlevel GLuint numlevels GLuint minlayer GLuint numlayers void glTextureViewEXT GLuint texture GLenum target GLuint origtexture GLenum internalformat GLuint minlevel GLuint numlevels GLuint minlayer GLuint numlayers void glTextureViewOES GLuint texture GLenum target GLuint origtexture GLenum internalformat GLuint minlevel GLuint numlevels GLuint minlayer GLuint numlayers void glTrackMatrixNV GLenum target GLuint address GLenum matrix GLenum transform void glTransformFeedbackAttribsNV GLsizei count const GLint *attribs GLenum bufferMode void glTransformFeedbackBufferBase GLuint xfb GLuint index GLuint buffer void glTransformFeedbackBufferRange GLuint xfb GLuint index GLuint buffer GLintptr offset GLsizeiptr size void glTransformFeedbackStreamAttribsNV GLsizei count const GLint *attribs GLsizei nbuffers const GLint *bufstreams GLenum bufferMode void glTransformFeedbackVaryings GLuint program GLsizei count const GLchar *const*varyings GLenum bufferMode void glTransformFeedbackVaryingsEXT GLuint program GLsizei count const GLchar *const*varyings GLenum bufferMode void glTransformFeedbackVaryingsNV GLuint program GLsizei count const GLint *locations GLenum bufferMode void glTransformPathNV GLuint resultPath GLuint srcPath GLenum transformType const GLfloat *transformValues void glTranslated GLdouble x GLdouble y GLdouble z void glTranslatef GLfloat x GLfloat y GLfloat z void glTranslatex GLfixed x GLfixed y GLfixed z void glTranslatexOES GLfixed x GLfixed y GLfixed z void glUniform1d GLint location GLdouble x void glUniform1dv GLint location GLsizei count const GLdouble *value void glUniform1f GLint location GLfloat v0 void glUniform1fARB GLint location GLfloat v0 void glUniform1fv GLint location GLsizei count const GLfloat *value void glUniform1fvARB GLint location GLsizei count const GLfloat *value void glUniform1i GLint location GLint v0 void glUniform1i64ARB GLint location GLint64 x void glUniform1i64NV GLint location GLint64EXT x void glUniform1i64vARB GLint location GLsizei count const GLint64 *value void glUniform1i64vNV GLint location GLsizei count const GLint64EXT *value void glUniform1iARB GLint location GLint v0 void glUniform1iv GLint location GLsizei count const GLint *value void glUniform1ivARB GLint location GLsizei count const GLint *value void glUniform1ui GLint location GLuint v0 void glUniform1ui64ARB GLint location GLuint64 x void glUniform1ui64NV GLint location GLuint64EXT x void glUniform1ui64vARB GLint location GLsizei count const GLuint64 *value void glUniform1ui64vNV GLint location GLsizei count const GLuint64EXT *value void glUniform1uiEXT GLint location GLuint v0 void glUniform1uiv GLint location GLsizei count const GLuint *value void glUniform1uivEXT GLint location GLsizei count const GLuint *value void glUniform2d GLint location GLdouble x GLdouble y void glUniform2dv GLint location GLsizei count const GLdouble *value void glUniform2f GLint location GLfloat v0 GLfloat v1 void glUniform2fARB GLint location GLfloat v0 GLfloat v1 void glUniform2fv GLint location GLsizei count const GLfloat *value void glUniform2fvARB GLint location GLsizei count const GLfloat *value void glUniform2i GLint location GLint v0 GLint v1 void glUniform2i64ARB GLint location GLint64 x GLint64 y void glUniform2i64NV GLint location GLint64EXT x GLint64EXT y void glUniform2i64vARB GLint location GLsizei count const GLint64 *value void glUniform2i64vNV GLint location GLsizei count const GLint64EXT *value void glUniform2iARB GLint location GLint v0 GLint v1 void glUniform2iv GLint location GLsizei count const GLint *value void glUniform2ivARB GLint location GLsizei count const GLint *value void glUniform2ui GLint location GLuint v0 GLuint v1 void glUniform2ui64ARB GLint location GLuint64 x GLuint64 y void glUniform2ui64NV GLint location GLuint64EXT x GLuint64EXT y void glUniform2ui64vARB GLint location GLsizei count const GLuint64 *value void glUniform2ui64vNV GLint location GLsizei count const GLuint64EXT *value void glUniform2uiEXT GLint location GLuint v0 GLuint v1 void glUniform2uiv GLint location GLsizei count const GLuint *value void glUniform2uivEXT GLint location GLsizei count const GLuint *value void glUniform3d GLint location GLdouble x GLdouble y GLdouble z void glUniform3dv GLint location GLsizei count const GLdouble *value void glUniform3f GLint location GLfloat v0 GLfloat v1 GLfloat v2 void glUniform3fARB GLint location GLfloat v0 GLfloat v1 GLfloat v2 void glUniform3fv GLint location GLsizei count const GLfloat *value void glUniform3fvARB GLint location GLsizei count const GLfloat *value void glUniform3i GLint location GLint v0 GLint v1 GLint v2 void glUniform3i64ARB GLint location GLint64 x GLint64 y GLint64 z void glUniform3i64NV GLint location GLint64EXT x GLint64EXT y GLint64EXT z void glUniform3i64vARB GLint location GLsizei count const GLint64 *value void glUniform3i64vNV GLint location GLsizei count const GLint64EXT *value void glUniform3iARB GLint location GLint v0 GLint v1 GLint v2 void glUniform3iv GLint location GLsizei count const GLint *value void glUniform3ivARB GLint location GLsizei count const GLint *value void glUniform3ui GLint location GLuint v0 GLuint v1 GLuint v2 void glUniform3ui64ARB GLint location GLuint64 x GLuint64 y GLuint64 z void glUniform3ui64NV GLint location GLuint64EXT x GLuint64EXT y GLuint64EXT z void glUniform3ui64vARB GLint location GLsizei count const GLuint64 *value void glUniform3ui64vNV GLint location GLsizei count const GLuint64EXT *value void glUniform3uiEXT GLint location GLuint v0 GLuint v1 GLuint v2 void glUniform3uiv GLint location GLsizei count const GLuint *value void glUniform3uivEXT GLint location GLsizei count const GLuint *value void glUniform4d GLint location GLdouble x GLdouble y GLdouble z GLdouble w void glUniform4dv GLint location GLsizei count const GLdouble *value void glUniform4f GLint location GLfloat v0 GLfloat v1 GLfloat v2 GLfloat v3 void glUniform4fARB GLint location GLfloat v0 GLfloat v1 GLfloat v2 GLfloat v3 void glUniform4fv GLint location GLsizei count const GLfloat *value void glUniform4fvARB GLint location GLsizei count const GLfloat *value void glUniform4i GLint location GLint v0 GLint v1 GLint v2 GLint v3 void glUniform4i64ARB GLint location GLint64 x GLint64 y GLint64 z GLint64 w void glUniform4i64NV GLint location GLint64EXT x GLint64EXT y GLint64EXT z GLint64EXT w void glUniform4i64vARB GLint location GLsizei count const GLint64 *value void glUniform4i64vNV GLint location GLsizei count const GLint64EXT *value void glUniform4iARB GLint location GLint v0 GLint v1 GLint v2 GLint v3 void glUniform4iv GLint location GLsizei count const GLint *value void glUniform4ivARB GLint location GLsizei count const GLint *value void glUniform4ui GLint location GLuint v0 GLuint v1 GLuint v2 GLuint v3 void glUniform4ui64ARB GLint location GLuint64 x GLuint64 y GLuint64 z GLuint64 w void glUniform4ui64NV GLint location GLuint64EXT x GLuint64EXT y GLuint64EXT z GLuint64EXT w void glUniform4ui64vARB GLint location GLsizei count const GLuint64 *value void glUniform4ui64vNV GLint location GLsizei count const GLuint64EXT *value void glUniform4uiEXT GLint location GLuint v0 GLuint v1 GLuint v2 GLuint v3 void glUniform4uiv GLint location GLsizei count const GLuint *value void glUniform4uivEXT GLint location GLsizei count const GLuint *value void glUniformBlockBinding GLuint program GLuint uniformBlockIndex GLuint uniformBlockBinding void glUniformBufferEXT GLuint program GLint location GLuint buffer void glUniformHandleui64ARB GLint location GLuint64 value void glUniformHandleui64IMG GLint location GLuint64 value void glUniformHandleui64NV GLint location GLuint64 value void glUniformHandleui64vARB GLint location GLsizei count const GLuint64 *value void glUniformHandleui64vIMG GLint location GLsizei count const GLuint64 *value void glUniformHandleui64vNV GLint location GLsizei count const GLuint64 *value void glUniformMatrix2dv GLint location GLsizei count GLboolean transpose const GLdouble *value void glUniformMatrix2fv GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix2fvARB GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix2x3dv GLint location GLsizei count GLboolean transpose const GLdouble *value void glUniformMatrix2x3fv GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix2x3fvNV GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix2x4dv GLint location GLsizei count GLboolean transpose const GLdouble *value void glUniformMatrix2x4fv GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix2x4fvNV GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix3dv GLint location GLsizei count GLboolean transpose const GLdouble *value void glUniformMatrix3fv GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix3fvARB GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix3x2dv GLint location GLsizei count GLboolean transpose const GLdouble *value void glUniformMatrix3x2fv GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix3x2fvNV GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix3x4dv GLint location GLsizei count GLboolean transpose const GLdouble *value void glUniformMatrix3x4fv GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix3x4fvNV GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix4dv GLint location GLsizei count GLboolean transpose const GLdouble *value void glUniformMatrix4fv GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix4fvARB GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix4x2dv GLint location GLsizei count GLboolean transpose const GLdouble *value void glUniformMatrix4x2fv GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix4x2fvNV GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix4x3dv GLint location GLsizei count GLboolean transpose const GLdouble *value void glUniformMatrix4x3fv GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformMatrix4x3fvNV GLint location GLsizei count GLboolean transpose const GLfloat *value void glUniformSubroutinesuiv GLenum shadertype GLsizei count const GLuint *indices void glUniformui64NV GLint location GLuint64EXT value void glUniformui64vNV GLint location GLsizei count const GLuint64EXT *value void glUnlockArraysEXT GLboolean glUnmapBuffer GLenum target GLboolean glUnmapBufferARB GLenum target GLboolean glUnmapBufferOES GLenum target GLboolean glUnmapNamedBuffer GLuint buffer GLboolean glUnmapNamedBufferEXT GLuint buffer void glUnmapObjectBufferATI GLuint buffer void glUnmapTexture2DINTEL GLuint texture GLint level void glUpdateObjectBufferATI GLuint buffer GLuint offset GLsizei size const void *pointer GLenum preserve void glUploadGpuMaskNVX GLbitfield mask void glUseProgram GLuint program void glUseProgramObjectARB GLhandleARB programObj void glUseProgramStages GLuint pipeline GLbitfield stages GLuint program void glUseProgramStagesEXT GLuint pipeline GLbitfield stages GLuint program void glUseShaderProgramEXT GLenum type GLuint program void glVDPAUFiniNV void glVDPAUGetSurfaceivNV GLvdpauSurfaceNV surface GLenum pname GLsizei bufSize GLsizei *length GLint *values void glVDPAUInitNV const void *vdpDevice const void *getProcAddress GLboolean glVDPAUIsSurfaceNV GLvdpauSurfaceNV surface void glVDPAUMapSurfacesNV GLsizei numSurfaces const GLvdpauSurfaceNV *surfaces GLvdpauSurfaceNV glVDPAURegisterOutputSurfaceNV const void *vdpSurface GLenum target GLsizei numTextureNames const GLuint *textureNames GLvdpauSurfaceNV glVDPAURegisterVideoSurfaceNV const void *vdpSurface GLenum target GLsizei numTextureNames const GLuint *textureNames GLvdpauSurfaceNV glVDPAURegisterVideoSurfaceWithPictureStructureNV const void *vdpSurface GLenum target GLsizei numTextureNames const GLuint *textureNames GLboolean isFrameStructure void glVDPAUSurfaceAccessNV GLvdpauSurfaceNV surface GLenum access void glVDPAUUnmapSurfacesNV GLsizei numSurface const GLvdpauSurfaceNV *surfaces void glVDPAUUnregisterSurfaceNV GLvdpauSurfaceNV surface void glValidateProgram GLuint program void glValidateProgramARB GLhandleARB programObj void glValidateProgramPipeline GLuint pipeline void glValidateProgramPipelineEXT GLuint pipeline void glVariantArrayObjectATI GLuint id GLenum type GLsizei stride GLuint buffer GLuint offset void glVariantPointerEXT GLuint id GLenum type GLuint stride const void *addr void glVariantbvEXT GLuint id const GLbyte *addr void glVariantdvEXT GLuint id const GLdouble *addr void glVariantfvEXT GLuint id const GLfloat *addr void glVariantivEXT GLuint id const GLint *addr void glVariantsvEXT GLuint id const GLshort *addr void glVariantubvEXT GLuint id const GLubyte *addr void glVariantuivEXT GLuint id const GLuint *addr void glVariantusvEXT GLuint id const GLushort *addr void glVertex2bOES GLbyte x GLbyte y void glVertex2bvOES const GLbyte *coords void glVertex2d GLdouble x GLdouble y void glVertex2dv const GLdouble *v void glVertex2f GLfloat x GLfloat y void glVertex2fv const GLfloat *v void glVertex2hNV GLhalfNV x GLhalfNV y void glVertex2hvNV const GLhalfNV *v void glVertex2i GLint x GLint y void glVertex2iv const GLint *v void glVertex2s GLshort x GLshort y void glVertex2sv const GLshort *v void glVertex2xOES GLfixed x void glVertex2xvOES const GLfixed *coords void glVertex3bOES GLbyte x GLbyte y GLbyte z void glVertex3bvOES const GLbyte *coords void glVertex3d GLdouble x GLdouble y GLdouble z void glVertex3dv const GLdouble *v void glVertex3f GLfloat x GLfloat y GLfloat z void glVertex3fv const GLfloat *v void glVertex3hNV GLhalfNV x GLhalfNV y GLhalfNV z void glVertex3hvNV const GLhalfNV *v void glVertex3i GLint x GLint y GLint z void glVertex3iv const GLint *v void glVertex3s GLshort x GLshort y GLshort z void glVertex3sv const GLshort *v void glVertex3xOES GLfixed x GLfixed y void glVertex3xvOES const GLfixed *coords void glVertex4bOES GLbyte x GLbyte y GLbyte z GLbyte w void glVertex4bvOES const GLbyte *coords void glVertex4d GLdouble x GLdouble y GLdouble z GLdouble w void glVertex4dv const GLdouble *v void glVertex4f GLfloat x GLfloat y GLfloat z GLfloat w void glVertex4fv const GLfloat *v void glVertex4hNV GLhalfNV x GLhalfNV y GLhalfNV z GLhalfNV w void glVertex4hvNV const GLhalfNV *v void glVertex4i GLint x GLint y GLint z GLint w void glVertex4iv const GLint *v void glVertex4s GLshort x GLshort y GLshort z GLshort w void glVertex4sv const GLshort *v void glVertex4xOES GLfixed x GLfixed y GLfixed z void glVertex4xvOES const GLfixed *coords void glVertexArrayAttribBinding GLuint vaobj GLuint attribindex GLuint bindingindex void glVertexArrayAttribFormat GLuint vaobj GLuint attribindex GLint size GLenum type GLboolean normalized GLuint relativeoffset void glVertexArrayAttribIFormat GLuint vaobj GLuint attribindex GLint size GLenum type GLuint relativeoffset void glVertexArrayAttribLFormat GLuint vaobj GLuint attribindex GLint size GLenum type GLuint relativeoffset void glVertexArrayBindVertexBufferEXT GLuint vaobj GLuint bindingindex GLuint buffer GLintptr offset GLsizei stride void glVertexArrayBindingDivisor GLuint vaobj GLuint bindingindex GLuint divisor void glVertexArrayColorOffsetEXT GLuint vaobj GLuint buffer GLint size GLenum type GLsizei stride GLintptr offset void glVertexArrayEdgeFlagOffsetEXT GLuint vaobj GLuint buffer GLsizei stride GLintptr offset void glVertexArrayElementBuffer GLuint vaobj GLuint buffer void glVertexArrayFogCoordOffsetEXT GLuint vaobj GLuint buffer GLenum type GLsizei stride GLintptr offset void glVertexArrayIndexOffsetEXT GLuint vaobj GLuint buffer GLenum type GLsizei stride GLintptr offset void glVertexArrayMultiTexCoordOffsetEXT GLuint vaobj GLuint buffer GLenum texunit GLint size GLenum type GLsizei stride GLintptr offset void glVertexArrayNormalOffsetEXT GLuint vaobj GLuint buffer GLenum type GLsizei stride GLintptr offset void glVertexArrayParameteriAPPLE GLenum pname GLint param void glVertexArrayRangeAPPLE GLsizei length void *pointer void glVertexArrayRangeNV GLsizei length const void *pointer void glVertexArraySecondaryColorOffsetEXT GLuint vaobj GLuint buffer GLint size GLenum type GLsizei stride GLintptr offset void glVertexArrayTexCoordOffsetEXT GLuint vaobj GLuint buffer GLint size GLenum type GLsizei stride GLintptr offset void glVertexArrayVertexAttribBindingEXT GLuint vaobj GLuint attribindex GLuint bindingindex void glVertexArrayVertexAttribDivisorEXT GLuint vaobj GLuint index GLuint divisor void glVertexArrayVertexAttribFormatEXT GLuint vaobj GLuint attribindex GLint size GLenum type GLboolean normalized GLuint relativeoffset void glVertexArrayVertexAttribIFormatEXT GLuint vaobj GLuint attribindex GLint size GLenum type GLuint relativeoffset void glVertexArrayVertexAttribIOffsetEXT GLuint vaobj GLuint buffer GLuint index GLint size GLenum type GLsizei stride GLintptr offset void glVertexArrayVertexAttribLFormatEXT GLuint vaobj GLuint attribindex GLint size GLenum type GLuint relativeoffset void glVertexArrayVertexAttribLOffsetEXT GLuint vaobj GLuint buffer GLuint index GLint size GLenum type GLsizei stride GLintptr offset void glVertexArrayVertexAttribOffsetEXT GLuint vaobj GLuint buffer GLuint index GLint size GLenum type GLboolean normalized GLsizei stride GLintptr offset void glVertexArrayVertexBindingDivisorEXT GLuint vaobj GLuint bindingindex GLuint divisor void glVertexArrayVertexBuffer GLuint vaobj GLuint bindingindex GLuint buffer GLintptr offset GLsizei stride void glVertexArrayVertexBuffers GLuint vaobj GLuint first GLsizei count const GLuint *buffers const GLintptr *offsets const GLsizei *strides void glVertexArrayVertexOffsetEXT GLuint vaobj GLuint buffer GLint size GLenum type GLsizei stride GLintptr offset void glVertexAttrib1d GLuint index GLdouble x void glVertexAttrib1dARB GLuint index GLdouble x void glVertexAttrib1dNV GLuint index GLdouble x void glVertexAttrib1dv GLuint index const GLdouble *v void glVertexAttrib1dvARB GLuint index const GLdouble *v void glVertexAttrib1dvNV GLuint index const GLdouble *v void glVertexAttrib1f GLuint index GLfloat x void glVertexAttrib1fARB GLuint index GLfloat x void glVertexAttrib1fNV GLuint index GLfloat x void glVertexAttrib1fv GLuint index const GLfloat *v void glVertexAttrib1fvARB GLuint index const GLfloat *v void glVertexAttrib1fvNV GLuint index const GLfloat *v void glVertexAttrib1hNV GLuint index GLhalfNV x void glVertexAttrib1hvNV GLuint index const GLhalfNV *v void glVertexAttrib1s GLuint index GLshort x void glVertexAttrib1sARB GLuint index GLshort x void glVertexAttrib1sNV GLuint index GLshort x void glVertexAttrib1sv GLuint index const GLshort *v void glVertexAttrib1svARB GLuint index const GLshort *v void glVertexAttrib1svNV GLuint index const GLshort *v void glVertexAttrib2d GLuint index GLdouble x GLdouble y void glVertexAttrib2dARB GLuint index GLdouble x GLdouble y void glVertexAttrib2dNV GLuint index GLdouble x GLdouble y void glVertexAttrib2dv GLuint index const GLdouble *v void glVertexAttrib2dvARB GLuint index const GLdouble *v void glVertexAttrib2dvNV GLuint index const GLdouble *v void glVertexAttrib2f GLuint index GLfloat x GLfloat y void glVertexAttrib2fARB GLuint index GLfloat x GLfloat y void glVertexAttrib2fNV GLuint index GLfloat x GLfloat y void glVertexAttrib2fv GLuint index const GLfloat *v void glVertexAttrib2fvARB GLuint index const GLfloat *v void glVertexAttrib2fvNV GLuint index const GLfloat *v void glVertexAttrib2hNV GLuint index GLhalfNV x GLhalfNV y void glVertexAttrib2hvNV GLuint index const GLhalfNV *v void glVertexAttrib2s GLuint index GLshort x GLshort y void glVertexAttrib2sARB GLuint index GLshort x GLshort y void glVertexAttrib2sNV GLuint index GLshort x GLshort y void glVertexAttrib2sv GLuint index const GLshort *v void glVertexAttrib2svARB GLuint index const GLshort *v void glVertexAttrib2svNV GLuint index const GLshort *v void glVertexAttrib3d GLuint index GLdouble x GLdouble y GLdouble z void glVertexAttrib3dARB GLuint index GLdouble x GLdouble y GLdouble z void glVertexAttrib3dNV GLuint index GLdouble x GLdouble y GLdouble z void glVertexAttrib3dv GLuint index const GLdouble *v void glVertexAttrib3dvARB GLuint index const GLdouble *v void glVertexAttrib3dvNV GLuint index const GLdouble *v void glVertexAttrib3f GLuint index GLfloat x GLfloat y GLfloat z void glVertexAttrib3fARB GLuint index GLfloat x GLfloat y GLfloat z void glVertexAttrib3fNV GLuint index GLfloat x GLfloat y GLfloat z void glVertexAttrib3fv GLuint index const GLfloat *v void glVertexAttrib3fvARB GLuint index const GLfloat *v void glVertexAttrib3fvNV GLuint index const GLfloat *v void glVertexAttrib3hNV GLuint index GLhalfNV x GLhalfNV y GLhalfNV z void glVertexAttrib3hvNV GLuint index const GLhalfNV *v void glVertexAttrib3s GLuint index GLshort x GLshort y GLshort z void glVertexAttrib3sARB GLuint index GLshort x GLshort y GLshort z void glVertexAttrib3sNV GLuint index GLshort x GLshort y GLshort z void glVertexAttrib3sv GLuint index const GLshort *v void glVertexAttrib3svARB GLuint index const GLshort *v void glVertexAttrib3svNV GLuint index const GLshort *v void glVertexAttrib4Nbv GLuint index const GLbyte *v void glVertexAttrib4NbvARB GLuint index const GLbyte *v void glVertexAttrib4Niv GLuint index const GLint *v void glVertexAttrib4NivARB GLuint index const GLint *v void glVertexAttrib4Nsv GLuint index const GLshort *v void glVertexAttrib4NsvARB GLuint index const GLshort *v void glVertexAttrib4Nub GLuint index GLubyte x GLubyte y GLubyte z GLubyte w void glVertexAttrib4NubARB GLuint index GLubyte x GLubyte y GLubyte z GLubyte w void glVertexAttrib4Nubv GLuint index const GLubyte *v void glVertexAttrib4NubvARB GLuint index const GLubyte *v void glVertexAttrib4Nuiv GLuint index const GLuint *v void glVertexAttrib4NuivARB GLuint index const GLuint *v void glVertexAttrib4Nusv GLuint index const GLushort *v void glVertexAttrib4NusvARB GLuint index const GLushort *v void glVertexAttrib4bv GLuint index const GLbyte *v void glVertexAttrib4bvARB GLuint index const GLbyte *v void glVertexAttrib4d GLuint index GLdouble x GLdouble y GLdouble z GLdouble w void glVertexAttrib4dARB GLuint index GLdouble x GLdouble y GLdouble z GLdouble w void glVertexAttrib4dNV GLuint index GLdouble x GLdouble y GLdouble z GLdouble w void glVertexAttrib4dv GLuint index const GLdouble *v void glVertexAttrib4dvARB GLuint index const GLdouble *v void glVertexAttrib4dvNV GLuint index const GLdouble *v void glVertexAttrib4f GLuint index GLfloat x GLfloat y GLfloat z GLfloat w void glVertexAttrib4fARB GLuint index GLfloat x GLfloat y GLfloat z GLfloat w void glVertexAttrib4fNV GLuint index GLfloat x GLfloat y GLfloat z GLfloat w void glVertexAttrib4fv GLuint index const GLfloat *v void glVertexAttrib4fvARB GLuint index const GLfloat *v void glVertexAttrib4fvNV GLuint index const GLfloat *v void glVertexAttrib4hNV GLuint index GLhalfNV x GLhalfNV y GLhalfNV z GLhalfNV w void glVertexAttrib4hvNV GLuint index const GLhalfNV *v void glVertexAttrib4iv GLuint index const GLint *v void glVertexAttrib4ivARB GLuint index const GLint *v void glVertexAttrib4s GLuint index GLshort x GLshort y GLshort z GLshort w void glVertexAttrib4sARB GLuint index GLshort x GLshort y GLshort z GLshort w void glVertexAttrib4sNV GLuint index GLshort x GLshort y GLshort z GLshort w void glVertexAttrib4sv GLuint index const GLshort *v void glVertexAttrib4svARB GLuint index const GLshort *v void glVertexAttrib4svNV GLuint index const GLshort *v void glVertexAttrib4ubNV GLuint index GLubyte x GLubyte y GLubyte z GLubyte w void glVertexAttrib4ubv GLuint index const GLubyte *v void glVertexAttrib4ubvARB GLuint index const GLubyte *v void glVertexAttrib4ubvNV GLuint index const GLubyte *v void glVertexAttrib4uiv GLuint index const GLuint *v void glVertexAttrib4uivARB GLuint index const GLuint *v void glVertexAttrib4usv GLuint index const GLushort *v void glVertexAttrib4usvARB GLuint index const GLushort *v void glVertexAttribArrayObjectATI GLuint index GLint size GLenum type GLboolean normalized GLsizei stride GLuint buffer GLuint offset void glVertexAttribBinding GLuint attribindex GLuint bindingindex void glVertexAttribDivisor GLuint index GLuint divisor void glVertexAttribDivisorANGLE GLuint index GLuint divisor void glVertexAttribDivisorARB GLuint index GLuint divisor void glVertexAttribDivisorEXT GLuint index GLuint divisor void glVertexAttribDivisorNV GLuint index GLuint divisor void glVertexAttribFormat GLuint attribindex GLint size GLenum type GLboolean normalized GLuint relativeoffset void glVertexAttribFormatNV GLuint index GLint size GLenum type GLboolean normalized GLsizei stride void glVertexAttribI1i GLuint index GLint x void glVertexAttribI1iEXT GLuint index GLint x void glVertexAttribI1iv GLuint index const GLint *v void glVertexAttribI1ivEXT GLuint index const GLint *v void glVertexAttribI1ui GLuint index GLuint x void glVertexAttribI1uiEXT GLuint index GLuint x void glVertexAttribI1uiv GLuint index const GLuint *v void glVertexAttribI1uivEXT GLuint index const GLuint *v void glVertexAttribI2i GLuint index GLint x GLint y void glVertexAttribI2iEXT GLuint index GLint x GLint y void glVertexAttribI2iv GLuint index const GLint *v void glVertexAttribI2ivEXT GLuint index const GLint *v void glVertexAttribI2ui GLuint index GLuint x GLuint y void glVertexAttribI2uiEXT GLuint index GLuint x GLuint y void glVertexAttribI2uiv GLuint index const GLuint *v void glVertexAttribI2uivEXT GLuint index const GLuint *v void glVertexAttribI3i GLuint index GLint x GLint y GLint z void glVertexAttribI3iEXT GLuint index GLint x GLint y GLint z void glVertexAttribI3iv GLuint index const GLint *v void glVertexAttribI3ivEXT GLuint index const GLint *v void glVertexAttribI3ui GLuint index GLuint x GLuint y GLuint z void glVertexAttribI3uiEXT GLuint index GLuint x GLuint y GLuint z void glVertexAttribI3uiv GLuint index const GLuint *v void glVertexAttribI3uivEXT GLuint index const GLuint *v void glVertexAttribI4bv GLuint index const GLbyte *v void glVertexAttribI4bvEXT GLuint index const GLbyte *v void glVertexAttribI4i GLuint index GLint x GLint y GLint z GLint w void glVertexAttribI4iEXT GLuint index GLint x GLint y GLint z GLint w void glVertexAttribI4iv GLuint index const GLint *v void glVertexAttribI4ivEXT GLuint index const GLint *v void glVertexAttribI4sv GLuint index const GLshort *v void glVertexAttribI4svEXT GLuint index const GLshort *v void glVertexAttribI4ubv GLuint index const GLubyte *v void glVertexAttribI4ubvEXT GLuint index const GLubyte *v void glVertexAttribI4ui GLuint index GLuint x GLuint y GLuint z GLuint w void glVertexAttribI4uiEXT GLuint index GLuint x GLuint y GLuint z GLuint w void glVertexAttribI4uiv GLuint index const GLuint *v void glVertexAttribI4uivEXT GLuint index const GLuint *v void glVertexAttribI4usv GLuint index const GLushort *v void glVertexAttribI4usvEXT GLuint index const GLushort *v void glVertexAttribIFormat GLuint attribindex GLint size GLenum type GLuint relativeoffset void glVertexAttribIFormatNV GLuint index GLint size GLenum type GLsizei stride void glVertexAttribIPointer GLuint index GLint size GLenum type GLsizei stride const void *pointer void glVertexAttribIPointerEXT GLuint index GLint size GLenum type GLsizei stride const void *pointer void glVertexAttribL1d GLuint index GLdouble x void glVertexAttribL1dEXT GLuint index GLdouble x void glVertexAttribL1dv GLuint index const GLdouble *v void glVertexAttribL1dvEXT GLuint index const GLdouble *v void glVertexAttribL1i64NV GLuint index GLint64EXT x void glVertexAttribL1i64vNV GLuint index const GLint64EXT *v void glVertexAttribL1ui64ARB GLuint index GLuint64EXT x void glVertexAttribL1ui64NV GLuint index GLuint64EXT x void glVertexAttribL1ui64vARB GLuint index const GLuint64EXT *v void glVertexAttribL1ui64vNV GLuint index const GLuint64EXT *v void glVertexAttribL2d GLuint index GLdouble x GLdouble y void glVertexAttribL2dEXT GLuint index GLdouble x GLdouble y void glVertexAttribL2dv GLuint index const GLdouble *v void glVertexAttribL2dvEXT GLuint index const GLdouble *v void glVertexAttribL2i64NV GLuint index GLint64EXT x GLint64EXT y void glVertexAttribL2i64vNV GLuint index const GLint64EXT *v void glVertexAttribL2ui64NV GLuint index GLuint64EXT x GLuint64EXT y void glVertexAttribL2ui64vNV GLuint index const GLuint64EXT *v void glVertexAttribL3d GLuint index GLdouble x GLdouble y GLdouble z void glVertexAttribL3dEXT GLuint index GLdouble x GLdouble y GLdouble z void glVertexAttribL3dv GLuint index const GLdouble *v void glVertexAttribL3dvEXT GLuint index const GLdouble *v void glVertexAttribL3i64NV GLuint index GLint64EXT x GLint64EXT y GLint64EXT z void glVertexAttribL3i64vNV GLuint index const GLint64EXT *v void glVertexAttribL3ui64NV GLuint index GLuint64EXT x GLuint64EXT y GLuint64EXT z void glVertexAttribL3ui64vNV GLuint index const GLuint64EXT *v void glVertexAttribL4d GLuint index GLdouble x GLdouble y GLdouble z GLdouble w void glVertexAttribL4dEXT GLuint index GLdouble x GLdouble y GLdouble z GLdouble w void glVertexAttribL4dv GLuint index const GLdouble *v void glVertexAttribL4dvEXT GLuint index const GLdouble *v void glVertexAttribL4i64NV GLuint index GLint64EXT x GLint64EXT y GLint64EXT z GLint64EXT w void glVertexAttribL4i64vNV GLuint index const GLint64EXT *v void glVertexAttribL4ui64NV GLuint index GLuint64EXT x GLuint64EXT y GLuint64EXT z GLuint64EXT w void glVertexAttribL4ui64vNV GLuint index const GLuint64EXT *v void glVertexAttribLFormat GLuint attribindex GLint size GLenum type GLuint relativeoffset void glVertexAttribLFormatNV GLuint index GLint size GLenum type GLsizei stride void glVertexAttribLPointer GLuint index GLint size GLenum type GLsizei stride const void *pointer void glVertexAttribLPointerEXT GLuint index GLint size GLenum type GLsizei stride const void *pointer void glVertexAttribP1ui GLuint index GLenum type GLboolean normalized GLuint value void glVertexAttribP1uiv GLuint index GLenum type GLboolean normalized const GLuint *value void glVertexAttribP2ui GLuint index GLenum type GLboolean normalized GLuint value void glVertexAttribP2uiv GLuint index GLenum type GLboolean normalized const GLuint *value void glVertexAttribP3ui GLuint index GLenum type GLboolean normalized GLuint value void glVertexAttribP3uiv GLuint index GLenum type GLboolean normalized const GLuint *value void glVertexAttribP4ui GLuint index GLenum type GLboolean normalized GLuint value void glVertexAttribP4uiv GLuint index GLenum type GLboolean normalized const GLuint *value void glVertexAttribParameteriAMD GLuint index GLenum pname GLint param void glVertexAttribPointer GLuint index GLint size GLenum type GLboolean normalized GLsizei stride const void *pointer void glVertexAttribPointerARB GLuint index GLint size GLenum type GLboolean normalized GLsizei stride const void *pointer void glVertexAttribPointerNV GLuint index GLint fsize GLenum type GLsizei stride const void *pointer void glVertexAttribs1dvNV GLuint index GLsizei count const GLdouble *v void glVertexAttribs1fvNV GLuint index GLsizei count const GLfloat *v void glVertexAttribs1hvNV GLuint index GLsizei n const GLhalfNV *v void glVertexAttribs1svNV GLuint index GLsizei count const GLshort *v void glVertexAttribs2dvNV GLuint index GLsizei count const GLdouble *v void glVertexAttribs2fvNV GLuint index GLsizei count const GLfloat *v void glVertexAttribs2hvNV GLuint index GLsizei n const GLhalfNV *v void glVertexAttribs2svNV GLuint index GLsizei count const GLshort *v void glVertexAttribs3dvNV GLuint index GLsizei count const GLdouble *v void glVertexAttribs3fvNV GLuint index GLsizei count const GLfloat *v void glVertexAttribs3hvNV GLuint index GLsizei n const GLhalfNV *v void glVertexAttribs3svNV GLuint index GLsizei count const GLshort *v void glVertexAttribs4dvNV GLuint index GLsizei count const GLdouble *v void glVertexAttribs4fvNV GLuint index GLsizei count const GLfloat *v void glVertexAttribs4hvNV GLuint index GLsizei n const GLhalfNV *v void glVertexAttribs4svNV GLuint index GLsizei count const GLshort *v void glVertexAttribs4ubvNV GLuint index GLsizei count const GLubyte *v void glVertexBindingDivisor GLuint bindingindex GLuint divisor void glVertexBlendARB GLint count void glVertexBlendEnvfATI GLenum pname GLfloat param void glVertexBlendEnviATI GLenum pname GLint param void glVertexFormatNV GLint size GLenum type GLsizei stride void glVertexP2ui GLenum type GLuint value void glVertexP2uiv GLenum type const GLuint *value void glVertexP3ui GLenum type GLuint value void glVertexP3uiv GLenum type const GLuint *value void glVertexP4ui GLenum type GLuint value void glVertexP4uiv GLenum type const GLuint *value void glVertexPointer GLint size GLenum type GLsizei stride const void *pointer void glVertexPointerEXT GLint size GLenum type GLsizei stride GLsizei count const void *pointer void glVertexPointerListIBM GLint size GLenum type GLint stride const void **pointer GLint ptrstride void glVertexPointervINTEL GLint size GLenum type const void **pointer void glVertexStream1dATI GLenum stream GLdouble x void glVertexStream1dvATI GLenum stream const GLdouble *coords void glVertexStream1fATI GLenum stream GLfloat x void glVertexStream1fvATI GLenum stream const GLfloat *coords void glVertexStream1iATI GLenum stream GLint x void glVertexStream1ivATI GLenum stream const GLint *coords void glVertexStream1sATI GLenum stream GLshort x void glVertexStream1svATI GLenum stream const GLshort *coords void glVertexStream2dATI GLenum stream GLdouble x GLdouble y void glVertexStream2dvATI GLenum stream const GLdouble *coords void glVertexStream2fATI GLenum stream GLfloat x GLfloat y void glVertexStream2fvATI GLenum stream const GLfloat *coords void glVertexStream2iATI GLenum stream GLint x GLint y void glVertexStream2ivATI GLenum stream const GLint *coords void glVertexStream2sATI GLenum stream GLshort x GLshort y void glVertexStream2svATI GLenum stream const GLshort *coords void glVertexStream3dATI GLenum stream GLdouble x GLdouble y GLdouble z void glVertexStream3dvATI GLenum stream const GLdouble *coords void glVertexStream3fATI GLenum stream GLfloat x GLfloat y GLfloat z void glVertexStream3fvATI GLenum stream const GLfloat *coords void glVertexStream3iATI GLenum stream GLint x GLint y GLint z void glVertexStream3ivATI GLenum stream const GLint *coords void glVertexStream3sATI GLenum stream GLshort x GLshort y GLshort z void glVertexStream3svATI GLenum stream const GLshort *coords void glVertexStream4dATI GLenum stream GLdouble x GLdouble y GLdouble z GLdouble w void glVertexStream4dvATI GLenum stream const GLdouble *coords void glVertexStream4fATI GLenum stream GLfloat x GLfloat y GLfloat z GLfloat w void glVertexStream4fvATI GLenum stream const GLfloat *coords void glVertexStream4iATI GLenum stream GLint x GLint y GLint z GLint w void glVertexStream4ivATI GLenum stream const GLint *coords void glVertexStream4sATI GLenum stream GLshort x GLshort y GLshort z GLshort w void glVertexStream4svATI GLenum stream const GLshort *coords void glVertexWeightPointerEXT GLint size GLenum type GLsizei stride const void *pointer void glVertexWeightfEXT GLfloat weight void glVertexWeightfvEXT const GLfloat *weight void glVertexWeighthNV GLhalfNV weight void glVertexWeighthvNV const GLhalfNV *weight GLenum glVideoCaptureNV GLuint video_capture_slot GLuint *sequence_num GLuint64EXT *capture_time void glVideoCaptureStreamParameterdvNV GLuint video_capture_slot GLuint stream GLenum pname const GLdouble *params void glVideoCaptureStreamParameterfvNV GLuint video_capture_slot GLuint stream GLenum pname const GLfloat *params void glVideoCaptureStreamParameterivNV GLuint video_capture_slot GLuint stream GLenum pname const GLint *params void glViewport GLint x GLint y GLsizei width GLsizei height void glViewportArrayv GLuint first GLsizei count const GLfloat *v void glViewportArrayvNV GLuint first GLsizei count const GLfloat *v void glViewportArrayvOES GLuint first GLsizei count const GLfloat *v void glViewportIndexedf GLuint index GLfloat x GLfloat y GLfloat w GLfloat h void glViewportIndexedfOES GLuint index GLfloat x GLfloat y GLfloat w GLfloat h void glViewportIndexedfNV GLuint index GLfloat x GLfloat y GLfloat w GLfloat h void glViewportIndexedfv GLuint index const GLfloat *v void glViewportIndexedfvOES GLuint index const GLfloat *v void glViewportIndexedfvNV GLuint index const GLfloat *v void glViewportPositionWScaleNV GLuint index GLfloat xcoeff GLfloat ycoeff void glViewportSwizzleNV GLuint index GLenum swizzlex GLenum swizzley GLenum swizzlez GLenum swizzlew void glWaitSemaphoreEXT GLuint semaphore GLuint numBufferBarriers const GLuint *buffers GLuint numTextureBarriers const GLuint *textures const GLenum *srcLayouts void glWaitSemaphoreui64NVX GLuint waitGpu GLsizei fenceObjectCount const GLuint *semaphoreArray const GLuint64 *fenceValueArray void glWaitSync GLsync sync GLbitfield flags GLuint64 timeout void glWaitSyncAPPLE GLsync sync GLbitfield flags GLuint64 timeout void glWeightPathsNV GLuint resultPath GLsizei numPaths const GLuint *paths const GLfloat *weights void glWeightPointerARB GLint size GLenum type GLsizei stride const void *pointer void glWeightPointerOES GLint size GLenum type GLsizei stride const void *pointer void glWeightbvARB GLint size const GLbyte *weights void glWeightdvARB GLint size const GLdouble *weights void glWeightfvARB GLint size const GLfloat *weights void glWeightivARB GLint size const GLint *weights void glWeightsvARB GLint size const GLshort *weights void glWeightubvARB GLint size const GLubyte *weights void glWeightuivARB GLint size const GLuint *weights void glWeightusvARB GLint size const GLushort *weights void glWindowPos2d GLdouble x GLdouble y void glWindowPos2dARB GLdouble x GLdouble y void glWindowPos2dMESA GLdouble x GLdouble y void glWindowPos2dv const GLdouble *v void glWindowPos2dvARB const GLdouble *v void glWindowPos2dvMESA const GLdouble *v void glWindowPos2f GLfloat x GLfloat y void glWindowPos2fARB GLfloat x GLfloat y void glWindowPos2fMESA GLfloat x GLfloat y void glWindowPos2fv const GLfloat *v void glWindowPos2fvARB const GLfloat *v void glWindowPos2fvMESA const GLfloat *v void glWindowPos2i GLint x GLint y void glWindowPos2iARB GLint x GLint y void glWindowPos2iMESA GLint x GLint y void glWindowPos2iv const GLint *v void glWindowPos2ivARB const GLint *v void glWindowPos2ivMESA const GLint *v void glWindowPos2s GLshort x GLshort y void glWindowPos2sARB GLshort x GLshort y void glWindowPos2sMESA GLshort x GLshort y void glWindowPos2sv const GLshort *v void glWindowPos2svARB const GLshort *v void glWindowPos2svMESA const GLshort *v void glWindowPos3d GLdouble x GLdouble y GLdouble z void glWindowPos3dARB GLdouble x GLdouble y GLdouble z void glWindowPos3dMESA GLdouble x GLdouble y GLdouble z void glWindowPos3dv const GLdouble *v void glWindowPos3dvARB const GLdouble *v void glWindowPos3dvMESA const GLdouble *v void glWindowPos3f GLfloat x GLfloat y GLfloat z void glWindowPos3fARB GLfloat x GLfloat y GLfloat z void glWindowPos3fMESA GLfloat x GLfloat y GLfloat z void glWindowPos3fv const GLfloat *v void glWindowPos3fvARB const GLfloat *v void glWindowPos3fvMESA const GLfloat *v void glWindowPos3i GLint x GLint y GLint z void glWindowPos3iARB GLint x GLint y GLint z void glWindowPos3iMESA GLint x GLint y GLint z void glWindowPos3iv const GLint *v void glWindowPos3ivARB const GLint *v void glWindowPos3ivMESA const GLint *v void glWindowPos3s GLshort x GLshort y GLshort z void glWindowPos3sARB GLshort x GLshort y GLshort z void glWindowPos3sMESA GLshort x GLshort y GLshort z void glWindowPos3sv const GLshort *v void glWindowPos3svARB const GLshort *v void glWindowPos3svMESA const GLshort *v void glWindowPos4dMESA GLdouble x GLdouble y GLdouble z GLdouble w void glWindowPos4dvMESA const GLdouble *v void glWindowPos4fMESA GLfloat x GLfloat y GLfloat z GLfloat w void glWindowPos4fvMESA const GLfloat *v void glWindowPos4iMESA GLint x GLint y GLint z GLint w void glWindowPos4ivMESA const GLint *v void glWindowPos4sMESA GLshort x GLshort y GLshort z GLshort w void glWindowPos4svMESA const GLshort *v void glWindowRectanglesEXT GLenum mode GLsizei count const GLint *box void glWriteMaskEXT GLuint res GLuint in GLenum outX GLenum outY GLenum outZ GLenum outW void glDrawVkImageNV GLuint64 vkImage GLuint sampler GLfloat x0 GLfloat y0 GLfloat x1 GLfloat y1 GLfloat z GLfloat s0 GLfloat t0 GLfloat s1 GLfloat t1 GLVULKANPROCNV glGetVkProcAddrNV const GLchar *name void glWaitVkSemaphoreNV GLuint64 vkSemaphore void glSignalVkSemaphoreNV GLuint64 vkSemaphore void glSignalVkFenceNV GLuint64 vkFence void glFramebufferParameteriMESA GLenum target GLenum pname GLint param void glGetFramebufferParameterivMESA GLenum target GLenum pname GLint *params libepoxy-1.5.10/registry/glx.xml000066400000000000000000003376731420344275400166450ustar00rootroot00000000000000 Copyright (c) 2013-2018 The Khronos Group Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ------------------------------------------------------------------------ This file, glx.xml, is the GLX API Registry. The canonical version of the registry, together with documentation, schema, and Python generator scripts used to generate C header files for GLX, can always be found in the Khronos Registry at https://github.com/KhronosGroup/OpenGL-Registry = 199901L #include #elif defined(__sun__) || defined(__digital__) #include #if defined(__STDC__) #if defined(__arch64__) || defined(_LP64) typedef long int int64_t; typedef unsigned long int uint64_t; #else typedef long long int int64_t; typedef unsigned long long int uint64_t; #endif /* __arch64__ */ #endif /* __STDC__ */ #elif defined( __VMS ) || defined(__sgi) #include #elif defined(__SCO__) || defined(__USLC__) #include #elif defined(__UNIXOS2__) || defined(__SOL64__) typedef long int int32_t; typedef long long int int64_t; typedef unsigned long long int uint64_t; #elif defined(_WIN32) && defined(__GNUC__) #include #elif defined(_WIN32) typedef __int32 int32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #else /* Fallback if nothing above works */ #include #endif #endif]]> typedef XID GLXFBConfigID; typedef struct __GLXFBConfigRec *GLXFBConfig; typedef XID GLXContextID; typedef struct __GLXcontextRec *GLXContext; typedef XID GLXPixmap; typedef XID GLXDrawable; typedef XID GLXWindow; typedef XID GLXPbuffer; typedef void ( *__GLXextFuncPtr)(void); typedef XID GLXVideoCaptureDeviceNV; typedef unsigned int GLXVideoDeviceNV; typedef XID GLXVideoSourceSGIX; typedef XID GLXFBConfigIDSGIX; typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; typedef XID GLXPbufferSGIX; typedef struct { int event_type; /* GLX_DAMAGED or GLX_SAVED */ int draw_type; /* GLX_WINDOW or GLX_PBUFFER */ unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came for SendEvent request */ Display *display; /* display the event was read from */ GLXDrawable drawable; /* XID of Drawable */ unsigned int buffer_mask; /* mask indicating which buffers are affected */ unsigned int aux_buffer; /* which aux buffer was affected */ int x, y; int width, height; int count; /* if nonzero, at least this many more */ } GLXPbufferClobberEvent; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came from a SendEvent request */ Display *display; /* Display the event was read from */ GLXDrawable drawable; /* drawable on which event was requested in event mask */ int event_type; int64_t ust; int64_t msc; int64_t sbc; } GLXBufferSwapComplete; typedef union __GLXEvent { GLXPbufferClobberEvent glxpbufferclobber; GLXBufferSwapComplete glxbufferswapcomplete; long pad[24]; } GLXEvent; typedef struct { int type; unsigned long serial; Bool send_event; Display *display; int extension; int evtype; GLXDrawable window; Bool stereo_tree; } GLXStereoNotifyEventEXT; typedef struct { int type; unsigned long serial; /* # of last request processed by server */ Bool send_event; /* true if this came for SendEvent request */ Display *display; /* display the event was read from */ GLXDrawable drawable; /* i.d. of Drawable */ int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */ int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */ unsigned int mask; /* mask indicating which buffers are affected*/ int x, y; int width, height; int count; /* if nonzero, at least this many more */ } GLXBufferClobberEventSGIX; typedef struct { char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ int networkId; } GLXHyperpipeNetworkSGIX; typedef struct { char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ int channel; unsigned int participationType; int timeSlice; } GLXHyperpipeConfigSGIX; typedef struct { char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ int srcXOrigin, srcYOrigin, srcWidth, srcHeight; int destXOrigin, destYOrigin, destWidth, destHeight; } GLXPipeRect; typedef struct { char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ int XOrigin, YOrigin, maxHeight, maxWidth; } GLXPipeRectLimits; Bool glXAssociateDMPbufferSGIX Display *dpy GLXPbufferSGIX pbuffer DMparams *params DMbuffer dmbuffer int glXBindChannelToWindowSGIX Display *display int screen int channel Window window int glXBindHyperpipeSGIX Display *dpy int hpId Bool glXBindSwapBarrierNV Display *dpy GLuint group GLuint barrier void glXBindSwapBarrierSGIX Display *dpy GLXDrawable drawable int barrier void glXBindTexImageEXT Display *dpy GLXDrawable drawable int buffer const int *attrib_list int glXBindVideoCaptureDeviceNV Display *dpy unsigned int video_capture_slot GLXVideoCaptureDeviceNV device int glXBindVideoDeviceNV Display *dpy unsigned int video_slot unsigned int video_device const int *attrib_list int glXBindVideoImageNV Display *dpy GLXVideoDeviceNV VideoDevice GLXPbuffer pbuf int iVideoBuffer void glXBlitContextFramebufferAMD GLXContext dstCtx GLint srcX0 GLint srcY0 GLint srcX1 GLint srcY1 GLint dstX0 GLint dstY0 GLint dstX1 GLint dstY1 GLbitfield mask GLenum filter int glXChannelRectSGIX Display *display int screen int channel int x int y int w int h int glXChannelRectSyncSGIX Display *display int screen int channel GLenum synctype GLXFBConfig *glXChooseFBConfig Display *dpy int screen const int *attrib_list int *nelements GLXFBConfigSGIX *glXChooseFBConfigSGIX Display *dpy int screen int *attrib_list int *nelements XVisualInfo *glXChooseVisual Display *dpy int screen int *attribList void glXCopyBufferSubDataNV Display *dpy GLXContext readCtx GLXContext writeCtx GLenum readTarget GLenum writeTarget GLintptr readOffset GLintptr writeOffset GLsizeiptr size void glXNamedCopyBufferSubDataNV Display *dpy GLXContext readCtx GLXContext writeCtx GLuint readBuffer GLuint writeBuffer GLintptr readOffset GLintptr writeOffset GLsizeiptr size void glXCopyContext Display *dpy GLXContext src GLXContext dst unsigned long mask void glXCopyImageSubDataNV Display *dpy GLXContext srcCtx GLuint srcName GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLXContext dstCtx GLuint dstName GLenum dstTarget GLint dstLevel GLint dstX GLint dstY GLint dstZ GLsizei width GLsizei height GLsizei depth void glXCopySubBufferMESA Display *dpy GLXDrawable drawable int x int y int width int height GLXContext glXCreateAssociatedContextAMD unsigned int id GLXContext share_list GLXContext glXCreateAssociatedContextAttribsAMD unsigned int id GLXContext share_context const int *attribList GLXContext glXCreateContextAttribsARB Display *dpy GLXFBConfig config GLXContext share_context Bool direct const int *attrib_list GLXContext glXCreateContext Display *dpy XVisualInfo *vis GLXContext shareList Bool direct GLXContext glXCreateContextWithConfigSGIX Display *dpy GLXFBConfigSGIX config int render_type GLXContext share_list Bool direct GLXPbufferSGIX glXCreateGLXPbufferSGIX Display *dpy GLXFBConfigSGIX config unsigned int width unsigned int height int *attrib_list GLXPixmap glXCreateGLXPixmap Display *dpy XVisualInfo *visual Pixmap pixmap GLXPixmap glXCreateGLXPixmapMESA Display *dpy XVisualInfo *visual Pixmap pixmap Colormap cmap GLXPixmap glXCreateGLXPixmapWithConfigSGIX Display *dpy GLXFBConfigSGIX config Pixmap pixmap GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX Display *display int screen VLServer server VLPath path int nodeClass VLNode drainNode GLXContext glXCreateNewContext Display *dpy GLXFBConfig config int render_type GLXContext share_list Bool direct GLXPbuffer glXCreatePbuffer Display *dpy GLXFBConfig config const int *attrib_list GLXPixmap glXCreatePixmap Display *dpy GLXFBConfig config Pixmap pixmap const int *attrib_list GLXWindow glXCreateWindow Display *dpy GLXFBConfig config Window win const int *attrib_list void glXCushionSGI Display *dpy Window window float cushion Bool glXDelayBeforeSwapNV Display *dpy GLXDrawable drawable GLfloat seconds Bool glXDeleteAssociatedContextAMD GLXContext ctx void glXDestroyContext Display *dpy GLXContext ctx void glXDestroyGLXPbufferSGIX Display *dpy GLXPbufferSGIX pbuf void glXDestroyGLXPixmap Display *dpy GLXPixmap pixmap void glXDestroyGLXVideoSourceSGIX Display *dpy GLXVideoSourceSGIX glxvideosource int glXDestroyHyperpipeConfigSGIX Display *dpy int hpId void glXDestroyPbuffer Display *dpy GLXPbuffer pbuf void glXDestroyPixmap Display *dpy GLXPixmap pixmap void glXDestroyWindow Display *dpy GLXWindow win GLXVideoCaptureDeviceNV *glXEnumerateVideoCaptureDevicesNV Display *dpy int screen int *nelements unsigned int *glXEnumerateVideoDevicesNV Display *dpy int screen int *nelements void glXFreeContextEXT Display *dpy GLXContext context unsigned int glXGetAGPOffsetMESA const void *pointer const char *glXGetClientString Display *dpy int name int glXGetConfig Display *dpy XVisualInfo *visual int attrib int *value unsigned int glXGetContextGPUIDAMD GLXContext ctx GLXContextID glXGetContextIDEXT const GLXContext context GLXContext glXGetCurrentAssociatedContextAMD GLXContext glXGetCurrentContext Display *glXGetCurrentDisplayEXT Display *glXGetCurrentDisplay GLXDrawable glXGetCurrentDrawable GLXDrawable glXGetCurrentReadDrawableSGI GLXDrawable glXGetCurrentReadDrawable int glXGetFBConfigAttrib Display *dpy GLXFBConfig config int attribute int *value int glXGetFBConfigAttribSGIX Display *dpy GLXFBConfigSGIX config int attribute int *value GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX Display *dpy XVisualInfo *vis GLXFBConfig *glXGetFBConfigs Display *dpy int screen int *nelements unsigned int glXGetGPUIDsAMD unsigned int maxCount unsigned int *ids int glXGetGPUInfoAMD unsigned int id int property GLenum dataType unsigned int size void *data Bool glXGetMscRateOML Display *dpy GLXDrawable drawable int32_t *numerator int32_t *denominator __GLXextFuncPtr glXGetProcAddressARB const GLubyte *procName __GLXextFuncPtr glXGetProcAddress const GLubyte *procName void glXGetSelectedEvent Display *dpy GLXDrawable draw unsigned long *event_mask void glXGetSelectedEventSGIX Display *dpy GLXDrawable drawable unsigned long *mask int glXGetSwapIntervalMESA Bool glXGetSyncValuesOML Display *dpy GLXDrawable drawable int64_t *ust int64_t *msc int64_t *sbc Status glXGetTransparentIndexSUN Display *dpy Window overlay Window underlay unsigned long *pTransparentIndex int glXGetVideoDeviceNV Display *dpy int screen int numVideoDevices GLXVideoDeviceNV *pVideoDevice int glXGetVideoInfoNV Display *dpy int screen GLXVideoDeviceNV VideoDevice unsigned long *pulCounterOutputPbuffer unsigned long *pulCounterOutputVideo int glXGetVideoSyncSGI unsigned int *count XVisualInfo *glXGetVisualFromFBConfig Display *dpy GLXFBConfig config XVisualInfo *glXGetVisualFromFBConfigSGIX Display *dpy GLXFBConfigSGIX config int glXHyperpipeAttribSGIX Display *dpy int timeSlice int attrib int size void *attribList int glXHyperpipeConfigSGIX Display *dpy int networkId int npipes GLXHyperpipeConfigSGIX *cfg int *hpId GLXContext glXImportContextEXT Display *dpy GLXContextID contextID Bool glXIsDirect Display *dpy GLXContext ctx Bool glXJoinSwapGroupNV Display *dpy GLXDrawable drawable GLuint group void glXJoinSwapGroupSGIX Display *dpy GLXDrawable drawable GLXDrawable member void glXLockVideoCaptureDeviceNV Display *dpy GLXVideoCaptureDeviceNV device Bool glXMakeAssociatedContextCurrentAMD GLXContext ctx Bool glXMakeContextCurrent Display *dpy GLXDrawable draw GLXDrawable read GLXContext ctx Bool glXMakeCurrent Display *dpy GLXDrawable drawable GLXContext ctx Bool glXMakeCurrentReadSGI Display *dpy GLXDrawable draw GLXDrawable read GLXContext ctx int glXQueryChannelDeltasSGIX Display *display int screen int channel int *x int *y int *w int *h int glXQueryChannelRectSGIX Display *display int screen int channel int *dx int *dy int *dw int *dh int glXQueryContext Display *dpy GLXContext ctx int attribute int *value int glXQueryContextInfoEXT Display *dpy GLXContext context int attribute int *value Bool glXQueryCurrentRendererIntegerMESA int attribute unsigned int *value const char *glXQueryCurrentRendererStringMESA int attribute void glXQueryDrawable Display *dpy GLXDrawable draw int attribute unsigned int *value Bool glXQueryExtension Display *dpy int *errorb int *event const char *glXQueryExtensionsString Display *dpy int screen Bool glXQueryFrameCountNV Display *dpy int screen GLuint *count void glXQueryGLXPbufferSGIX Display *dpy GLXPbufferSGIX pbuf int attribute unsigned int *value int glXQueryHyperpipeAttribSGIX Display *dpy int timeSlice int attrib int size void *returnAttribList int glXQueryHyperpipeBestAttribSGIX Display *dpy int timeSlice int attrib int size void *attribList void *returnAttribList GLXHyperpipeConfigSGIX *glXQueryHyperpipeConfigSGIX Display *dpy int hpId int *npipes GLXHyperpipeNetworkSGIX *glXQueryHyperpipeNetworkSGIX Display *dpy int *npipes Bool glXQueryMaxSwapBarriersSGIX Display *dpy int screen int *max Bool glXQueryMaxSwapGroupsNV Display *dpy int screen GLuint *maxGroups GLuint *maxBarriers Bool glXQueryRendererIntegerMESA Display *dpy int screen int renderer int attribute unsigned int *value const char *glXQueryRendererStringMESA Display *dpy int screen int renderer int attribute const char *glXQueryServerString Display *dpy int screen int name Bool glXQuerySwapGroupNV Display *dpy GLXDrawable drawable GLuint *group GLuint *barrier Bool glXQueryVersion Display *dpy int *maj int *min int glXQueryVideoCaptureDeviceNV Display *dpy GLXVideoCaptureDeviceNV device int attribute int *value Bool glXReleaseBuffersMESA Display *dpy GLXDrawable drawable void glXReleaseTexImageEXT Display *dpy GLXDrawable drawable int buffer void glXReleaseVideoCaptureDeviceNV Display *dpy GLXVideoCaptureDeviceNV device int glXReleaseVideoDeviceNV Display *dpy int screen GLXVideoDeviceNV VideoDevice int glXReleaseVideoImageNV Display *dpy GLXPbuffer pbuf Bool glXResetFrameCountNV Display *dpy int screen void glXSelectEvent Display *dpy GLXDrawable draw unsigned long event_mask void glXSelectEventSGIX Display *dpy GLXDrawable drawable unsigned long mask int glXSendPbufferToVideoNV Display *dpy GLXPbuffer pbuf int iBufferType unsigned long *pulCounterPbuffer GLboolean bBlock GLboolean glXSet3DfxModeMESA GLint mode void glXSwapBuffers Display *dpy GLXDrawable drawable int64_t glXSwapBuffersMscOML Display *dpy GLXDrawable drawable int64_t target_msc int64_t divisor int64_t remainder int glXSwapIntervalMESA unsigned int interval void glXSwapIntervalEXT Display *dpy GLXDrawable drawable int interval int glXSwapIntervalSGI int interval void glXUseXFont Font font int first int count int list Bool glXWaitForMscOML Display *dpy GLXDrawable drawable int64_t target_msc int64_t divisor int64_t remainder int64_t *ust int64_t *msc int64_t *sbc Bool glXWaitForSbcOML Display *dpy GLXDrawable drawable int64_t target_sbc int64_t *ust int64_t *msc int64_t *sbc void glXWaitGL int glXWaitVideoSyncSGI int divisor int remainder unsigned int *count void glXWaitX libepoxy-1.5.10/registry/wgl.xml000066400000000000000000003150511420344275400166260ustar00rootroot00000000000000 Copyright (c) 2013-2018 The Khronos Group Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ------------------------------------------------------------------------ This file, wgl.xml, is the WGL API Registry. The older ".spec" file format has been retired and will no longer be updated with new extensions and API versions. The canonical version of the registry, together with documentation, schema, and Python generator scripts used to generate C header files for WGL, can always be found in the Khronos Registry at https://github.com/KhronosGroup/OpenGL-Registry struct _GPU_DEVICE { DWORD cb; CHAR DeviceName[32]; CHAR DeviceString[128]; DWORD Flags; RECT rcVirtualScreen; }; DECLARE_HANDLE(HPBUFFERARB); DECLARE_HANDLE(HPBUFFEREXT); DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV); DECLARE_HANDLE(HPVIDEODEV); DECLARE_HANDLE(HPGPUNV); DECLARE_HANDLE(HGPUNV); DECLARE_HANDLE(HVIDEOINPUTDEVICENV); typedef struct _GPU_DEVICE GPU_DEVICE; typedef struct _GPU_DEVICE *PGPU_DEVICE; int ChoosePixelFormat HDC hDc const PIXELFORMATDESCRIPTOR *pPfd int DescribePixelFormat HDC hdc int ipfd UINT cjpfd const PIXELFORMATDESCRIPTOR *ppfd int GetPixelFormat HDC hdc BOOL SetPixelFormat HDC hdc int ipfd const PIXELFORMATDESCRIPTOR *ppfd BOOL SwapBuffers HDC hdc void *wglAllocateMemoryNV GLsizei size GLfloat readfreq GLfloat writefreq GLfloat priority BOOL wglAssociateImageBufferEventsI3D HDC hDC const HANDLE *pEvent const LPVOID *pAddress const DWORD *pSize UINT count BOOL wglBeginFrameTrackingI3D GLboolean wglBindDisplayColorTableEXT GLushort id BOOL wglBindSwapBarrierNV GLuint group GLuint barrier BOOL wglBindTexImageARB HPBUFFERARB hPbuffer int iBuffer BOOL wglBindVideoCaptureDeviceNV UINT uVideoSlot HVIDEOINPUTDEVICENV hDevice BOOL wglBindVideoDeviceNV HDC hDc unsigned int uVideoSlot HVIDEOOUTPUTDEVICENV hVideoDevice const int *piAttribList BOOL wglBindVideoImageNV HPVIDEODEV hVideoDevice HPBUFFERARB hPbuffer int iVideoBuffer VOID wglBlitContextFramebufferAMD HGLRC dstCtx GLint srcX0 GLint srcY0 GLint srcX1 GLint srcY1 GLint dstX0 GLint dstY0 GLint dstX1 GLint dstY1 GLbitfield mask GLenum filter BOOL wglChoosePixelFormatARB HDC hdc const int *piAttribIList const FLOAT *pfAttribFList UINT nMaxFormats int *piFormats UINT *nNumFormats BOOL wglChoosePixelFormatEXT HDC hdc const int *piAttribIList const FLOAT *pfAttribFList UINT nMaxFormats int *piFormats UINT *nNumFormats BOOL wglCopyContext HGLRC hglrcSrc HGLRC hglrcDst UINT mask BOOL wglCopyImageSubDataNV HGLRC hSrcRC GLuint srcName GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ HGLRC hDstRC GLuint dstName GLenum dstTarget GLint dstLevel GLint dstX GLint dstY GLint dstZ GLsizei width GLsizei height GLsizei depth HDC wglCreateAffinityDCNV const HGPUNV *phGpuList HGLRC wglCreateAssociatedContextAMD UINT id HGLRC wglCreateAssociatedContextAttribsAMD UINT id HGLRC hShareContext const int *attribList HANDLE wglCreateBufferRegionARB HDC hDC int iLayerPlane UINT uType HGLRC wglCreateContext HDC hDc HGLRC wglCreateContextAttribsARB HDC hDC HGLRC hShareContext const int *attribList GLboolean wglCreateDisplayColorTableEXT GLushort id LPVOID wglCreateImageBufferI3D HDC hDC DWORD dwSize UINT uFlags HGLRC wglCreateLayerContext HDC hDc int level HPBUFFERARB wglCreatePbufferARB HDC hDC int iPixelFormat int iWidth int iHeight const int *piAttribList HPBUFFEREXT wglCreatePbufferEXT HDC hDC int iPixelFormat int iWidth int iHeight const int *piAttribList BOOL wglDelayBeforeSwapNV HDC hDC GLfloat seconds BOOL wglDeleteAssociatedContextAMD HGLRC hglrc VOID wglDeleteBufferRegionARB HANDLE hRegion BOOL wglDeleteContext HGLRC oldContext BOOL wglDeleteDCNV HDC hdc BOOL wglDescribeLayerPlane HDC hDc int pixelFormat int layerPlane UINT nBytes const LAYERPLANEDESCRIPTOR *plpd VOID wglDestroyDisplayColorTableEXT GLushort id BOOL wglDestroyImageBufferI3D HDC hDC LPVOID pAddress BOOL wglDestroyPbufferARB HPBUFFERARB hPbuffer BOOL wglDestroyPbufferEXT HPBUFFEREXT hPbuffer BOOL wglDisableFrameLockI3D BOOL wglDisableGenlockI3D HDC hDC BOOL wglDXCloseDeviceNV HANDLE hDevice BOOL wglDXLockObjectsNV HANDLE hDevice GLint count HANDLE *hObjects BOOL wglDXObjectAccessNV HANDLE hObject GLenum access HANDLE wglDXOpenDeviceNV void *dxDevice HANDLE wglDXRegisterObjectNV HANDLE hDevice void *dxObject GLuint name GLenum type GLenum access BOOL wglDXSetResourceShareHandleNV void *dxObject HANDLE shareHandle BOOL wglDXUnlockObjectsNV HANDLE hDevice GLint count HANDLE *hObjects BOOL wglDXUnregisterObjectNV HANDLE hDevice HANDLE hObject BOOL wglEnableFrameLockI3D BOOL wglEnableGenlockI3D HDC hDC BOOL wglEndFrameTrackingI3D UINT wglEnumerateVideoCaptureDevicesNV HDC hDc HVIDEOINPUTDEVICENV *phDeviceList int wglEnumerateVideoDevicesNV HDC hDc HVIDEOOUTPUTDEVICENV *phDeviceList BOOL wglEnumGpuDevicesNV HGPUNV hGpu UINT iDeviceIndex PGPU_DEVICE lpGpuDevice BOOL wglEnumGpusFromAffinityDCNV HDC hAffinityDC UINT iGpuIndex HGPUNV *hGpu BOOL wglEnumGpusNV UINT iGpuIndex HGPUNV *phGpu void wglFreeMemoryNV void *pointer BOOL wglGenlockSampleRateI3D HDC hDC UINT uRate BOOL wglGenlockSourceDelayI3D HDC hDC UINT uDelay BOOL wglGenlockSourceEdgeI3D HDC hDC UINT uEdge BOOL wglGenlockSourceI3D HDC hDC UINT uSource UINT wglGetContextGPUIDAMD HGLRC hglrc HGLRC wglGetCurrentAssociatedContextAMD HGLRC wglGetCurrentContext HDC wglGetCurrentDC HDC wglGetCurrentReadDCARB HDC wglGetCurrentReadDCEXT PROC wglGetDefaultProcAddress LPCSTR lpszProc BOOL wglGetDigitalVideoParametersI3D HDC hDC int iAttribute int *piValue UINT GetEnhMetaFilePixelFormat HENHMETAFILE hemf const PIXELFORMATDESCRIPTOR *ppfd const char *wglGetExtensionsStringARB HDC hdc const char *wglGetExtensionsStringEXT BOOL wglGetFrameUsageI3D float *pUsage BOOL wglGetGammaTableI3D HDC hDC int iEntries USHORT *puRed USHORT *puGreen USHORT *puBlue BOOL wglGetGammaTableParametersI3D HDC hDC int iAttribute int *piValue BOOL wglGetGenlockSampleRateI3D HDC hDC UINT *uRate BOOL wglGetGenlockSourceDelayI3D HDC hDC UINT *uDelay BOOL wglGetGenlockSourceEdgeI3D HDC hDC UINT *uEdge BOOL wglGetGenlockSourceI3D HDC hDC UINT *uSource UINT wglGetGPUIDsAMD UINT maxCount UINT *ids INT wglGetGPUInfoAMD UINT id INT property GLenum dataType UINT size void *data int wglGetLayerPaletteEntries HDC hdc int iLayerPlane int iStart int cEntries const COLORREF *pcr BOOL wglGetMscRateOML HDC hdc INT32 *numerator INT32 *denominator HDC wglGetPbufferDCARB HPBUFFERARB hPbuffer HDC wglGetPbufferDCEXT HPBUFFEREXT hPbuffer BOOL wglGetPixelFormatAttribfvARB HDC hdc int iPixelFormat int iLayerPlane UINT nAttributes const int *piAttributes FLOAT *pfValues BOOL wglGetPixelFormatAttribfvEXT HDC hdc int iPixelFormat int iLayerPlane UINT nAttributes int *piAttributes FLOAT *pfValues BOOL wglGetPixelFormatAttribivARB HDC hdc int iPixelFormat int iLayerPlane UINT nAttributes const int *piAttributes int *piValues BOOL wglGetPixelFormatAttribivEXT HDC hdc int iPixelFormat int iLayerPlane UINT nAttributes int *piAttributes int *piValues PROC wglGetProcAddress LPCSTR lpszProc int wglGetSwapIntervalEXT BOOL wglGetSyncValuesOML HDC hdc INT64 *ust INT64 *msc INT64 *sbc BOOL wglGetVideoDeviceNV HDC hDC int numDevices HPVIDEODEV *hVideoDevice BOOL wglGetVideoInfoNV HPVIDEODEV hpVideoDevice unsigned long *pulCounterOutputPbuffer unsigned long *pulCounterOutputVideo BOOL wglIsEnabledFrameLockI3D BOOL *pFlag BOOL wglIsEnabledGenlockI3D HDC hDC BOOL *pFlag BOOL wglJoinSwapGroupNV HDC hDC GLuint group GLboolean wglLoadDisplayColorTableEXT const GLushort *table GLuint length BOOL wglLockVideoCaptureDeviceNV HDC hDc HVIDEOINPUTDEVICENV hDevice BOOL wglMakeAssociatedContextCurrentAMD HGLRC hglrc BOOL wglMakeContextCurrentARB HDC hDrawDC HDC hReadDC HGLRC hglrc BOOL wglMakeContextCurrentEXT HDC hDrawDC HDC hReadDC HGLRC hglrc BOOL wglMakeCurrent HDC hDc HGLRC newContext BOOL wglQueryCurrentContextNV int iAttribute int *piValue BOOL wglQueryFrameCountNV HDC hDC GLuint *count BOOL wglQueryFrameLockMasterI3D BOOL *pFlag BOOL wglQueryFrameTrackingI3D DWORD *pFrameCount DWORD *pMissedFrames float *pLastMissedUsage BOOL wglQueryGenlockMaxSourceDelayI3D HDC hDC UINT *uMaxLineDelay UINT *uMaxPixelDelay BOOL wglQueryMaxSwapGroupsNV HDC hDC GLuint *maxGroups GLuint *maxBarriers BOOL wglQueryPbufferARB HPBUFFERARB hPbuffer int iAttribute int *piValue BOOL wglQueryPbufferEXT HPBUFFEREXT hPbuffer int iAttribute int *piValue BOOL wglQuerySwapGroupNV HDC hDC GLuint *group GLuint *barrier BOOL wglQueryVideoCaptureDeviceNV HDC hDc HVIDEOINPUTDEVICENV hDevice int iAttribute int *piValue BOOL wglRealizeLayerPalette HDC hdc int iLayerPlane BOOL bRealize BOOL wglReleaseImageBufferEventsI3D HDC hDC const LPVOID *pAddress UINT count int wglReleasePbufferDCARB HPBUFFERARB hPbuffer HDC hDC int wglReleasePbufferDCEXT HPBUFFEREXT hPbuffer HDC hDC BOOL wglReleaseTexImageARB HPBUFFERARB hPbuffer int iBuffer BOOL wglReleaseVideoCaptureDeviceNV HDC hDc HVIDEOINPUTDEVICENV hDevice BOOL wglReleaseVideoDeviceNV HPVIDEODEV hVideoDevice BOOL wglReleaseVideoImageNV HPBUFFERARB hPbuffer int iVideoBuffer BOOL wglResetFrameCountNV HDC hDC BOOL wglRestoreBufferRegionARB HANDLE hRegion int x int y int width int height int xSrc int ySrc BOOL wglSaveBufferRegionARB HANDLE hRegion int x int y int width int height BOOL wglSendPbufferToVideoNV HPBUFFERARB hPbuffer int iBufferType unsigned long *pulCounterPbuffer BOOL bBlock BOOL wglSetDigitalVideoParametersI3D HDC hDC int iAttribute const int *piValue BOOL wglSetGammaTableI3D HDC hDC int iEntries const USHORT *puRed const USHORT *puGreen const USHORT *puBlue BOOL wglSetGammaTableParametersI3D HDC hDC int iAttribute const int *piValue int wglSetLayerPaletteEntries HDC hdc int iLayerPlane int iStart int cEntries const COLORREF *pcr BOOL wglSetPbufferAttribARB HPBUFFERARB hPbuffer const int *piAttribList BOOL wglSetStereoEmitterState3DL HDC hDC UINT uState BOOL wglShareLists HGLRC hrcSrvShare HGLRC hrcSrvSource INT64 wglSwapBuffersMscOML HDC hdc INT64 target_msc INT64 divisor INT64 remainder BOOL wglSwapLayerBuffers HDC hdc UINT fuFlags BOOL wglSwapIntervalEXT int interval INT64 wglSwapLayerBuffersMscOML HDC hdc INT fuPlanes INT64 target_msc INT64 divisor INT64 remainder BOOL wglUseFontBitmaps HDC hDC DWORD first DWORD count DWORD listBase BOOL wglUseFontBitmapsA HDC hDC DWORD first DWORD count DWORD listBase BOOL wglUseFontBitmapsW HDC hDC DWORD first DWORD count DWORD listBase BOOL wglUseFontOutlines HDC hDC DWORD first DWORD count DWORD listBase FLOAT deviation FLOAT extrusion int format LPGLYPHMETRICSFLOAT lpgmf BOOL wglUseFontOutlinesA HDC hDC DWORD first DWORD count DWORD listBase FLOAT deviation FLOAT extrusion int format LPGLYPHMETRICSFLOAT lpgmf BOOL wglUseFontOutlinesW HDC hDC DWORD first DWORD count DWORD listBase FLOAT deviation FLOAT extrusion int format LPGLYPHMETRICSFLOAT lpgmf BOOL wglWaitForMscOML HDC hdc INT64 target_msc INT64 divisor INT64 remainder INT64 *ust INT64 *msc INT64 *sbc BOOL wglWaitForSbcOML HDC hdc INT64 target_sbc INT64 *ust INT64 *msc INT64 *sbc libepoxy-1.5.10/src/000077500000000000000000000000001420344275400142255ustar00rootroot00000000000000libepoxy-1.5.10/src/dispatch_common.c000066400000000000000000000627431420344275400175540ustar00rootroot00000000000000/* * Copyright © 2013-2014 Intel Corporation * * 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. */ /** * \mainpage Epoxy * * \section intro_sec Introduction * * Epoxy is a library for handling OpenGL function pointer management for * you. * * It hides the complexity of `dlopen()`, `dlsym()`, `glXGetProcAddress()`, * `eglGetProcAddress()`, etc. from the app developer, with very little * knowledge needed on their part. They get to read GL specs and write * code using undecorated function names like `glCompileShader()`. * * Don't forget to check for your extensions or versions being present * before you use them, just like before! We'll tell you what you forgot * to check for instead of just segfaulting, though. * * \section features_sec Features * * - Automatically initializes as new GL functions are used. * - GL 4.6 core and compatibility context support. * - GLES 1/2/3 context support. * - Knows about function aliases so (e.g.) `glBufferData()` can be * used with `GL_ARB_vertex_buffer_object` implementations, along * with GL 1.5+ implementations. * - EGL, GLX, and WGL support. * - Can be mixed with non-epoxy GL usage. * * \section using_sec Using Epoxy * * Using Epoxy should be as easy as replacing: * * ```cpp * #include * #include * #include * ``` * * with: * * ```cpp * #include * #include * ``` * * \subsection using_include_sec Headers * * Epoxy comes with the following public headers: * * - `epoxy/gl.h` - For GL API * - `epoxy/egl.h` - For EGL API * - `epoxy/glx.h` - For GLX API * - `epoxy/wgl.h` - For WGL API * * \section links_sec Additional links * * The latest version of the Epoxy code is available on [GitHub](https://github.com/anholt/libepoxy). * * For bug reports and enhancements, please use the [Issues](https://github.com/anholt/libepoxy/issues) * link. * * The scope of this API reference does not include the documentation for * OpenGL and OpenGL ES. For more information on those programming interfaces * please visit: * * - [Khronos](https://www.khronos.org/) * - [OpenGL page on Khronos.org](https://www.khronos.org/opengl/) * - [OpenGL ES page on Khronos.org](https://www.khronos.org/opengles/) * - [docs.GL](http://docs.gl/) */ /** * @file dispatch_common.c * * @brief Implements common code shared by the generated GL/EGL/GLX dispatch code. * * A collection of some important specs on getting GL function pointers. * * From the linux GL ABI (http://www.opengl.org/registry/ABI/): * * "3.4. The libraries must export all OpenGL 1.2, GLU 1.3, GLX 1.3, and * ARB_multitexture entry points statically. * * 3.5. Because non-ARB extensions vary so widely and are constantly * increasing in number, it's infeasible to require that they all be * supported, and extensions can always be added to hardware drivers * after the base link libraries are released. These drivers are * dynamically loaded by libGL, so extensions not in the base * library must also be obtained dynamically. * * 3.6. To perform the dynamic query, libGL also must export an entry * point called * * void (*glXGetProcAddressARB(const GLubyte *))(); * * The full specification of this function is available separately. It * takes the string name of a GL or GLX entry point and returns a pointer * to a function implementing that entry point. It is functionally * identical to the wglGetProcAddress query defined by the Windows OpenGL * library, except that the function pointers returned are context * independent, unlike the WGL query." * * From the EGL 1.4 spec: * * "Client API function pointers returned by eglGetProcAddress are * independent of the display and the currently bound client API context, * and may be used by any client API context which supports the extension. * * eglGetProcAddress may be queried for all of the following functions: * * • All EGL and client API extension functions supported by the * implementation (whether those extensions are supported by the current * client API context or not). This includes any mandatory OpenGL ES * extensions. * * eglGetProcAddress may not be queried for core (non-extension) functions * in EGL or client APIs 20 . * * For functions that are queryable with eglGetProcAddress, * implementations may choose to also export those functions statically * from the object libraries im- plementing those functions. However, * portable clients cannot rely on this behavior. * * From the GLX 1.4 spec: * * "glXGetProcAddress may be queried for all of the following functions: * * • All GL and GLX extension functions supported by the implementation * (whether those extensions are supported by the current context or * not). * * • All core (non-extension) functions in GL and GLX from version 1.0 up * to and including the versions of those specifications supported by * the implementation, as determined by glGetString(GL VERSION) and * glXQueryVersion queries." */ #include #include #ifdef _WIN32 #include #else #include #include #include #endif #include #include #include #include "dispatch_common.h" #if defined(__APPLE__) #define GLX_LIB "/opt/X11/lib/libGL.1.dylib" #define OPENGL_LIB "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" #define GLES1_LIB "libGLESv1_CM.so" #define GLES2_LIB "libGLESv2.so" #elif defined(__ANDROID__) #define GLX_LIB "libGLESv2.so" #define EGL_LIB "libEGL.so" #define GLES1_LIB "libGLESv1_CM.so" #define GLES2_LIB "libGLESv2.so" #elif defined(_WIN32) #define EGL_LIB "libEGL.dll" #define GLES1_LIB "libGLES_CM.dll" #define GLES2_LIB "libGLESv2.dll" #define OPENGL_LIB "OPENGL32" #else #define GLVND_GLX_LIB "libGLX.so.1" #define GLX_LIB "libGL.so.1" #define EGL_LIB "libEGL.so.1" #define GLES1_LIB "libGLESv1_CM.so.1" #define GLES2_LIB "libGLESv2.so.2" #define OPENGL_LIB "libOpenGL.so.0" #endif #ifdef __GNUC__ #define CONSTRUCT(_func) static void _func (void) __attribute__((constructor)); #define DESTRUCT(_func) static void _func (void) __attribute__((destructor)); #elif defined (_MSC_VER) && (_MSC_VER >= 1500) #define CONSTRUCT(_func) \ static void _func(void); \ static int _func ## _wrapper(void) { _func(); return 0; } \ __pragma(section(".CRT$XCU",read)) \ __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _wrapper; #define DESTRUCT(_func) \ static void _func(void); \ static int _func ## _constructor(void) { atexit (_func); return 0; } \ __pragma(section(".CRT$XCU",read)) \ __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _constructor; #else #error "You will need constructor support for your compiler" #endif struct api { #ifndef _WIN32 /* * Locking for making sure we don't double-dlopen(). */ pthread_mutex_t mutex; #endif /* * dlopen() return value for the GLX API. This is libGLX.so.1 if the * runtime is glvnd-enabled, else libGL.so.1 */ void *glx_handle; /* * dlopen() return value for the desktop GL library. * * On Windows this is OPENGL32. On OSX this is classic libGL. On Linux * this is either libOpenGL (if the runtime is glvnd-enabled) or * classic libGL.so.1 */ void *gl_handle; /* dlopen() return value for libEGL.so.1 */ void *egl_handle; /* dlopen() return value for libGLESv1_CM.so.1 */ void *gles1_handle; /* dlopen() return value for libGLESv2.so.2 */ void *gles2_handle; /* * This value gets incremented when any thread is in * glBegin()/glEnd() called through epoxy. * * We're not guaranteed to be called through our wrapper, so the * conservative paths also try to handle the failure cases they'll * see if begin_count didn't reflect reality. It's also a bit of * a bug that the conservative paths might return success because * some other thread was in epoxy glBegin/glEnd while our thread * is trying to resolve, but given that it's basically just for * informative error messages, we shouldn't need to care. */ long begin_count; }; static struct api api = { #ifndef _WIN32 .mutex = PTHREAD_MUTEX_INITIALIZER, #else 0, #endif }; static bool library_initialized; static bool epoxy_current_context_is_glx(void); #if PLATFORM_HAS_EGL static EGLenum epoxy_egl_get_current_gl_context_api(void); #endif CONSTRUCT (library_init) static void library_init(void) { library_initialized = true; } static bool get_dlopen_handle(void **handle, const char *lib_name, bool exit_on_fail, bool load) { if (*handle) return true; if (!library_initialized) { fputs("Attempting to dlopen() while in the dynamic linker.\n", stderr); abort(); } #ifdef _WIN32 *handle = LoadLibraryA(lib_name); #else pthread_mutex_lock(&api.mutex); if (!*handle) { int flags = RTLD_LAZY | RTLD_LOCAL; if (!load) flags |= RTLD_NOLOAD; *handle = dlopen(lib_name, flags); if (!*handle) { if (exit_on_fail) { fprintf(stderr, "Couldn't open %s: %s\n", lib_name, dlerror()); abort(); } else { (void)dlerror(); } } } pthread_mutex_unlock(&api.mutex); #endif return *handle != NULL; } static void * do_dlsym(void **handle, const char *name, bool exit_on_fail) { void *result; const char *error = ""; #ifdef _WIN32 result = GetProcAddress(*handle, name); #else result = dlsym(*handle, name); if (!result) error = dlerror(); #endif if (!result && exit_on_fail) { fprintf(stderr, "%s() not found: %s\n", name, error); abort(); } return result; } /** * @brief Checks whether we're using OpenGL or OpenGL ES * * @return `true` if we're using OpenGL */ bool epoxy_is_desktop_gl(void) { const char *es_prefix = "OpenGL ES"; const char *version; #if PLATFORM_HAS_EGL /* PowerVR's OpenGL ES implementation (and perhaps other) don't * comply with the standard, which states that * "glGetString(GL_VERSION)" should return a string starting with * "OpenGL ES". Therefore, to distinguish desktop OpenGL from * OpenGL ES, we must also check the context type through EGL (we * can do that as PowerVR is only usable through EGL). */ if (!epoxy_current_context_is_glx()) { switch (epoxy_egl_get_current_gl_context_api()) { case EGL_OPENGL_API: return true; case EGL_OPENGL_ES_API: return false; case EGL_NONE: default: break; } } #endif if (api.begin_count) return true; version = (const char *)glGetString(GL_VERSION); /* If we didn't get a version back, there are only two things that * could have happened: either malloc failure (which basically * doesn't exist), or we were called within a glBegin()/glEnd(). * Assume the second, which only exists for desktop GL. */ if (!version) return true; return strncmp(es_prefix, version, strlen(es_prefix)); } static int epoxy_internal_gl_version(GLenum version_string, int error_version, int factor) { const char *version = (const char *)glGetString(version_string); GLint major, minor; int scanf_count; if (!version) return error_version; /* skip to version number */ while (!isdigit(*version) && *version != '\0') version++; /* Interpret version number */ scanf_count = sscanf(version, "%i.%i", &major, &minor); if (scanf_count != 2) { fprintf(stderr, "Unable to interpret GL_VERSION string: %s\n", version); abort(); } return factor * major + minor; } /** * @brief Returns the version of OpenGL we are using * * The version is encoded as: * * ``` * * version = major * 10 + minor * * ``` * * So it can be easily used for version comparisons. * * @return The encoded version of OpenGL we are using */ int epoxy_gl_version(void) { return epoxy_internal_gl_version(GL_VERSION, 0, 10); } int epoxy_conservative_gl_version(void) { if (api.begin_count) return 100; return epoxy_internal_gl_version(GL_VERSION, 100, 10); } /** * @brief Returns the version of the GL Shading Language we are using * * The version is encoded as: * * ``` * * version = major * 100 + minor * * ``` * * So it can be easily used for version comparisons. * * @return The encoded version of the GL Shading Language we are using */ int epoxy_glsl_version(void) { if (epoxy_gl_version() >= 20 || epoxy_has_gl_extension ("GL_ARB_shading_language_100")) return epoxy_internal_gl_version(GL_SHADING_LANGUAGE_VERSION, 0, 100); return 0; } /** * @brief Checks for the presence of an extension in an OpenGL extension string * * @param extension_list The string containing the list of extensions to check * @param ext The name of the GL extension * @return `true` if the extension is available' * * @note If you are looking to check whether a normal GL, EGL or GLX extension * is supported by the client, this probably isn't the function you want. * * Some parts of the spec for OpenGL and friends will return an OpenGL formatted * extension string that is separate from the usual extension strings for the * spec. This function provides easy parsing of those strings. * * @see epoxy_has_gl_extension() * @see epoxy_has_egl_extension() * @see epoxy_has_glx_extension() */ bool epoxy_extension_in_string(const char *extension_list, const char *ext) { const char *ptr = extension_list; int len; if (!ext) return false; len = strlen(ext); if (extension_list == NULL || *extension_list == '\0') return false; /* Make sure that don't just find an extension with our name as a prefix. */ while (true) { ptr = strstr(ptr, ext); if (!ptr) return false; if (ptr[len] == ' ' || ptr[len] == 0) return true; ptr += len; } } static bool epoxy_internal_has_gl_extension(const char *ext, bool invalid_op_mode) { if (epoxy_gl_version() < 30) { const char *exts = (const char *)glGetString(GL_EXTENSIONS); if (!exts) return invalid_op_mode; return epoxy_extension_in_string(exts, ext); } else { int num_extensions; int i; glGetIntegerv(GL_NUM_EXTENSIONS, &num_extensions); if (num_extensions == 0) return invalid_op_mode; for (i = 0; i < num_extensions; i++) { const char *gl_ext = (const char *)glGetStringi(GL_EXTENSIONS, i); if (!gl_ext) return false; if (strcmp(ext, gl_ext) == 0) return true; } return false; } } bool epoxy_load_glx(bool exit_if_fails, bool load) { #if PLATFORM_HAS_GLX # ifdef GLVND_GLX_LIB /* prefer the glvnd library if it exists */ if (!api.glx_handle) get_dlopen_handle(&api.glx_handle, GLVND_GLX_LIB, false, load); # endif if (!api.glx_handle) get_dlopen_handle(&api.glx_handle, GLX_LIB, exit_if_fails, load); #endif return api.glx_handle != NULL; } void * epoxy_conservative_glx_dlsym(const char *name, bool exit_if_fails) { #if PLATFORM_HAS_GLX if (epoxy_load_glx(exit_if_fails, exit_if_fails)) return do_dlsym(&api.glx_handle, name, exit_if_fails); #endif return NULL; } /** * Tests whether the currently bound context is EGL or GLX, trying to * avoid loading libraries unless necessary. */ static bool epoxy_current_context_is_glx(void) { #if !PLATFORM_HAS_GLX return false; #else void *sym; sym = epoxy_conservative_glx_dlsym("glXGetCurrentContext", false); if (sym) { if (glXGetCurrentContext()) return true; } else { (void)dlerror(); } #if PLATFORM_HAS_EGL sym = epoxy_conservative_egl_dlsym("eglGetCurrentContext", false); if (sym) { if (epoxy_egl_get_current_gl_context_api() != EGL_NONE) return false; } else { (void)dlerror(); } #endif /* PLATFORM_HAS_EGL */ return false; #endif /* PLATFORM_HAS_GLX */ } /** * @brief Returns true if the given GL extension is supported in the current context. * * @param ext The name of the GL extension * @return `true` if the extension is available * * @note that this function can't be called from within `glBegin()` and `glEnd()`. * * @see epoxy_has_egl_extension() * @see epoxy_has_glx_extension() */ bool epoxy_has_gl_extension(const char *ext) { return epoxy_internal_has_gl_extension(ext, false); } bool epoxy_conservative_has_gl_extension(const char *ext) { if (api.begin_count) return true; return epoxy_internal_has_gl_extension(ext, true); } bool epoxy_load_egl(bool exit_if_fails, bool load) { #if PLATFORM_HAS_EGL return get_dlopen_handle(&api.egl_handle, EGL_LIB, exit_if_fails, load); #else return false; #endif } void * epoxy_conservative_egl_dlsym(const char *name, bool exit_if_fails) { #if PLATFORM_HAS_EGL if (epoxy_load_egl(exit_if_fails, exit_if_fails)) return do_dlsym(&api.egl_handle, name, exit_if_fails); #endif return NULL; } void * epoxy_egl_dlsym(const char *name) { return epoxy_conservative_egl_dlsym(name, true); } void * epoxy_glx_dlsym(const char *name) { return epoxy_conservative_glx_dlsym(name, true); } static void epoxy_load_gl(void) { if (api.gl_handle) return; #if defined(_WIN32) || defined(__APPLE__) get_dlopen_handle(&api.gl_handle, OPENGL_LIB, true, true); #else // Prefer GLX_LIB over OPENGL_LIB to maintain existing behavior. // Using the inverse ordering OPENGL_LIB -> GLX_LIB, causes issues such as: // https://github.com/anholt/libepoxy/issues/240 (apitrace missing calls) // https://github.com/anholt/libepoxy/issues/252 (Xorg boot crash) get_dlopen_handle(&api.glx_handle, GLX_LIB, false, true); api.gl_handle = api.glx_handle; #if defined(OPENGL_LIB) if (!api.gl_handle) get_dlopen_handle(&api.gl_handle, OPENGL_LIB, false, true); #endif if (!api.gl_handle) { #if defined(OPENGL_LIB) fprintf(stderr, "Couldn't open %s or %s\n", GLX_LIB, OPENGL_LIB); #else fprintf(stderr, "Couldn't open %s\n", GLX_LIB); #endif abort(); } #endif } void * epoxy_gl_dlsym(const char *name) { epoxy_load_gl(); return do_dlsym(&api.gl_handle, name, true); } void * epoxy_gles1_dlsym(const char *name) { if (epoxy_current_context_is_glx()) { return epoxy_get_proc_address(name); } else { get_dlopen_handle(&api.gles1_handle, GLES1_LIB, true, true); return do_dlsym(&api.gles1_handle, name, true); } } void * epoxy_gles2_dlsym(const char *name) { if (epoxy_current_context_is_glx()) { return epoxy_get_proc_address(name); } else { get_dlopen_handle(&api.gles2_handle, GLES2_LIB, true, true); return do_dlsym(&api.gles2_handle, name, true); } } /** * Does the appropriate dlsym() or eglGetProcAddress() for GLES3 * functions. * * Mesa interpreted GLES as intending that the GLES3 functions were * available only through eglGetProcAddress() and not dlsym(), while * ARM's Mali drivers interpreted GLES as intending that GLES3 * functions were available only through dlsym() and not * eglGetProcAddress(). Thanks, Khronos. */ void * epoxy_gles3_dlsym(const char *name) { if (epoxy_current_context_is_glx()) { return epoxy_get_proc_address(name); } else { if (get_dlopen_handle(&api.gles2_handle, GLES2_LIB, false, true)) { void *func = do_dlsym(&api.gles2_handle, name, false); if (func) return func; } return epoxy_get_proc_address(name); } } /** * Performs either the dlsym or glXGetProcAddress()-equivalent for * core functions in desktop GL. */ void * epoxy_get_core_proc_address(const char *name, int core_version) { #ifdef _WIN32 int core_symbol_support = 11; #elif defined(__ANDROID__) /** * All symbols must be resolved through eglGetProcAddress * on Android */ int core_symbol_support = 0; #else int core_symbol_support = 12; #endif if (core_version <= core_symbol_support) { return epoxy_gl_dlsym(name); } else { return epoxy_get_proc_address(name); } } #if PLATFORM_HAS_EGL static EGLenum epoxy_egl_get_current_gl_context_api(void) { EGLint curapi; if (eglQueryContext(eglGetCurrentDisplay(), eglGetCurrentContext(), EGL_CONTEXT_CLIENT_TYPE, &curapi) == EGL_FALSE) { (void)eglGetError(); return EGL_NONE; } return (EGLenum) curapi; } #endif /* PLATFORM_HAS_EGL */ /** * Performs the dlsym() for the core GL 1.0 functions that we use for * determining version and extension support for deciding on dlsym * versus glXGetProcAddress() for all other functions. * * This needs to succeed on implementations without GLX (since * glGetString() and glGetIntegerv() are both in GLES1/2 as well, and * at call time we don't know for sure what API they're trying to use * without inspecting contexts ourselves). */ void * epoxy_get_bootstrap_proc_address(const char *name) { /* If we already have a library that links to libglapi loaded, * use that. */ #if PLATFORM_HAS_GLX if (api.glx_handle && glXGetCurrentContext()) return epoxy_gl_dlsym(name); #endif /* If epoxy hasn't loaded any API-specific library yet, try to * figure out what API the context is using and use that library, * since future calls will also use that API (this prevents a * non-X11 ES2 context from loading a bunch of X11 junk). */ #if PLATFORM_HAS_EGL get_dlopen_handle(&api.egl_handle, EGL_LIB, false, true); if (api.egl_handle) { int version = 0; switch (epoxy_egl_get_current_gl_context_api()) { case EGL_OPENGL_API: return epoxy_gl_dlsym(name); case EGL_OPENGL_ES_API: if (eglQueryContext(eglGetCurrentDisplay(), eglGetCurrentContext(), EGL_CONTEXT_CLIENT_VERSION, &version)) { if (version >= 2) return epoxy_gles2_dlsym(name); else return epoxy_gles1_dlsym(name); } } } #endif /* PLATFORM_HAS_EGL */ /* Fall back to GLX */ return epoxy_gl_dlsym(name); } void * epoxy_get_proc_address(const char *name) { #if PLATFORM_HAS_EGL GLenum egl_api = EGL_NONE; if (!epoxy_current_context_is_glx()) egl_api = epoxy_egl_get_current_gl_context_api(); switch (egl_api) { case EGL_OPENGL_API: case EGL_OPENGL_ES_API: return eglGetProcAddress(name); case EGL_NONE: break; } #endif #if defined(_WIN32) return wglGetProcAddress(name); #elif defined(__APPLE__) return epoxy_gl_dlsym(name); #elif PLATFORM_HAS_GLX if (epoxy_current_context_is_glx()) return glXGetProcAddressARB((const GLubyte *)name); assert(0 && "Couldn't find current GLX or EGL context.\n"); #endif return NULL; } WRAPPER_VISIBILITY (void) WRAPPER(epoxy_glBegin)(GLenum primtype) { #ifdef _WIN32 InterlockedIncrement(&api.begin_count); #else pthread_mutex_lock(&api.mutex); api.begin_count++; pthread_mutex_unlock(&api.mutex); #endif epoxy_glBegin_unwrapped(primtype); } WRAPPER_VISIBILITY (void) WRAPPER(epoxy_glEnd)(void) { epoxy_glEnd_unwrapped(); #ifdef _WIN32 InterlockedDecrement(&api.begin_count); #else pthread_mutex_lock(&api.mutex); api.begin_count--; pthread_mutex_unlock(&api.mutex); #endif } PFNGLBEGINPROC epoxy_glBegin = epoxy_glBegin_wrapped; PFNGLENDPROC epoxy_glEnd = epoxy_glEnd_wrapped; epoxy_resolver_failure_handler_t epoxy_resolver_failure_handler; /** * Sets the function that will be called every time Epoxy fails to * resolve a symbol. * * @param handler The new handler function * @return The previous handler function */ epoxy_resolver_failure_handler_t epoxy_set_resolver_failure_handler(epoxy_resolver_failure_handler_t handler) { #ifdef _WIN32 return InterlockedExchangePointer((void**)&epoxy_resolver_failure_handler, handler); #else epoxy_resolver_failure_handler_t old; pthread_mutex_lock(&api.mutex); old = epoxy_resolver_failure_handler; epoxy_resolver_failure_handler = handler; pthread_mutex_unlock(&api.mutex); return old; #endif } libepoxy-1.5.10/src/dispatch_common.h000066400000000000000000000212451420344275400175510ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 "config.h" #ifdef _WIN32 #define PLATFORM_HAS_EGL ENABLE_EGL #define PLATFORM_HAS_GLX ENABLE_GLX #define PLATFORM_HAS_WGL 1 #elif defined(__APPLE__) #define PLATFORM_HAS_EGL 0 #define PLATFORM_HAS_GLX ENABLE_GLX #define PLATFORM_HAS_WGL 0 #elif defined(ANDROID) #define PLATFORM_HAS_EGL ENABLE_EGL #define PLATFORM_HAS_GLX 0 #define PLATFORM_HAS_WGL 0 #else #define PLATFORM_HAS_EGL ENABLE_EGL #define PLATFORM_HAS_GLX ENABLE_GLX #define PLATFORM_HAS_WGL 0 #endif #include "epoxy/gl.h" #if PLATFORM_HAS_GLX #include "epoxy/glx.h" #endif #if PLATFORM_HAS_EGL # if !ENABLE_X11 /* Disable including X11 headers if the X11 support was disabled at * configuration time */ # define EGL_NO_X11 1 /* Older versions of Mesa use this symbol to achieve the same result * as EGL_NO_X11 */ # define MESA_EGL_NO_X11_HEADERS 1 # endif #include "epoxy/egl.h" #endif #if PLATFORM_HAS_WGL #include "epoxy/wgl.h" #endif #if defined(__GNUC__) #define PACKED __attribute__((__packed__)) #define ENDPACKED #elif defined (_MSC_VER) #define PACKED __pragma(pack(push,1)) #define ENDPACKED __pragma(pack(pop)) #else #define PACKED #define ENDPACKED #endif /* On win32, we're going to need to keep a per-thread dispatch table, * since the function pointers depend on the device and pixel format * of the current context. */ #if defined(_WIN32) #define USING_DISPATCH_TABLE 1 #else #define USING_DISPATCH_TABLE 0 #endif #define UNWRAPPED_PROTO(x) (GLAPIENTRY *x) #define WRAPPER_VISIBILITY(type) static type GLAPIENTRY #define WRAPPER(x) x ## _wrapped #define GEN_GLOBAL_REWRITE_PTR(name, args, passthrough) \ static void EPOXY_CALLSPEC \ name##_global_rewrite_ptr args \ { \ if (name == (void *)name##_global_rewrite_ptr) \ name = (void *)name##_resolver(); \ name passthrough; \ } #define GEN_GLOBAL_REWRITE_PTR_RET(ret, name, args, passthrough) \ static ret EPOXY_CALLSPEC \ name##_global_rewrite_ptr args \ { \ if (name == (void *)name##_global_rewrite_ptr) \ name = (void *)name##_resolver(); \ return name passthrough; \ } #if USING_DISPATCH_TABLE #define GEN_DISPATCH_TABLE_REWRITE_PTR(name, args, passthrough) \ static void EPOXY_CALLSPEC \ name##_dispatch_table_rewrite_ptr args \ { \ struct dispatch_table *dispatch_table = get_dispatch_table(); \ \ dispatch_table->name = (void *)name##_resolver(); \ dispatch_table->name passthrough; \ } #define GEN_DISPATCH_TABLE_REWRITE_PTR_RET(ret, name, args, passthrough) \ static ret EPOXY_CALLSPEC \ name##_dispatch_table_rewrite_ptr args \ { \ struct dispatch_table *dispatch_table = get_dispatch_table(); \ \ dispatch_table->name = (void *)name##_resolver(); \ return dispatch_table->name passthrough; \ } #define GEN_DISPATCH_TABLE_THUNK(name, args, passthrough) \ static void EPOXY_CALLSPEC \ name##_dispatch_table_thunk args \ { \ get_dispatch_table()->name passthrough; \ } #define GEN_DISPATCH_TABLE_THUNK_RET(ret, name, args, passthrough) \ static ret EPOXY_CALLSPEC \ name##_dispatch_table_thunk args \ { \ return get_dispatch_table()->name passthrough; \ } #else #define GEN_DISPATCH_TABLE_REWRITE_PTR(name, args, passthrough) #define GEN_DISPATCH_TABLE_REWRITE_PTR_RET(ret, name, args, passthrough) #define GEN_DISPATCH_TABLE_THUNK(name, args, passthrough) #define GEN_DISPATCH_TABLE_THUNK_RET(ret, name, args, passthrough) #endif #define GEN_THUNKS(name, args, passthrough) \ GEN_GLOBAL_REWRITE_PTR(name, args, passthrough) \ GEN_DISPATCH_TABLE_REWRITE_PTR(name, args, passthrough) \ GEN_DISPATCH_TABLE_THUNK(name, args, passthrough) #define GEN_THUNKS_RET(ret, name, args, passthrough) \ GEN_GLOBAL_REWRITE_PTR_RET(ret, name, args, passthrough) \ GEN_DISPATCH_TABLE_REWRITE_PTR_RET(ret, name, args, passthrough) \ GEN_DISPATCH_TABLE_THUNK_RET(ret, name, args, passthrough) void *epoxy_egl_dlsym(const char *name); void *epoxy_glx_dlsym(const char *name); void *epoxy_gl_dlsym(const char *name); void *epoxy_gles1_dlsym(const char *name); void *epoxy_gles2_dlsym(const char *name); void *epoxy_gles3_dlsym(const char *name); void *epoxy_get_proc_address(const char *name); void *epoxy_get_core_proc_address(const char *name, int core_version); void *epoxy_get_bootstrap_proc_address(const char *name); int epoxy_conservative_gl_version(void); bool epoxy_conservative_has_gl_extension(const char *name); int epoxy_conservative_glx_version(void); bool epoxy_conservative_has_glx_extension(const char *name); int epoxy_conservative_egl_version(void); bool epoxy_conservative_has_egl_extension(const char *name); bool epoxy_conservative_has_wgl_extension(const char *name); void *epoxy_conservative_egl_dlsym(const char *name, bool exit_if_fails); void *epoxy_conservative_glx_dlsym(const char *name, bool exit_if_fails); bool epoxy_load_glx(bool exit_if_fails, bool load); bool epoxy_load_egl(bool exit_if_fails, bool load); #define glBegin_unwrapped epoxy_glBegin_unwrapped #define glEnd_unwrapped epoxy_glEnd_unwrapped extern void UNWRAPPED_PROTO(glBegin_unwrapped)(GLenum primtype); extern void UNWRAPPED_PROTO(glEnd_unwrapped)(void); extern epoxy_resolver_failure_handler_t epoxy_resolver_failure_handler; #if USING_DISPATCH_TABLE void gl_init_dispatch_table(void); void gl_switch_to_dispatch_table(void); void wgl_init_dispatch_table(void); void wgl_switch_to_dispatch_table(void); extern uint32_t gl_tls_index, gl_tls_size; extern uint32_t wgl_tls_index, wgl_tls_size; #define wglMakeCurrent_unwrapped epoxy_wglMakeCurrent_unwrapped #define wglMakeContextCurrentARB_unwrapped epoxy_wglMakeContextCurrentARB_unwrapped #define wglMakeContextCurrentEXT_unwrapped epoxy_wglMakeContextCurrentEXT_unwrapped #define wglMakeAssociatedContextCurrentAMD_unwrapped epoxy_wglMakeAssociatedContextCurrentAMD_unwrapped extern BOOL UNWRAPPED_PROTO(wglMakeCurrent_unwrapped)(HDC hdc, HGLRC hglrc); extern BOOL UNWRAPPED_PROTO(wglMakeContextCurrentARB_unwrapped)(HDC hDrawDC, HDC hReadDC, HGLRC hglrc); extern BOOL UNWRAPPED_PROTO(wglMakeContextCurrentEXT_unwrapped)(HDC hDrawDC, HDC hReadDC, HGLRC hglrc); extern BOOL UNWRAPPED_PROTO(wglMakeAssociatedContextCurrentAMD_unwrapped)(HGLRC hglrc); #endif /* _WIN32_ */ libepoxy-1.5.10/src/dispatch_egl.c000066400000000000000000000061661420344275400170300ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #include #include #include "dispatch_common.h" int epoxy_conservative_egl_version(void) { EGLDisplay dpy = eglGetCurrentDisplay(); if (!dpy) return 14; return epoxy_egl_version(dpy); } /** * @brief Returns the version of OpenGL we are using * * The version is encoded as: * * ``` * * version = major * 10 + minor * * ``` * * So it can be easily used for version comparisons. * * @param The EGL display * * @return The encoded version of EGL we are using * * @see epoxy_gl_version() */ int epoxy_egl_version(EGLDisplay dpy) { int major, minor; const char *version_string; int ret; version_string = eglQueryString(dpy, EGL_VERSION); if (!version_string) return 0; ret = sscanf(version_string, "%d.%d", &major, &minor); assert(ret == 2); return major * 10 + minor; } bool epoxy_conservative_has_egl_extension(const char *ext) { return epoxy_has_egl_extension(eglGetCurrentDisplay(), ext); } /** * @brief Returns true if the given EGL extension is supported in the current context. * * @param dpy The EGL display * @param extension The name of the EGL extension * * @return `true` if the extension is available * * @see epoxy_has_gl_extension() * @see epoxy_has_glx_extension() */ bool epoxy_has_egl_extension(EGLDisplay dpy, const char *ext) { return epoxy_extension_in_string(eglQueryString(dpy, EGL_EXTENSIONS), ext) || epoxy_extension_in_string(eglQueryString(NULL, EGL_EXTENSIONS), ext); } /** * @brief Checks whether EGL is available. * * @return `true` if EGL is available * * @newin{1,4} */ bool epoxy_has_egl(void) { #if !PLATFORM_HAS_EGL return false; #else if (epoxy_load_egl(false, true)) { EGLDisplay* (* pf_eglGetCurrentDisplay) (void); pf_eglGetCurrentDisplay = epoxy_conservative_egl_dlsym("eglGetCurrentDisplay", false); if (pf_eglGetCurrentDisplay) return true; } return false; #endif /* PLATFORM_HAS_EGL */ } libepoxy-1.5.10/src/dispatch_glx.c000066400000000000000000000112151420344275400170420ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #include #include #include "dispatch_common.h" /** * If we can determine the GLX version from the current context, then * return that, otherwise return a version that will just send us on * to dlsym() or get_proc_address(). */ int epoxy_conservative_glx_version(void) { Display *dpy = glXGetCurrentDisplay(); GLXContext ctx = glXGetCurrentContext(); int screen; if (!dpy || !ctx) return 14; glXQueryContext(dpy, ctx, GLX_SCREEN, &screen); return epoxy_glx_version(dpy, screen); } /** * @brief Returns the version of GLX we are using * * The version is encoded as: * * ``` * * version = major * 10 + minor * * ``` * * So it can be easily used for version comparisons. * * @param dpy The X11 display * @param screen The X11 screen * * @return The encoded version of GLX we are using * * @see epoxy_gl_version() */ int epoxy_glx_version(Display *dpy, int screen) { int server_major, server_minor; int client_major, client_minor; int server, client; const char *version_string; int ret; version_string = glXQueryServerString(dpy, screen, GLX_VERSION); if (!version_string) return 0; ret = sscanf(version_string, "%d.%d", &server_major, &server_minor); assert(ret == 2); server = server_major * 10 + server_minor; version_string = glXGetClientString(dpy, GLX_VERSION); if (!version_string) return 0; ret = sscanf(version_string, "%d.%d", &client_major, &client_minor); assert(ret == 2); client = client_major * 10 + client_minor; if (client < server) return client; else return server; } /** * If we can determine the GLX extension support from the current * context, then return that, otherwise give the answer that will just * send us on to get_proc_address(). */ bool epoxy_conservative_has_glx_extension(const char *ext) { Display *dpy = glXGetCurrentDisplay(); GLXContext ctx = glXGetCurrentContext(); int screen; if (!dpy || !ctx) return true; glXQueryContext(dpy, ctx, GLX_SCREEN, &screen); return epoxy_has_glx_extension(dpy, screen, ext); } /** * @brief Returns true if the given GLX extension is supported in the current context. * * @param dpy The X11 display * @param screen The X11 screen * @param extension The name of the GLX extension * * @return `true` if the extension is available * * @see epoxy_has_gl_extension() * @see epoxy_has_egl_extension() */ bool epoxy_has_glx_extension(Display *dpy, int screen, const char *ext) { /* No, you can't just use glXGetClientString or * glXGetServerString() here. Those each tell you about one half * of what's needed for an extension to be supported, and * glXQueryExtensionsString() is what gives you the intersection * of the two. */ return epoxy_extension_in_string(glXQueryExtensionsString(dpy, screen), ext); } /** * @brief Checks whether GLX is available. * * @param dpy The X11 display * * @return `true` if GLX is available * * @newin{1,4} */ bool epoxy_has_glx(Display *dpy) { #if !PLATFORM_HAS_GLX return false; #else if (epoxy_load_glx(false, true)) { Bool (* pf_glXQueryExtension) (Display *, int *, int *); int error_base, event_base; pf_glXQueryExtension = epoxy_conservative_glx_dlsym("glXQueryExtension", false); if (pf_glXQueryExtension && pf_glXQueryExtension(dpy, &error_base, &event_base)) return true; } return false; #endif /* !PLATFORM_HAS_GLX */ } libepoxy-1.5.10/src/dispatch_wgl.c000066400000000000000000000132461420344275400170470ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #include #include #include "dispatch_common.h" static bool first_context_current = false; static bool already_switched_to_dispatch_table = false; /** * If we can determine the WGL extension support from the current * context, then return that, otherwise give the answer that will just * send us on to get_proc_address(). */ bool epoxy_conservative_has_wgl_extension(const char *ext) { HDC hdc = wglGetCurrentDC(); if (!hdc) return true; return epoxy_has_wgl_extension(hdc, ext); } bool epoxy_has_wgl_extension(HDC hdc, const char *ext) { PFNWGLGETEXTENSIONSSTRINGARBPROC getext; getext = (void *)wglGetProcAddress("wglGetExtensionsStringARB"); if (!getext) { fputs("Implementation unexpectedly missing " "WGL_ARB_extensions_string. Probably a libepoxy bug.\n", stderr); return false; } return epoxy_extension_in_string(getext(hdc), ext); } /** * Does the work necessary to update the win32 per-thread dispatch * tables when wglMakeCurrent() is called. * * Right now, we use global function pointers until the second * MakeCurrent occurs, at which point we switch to dispatch tables. * This could be improved in the future to track a resolved dispatch * table per context and reuse it when the context is made current * again. */ void epoxy_handle_external_wglMakeCurrent(void) { if (!first_context_current) { first_context_current = true; } else { if (!already_switched_to_dispatch_table) { already_switched_to_dispatch_table = true; gl_switch_to_dispatch_table(); wgl_switch_to_dispatch_table(); } gl_init_dispatch_table(); wgl_init_dispatch_table(); } } /** * This global symbol is apparently looked up by Windows when loading * a DLL, but it doesn't declare the prototype. */ BOOL WINAPI DllMain(HINSTANCE dll, DWORD reason, LPVOID reserved); BOOL WINAPI DllMain(HINSTANCE dll, DWORD reason, LPVOID reserved) { void *data; switch (reason) { case DLL_PROCESS_ATTACH: gl_tls_index = TlsAlloc(); if (gl_tls_index == TLS_OUT_OF_INDEXES) return FALSE; wgl_tls_index = TlsAlloc(); if (wgl_tls_index == TLS_OUT_OF_INDEXES) return FALSE; first_context_current = false; /* FALLTHROUGH */ case DLL_THREAD_ATTACH: data = LocalAlloc(LPTR, gl_tls_size); TlsSetValue(gl_tls_index, data); data = LocalAlloc(LPTR, wgl_tls_size); TlsSetValue(wgl_tls_index, data); break; case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: data = TlsGetValue(gl_tls_index); LocalFree(data); data = TlsGetValue(wgl_tls_index); LocalFree(data); if (reason == DLL_PROCESS_DETACH) { TlsFree(gl_tls_index); TlsFree(wgl_tls_index); } break; } return TRUE; } WRAPPER_VISIBILITY (BOOL) WRAPPER(epoxy_wglMakeCurrent)(HDC hdc, HGLRC hglrc) { BOOL ret = epoxy_wglMakeCurrent_unwrapped(hdc, hglrc); epoxy_handle_external_wglMakeCurrent(); return ret; } WRAPPER_VISIBILITY (BOOL) WRAPPER(epoxy_wglMakeContextCurrentARB)(HDC hDrawDC, HDC hReadDC, HGLRC hglrc) { BOOL ret = epoxy_wglMakeContextCurrentARB_unwrapped(hDrawDC, hReadDC, hglrc); epoxy_handle_external_wglMakeCurrent(); return ret; } WRAPPER_VISIBILITY (BOOL) WRAPPER(epoxy_wglMakeContextCurrentEXT)(HDC hDrawDC, HDC hReadDC, HGLRC hglrc) { BOOL ret = epoxy_wglMakeContextCurrentEXT_unwrapped(hDrawDC, hReadDC, hglrc); epoxy_handle_external_wglMakeCurrent(); return ret; } WRAPPER_VISIBILITY (BOOL) WRAPPER(epoxy_wglMakeAssociatedContextCurrentAMD)(HGLRC hglrc) { BOOL ret = epoxy_wglMakeAssociatedContextCurrentAMD_unwrapped(hglrc); epoxy_handle_external_wglMakeCurrent(); return ret; } PFNWGLMAKECURRENTPROC epoxy_wglMakeCurrent = epoxy_wglMakeCurrent_wrapped; PFNWGLMAKECONTEXTCURRENTEXTPROC epoxy_wglMakeContextCurrentEXT = epoxy_wglMakeContextCurrentEXT_wrapped; PFNWGLMAKECONTEXTCURRENTARBPROC epoxy_wglMakeContextCurrentARB = epoxy_wglMakeContextCurrentARB_wrapped; PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC epoxy_wglMakeAssociatedContextCurrentEXT = epoxy_wglMakeAssociatedContextCurrentAMD_wrapped; libepoxy-1.5.10/src/gen_dispatch.py000077500000000000000000001164671420344275400172510ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright © 2013 Intel Corporation # # 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. import sys import argparse import xml.etree.ElementTree as ET import re import os class GLProvider(object): def __init__(self, condition, condition_name, loader, name): # C code for determining if this function is available. # (e.g. epoxy_is_desktop_gl() && epoxy_gl_version() >= 20 self.condition = condition # A string (possibly with spaces) describing the condition. self.condition_name = condition_name # The loader for getting the symbol -- either dlsym or # getprocaddress. This is a python format string to generate # C code, given self.name. self.loader = loader # The name of the function to be loaded (possibly an # ARB/EXT/whatever-decorated variant). self.name = name # This is the C enum name we'll use for referring to this provider. self.enum = condition_name self.enum = self.enum.replace(' ', '_') self.enum = self.enum.replace('\\"', '') self.enum = self.enum.replace('.', '_') self.enum = "PROVIDER_" + self.enum class GLFunction(object): def __init__(self, ret_type, name): self.name = name self.ptr_type = 'PFN' + name.upper() + 'PROC' self.ret_type = ret_type self.providers = {} self.args = [] # These are functions with hand-written wrapper code in # dispatch_common.c. Their dispatch entries are replaced with # non-public symbols with a "_unwrapped" suffix. wrapped_functions = { 'glBegin', 'glEnd', 'wglMakeCurrent', 'wglMakeContextCurrentEXT', 'wglMakeContextCurrentARB', 'wglMakeAssociatedContextCurrentAMD', } if name in wrapped_functions: self.wrapped_name = name + '_unwrapped' self.public = '' else: self.wrapped_name = name self.public = 'EPOXY_PUBLIC ' # This is the string of C code for passing through the # arguments to the function. self.args_list = '' # This is the string of C code for declaring the arguments # list. self.args_decl = 'void' # This is the string name of the function that this is an # alias of, or self.name. This initially comes from the # registry, and may get updated if it turns out our alias is # itself an alias (for example glFramebufferTextureEXT -> # glFramebufferTextureARB -> glFramebufferTexture) self.alias_name = name # After alias resolution, this is the function that this is an # alias of. self.alias_func = None # For the root of an alias tree, this lists the functions that # are marked as aliases of it, so that it can write a resolver # for all of them. self.alias_exts = [] def add_arg(self, arg_type, arg_name): # Reword glDepthRange() arguments to avoid clashing with the # "near" and "far" keywords on win32. if arg_name == "near": arg_name = "hither" elif arg_name == "far": arg_name = "yon" # Mac screwed up GLhandleARB and made it a void * instead of # uint32_t, despite it being specced as only necessarily 32 # bits wide, causing portability problems all over. There are # prototype conflicts between things like # glAttachShader(GLuint program, GLuint shader) and # glAttachObjectARB(GLhandleARB container, GLhandleARB obj), # even though they are marked as aliases in the XML (and being # aliases in Mesa). # # We retain those aliases. In the x86_64 ABI, the first 6 # args are stored in 64-bit registers, so the calls end up # being the same despite the different types. We just need to # add a cast to uintptr_t to shut up the compiler. if arg_type == 'GLhandleARB': assert len(self.args) < 6 arg_list_name = '(uintptr_t)' + arg_name else: arg_list_name = arg_name self.args.append((arg_type, arg_name)) if self.args_decl == 'void': self.args_list = arg_list_name self.args_decl = arg_type + ' ' + arg_name else: self.args_list += ', ' + arg_list_name self.args_decl += ', ' + arg_type + ' ' + arg_name def add_provider(self, condition, loader, condition_name): self.providers[condition_name] = GLProvider(condition, condition_name, loader, self.name) def add_alias(self, ext): assert self.alias_func is None self.alias_exts.append(ext) ext.alias_func = self class Generator(object): def __init__(self, target): self.target = target self.enums = {} self.functions = {} self.sorted_functions = [] self.enum_string_offset = {} self.max_enum_name_len = 1 self.entrypoint_string_offset = {} self.copyright_comment = None self.typedefs = '' self.out_file = None # GL versions named in the registry, which we should generate # #defines for. self.supported_versions = set() # Extensions named in the registry, which we should generate # #defines for. self.supported_extensions = set() # Dictionary mapping human-readable names of providers to a C # enum token that will be used to reference those names, to # reduce generated binary size. self.provider_enum = {} # Dictionary mapping human-readable names of providers to C # code to detect if it's present. self.provider_condition = {} # Dictionary mapping human-readable names of providers to # format strings for fetching the function pointer when # provided the name of the symbol to be requested. self.provider_loader = {} def all_text_until_element_name(self, element, element_name): text = '' if element.text is not None: text += element.text for child in element: if child.tag == element_name: break if child.text: text += child.text if child.tail: text += child.tail return text def out(self, text): self.out_file.write(text) def outln(self, text): self.out_file.write(text + '\n') def parse_typedefs(self, reg): for t in reg.findall('types/type'): if 'name' in t.attrib and t.attrib['name'] not in {'GLhandleARB'}: continue # The gles1/gles2-specific types are redundant # declarations, and the different types used for them (int # vs int32_t) caused problems on win32 builds. api = t.get('api') if api: continue if t.text is not None: self.typedefs += t.text for child in t: if child.tag == 'apientry': self.typedefs += 'APIENTRY' if child.text: self.typedefs += child.text if child.tail: self.typedefs += child.tail self.typedefs += '\n' def parse_enums(self, reg): for enum in reg.findall('enums/enum'): name = enum.get('name') # wgl.xml's 0xwhatever definitions end up colliding with # wingdi.h's decimal definitions of these. if name in ['WGL_SWAP_OVERLAY', 'WGL_SWAP_UNDERLAY', 'WGL_SWAP_MAIN_PLANE']: continue self.max_enum_name_len = max(self.max_enum_name_len, len(name)) self.enums[name] = enum.get('value') def get_function_return_type(self, proto): # Everything up to the start of the name element is the return type. return self.all_text_until_element_name(proto, 'name').strip() def parse_function_definitions(self, reg): for command in reg.findall('commands/command'): proto = command.find('proto') name = proto.find('name').text ret_type = self.get_function_return_type(proto) func = GLFunction(ret_type, name) for arg in command.findall('param'): func.add_arg(self.all_text_until_element_name(arg, 'name').strip(), arg.find('name').text) alias = command.find('alias') if alias is not None: # Note that some alias references appear before the # target command is defined (glAttachObjectARB() -> # glAttachShader(), for example). func.alias_name = alias.get('name') self.functions[name] = func def drop_weird_glx_functions(self): # Drop a few ancient SGIX GLX extensions that use types not defined # anywhere in Xlib. In glxext.h, they're protected by #ifdefs for the # headers that defined them. weird_functions = [name for name, func in self.functions.items() if 'VLServer' in func.args_decl or 'DMparams' in func.args_decl] for name in weird_functions: del self.functions[name] def resolve_aliases(self): for func in self.functions.values(): # Find the root of the alias tree, and add ourselves to it. if func.alias_name != func.name: alias_func = func while alias_func.alias_name != alias_func.name: alias_func = self.functions[alias_func.alias_name] func.alias_name = alias_func.name func.alias_func = alias_func alias_func.alias_exts.append(func) def prepare_provider_enum(self): self.provider_enum = {} # We assume that for any given provider, all functions using # it will have the same loader. This lets us generate a # general C function for detecting conditions and calling the # dlsym/getprocaddress, and have our many resolver stubs just # call it with a table of values. for func in self.functions.values(): for provider in func.providers.values(): if provider.condition_name in self.provider_enum: assert self.provider_condition[provider.condition_name] == provider.condition assert self.provider_loader[provider.condition_name] == provider.loader continue self.provider_enum[provider.condition_name] = provider.enum self.provider_condition[provider.condition_name] = provider.condition self.provider_loader[provider.condition_name] = provider.loader def sort_functions(self): self.sorted_functions = sorted(self.functions.values(), key=lambda func: func.name) def process_require_statements(self, feature, condition, loader, human_name): for command in feature.findall('require/command'): name = command.get('name') # wgl.xml describes 6 functions in WGL 1.0 that are in # gdi32.dll instead of opengl32.dll, and we would need to # change up our symbol loading to support that. Just # don't wrap those functions. if self.target == 'wgl' and 'wgl' not in name: del self.functions[name] continue func = self.functions[name] func.add_provider(condition, loader, human_name) def parse_function_providers(self, reg): for feature in reg.findall('feature'): api = feature.get('api') # string gl, gles1, gles2, glx m = re.match(r'([0-9])\.([0-9])', feature.get('number')) version = int(m.group(1)) * 10 + int(m.group(2)) self.supported_versions.add(feature.get('name')) if api == 'gl': human_name = 'Desktop OpenGL {0}'.format(feature.get('number')) condition = 'epoxy_is_desktop_gl()' loader = 'epoxy_get_core_proc_address({0}, {1})'.format('{0}', version) if version >= 11: condition += ' && epoxy_conservative_gl_version() >= {0}'.format(version) elif api == 'gles2': human_name = 'OpenGL ES {0}'.format(feature.get('number')) condition = '!epoxy_is_desktop_gl() && epoxy_gl_version() >= {0}'.format(version) if version <= 20: loader = 'epoxy_gles2_dlsym({0})' else: loader = 'epoxy_gles3_dlsym({0})' elif api == 'gles1': human_name = 'OpenGL ES 1.0' condition = '!epoxy_is_desktop_gl() && epoxy_gl_version() >= 10 && epoxy_gl_version() < 20' loader = 'epoxy_gles1_dlsym({0})' elif api == 'glx': human_name = 'GLX {0}'.format(version) # We could just always use GPA for loading everything # but glXGetProcAddress(), but dlsym() is a more # efficient lookup. if version > 13: condition = 'epoxy_conservative_glx_version() >= {0}'.format(version) loader = 'glXGetProcAddress((const GLubyte *){0})' else: condition = 'true' loader = 'epoxy_glx_dlsym({0})' elif api == 'egl': human_name = 'EGL {0}'.format(version) if version > 10: condition = 'epoxy_conservative_egl_version() >= {0}'.format(version) else: condition = 'true' # All EGL core entrypoints must be dlsym()ed out -- # eglGetProcAdddress() will return NULL. loader = 'epoxy_egl_dlsym({0})' elif api == 'wgl': human_name = 'WGL {0}'.format(version) condition = 'true' loader = 'epoxy_gl_dlsym({0})' elif api == 'glsc2': continue else: sys.exit('unknown API: "{0}"'.format(api)) self.process_require_statements(feature, condition, loader, human_name) for extension in reg.findall('extensions/extension'): extname = extension.get('name') cond_extname = "enum_string[enum_string_offsets[i]]" self.supported_extensions.add(extname) # 'supported' is a set of strings like gl, gles1, gles2, # or glx, which are separated by '|' apis = extension.get('supported').split('|') if 'glx' in apis: condition = 'epoxy_conservative_has_glx_extension(provider_name)' loader = 'glXGetProcAddress((const GLubyte *){0})' self.process_require_statements(extension, condition, loader, extname) if 'egl' in apis: condition = 'epoxy_conservative_has_egl_extension(provider_name)' loader = 'eglGetProcAddress({0})' self.process_require_statements(extension, condition, loader, extname) if 'wgl' in apis: condition = 'epoxy_conservative_has_wgl_extension(provider_name)' loader = 'wglGetProcAddress({0})' self.process_require_statements(extension, condition, loader, extname) if {'gl', 'gles1', 'gles2'}.intersection(apis): condition = 'epoxy_conservative_has_gl_extension(provider_name)' loader = 'epoxy_get_proc_address({0})' self.process_require_statements(extension, condition, loader, extname) def fixup_bootstrap_function(self, name, loader): # We handle glGetString(), glGetIntegerv(), and # glXGetProcAddressARB() specially, because we need to use # them in the process of deciding on loaders for resolving, # and the naive code generation would result in their # resolvers calling their own resolvers. if name not in self.functions: return func = self.functions[name] func.providers = {} func.add_provider('true', loader, 'always present') def parse(self, xml_file): reg = ET.parse(xml_file) comment = reg.find('comment') if comment is not None: self.copyright_comment = comment.text else: self.copyright_comment = '' self.parse_typedefs(reg) self.parse_enums(reg) self.parse_function_definitions(reg) self.parse_function_providers(reg) def write_copyright_comment_body(self): for line in self.copyright_comment.splitlines(): if '-----' in line: break self.outln(' * ' + line) def write_enums(self): for name in sorted(self.supported_versions): self.outln('#define {0} 1'.format(name)) self.outln('') for name in sorted(self.supported_extensions): self.outln('#define {0} 1'.format(name)) self.outln('') # We want to sort by enum number (which puts a bunch of things # in a logical order), then by name after that, so we do those # sorts in reverse. This is still way uglier than doing some # sort based on what version/extensions things are introduced # in, but we haven't paid any attention to those attributes # for enums yet. sorted_by_name = sorted(self.enums.keys()) sorted_by_number = sorted(sorted_by_name, key=lambda name: self.enums[name]) for name in sorted_by_number: self.outln('#define ' + name.ljust(self.max_enum_name_len + 3) + self.enums[name] + '') def write_function_ptr_typedefs(self): for func in self.sorted_functions: self.outln('typedef {0} (GLAPIENTRY *{1})({2});'.format(func.ret_type, func.ptr_type, func.args_decl)) def write_header_header(self, out_file): self.close() self.out_file = open(out_file, 'w') self.outln('/* GL dispatch header.') self.outln(' * This is code-generated from the GL API XML files from Khronos.') self.write_copyright_comment_body() self.outln(' */') self.outln('') self.outln('#pragma once') self.outln('#include ') self.outln('#include ') self.outln('') def write_header(self, out_file): self.write_header_header(out_file) self.outln('#include "epoxy/common.h"') if self.target != "gl": self.outln('#include "epoxy/gl.h"') if self.target == "egl": self.outln('#include "EGL/eglplatform.h"') # Account for older eglplatform.h, which doesn't define # the EGL_CAST macro. self.outln('#ifndef EGL_CAST') self.outln('#if defined(__cplusplus)') self.outln('#define EGL_CAST(type, value) (static_cast(value))') self.outln('#else') self.outln('#define EGL_CAST(type, value) ((type) (value))') self.outln('#endif') self.outln('#endif') else: # Add some ridiculous inttypes.h redefinitions that are # from khrplatform.h and not included in the XML. We # don't directly include khrplatform.h because it's not # present on many systems, and coming up with #ifdefs to # decide when it's not present would be hard. self.outln('#define __khrplatform_h_ 1') self.outln('typedef int8_t khronos_int8_t;') self.outln('typedef int16_t khronos_int16_t;') self.outln('typedef int32_t khronos_int32_t;') self.outln('typedef int64_t khronos_int64_t;') self.outln('typedef uint8_t khronos_uint8_t;') self.outln('typedef uint16_t khronos_uint16_t;') self.outln('typedef uint32_t khronos_uint32_t;') self.outln('typedef uint64_t khronos_uint64_t;') self.outln('typedef float khronos_float_t;') self.outln('#ifdef _WIN64') self.outln('typedef signed long long int khronos_intptr_t;') self.outln('typedef unsigned long long int khronos_uintptr_t;') self.outln('typedef signed long long int khronos_ssize_t;') self.outln('typedef unsigned long long int khronos_usize_t;') self.outln('#else') self.outln('typedef signed long int khronos_intptr_t;') self.outln('typedef unsigned long int khronos_uintptr_t;') self.outln('typedef signed long int khronos_ssize_t;') self.outln('typedef unsigned long int khronos_usize_t;') self.outln('#endif') self.outln('typedef uint64_t khronos_utime_nanoseconds_t;') self.outln('typedef int64_t khronos_stime_nanoseconds_t;') self.outln('#define KHRONOS_MAX_ENUM 0x7FFFFFFF') self.outln('typedef enum {') self.outln(' KHRONOS_FALSE = 0,') self.outln(' KHRONOS_TRUE = 1,') self.outln(' KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM') self.outln('} khronos_boolean_enum_t;') if self.target == "glx": self.outln('#include ') self.outln('#include ') self.out(self.typedefs) self.outln('') self.write_enums() self.outln('') self.write_function_ptr_typedefs() for func in self.sorted_functions: self.outln('EPOXY_PUBLIC {0} (EPOXY_CALLSPEC *epoxy_{1})({2});'.format(func.ret_type, func.name, func.args_decl)) self.outln('') for func in self.sorted_functions: self.outln('#define {0} epoxy_{0}'.format(func.name)) def write_function_ptr_resolver(self, func): self.outln('static {0}'.format(func.ptr_type)) self.outln('epoxy_{0}_resolver(void)'.format(func.wrapped_name)) self.outln('{') providers = [] # Make a local list of all the providers for this alias group alias_root = func if func.alias_func: alias_root = func.alias_func for provider in alias_root.providers.values(): providers.append(provider) for alias_func in alias_root.alias_exts: for provider in alias_func.providers.values(): providers.append(provider) # Add some partial aliases of a few functions. These are ones # that aren't quite aliases, because of some trivial behavior # difference (like whether to produce an error for a # non-Genned name), but where we'd like to fall back to the # similar function if the proper one isn't present. half_aliases = { 'glBindVertexArray' : 'glBindVertexArrayAPPLE', 'glBindVertexArrayAPPLE' : 'glBindVertexArray', 'glBindFramebuffer' : 'glBindFramebufferEXT', 'glBindFramebufferEXT' : 'glBindFramebuffer', 'glBindRenderbuffer' : 'glBindRenderbufferEXT', 'glBindRenderbufferEXT' : 'glBindRenderbuffer', } if func.name in half_aliases: alias_func = self.functions[half_aliases[func.name]] for provider in alias_func.providers.values(): providers.append(provider) def provider_sort(provider): return (provider.name != func.name, provider.name, provider.enum) providers.sort(key=provider_sort) if len(providers) != 1: self.outln(' static const enum {0}_provider providers[] = {{'.format(self.target)) for provider in providers: self.outln(' {0},'.format(provider.enum)) self.outln(' {0}_provider_terminator'.format(self.target)) self.outln(' };') self.outln(' static const uint32_t entrypoints[] = {') if len(providers) > 1: for provider in providers: self.outln(' {0} /* "{1}" */,'.format(self.entrypoint_string_offset[provider.name], provider.name)) else: self.outln(' 0 /* None */,') self.outln(' };') self.outln(' return {0}_provider_resolver(entrypoint_strings + {1} /* "{2}" */,'.format(self.target, self.entrypoint_string_offset[func.name], func.name)) self.outln(' providers, entrypoints);') else: assert providers[0].name == func.name self.outln(' return {0}_single_resolver({1}, {2} /* {3} */);'.format(self.target, providers[0].enum, self.entrypoint_string_offset[func.name], func.name)) self.outln('}') self.outln('') def write_thunks(self, func): # Writes out the function that's initially plugged into the # global function pointer, which resolves, updates the global # function pointer, and calls down to it. # # It also writes out the actual initialized global function # pointer. if func.ret_type == 'void': self.outln('GEN_THUNKS({0}, ({1}), ({2}))'.format(func.wrapped_name, func.args_decl, func.args_list)) else: self.outln('GEN_THUNKS_RET({0}, {1}, ({2}), ({3}))'.format(func.ret_type, func.wrapped_name, func.args_decl, func.args_list)) def write_function_pointer(self, func): self.outln('{0} epoxy_{1} = epoxy_{1}_global_rewrite_ptr;'.format(func.ptr_type, func.wrapped_name)) self.outln('') def write_provider_enums(self): # Writes the enum declaration for the list of providers # supported by gl_provider_resolver() self.outln('') self.outln('enum {0}_provider {{'.format(self.target)) sorted_providers = sorted(self.provider_enum.keys()) # We always put a 0 enum first so that we can have a # terminator in our arrays self.outln(' {0}_provider_terminator = 0,'.format(self.target)) for human_name in sorted_providers: enum = self.provider_enum[human_name] self.outln(' {0},'.format(enum)) self.outln('} PACKED;') self.outln('ENDPACKED') self.outln('') def write_provider_enum_strings(self): # Writes the mapping from enums to the strings describing them # for epoxy_print_failure_reasons(). sorted_providers = sorted(self.provider_enum.keys()) offset = 0 self.outln('static const char *enum_string =') for human_name in sorted_providers: self.outln(' "{0}\\0"'.format(human_name)) self.enum_string_offset[human_name] = offset offset += len(human_name.replace('\\', '')) + 1 self.outln(' ;') self.outln('') # We're using uint16_t for the offsets. assert offset < 65536 self.outln('static const uint16_t enum_string_offsets[] = {') self.outln(' -1, /* {0}_provider_terminator, unused */'.format(self.target)) for human_name in sorted_providers: enum = self.provider_enum[human_name] self.outln(' {1}, /* {0} */'.format(human_name, self.enum_string_offset[human_name])) self.outln('};') self.outln('') def write_entrypoint_strings(self): self.outln('static const char entrypoint_strings[] = {') offset = 0 for func in self.sorted_functions: if func.name not in self.entrypoint_string_offset: self.entrypoint_string_offset[func.name] = offset offset += len(func.name) + 1 for c in func.name: self.outln(" '{0}',".format(c)) self.outln(' 0, // {0}'.format(func.name)) self.outln(' 0 };') # We're using uint16_t for the offsets. #assert(offset < 65536) self.outln('') def write_provider_resolver(self): self.outln('static void *{0}_provider_resolver(const char *name,'.format(self.target)) self.outln(' const enum {0}_provider *providers,'.format(self.target)) self.outln(' const uint32_t *entrypoints)') self.outln('{') self.outln(' int i;') self.outln(' for (i = 0; providers[i] != {0}_provider_terminator; i++) {{'.format(self.target)) self.outln(' const char *provider_name = enum_string + enum_string_offsets[providers[i]];') self.outln(' switch (providers[i]) {') self.outln('') for human_name in sorted(self.provider_enum.keys()): enum = self.provider_enum[human_name] self.outln(' case {0}:'.format(enum)) self.outln(' if ({0})'.format(self.provider_condition[human_name])) self.outln(' return {0};'.format(self.provider_loader[human_name]).format("entrypoint_strings + entrypoints[i]")) self.outln(' break;') self.outln(' case {0}_provider_terminator:'.format(self.target)) self.outln(' abort(); /* Not reached */') self.outln(' }') self.outln(' }') self.outln('') self.outln(' if (epoxy_resolver_failure_handler)') self.outln(' return epoxy_resolver_failure_handler(name);') self.outln('') # If the function isn't provided by any known extension, print # something useful for the poor application developer before # aborting. (In non-epoxy GL usage, the app developer would # call into some blank stub function and segfault). self.outln(' fprintf(stderr, "No provider of %s found. Requires one of:\\n", name);') self.outln(' for (i = 0; providers[i] != {0}_provider_terminator; i++) {{'.format(self.target)) self.outln(' fprintf(stderr, " %s\\n", enum_string + enum_string_offsets[providers[i]]);') self.outln(' }') self.outln(' if (providers[0] == {0}_provider_terminator) {{'.format(self.target)) self.outln(' fprintf(stderr, " No known providers. This is likely a bug "') self.outln(' "in libepoxy code generation\\n");') self.outln(' }') self.outln(' abort();') self.outln('}') self.outln('') single_resolver_proto = '{0}_single_resolver(enum {0}_provider provider, uint32_t entrypoint_offset)'.format(self.target) self.outln('EPOXY_NOINLINE static void *') self.outln('{0};'.format(single_resolver_proto)) self.outln('') self.outln('static void *') self.outln('{0}'.format(single_resolver_proto)) self.outln('{') self.outln(' enum {0}_provider providers[] = {{'.format(self.target)) self.outln(' provider,') self.outln(' {0}_provider_terminator'.format(self.target)) self.outln(' };') self.outln(' return {0}_provider_resolver(entrypoint_strings + entrypoint_offset,'.format(self.target)) self.outln(' providers, &entrypoint_offset);') self.outln('}') self.outln('') def write_source(self, f): self.close() self.out_file = open(f, 'w') self.outln('/* GL dispatch code.') self.outln(' * This is code-generated from the GL API XML files from Khronos.') self.write_copyright_comment_body() self.outln(' */') self.outln('') self.outln('#include "config.h"') self.outln('') self.outln('#include ') self.outln('#include ') self.outln('#include ') self.outln('') self.outln('#include "dispatch_common.h"') self.outln('#include "epoxy/{0}.h"'.format(self.target)) self.outln('') self.outln('#ifdef __GNUC__') self.outln('#define EPOXY_NOINLINE __attribute__((noinline))') self.outln('#elif defined (_MSC_VER)') self.outln('#define EPOXY_NOINLINE __declspec(noinline)') self.outln('#endif') self.outln('struct dispatch_table {') for func in self.sorted_functions: self.outln(' {0} epoxy_{1};'.format(func.ptr_type, func.wrapped_name)) self.outln('};') self.outln('') # Early declaration, so we can declare the real thing at the # bottom. (I want the function_ptr_resolver as the first # per-GL-call code, since it's the most interesting to see # when you search for the implementation of a call) self.outln('#if USING_DISPATCH_TABLE') self.outln('static inline struct dispatch_table *') self.outln('get_dispatch_table(void);') self.outln('') self.outln('#endif') self.write_provider_enums() self.write_provider_enum_strings() self.write_entrypoint_strings() self.write_provider_resolver() for func in self.sorted_functions: self.write_function_ptr_resolver(func) for func in self.sorted_functions: self.write_thunks(func) self.outln('') self.outln('#if USING_DISPATCH_TABLE') self.outln('static struct dispatch_table resolver_table = {') for func in self.sorted_functions: self.outln(' epoxy_{0}_dispatch_table_rewrite_ptr, /* {0} */'.format(func.wrapped_name)) self.outln('};') self.outln('') self.outln('uint32_t {0}_tls_index;'.format(self.target)) self.outln('uint32_t {0}_tls_size = sizeof(struct dispatch_table);'.format(self.target)) self.outln('') self.outln('static inline struct dispatch_table *') self.outln('get_dispatch_table(void)') self.outln('{') self.outln(' return TlsGetValue({0}_tls_index);'.format(self.target)) self.outln('}') self.outln('') self.outln('void') self.outln('{0}_init_dispatch_table(void)'.format(self.target)) self.outln('{') self.outln(' struct dispatch_table *dispatch_table = get_dispatch_table();') self.outln(' memcpy(dispatch_table, &resolver_table, sizeof(resolver_table));') self.outln('}') self.outln('') self.outln('void') self.outln('{0}_switch_to_dispatch_table(void)'.format(self.target)) self.outln('{') for func in self.sorted_functions: self.outln(' epoxy_{0} = epoxy_{0}_dispatch_table_thunk;'.format(func.wrapped_name)) self.outln('}') self.outln('') self.outln('#endif /* !USING_DISPATCH_TABLE */') for func in self.sorted_functions: self.write_function_pointer(func) def close(self): if self.out_file: self.out_file.close() self.out_file = None argparser = argparse.ArgumentParser(description='Generate GL dispatch wrappers.') argparser.add_argument('files', metavar='file.xml', nargs='+', help='GL API XML files to be parsed') argparser.add_argument('--outputdir', metavar='dir', required=False, help='Destination directory for files (default to current dir)') argparser.add_argument('--includedir', metavar='dir', required=False, help='Destination directory for headers') argparser.add_argument('--srcdir', metavar='dir', required=False, help='Destination directory for source') argparser.add_argument('--source', dest='source', action='store_true', required=False, help='Generate the source file') argparser.add_argument('--no-source', dest='source', action='store_false', required=False, help='Do not generate the source file') argparser.add_argument('--header', dest='header', action='store_true', required=False, help='Generate the header file') argparser.add_argument('--no-header', dest='header', action='store_false', required=False, help='Do not generate the header file') args = argparser.parse_args() if args.outputdir: outputdir = args.outputdir else: outputdir = os.getcwd() if args.includedir: includedir = args.includedir else: includedir = outputdir if args.srcdir: srcdir = args.srcdir else: srcdir = outputdir build_source = args.source build_header = args.header if not build_source and not build_header: build_source = True build_header = True for f in args.files: name = os.path.basename(f).split('.xml')[0] generator = Generator(name) generator.parse(f) generator.drop_weird_glx_functions() # This is an ANSI vs Unicode function, handled specially by # include/epoxy/wgl.h if 'wglUseFontBitmaps' in generator.functions: del generator.functions['wglUseFontBitmaps'] generator.sort_functions() generator.resolve_aliases() generator.fixup_bootstrap_function('glGetString', 'epoxy_get_bootstrap_proc_address({0})') generator.fixup_bootstrap_function('glGetIntegerv', 'epoxy_get_bootstrap_proc_address({0})') # While this is technically exposed as a GLX extension, it's # required to be present as a public symbol by the Linux OpenGL # ABI. generator.fixup_bootstrap_function('glXGetProcAddress', 'epoxy_glx_dlsym({0})') generator.prepare_provider_enum() if build_header: generator.write_header(os.path.join(includedir, name + '_generated.h')) if build_source: generator.write_source(os.path.join(srcdir, name + '_generated_dispatch.c')) generator.close() libepoxy-1.5.10/src/meson.build000066400000000000000000000062651420344275400164000ustar00rootroot00000000000000# Configuration file configure_file(output: 'config.h', configuration: conf) # List of generated sources: # - name of the generated file # - registry source file # - additional sources generated_sources = [ [ 'gl_generated_dispatch.c', gl_registry, [ 'dispatch_common.c', 'dispatch_common.h' ] ] ] if build_egl generated_sources += [ [ 'egl_generated_dispatch.c', egl_registry, 'dispatch_egl.c' ] ] endif if build_glx generated_sources += [ [ 'glx_generated_dispatch.c', glx_registry, 'dispatch_glx.c' ] ] endif if build_wgl generated_sources += [ [ 'wgl_generated_dispatch.c', wgl_registry, 'dispatch_wgl.c' ] ] endif gen_sources = [ ] sources = [ ] foreach g: generated_sources gen_source = g[0] registry = g[1] source = g[2] generated = custom_target(gen_source, input: registry, output: [ gen_source ], command: [ gen_dispatch_py, '--source', '--no-header', '--outputdir=@OUTDIR@', '@INPUT@', ]) gen_sources += [ generated ] sources += [ source ] endforeach epoxy_sources = sources + gen_sources common_ldflags = [] if host_system == 'linux' and cc.get_id() == 'gcc' common_ldflags += cc.get_supported_link_arguments([ '-Wl,-Bsymbolic-functions', '-Wl,-z,relro' ]) endif # Maintain compatibility with autotools; see: https://github.com/anholt/libepoxy/issues/108 darwin_versions = [1, '1.0'] epoxy_deps = [ dl_dep, ] if host_system == 'windows' epoxy_deps += [ opengl32_dep, gdi32_dep ] endif if enable_x11 epoxy_deps += [ x11_headers_dep, ] endif if build_egl epoxy_deps += [ elg_headers_dep, ] endif libepoxy = library( 'epoxy', sources: epoxy_sources + epoxy_headers, version: '0.0.0', darwin_versions: darwin_versions, install: true, dependencies: epoxy_deps, include_directories: libepoxy_inc, c_args: common_cflags + visibility_cflags, link_args: common_ldflags, ) epoxy_has_glx = build_glx ? '1' : '0' epoxy_has_egl = build_egl ? '1' : '0' epoxy_has_wgl = build_wgl ? '1' : '0' libepoxy_dep = declare_dependency( link_with: libepoxy, include_directories: libepoxy_inc, dependencies: epoxy_deps, sources: epoxy_headers, variables: { 'epoxy_has_glx': epoxy_has_glx, 'epoxy_has_egl': epoxy_has_egl, 'epoxy_has_wgl': epoxy_has_wgl, }, ) # We don't want to add these dependencies to the library, as they are # not needed when building Epoxy; we do want to add them to the generated # pkg-config file, for consumers of Epoxy gl_reqs = [] if gl_dep.found() and gl_dep.type_name() == 'pkgconfig' gl_reqs += 'gl' endif if build_egl and egl_dep.found() and egl_dep.type_name() == 'pkgconfig' gl_reqs += 'egl' endif pkg = import('pkgconfig') pkg.generate( libraries: libepoxy, name: 'epoxy', description: 'GL dispatch library', version: meson.project_version(), variables: [ 'epoxy_has_glx=@0@'.format(epoxy_has_glx), 'epoxy_has_egl=@0@'.format(epoxy_has_egl), 'epoxy_has_wgl=@0@'.format(epoxy_has_wgl), ], filebase: 'epoxy', requires_private: ' '.join(gl_reqs), ) libepoxy-1.5.10/test/000077500000000000000000000000001420344275400144155ustar00rootroot00000000000000libepoxy-1.5.10/test/cgl_core.c000066400000000000000000000040221420344275400163340ustar00rootroot00000000000000/* This is a copy of the test used by HomeBrew's libepoxy recipe, * originally written by Mikko Lehtonen. * * The Homebrew recipe is released under the BSD 2-Clause license. * * Copyright (c) 2009-present, Homebrew contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include int main (void) { CGLPixelFormatAttribute attribs[] = {0}; CGLPixelFormatObj pix; CGLContextObj ctx; int npix; CGLChoosePixelFormat(attribs, &pix, &npix); CGLCreateContext(pix, (void *) 0, &ctx); glClear(GL_COLOR_BUFFER_BIT); CGLReleaseContext(ctx); CGLReleasePixelFormat(pix); return 0; } libepoxy-1.5.10/test/cgl_epoxy_api.c000066400000000000000000000051351420344275400174070ustar00rootroot00000000000000/* * Copyright 2018 Emmanuele Bassi * * 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. */ /** * @file cgl_epoxy_api.c * * Tests the Epoxy API using the CoreGraphics OpenGL framework. */ #include #include #include #include #include #include int main (void) { CGLPixelFormatAttribute attribs[] = {0}; CGLPixelFormatObj pix; CGLContextObj ctx; const char *string; bool pass = true; int npix; GLint shader; CGLChoosePixelFormat(attribs, &pix, &npix); CGLCreateContext(pix, (void *) 0, &ctx); CGLSetCurrentContext(ctx); if (!epoxy_is_desktop_gl()) { fputs("Claimed not to be desktop\n", stderr); pass = false; } if (epoxy_gl_version() < 20) { fprintf(stderr, "Claimed to be GL version %d\n", epoxy_gl_version()); pass = false; } if (epoxy_glsl_version() < 100) { fprintf(stderr, "Claimed to have GLSL version %d\n", epoxy_glsl_version()); pass = false; } string = (const char *)glGetString(GL_VERSION); printf("GL version: %s - Epoxy: %d\n", string, epoxy_gl_version()); string = (const char *)glGetString(GL_SHADING_LANGUAGE_VERSION); printf("GLSL version: %s - Epoxy: %d\n", string, epoxy_glsl_version()); shader = glCreateShader(GL_FRAGMENT_SHADER); pass = glIsShader(shader); CGLSetCurrentContext(NULL); CGLReleaseContext(ctx); CGLReleasePixelFormat(pix); return pass != true; } libepoxy-1.5.10/test/dlwrap.c000066400000000000000000000237121420344275400160570ustar00rootroot00000000000000/* Copyright © 2013, Intel Corporation * * 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 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. */ /** @file dlwrap.c * * Implements a wrapper for dlopen() and dlsym() so that epoxy will * end up finding symbols from the testcases named * "override_EGL_eglWhatever()" or "override_GLES2_glWhatever()" or * "override_GL_glWhatever()" when it tries to dlopen() and dlsym() * the real GL or EGL functions in question. * * This lets us simulate some target systems in the test suite, or * just stub out GL functions so we can be sure of what's being * called. */ /* dladdr is a glibc extension */ #define _GNU_SOURCE #include #include #include #include #include #include #include "dlwrap.h" #define STRNCMP_LITERAL(var, literal) \ strncmp ((var), (literal), sizeof (literal) - 1) #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0])) void *libfips_handle; typedef void *(*fips_dlopen_t)(const char *filename, int flag); typedef void *(*fips_dlsym_t)(void *handle, const char *symbol); void *override_EGL_eglGetProcAddress(const char *name); void *override_GL_glXGetProcAddress(const char *name); void *override_GL_glXGetProcAddressARB(const char *name); void __dlclose(void *handle); static struct libwrap { const char *filename; const char *symbol_prefix; void *handle; } wrapped_libs[] = { { "libGL.so", "GL", NULL }, { "libEGL.so", "EGL", NULL }, { "libGLESv2.so", "GLES2", NULL }, { "libOpenGL.so", "GL", NULL}, }; /* Match 'filename' against an internal list of libraries for which * libfips has wrappers. * * Returns true and sets *index_ret if a match is found. * Returns false if no match is found. */ static struct libwrap * find_wrapped_library(const char *filename) { unsigned i; if (!filename) return NULL; for (i = 0; i < ARRAY_SIZE(wrapped_libs); i++) { if (strncmp(wrapped_libs[i].filename, filename, strlen(wrapped_libs[i].filename)) == 0) { return &wrapped_libs[i]; } } return NULL; } /* Many (most?) OpenGL programs dlopen libGL.so.1 rather than linking * against it directly, which means they would not be seeing our * wrapped GL symbols via LD_PRELOAD. So we catch the dlopen in a * wrapper here and redirect it to our library. */ void * dlopen(const char *filename, int flag) { void *ret; struct libwrap *wrap; /* Before deciding whether to redirect this dlopen to our own * library, we call the real dlopen. This assures that any * expected side-effects from loading the intended library are * resolved. Below, we may still return a handle pointing to * our own library, and not what is opened here. */ ret = dlwrap_real_dlopen(filename, flag); /* If filename is not a wrapped library, just return real dlopen */ wrap = find_wrapped_library(filename); if (!wrap) return ret; wrap->handle = ret; /* We use wrapped_libs as our handles to libraries. */ return wrap; } /** * Wraps dlclose to hide our faked handles from it. */ void __dlclose(void *handle) { struct libwrap *wrap = handle; if (wrap < wrapped_libs || wrap >= wrapped_libs + ARRAY_SIZE(wrapped_libs)) { void (*real_dlclose)(void *handle) = dlwrap_real_dlsym(RTLD_NEXT, "__dlclose"); real_dlclose(handle); } } void * dlwrap_real_dlopen(const char *filename, int flag) { static fips_dlopen_t real_dlopen = NULL; if (!real_dlopen) { real_dlopen = (fips_dlopen_t) dlwrap_real_dlsym(RTLD_NEXT, "dlopen"); if (!real_dlopen) { fputs("Error: Failed to find symbol for dlopen.\n", stderr); exit(1); } } return real_dlopen(filename, flag); } /** * Return the dlsym() on the application's namespace for * "override__" */ static void * wrapped_dlsym(const char *prefix, const char *name) { char *wrap_name; void *symbol; if (asprintf(&wrap_name, "override_%s_%s", prefix, name) < 0) { fputs("Error: Failed to allocate memory.\n", stderr); abort(); } symbol = dlwrap_real_dlsym(RTLD_DEFAULT, wrap_name); free(wrap_name); return symbol; } /* Since we redirect dlopens of libGL.so and libEGL.so to libfips we * need to ensure that dlysm succeeds for all functions that might be * defined in the real, underlying libGL library. But we're far too * lazy to implement wrappers for function that would simply * pass-through, so instead we also wrap dlysm and arrange for it to * pass things through with RTLD_next if libfips does not have the * function desired. */ void * dlsym(void *handle, const char *name) { struct libwrap *wrap = handle; /* Make sure that handle is actually one of our wrapped libs. */ if (wrap < wrapped_libs || wrap >= wrapped_libs + ARRAY_SIZE(wrapped_libs)) { wrap = NULL; } /* Failing that, anything specifically requested from the * libfips library should be redirected to a real GL * library. */ if (wrap) { void *symbol = wrapped_dlsym(wrap->symbol_prefix, name); if (symbol) return symbol; else return dlwrap_real_dlsym(wrap->handle, name); } /* And anything else is some unrelated dlsym. Just pass it * through. (This also covers the cases of lookups with * special handles such as RTLD_DEFAULT or RTLD_NEXT.) */ return dlwrap_real_dlsym(handle, name); } void * dlwrap_real_dlsym(void *handle, const char *name) { static fips_dlsym_t real_dlsym = NULL; if (!real_dlsym) { /* FIXME: This brute-force, hard-coded searching for a versioned * symbol is really ugly. The only reason I'm doing this is because * I need some way to lookup the "dlsym" function in libdl, but * I can't use 'dlsym' to do it. So dlvsym works, but forces me * to guess what the right version is. * * Potential fixes here: * * 1. Use libelf to actually inspect libdl.so and * find the right version, (finding the right * libdl.so can be made easier with * dl_iterate_phdr). * * 2. Use libelf to find the offset of the 'dlsym' * symbol within libdl.so, (and then add this to * the base address at which libdl.so is loaded * as reported by dl_iterate_phdr). * * In the meantime, I'll just keep augmenting this * hard-coded version list as people report bugs. */ const char *version[] = { "GLIBC_2.17", "GLIBC_2.4", "GLIBC_2.3", "GLIBC_2.2.5", "GLIBC_2.2", "GLIBC_2.0", "FBSD_1.0" }; int num_versions = sizeof(version) / sizeof(version[0]); int i; for (i = 0; i < num_versions; i++) { real_dlsym = (fips_dlsym_t) dlvsym(RTLD_NEXT, "dlsym", version[i]); if (real_dlsym) break; } if (i == num_versions) { fputs("Internal error: Failed to find real dlsym\n", stderr); fputs("This may be a simple matter of fips not knowing about the version of GLIBC that\n" "your program is using. Current known versions are:\n\n\t", stderr); for (i = 0; i < num_versions; i++) fprintf(stderr, "%s ", version[i]); fputs("\n\nYou can inspect your version by first finding libdl.so.2:\n" "\n" "\tldd | grep libdl.so\n" "\n" "And then inspecting the version attached to the dlsym symbol:\n" "\n" "\treadelf -s /path/to/libdl.so.2 | grep dlsym\n" "\n" "And finally, adding the version to dlwrap.c:dlwrap_real_dlsym.\n", stderr); exit(1); } } return real_dlsym(handle, name); } void * override_GL_glXGetProcAddress(const char *name) { void *symbol; symbol = wrapped_dlsym("GL", name); if (symbol) return symbol; return DEFER_TO_GL("libGL.so.1", override_GL_glXGetProcAddress, "glXGetProcAddress", (name)); } void * override_GL_glXGetProcAddressARB(const char *name) { void *symbol; symbol = wrapped_dlsym("GL", name); if (symbol) return symbol; return DEFER_TO_GL("libGL.so.1", override_GL_glXGetProcAddressARB, "glXGetProcAddressARB", (name)); } void * override_EGL_eglGetProcAddress(const char *name) { void *symbol; if (!STRNCMP_LITERAL(name, "gl")) { symbol = wrapped_dlsym("GLES2", name); if (symbol) return symbol; } if (!STRNCMP_LITERAL(name, "egl")) { symbol = wrapped_dlsym("EGL", name); if (symbol) return symbol; } return DEFER_TO_GL("libEGL.so.1", override_EGL_eglGetProcAddress, "eglGetProcAddress", (name)); } libepoxy-1.5.10/test/dlwrap.h000066400000000000000000000053611420344275400160640ustar00rootroot00000000000000/* Copyright © 2013, Intel Corporation * * 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 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 DLWRAP_H #define DLWRAP_H #define _GNU_SOURCE #include /* Call the *real* dlopen. We have our own wrapper for dlopen that, of * necessity must use claim the symbol 'dlopen'. So whenever anything * internal needs to call the real, underlying dlopen function, the * thing to call is dlwrap_real_dlopen. */ void * dlwrap_real_dlopen(const char *filename, int flag); /* Perform a dlopen on the libfips library itself. * * Many places in fips need to lookup symbols within the libfips * library itself, (and not in any other library). This function * provides a reliable way to get a handle for performing such * lookups. * * The returned handle can be passed to dlwrap_real_dlsym for the * lookups. */ void * dlwrap_dlopen_libfips(void); /* Call the *real* dlsym. We have our own wrapper for dlsym that, of * necessity must use claim the symbol 'dlsym'. So whenever anything * internal needs to call the real, underlying dlysm function, the * thing to call is dlwrap_real_dlsym. */ void * dlwrap_real_dlsym(void *handle, const char *symbol); #define DEFER_TO_GL(library, func, name, args) \ ({ \ void *lib = dlwrap_real_dlopen(library, RTLD_LAZY | RTLD_LOCAL); \ typeof(&func) real_func = dlwrap_real_dlsym(lib, name); \ /* gcc extension -- func's return value is the return value of \ * the statement. \ */ \ real_func args; \ }) #endif libepoxy-1.5.10/test/egl_common.c000066400000000000000000000034241420344275400167030ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #include #include #include "egl_common.h" /** * Do whatever it takes to get us an EGL display for the system. * * This needs to be ported to other window systems. */ EGLDisplay * get_egl_display_or_skip(void) { Display *dpy = XOpenDisplay(NULL); EGLint major, minor; EGLDisplay *edpy; bool ok; if (!dpy) errx(77, "couldn't open display\n"); edpy = eglGetDisplay(dpy); if (!edpy) errx(1, "Couldn't get EGL display for X11 Display.\n"); ok = eglInitialize(edpy, &major, &minor); if (!ok) errx(1, "eglInitialize() failed\n"); return edpy; } libepoxy-1.5.10/test/egl_common.h000066400000000000000000000022611420344275400167060ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ EGLDisplay * get_egl_display_or_skip(void); libepoxy-1.5.10/test/egl_epoxy_api.c000066400000000000000000000102101420344275400173770ustar00rootroot00000000000000/* * Copyright 2018 Emmanuele Bassi * * 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. */ /** * @file epoxy_api.c * * Tests the Epoxy API using EGL. */ #ifdef __sun #define __EXTENSIONS__ #else #define _GNU_SOURCE #endif #include #include #include #include #include #include "epoxy/gl.h" #include "epoxy/egl.h" #include "egl_common.h" static bool make_egl_current_and_test(EGLDisplay *dpy, EGLContext ctx) { const char *string; GLuint shader; bool pass = true; eglMakeCurrent(dpy, NULL, NULL, ctx); if (!epoxy_is_desktop_gl()) { fputs("Claimed to be desktop\n", stderr); pass = false; } if (epoxy_gl_version() < 20) { fprintf(stderr, "Claimed to be GL version %d\n", epoxy_gl_version()); pass = false; } if (epoxy_glsl_version() < 100) { fprintf(stderr, "Claimed to have GLSL version %d\n", epoxy_glsl_version()); pass = false; } string = (const char *)glGetString(GL_VERSION); printf("GL version: %s - Epoxy: %d\n", string, epoxy_gl_version()); string = (const char *)glGetString(GL_SHADING_LANGUAGE_VERSION); printf("GLSL version: %s - Epoxy: %d\n", string, epoxy_glsl_version()); shader = glCreateShader(GL_FRAGMENT_SHADER); pass = glIsShader(shader); return pass; } static void init_egl(EGLDisplay *dpy, EGLContext *out_ctx) { static const EGLint config_attribs[] = { EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_RED_SIZE, 1, EGL_GREEN_SIZE, 1, EGL_BLUE_SIZE, 1, EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, EGL_NONE }; static const EGLint context_attribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE }; EGLContext ctx; EGLConfig cfg; EGLint count; if (!epoxy_has_egl_extension(dpy, "EGL_KHR_surfaceless_context")) errx(77, "Test requires EGL_KHR_surfaceless_context"); if (!eglBindAPI(EGL_OPENGL_API)) errx(77, "Couldn't initialize EGL with desktop GL\n"); if (!eglChooseConfig(dpy, config_attribs, &cfg, 1, &count)) errx(77, "Couldn't get an EGLConfig\n"); ctx = eglCreateContext(dpy, cfg, NULL, context_attribs); if (!ctx) errx(77, "Couldn't create a GL context\n"); *out_ctx = ctx; } int main(int argc, char **argv) { bool pass = true; EGLContext egl_ctx; EGLDisplay *dpy = get_egl_display_or_skip(); const char *extensions = eglQueryString(dpy, EGL_EXTENSIONS); char *first_space; char *an_extension; /* We don't have any extensions guaranteed by the ABI, so for the * touch test we just check if the first one is reported to be there. */ first_space = strstr(extensions, " "); if (first_space) { an_extension = strndup(extensions, first_space - extensions); } else { an_extension = strdup(extensions); } if (!epoxy_extension_in_string(extensions, an_extension)) errx(1, "Implementation reported absence of %s", an_extension); free(an_extension); init_egl(dpy, &egl_ctx); pass = make_egl_current_and_test(dpy, egl_ctx); return pass != true; } libepoxy-1.5.10/test/egl_gl.c000066400000000000000000000070611420344275400160160ustar00rootroot00000000000000/* * Copyright © 2014 Intel Corporation * * 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. */ /** * @file egl_gl.c * * Tests that epoxy works with EGL using desktop OpenGL. */ #define _GNU_SOURCE #include #include #include #include #include #include #include "epoxy/gl.h" #include "epoxy/egl.h" #include "epoxy/glx.h" #include "egl_common.h" #include "glx_common.h" #include "dlwrap.h" static bool make_egl_current_and_test(EGLDisplay *dpy, EGLContext ctx) { const char *string; GLuint shader; bool pass = true; eglMakeCurrent(dpy, NULL, NULL, ctx); if (!epoxy_is_desktop_gl()) { fputs("Claimed to be desktop\n", stderr); pass = false; } if (epoxy_gl_version() < 20) { fprintf(stderr, "Claimed to be GL version %d\n", epoxy_gl_version()); pass = false; } string = (const char *)glGetString(GL_VERSION); printf("GL version: %s\n", string); shader = glCreateShader(GL_FRAGMENT_SHADER); pass = glIsShader(shader); return pass; } static void init_egl(EGLDisplay **out_dpy, EGLContext *out_ctx) { EGLDisplay *dpy = get_egl_display_or_skip(); static const EGLint config_attribs[] = { EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_RED_SIZE, 1, EGL_GREEN_SIZE, 1, EGL_BLUE_SIZE, 1, EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, EGL_NONE }; static const EGLint context_attribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE }; EGLContext ctx; EGLConfig cfg; EGLint count; if (!epoxy_has_egl_extension(dpy, "EGL_KHR_surfaceless_context")) errx(77, "Test requires EGL_KHR_surfaceless_context"); if (!eglBindAPI(EGL_OPENGL_API)) errx(77, "Couldn't initialize EGL with desktop GL\n"); if (!eglChooseConfig(dpy, config_attribs, &cfg, 1, &count)) errx(77, "Couldn't get an EGLConfig\n"); ctx = eglCreateContext(dpy, cfg, NULL, context_attribs); if (!ctx) errx(77, "Couldn't create a GL context\n"); *out_dpy = dpy; *out_ctx = ctx; } int main(int argc, char **argv) { bool pass = true; EGLDisplay *egl_dpy; EGLContext egl_ctx; /* Force epoxy to have loaded both EGL and GLX libs already -- we * can't assume anything about symbol resolution based on having * EGL or GLX loaded. */ (void)glXGetCurrentContext(); (void)eglGetCurrentContext(); init_egl(&egl_dpy, &egl_ctx); pass = make_egl_current_and_test(egl_dpy, egl_ctx) && pass; return pass != true; } libepoxy-1.5.10/test/egl_has_extension_nocontext.c000066400000000000000000000046221420344275400223640ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** * @file egl_has_extension_nocontext.c * * Catches a bug in early development where eglGetProcAddress() with * no context bound would fail out in dispatch. */ #ifdef __sun #define __EXTENSIONS__ #else #define _GNU_SOURCE #endif #include #include #include #include #include #include "epoxy/gl.h" #include "epoxy/egl.h" #include "egl_common.h" int main(int argc, char **argv) { bool pass = true; EGLDisplay *dpy = get_egl_display_or_skip(); const char *extensions = eglQueryString(dpy, EGL_EXTENSIONS); char *first_space; char *an_extension; /* We don't have any extensions guaranteed by the ABI, so for the * touch test we just check if the first one is reported to be there. */ first_space = strstr(extensions, " "); if (first_space) { an_extension = strndup(extensions, first_space - extensions); } else { an_extension = strdup(extensions); } if (!epoxy_has_egl_extension(dpy, an_extension)) errx(1, "Implementation reported absence of %s", an_extension); free(an_extension); if (epoxy_has_egl_extension(dpy, "GLX_ARB_ham_sandwich")) errx(1, "Implementation reported presence of GLX_ARB_ham_sandwich"); return pass != true; } libepoxy-1.5.10/test/egl_without_glx.c000066400000000000000000000110731420344275400177670ustar00rootroot00000000000000/* * Copyright © 2014 Intel Corporation * * 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. */ /** * @file egl_without_glx.c * * Tries to test operation of the library on a GL stack with EGL and * GLES but no GLX or desktop GL (such as Arm's Mali GLES3 drivers). * This test is varied by the GLES_VERSION defined at compile time to * test either a GLES1-only or a GLES2-only system. */ #define _GNU_SOURCE #include #include #include #include #include #include #include "epoxy/gl.h" #include "epoxy/egl.h" #include "egl_common.h" /** * Wraps the system dlopen(), which libepoxy will end up calling when * it tries to dlopen() the API libraries, and errors out the * libraries we're trying to simulate not being installed on the * system. */ void * dlopen(const char *filename, int flag) { void * (*dlopen_unwrapped)(const char *filename, int flag); if (filename) { if (!strcmp(filename, "libGL.so.1")) return NULL; #if GLES_VERSION == 2 if (!strcmp(filename, "libGLESv1_CM.so.1")) return NULL; #else if (!strcmp(filename, "libGLESv2.so.2")) return NULL; #endif } dlopen_unwrapped = dlsym(RTLD_NEXT, "dlopen"); assert(dlopen_unwrapped); return dlopen_unwrapped(filename, flag); } static EGLenum last_api; static EGLenum extra_error = EGL_SUCCESS; /** * Override of the real libEGL's eglBindAPI to simulate the target * system's eglBindAPI. */ static EGLBoolean override_eglBindAPI(EGLenum api) { void *egl = dlopen("libEGL.so.1", RTLD_LAZY | RTLD_LOCAL); EGLBoolean (*real_eglBindAPI)(EGLenum api) = dlsym(egl, "eglBindAPI"); last_api = api; if (api == EGL_OPENGL_API) { extra_error = EGL_BAD_PARAMETER; return EGL_FALSE; } assert(real_eglBindAPI); return real_eglBindAPI(api); } /** * Override of the real libEGL's eglGetError() to feed back the error * that might have been generated by override_eglBindAPI(). */ static EGLint override_eglGetError(void) { void *egl = dlopen("libEGL.so.1", RTLD_LAZY | RTLD_LOCAL); EGLint (*real_eglGetError)(void) = dlsym(egl, "eglGetError"); if (extra_error != EGL_SUCCESS) { EGLenum error = extra_error; extra_error = EGL_SUCCESS; return error; } assert(real_eglGetError); return real_eglGetError(); } int main(int argc, char **argv) { bool pass = true; EGLDisplay *dpy = get_egl_display_or_skip(); EGLint context_attribs[] = { EGL_CONTEXT_CLIENT_VERSION, GLES_VERSION, EGL_NONE }; EGLConfig cfg; EGLint config_attribs[] = { EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_RED_SIZE, 1, EGL_GREEN_SIZE, 1, EGL_BLUE_SIZE, 1, EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, EGL_NONE }; EGLint count; EGLContext ctx; const unsigned char *string; epoxy_eglBindAPI = override_eglBindAPI; epoxy_eglGetError = override_eglGetError; if (!epoxy_has_egl_extension(dpy, "EGL_KHR_surfaceless_context")) errx(77, "Test requires EGL_KHR_surfaceless_context"); eglBindAPI(EGL_OPENGL_ES_API); if (!eglChooseConfig(dpy, config_attribs, &cfg, 1, &count)) errx(77, "Couldn't get an EGLConfig\n"); ctx = eglCreateContext(dpy, cfg, NULL, context_attribs); if (!ctx) errx(77, "Couldn't create a GLES%d context\n", GLES_VERSION); eglMakeCurrent(dpy, NULL, NULL, ctx); string = glGetString(GL_VERSION); printf("GL_VERSION: %s\n", string); assert(eglGetError() == EGL_SUCCESS); return pass != true; } libepoxy-1.5.10/test/gl_version.c000066400000000000000000000057701420344275400167410ustar00rootroot00000000000000/* * Copyright © 2018 Broadcom * * 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 #include #include "epoxy/gl.h" GLenum mock_enum; const char *mock_gl_version; const char *mock_glsl_version; static const GLubyte * EPOXY_CALLSPEC override_glGetString(GLenum name) { switch (name) { case GL_VERSION: return (GLubyte *)mock_gl_version; case GL_SHADING_LANGUAGE_VERSION: return (GLubyte *)mock_glsl_version; default: assert(!"unexpected glGetString() enum"); return 0; } } static bool test_version(const char *gl_string, int gl_version, const char *glsl_string, int glsl_version) { int epoxy_version; mock_gl_version = gl_string; mock_glsl_version = glsl_string; epoxy_version = epoxy_gl_version(); if (epoxy_version != gl_version) { fprintf(stderr, "glGetString(GL_VERSION) = \"%s\" returned epoxy_gl_version() " "%d instead of %d\n", gl_string, epoxy_version, gl_version); return false; } epoxy_version = epoxy_glsl_version(); if (epoxy_version != glsl_version) { fprintf(stderr, "glGetString() = \"%s\" returned epoxy_glsl_version() " "%d instead of %d\n", glsl_string, epoxy_version, glsl_version); return false; } return true; } int main(int argc, char **argv) { bool pass = true; epoxy_glGetString = override_glGetString; pass = pass && test_version("3.0 Mesa 13.0.6", 30, "1.30", 130); pass = pass && test_version("OpenGL ES 2.0 Mesa 20.1.0-devel (git-4bb19a330e)", 20, "OpenGL ES GLSL ES 1.0.16", 100); pass = pass && test_version("OpenGL ES 3.2 Mesa 18.3.0-devel", 32, "OpenGL ES GLSL ES 3.20", 320); pass = pass && test_version("4.5.0 NVIDIA 384.130", 45, "4.50", 450); return pass != true; } libepoxy-1.5.10/test/glx_alias_prefer_same_name.c000066400000000000000000000044011420344275400220730ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** * @file glx_gles2.c * * Catches a bug where a GLES2 context using * GLX_EXT_create_context_es2_profile would try to find the symbols in * libGLESv2.so.2 instead of libGL.so.1. */ #include #include #include #include "epoxy/gl.h" #include "epoxy/glx.h" #include #include "glx_common.h" static Display *dpy; static int last_call; #define CORE_FUNC_VAL 100 #define EXT_FUNC_VAL 101 void override_GL_glBindTexture(GLenum target); void override_GL_glBindTextureEXT(GLenum target); void override_GL_glBindTexture(GLenum target) { last_call = CORE_FUNC_VAL; } void override_GL_glBindTextureEXT(GLenum target) { last_call = EXT_FUNC_VAL; } int main(int argc, char **argv) { bool pass = true; dpy = get_display_or_skip(); make_glx_context_current_or_skip(dpy); if (!epoxy_has_gl_extension("GL_EXT_texture_object")) errx(77, "Test requires GL_EXT_texture_object"); glBindTexture(GL_TEXTURE_2D, 1); pass = pass && last_call == CORE_FUNC_VAL; glBindTextureEXT(GL_TEXTURE_2D, 1); pass = pass && last_call == EXT_FUNC_VAL; return pass != true; } libepoxy-1.5.10/test/glx_beginend.c000066400000000000000000000060151420344275400172100ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #include #include "epoxy/gl.h" #include "epoxy/glx.h" #include #include "glx_common.h" static Display *dpy; static bool has_argb2101010; static bool test_with_epoxy(void) { glBegin(GL_TRIANGLES); { /* Hit a base entrypoint that won't call gl_version() */ glVertex2f(0, 0); /* Hit an entrypoint that will call probably call gl_version() */ glMultiTexCoord4f(GL_TEXTURE0, 0.0, 0.0, 0.0, 0.0); /* Hit an entrypoint that will probably call * epoxy_conservative_has_extension(); */ if (has_argb2101010) { glTexCoordP4ui(GL_UNSIGNED_INT_2_10_10_10_REV, 0); } } glEnd(); /* No error should have been generated in the process. */ return glGetError() == 0; } #undef glBegin #undef glEnd extern void glBegin(GLenum primtype); extern void glEnd(void); static bool test_without_epoxy(void) { glBegin(GL_TRIANGLES); { /* Hit a base entrypoint that won't call gl_version() */ glVertex4f(0, 0, 0, 0); /* Hit an entrypoint that will call probably call gl_version() */ glMultiTexCoord3f(GL_TEXTURE0, 0.0, 0.0, 0.0); /* Hit an entrypoint that will probably call * epoxy_conservative_has_extension(); */ if (has_argb2101010) { glTexCoordP3ui(GL_UNSIGNED_INT_2_10_10_10_REV, 0); } } glEnd(); /* We can't make any assertions about error presence this time * around. This test is just trying to catch segfaults. */ return true; } int main(int argc, char **argv) { bool pass = true; dpy = get_display_or_skip(); make_glx_context_current_or_skip(dpy); has_argb2101010 = epoxy_has_gl_extension("GL_ARB_vertex_type_2_10_10_10_rev"); pass = pass && test_with_epoxy(); pass = pass && test_without_epoxy(); return pass != true; } libepoxy-1.5.10/test/glx_common.c000066400000000000000000000063371420344275400167340ustar00rootroot00000000000000/* * Copyright © 2009, 2013 Intel Corporation * * 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 #include #include #include "glx_common.h" Display * get_display_or_skip(void) { Display *dpy = XOpenDisplay(NULL); if (!dpy) { fputs("couldn't open display\n", stderr); exit(77); } return dpy; } XVisualInfo * get_glx_visual(Display *dpy) { XVisualInfo *visinfo; int attrib[] = { GLX_RGBA, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, 1, GLX_DOUBLEBUFFER, None }; int screen = DefaultScreen(dpy); visinfo = glXChooseVisual(dpy, screen, attrib); if (visinfo == NULL) { fputs("Couldn't get an RGBA, double-buffered visual\n", stderr); exit(1); } return visinfo; } Window get_glx_window(Display *dpy, XVisualInfo *visinfo, bool map) { XSetWindowAttributes window_attr; unsigned long mask; int screen = DefaultScreen(dpy); Window root_win = RootWindow(dpy, screen); Window win; window_attr.background_pixel = 0; window_attr.border_pixel = 0; window_attr.colormap = XCreateColormap(dpy, root_win, visinfo->visual, AllocNone); window_attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; win = XCreateWindow(dpy, root_win, 0, 0, 10, 10, /* width, height */ 0, visinfo->depth, InputOutput, visinfo->visual, mask, &window_attr); return win; } void make_glx_context_current_or_skip(Display *dpy) { GLXContext ctx; XVisualInfo *visinfo = get_glx_visual(dpy); Window win = get_glx_window(dpy, visinfo, false); ctx = glXCreateContext(dpy, visinfo, False, True); if (ctx == None) { fputs("glXCreateContext failed\n", stderr); exit(1); } glXMakeCurrent(dpy, win, ctx); } GLXFBConfig get_fbconfig_for_visinfo(Display *dpy, XVisualInfo *visinfo) { int i, nconfigs; GLXFBConfig ret = None, *configs; configs = glXGetFBConfigs(dpy, visinfo->screen, &nconfigs); if (!configs) return None; for (i = 0; i < nconfigs; i++) { int v; if (glXGetFBConfigAttrib(dpy, configs[i], GLX_VISUAL_ID, &v)) continue; if (v == visinfo->visualid) { ret = configs[i]; break; } } XFree(configs); return ret; } libepoxy-1.5.10/test/glx_common.h000066400000000000000000000026661420344275400167420ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 "epoxy/glx.h" Display * get_display_or_skip(void); void make_glx_context_current_or_skip(Display *dpy); GLXFBConfig get_fbconfig_for_visinfo(Display *dpy, XVisualInfo *visinfo); XVisualInfo * get_glx_visual(Display *dpy); Window get_glx_window(Display *dpy, XVisualInfo *visinfo, bool map); libepoxy-1.5.10/test/glx_gles2.c000066400000000000000000000064271420344275400164600ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** * @file glx_gles2.c * * Catches a bug where a GLES2 context using * GLX_EXT_create_context_es2_profile would try to find the symbols in * libGLESv2.so.2 instead of libGL.so.1. */ #include #include #include #include "epoxy/gl.h" #include "epoxy/glx.h" #include #include "glx_common.h" static Display *dpy; GLuint override_GLES2_glCreateShader(GLenum target); GLuint override_GLES2_glCreateShader(GLenum target) { return 0; } void override_GLES2_glGenQueries(GLsizei n, GLuint *ids); void override_GLES2_glGenQueries(GLsizei n, GLuint *ids) { int i; for (i = 0; i < n; i++) ids[i] = 0; } int main(int argc, char **argv) { bool pass = true; XVisualInfo *vis; Window win; GLXContext ctx; GLXFBConfig config; int context_attribs[] = { GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_ES2_PROFILE_BIT_EXT, GLX_CONTEXT_MAJOR_VERSION_ARB, 2, GLX_CONTEXT_MINOR_VERSION_ARB, 0, 0 }; GLuint shader; dpy = get_display_or_skip(); if (!epoxy_has_glx_extension(dpy, 0, "GLX_EXT_create_context_es2_profile")) errx(77, "Test requires GLX_EXT_create_context_es2_profile"); vis = get_glx_visual(dpy); config = get_fbconfig_for_visinfo(dpy, vis); win = get_glx_window(dpy, vis, false); ctx = glXCreateContextAttribsARB(dpy, config, NULL, true, context_attribs); glXMakeCurrent(dpy, win, ctx); if (epoxy_is_desktop_gl()) { errx(1, "GLES2 context creation made a desktop context\n"); } if (epoxy_gl_version() < 20) { errx(1, "GLES2 context creation made a version %f context\n", epoxy_gl_version() / 10.0f); } /* Test using an entrypoint that's in GLES2, but not the desktop GL ABI. */ shader = glCreateShader(GL_FRAGMENT_SHADER); if (shader == 0) errx(1, "glCreateShader() failed\n"); glDeleteShader(shader); if (epoxy_gl_version() >= 30) { GLuint q = 0; glGenQueries(1, &q); if (!q) errx(1, "glGenQueries() failed\n"); glDeleteQueries(1, &q); } return pass != true; } libepoxy-1.5.10/test/glx_glxgetprocaddress_nocontext.c000066400000000000000000000035311420344275400232620ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** * @file glx_glxgetprocaddress_nocontext.c * * Catches a bug in early development where glXGetProcAddress() with * no context bound would fail out in dispatch. */ #include #include #include #include "epoxy/gl.h" #include "epoxy/glx.h" #include #include "glx_common.h" static Display *dpy; int main(int argc, char **argv) { bool pass = true; void *func; dpy = get_display_or_skip(); if (epoxy_glx_version(dpy, 0) < 14) errx(77, "GLX version 1.4 required for glXGetProcAddress().\n"); func = glXGetProcAddress((const GLubyte *)"glGetString"); if (!func) errx(1, "glXGetProcAddress() returned NULL\n"); return pass != true; } libepoxy-1.5.10/test/glx_has_extension_nocontext.c000066400000000000000000000035641420344275400224130ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** * @file glx_has_extension_nocontext.c * * Catches a bug in early development where glXGetProcAddress() with * no context bound would fail out in dispatch. */ #include #include #include #include "epoxy/gl.h" #include "epoxy/glx.h" #include #include "glx_common.h" static Display *dpy; int main(int argc, char **argv) { bool pass = true; dpy = get_display_or_skip(); if (!epoxy_has_glx_extension(dpy, 0, "GLX_ARB_get_proc_address")) errx(1, "Implementation reported absence of GLX_ARB_get_proc_address"); if (epoxy_has_glx_extension(dpy, 0, "GLX_ARB_ham_sandwich")) errx(1, "Implementation reported presence of GLX_ARB_ham_sandwich"); return pass != true; } libepoxy-1.5.10/test/glx_public_api.c000066400000000000000000000067431420344275400175540ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #include #include "epoxy/gl.h" #include "epoxy/glx.h" #include #include "glx_common.h" static Display *dpy; static bool test_gl_version(void) { int version = epoxy_gl_version(); if (version < 12) { fprintf(stderr, "Reported GL version %d, should be at least 12\n", version); return false; } return true; } static bool test_glx_version(void) { int version = epoxy_glx_version(dpy, 0); const char *version_string; int ret; int server_major, server_minor; int client_major, client_minor; int server, client, expected; if (version < 13) { fprintf(stderr, "Reported GLX version %d, should be at least 13 " "according to Linux GL ABI\n", version); return false; } version_string = glXQueryServerString(dpy, 0, GLX_VERSION); ret = sscanf(version_string, "%d.%d", &server_major, &server_minor); assert(ret == 2); server = server_major * 10 + server_minor; version_string = glXGetClientString(dpy, GLX_VERSION); ret = sscanf(version_string, "%d.%d", &client_major, &client_minor); assert(ret == 2); client = client_major * 10 + client_minor; if (client < server) expected = client; else expected = server; if (version != expected) { fprintf(stderr, "Reported GLX version %d, should be %d (%s)\n", version, expected, version_string); return false; } return true; } static bool test_glx_extension_supported(void) { if (!epoxy_has_glx_extension(dpy, 0, "GLX_ARB_get_proc_address")) { fputs("Incorrectly reported no support for GLX_ARB_get_proc_address " "(should always be present in Linux ABI)\n", stderr); return false; } if (epoxy_has_glx_extension(dpy, 0, "GLX_EXT_ham_sandwich")) { fputs("Incorrectly reported support for GLX_EXT_ham_sandwich\n", stderr); return false; } return true; } int main(int argc, char **argv) { bool pass = true; dpy = get_display_or_skip(); make_glx_context_current_or_skip(dpy); pass = test_gl_version() && pass; pass = test_glx_version() && pass; pass = test_glx_extension_supported() && pass; return pass != true; } libepoxy-1.5.10/test/glx_public_api_core.c000066400000000000000000000117461420344275400205630ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #include #include #include #include "epoxy/gl.h" #include "epoxy/glx.h" #include #include "glx_common.h" static Display *dpy; static bool test_has_extensions(void) { int num_extensions; glGetIntegerv(GL_NUM_EXTENSIONS, &num_extensions); for (int i = 0; i < num_extensions; i++) { char *ext = (char *)glGetStringi(GL_EXTENSIONS, i); if (!epoxy_has_gl_extension(ext)) { fprintf(stderr, "GL implementation reported support for %s, " "but epoxy didn't\n", ext); return false; } } if (epoxy_has_gl_extension("GL_ARB_ham_sandwich")) { fputs("epoxy implementation reported support for " "GL_ARB_ham_sandwich, but it shouldn't\n", stderr); return false; } return true; } static bool test_gl_version(void) { int gl_version, epoxy_version; int major, minor; glGetIntegerv(GL_MAJOR_VERSION, &major); glGetIntegerv(GL_MINOR_VERSION, &minor); gl_version = major * 10 + minor; if (gl_version < 32) { fprintf(stderr, "Implementation reported GL version %d, should be at least 32\n", gl_version); return false; } epoxy_version = epoxy_gl_version(); if (epoxy_version != gl_version) { fprintf(stderr, "Epoxy reported GL version %d, should be %d\n", epoxy_version, gl_version); return false; } return true; } static bool test_glx_version(void) { int version = epoxy_glx_version(dpy, 0); const char *version_string; int ret; int server_major, server_minor; int client_major, client_minor; int server, client, expected; if (version < 13) { fprintf(stderr, "Reported GLX version %d, should be at least 13 " "according to Linux GL ABI\n", version); return false; } version_string = glXQueryServerString(dpy, 0, GLX_VERSION); ret = sscanf(version_string, "%d.%d", &server_major, &server_minor); assert(ret == 2); server = server_major * 10 + server_minor; version_string = glXGetClientString(dpy, GLX_VERSION); ret = sscanf(version_string, "%d.%d", &client_major, &client_minor); assert(ret == 2); client = client_major * 10 + client_minor; if (client < server) expected = client; else expected = server; if (version != expected) { fprintf(stderr, "Reported GLX version %d, should be %d (%s)\n", version, expected, version_string); return false; } return true; } static int error_handler(Display *d, XErrorEvent *ev) { return 0; } int main(int argc, char **argv) { bool pass = true; XVisualInfo *visinfo; Window win; GLXFBConfig config; static const int attribs[] = { GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, GLX_CONTEXT_MAJOR_VERSION_ARB, 3, GLX_CONTEXT_MINOR_VERSION_ARB, 2, None }; GLXContext ctx; int (*old_handler)(Display *, XErrorEvent *); dpy = get_display_or_skip(); if (!epoxy_has_glx_extension(dpy, 0, "GLX_ARB_create_context_profile")) errx(77, "Test requires GLX_ARB_create_context_profile"); visinfo = get_glx_visual(dpy); win = get_glx_window(dpy, visinfo, false); config = get_fbconfig_for_visinfo(dpy, visinfo); old_handler = XSetErrorHandler(error_handler); ctx = glXCreateContextAttribsARB(dpy, config, NULL, True, attribs); if (ctx == None) errx(77, "glXCreateContext failed"); XSetErrorHandler(old_handler); glXMakeCurrent(dpy, win, ctx); pass = test_gl_version() && pass; pass = test_glx_version() && pass; pass = test_has_extensions() && pass; return pass != true; } libepoxy-1.5.10/test/glx_static.c000066400000000000000000000043021420344275400167210ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** * @file glx_static.c * * Simple touch-test of using epoxy when linked statically. On Linux, * the ifunc support we'd like to use has some significant behavior * changes depending on whether it's a static build or shared library * build. * * Note that if configured without --enable-static, this test will end * up dynamically linked anyway, defeating the test. */ #include #include #include "epoxy/gl.h" #include "epoxy/glx.h" #include #include #include "glx_common.h" int main(int argc, char **argv) { bool pass = true; int val; #if NEEDS_TO_BE_STATIC if (dlsym(NULL, "epoxy_glCompileShader")) { fputs("glx_static requires epoxy built with --enable-static\n", stderr); return 77; } #endif Display *dpy = get_display_or_skip(); make_glx_context_current_or_skip(dpy); glEnable(GL_LIGHTING); val = 0; glGetIntegerv(GL_LIGHTING, &val); if (!val) { fputs("Enabling GL_LIGHTING didn't stick.\n", stderr); pass = false; } return pass != true; } libepoxy-1.5.10/test/headerguards.c000066400000000000000000000032401420344275400172160ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 "config.h" #include #ifdef BUILD_EGL #include #include #endif #ifdef BUILD_GLX #include #include #endif #ifdef BUILD_EGL #include #include #include #include #endif #ifdef BUILD_GLX #ifdef __APPLE__ #include #include #else #include #include #endif #include #include #endif int main(int argc, char **argv) { return 0; } libepoxy-1.5.10/test/khronos_typedefs.c000066400000000000000000000051671420344275400201600ustar00rootroot00000000000000/* * Copyright © 2014 Intel Corporation * * 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 #include "khronos_typedefs.h" #include "epoxy/gl.h" #define COMPARE_SIZE(type) \ do { \ if (sizeof(type) != system_sizes[type ## _slot]) { \ fprintf(stderr, "system %s is size %d, epoxy is %d\n", \ #type, \ (int)system_sizes[type ## _slot], \ (int)sizeof(type)); \ error = true; \ } \ } while (0) int main(int argc, char **argv) { uint32_t system_sizes[khronos_typedef_count]; bool error = false; get_system_typedef_sizes(system_sizes); COMPARE_SIZE(khronos_int8_t); COMPARE_SIZE(khronos_uint8_t); COMPARE_SIZE(khronos_int16_t); COMPARE_SIZE(khronos_uint16_t); COMPARE_SIZE(khronos_int32_t); COMPARE_SIZE(khronos_uint32_t); COMPARE_SIZE(khronos_int64_t); COMPARE_SIZE(khronos_uint64_t); COMPARE_SIZE(khronos_intptr_t); COMPARE_SIZE(khronos_uintptr_t); COMPARE_SIZE(khronos_ssize_t); COMPARE_SIZE(khronos_usize_t); COMPARE_SIZE(khronos_float_t); COMPARE_SIZE(khronos_utime_nanoseconds_t); COMPARE_SIZE(khronos_stime_nanoseconds_t); COMPARE_SIZE(khronos_boolean_enum_t); return error; } libepoxy-1.5.10/test/khronos_typedefs.h000066400000000000000000000034151420344275400201570ustar00rootroot00000000000000/* * Copyright © 2014 Intel Corporation * * 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 enum typedef_slot { khronos_int8_t_slot, khronos_uint8_t_slot, khronos_int16_t_slot, khronos_uint16_t_slot, khronos_int32_t_slot, khronos_uint32_t_slot, khronos_int64_t_slot, khronos_uint64_t_slot, khronos_intptr_t_slot, khronos_uintptr_t_slot, khronos_ssize_t_slot, khronos_usize_t_slot, khronos_float_t_slot, /* khrplatform.h claims it defines khronos_time_ns_t, but it doesn't. */ khronos_utime_nanoseconds_t_slot, khronos_stime_nanoseconds_t_slot, khronos_boolean_enum_t_slot, khronos_typedef_count }; void get_system_typedef_sizes(uint32_t *sizes); libepoxy-1.5.10/test/khronos_typedefs_nonepoxy.c000066400000000000000000000043041420344275400221070ustar00rootroot00000000000000/* * Copyright © 2014 Intel Corporation * * 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 #include #include "config.h" #include "khronos_typedefs.h" #ifdef HAVE_KHRPLATFORM_H #include #define GET_SIZE(type) sizes[type ## _slot] = sizeof(type) void get_system_typedef_sizes(uint32_t *sizes) { GET_SIZE(khronos_int8_t); GET_SIZE(khronos_uint8_t); GET_SIZE(khronos_int16_t); GET_SIZE(khronos_uint16_t); GET_SIZE(khronos_int32_t); GET_SIZE(khronos_uint32_t); GET_SIZE(khronos_int64_t); GET_SIZE(khronos_uint64_t); GET_SIZE(khronos_intptr_t); GET_SIZE(khronos_uintptr_t); GET_SIZE(khronos_ssize_t); GET_SIZE(khronos_usize_t); GET_SIZE(khronos_float_t); GET_SIZE(khronos_utime_nanoseconds_t); GET_SIZE(khronos_stime_nanoseconds_t); GET_SIZE(khronos_boolean_enum_t); } #else /* !HAVE_KHRPLATFORM_H */ /* Don't care -- this is a conditional case in test code. */ #pragma GCC diagnostic ignored "-Wsuggest-attribute=noreturn" void get_system_typedef_sizes(uint32_t *sizes) { fputs("./configure failed to find khrplatform.h\n", stderr); exit(77); } #endif libepoxy-1.5.10/test/meson.build000066400000000000000000000151621420344275400165640ustar00rootroot00000000000000dl_dep = cc.find_library('dl', required: false) has_dlvsym = cc.has_function('dlvsym', dependencies: dl_dep) has_gles1 = gles1_dep.found() has_gles2 = gles2_dep.found() build_x11_tests = enable_x11 and x11_dep.found() test_cflags = common_cflags if not has_dlvsym test_cflags += [ '-D_XOPEN_SOURCE', '-D_POSIX_C_SOURCE=200809L', ] endif # Unconditionally built tests test('header_guards', executable('header guards', 'headerguards.c', c_args: common_cflags, dependencies: libepoxy_dep, include_directories: libepoxy_inc)) test('misc_defines', executable('misc defines', 'miscdefines.c', c_args: common_cflags, dependencies: libepoxy_dep, include_directories: libepoxy_inc)) test('khronos_typedefs', executable('khronos typedefs', [ 'khronos_typedefs.c', 'khronos_typedefs.h', 'khronos_typedefs_nonepoxy.c', ], c_args: common_cflags, dependencies: libepoxy_dep, include_directories: libepoxy_inc)) test('gl_version', executable('gl_version', 'gl_version.c', c_args: common_cflags, dependencies: libepoxy_dep, include_directories: libepoxy_inc)) if build_egl and build_x11_tests egl_common_sources = [ 'egl_common.h', 'egl_common.c', ] egl_common_lib = static_library('egl_common', sources: egl_common_sources, dependencies: libepoxy_dep, include_directories: libepoxy_inc, c_args: common_cflags, install: false) egl_tests = [ [ 'egl_has_extension_nocontext', [], [ 'egl_has_extension_nocontext.c' ], true, ], [ 'egl_epoxy_api', [], [ 'egl_epoxy_api.c' ], true ], [ 'egl_gles1_without_glx', [ '-DGLES_VERSION=1', ], [ 'egl_without_glx.c' ], has_gles1, ], [ 'egl_gles2_without_glx', [ '-DGLES_VERSION=2', ], [ 'egl_without_glx.c' ], has_gles2, ], ] if build_glx egl_tests += [ [ 'egl_gl', [], [ 'egl_gl.c' ], true, ], ] endif foreach test: egl_tests test_name = test[0] test_source = test[2] test_args = test[1] test_run = test[3] if test_run test_bin = executable(test_name, test_source, c_args: test_cflags + test_args, include_directories: libepoxy_inc, dependencies: [ libepoxy_dep, x11_dep, egl_dep, dl_dep ], link_with: egl_common_lib, link_args: '-rdynamic') test(test_name, test_bin) endif endforeach endif if build_glx and build_x11_tests glx_common_sources = [ 'glx_common.h', 'glx_common.c', ] glx_common_lib = static_library('glx_common', sources: glx_common_sources, dependencies: libepoxy_dep, include_directories: libepoxy_inc, c_args: common_cflags, install: false) # glx_beginend links directly with the GL library, so we need to check it # separately test('glx_beginend', executable('glx_beginend', 'glx_beginend.c', c_args: test_cflags, include_directories: libepoxy_inc, dependencies: [ libepoxy_dep, x11_dep, gl_dep, dl_dep ], link_with: glx_common_lib)) glx_tests = [ [ 'glx_public_api', [ 'glx_public_api.c' ], [], [], true ], [ 'glx_public_api_core', [ 'glx_public_api_core.c' ], [], [], true ], [ 'glx_glxgetprocaddress_nocontext', [ 'glx_glxgetprocaddress_nocontext.c' ], [], [], true ], [ 'glx_has_extension_nocontext', [ 'glx_has_extension_nocontext.c' ], [], [], true ], [ 'glx_static', [ 'glx_static.c' ], [ '-DNEEDS_TO_BE_STATIC'], [ '-static' ], libtype == 'static' ], [ 'glx_shared_znow', [ 'glx_static.c', ], [], [ '-Wl,-z,now' ], has_znow ], [ 'glx_alias_prefer_same_name', [ 'glx_alias_prefer_same_name.c', 'dlwrap.c', 'dlwrap.h' ], [], [ '-rdynamic' ], has_dlvsym ], [ 'glx_gles2', [ 'glx_gles2.c', 'dlwrap.c', 'dlwrap.h' ], [], [ '-rdynamic' ], has_dlvsym ], ] foreach test: glx_tests test_name = test[0] test_source = test[1] test_c_args = test[2] test_link_args = test[3] test_run = test[4] if test_run test_bin = executable(test_name, test_source, c_args: test_cflags + test_c_args, include_directories: libepoxy_inc, dependencies: [ libepoxy_dep, x11_dep, dl_dep ], link_with: glx_common_lib, link_args: test_link_args) test(test_name, test_bin) endif endforeach endif # WGL if build_wgl wgl_common_sources = [ 'wgl_common.h', 'wgl_common.c', ] wgl_common_lib = static_library('wgl_common', sources: wgl_common_sources, dependencies: libepoxy_dep, include_directories: libepoxy_inc, c_args: common_cflags, install: false) wgl_tests = [ [ 'wgl_core_and_exts', [ 'wgl_core_and_exts.c' ], [], ], [ 'wgl_per_context_funcptrs', [ 'wgl_per_context_funcptrs.c' ], [], ], [ 'wgl_usefontbitmaps', [ 'wgl_usefontbitmaps.c'], [], ], [ 'wgl_usefontbitmaps_unicode', [ 'wgl_usefontbitmaps.c' ], [ '-DUNICODE' ], ], ] foreach test: wgl_tests test_name = test[0] test_source = test[1] test_c_args = test[2] test_bin = executable(test_name, test_source, c_args: test_cflags + test_c_args, include_directories: libepoxy_inc, dependencies: [ libepoxy_dep ], link_with: wgl_common_lib) test(test_name, test_bin) endforeach endif # Apple if host_machine.system().contains('darwin') opengl_dep = dependency('appleframeworks', modules: ['OpenGL', 'Carbon'], required: true) cgl_tests = [ [ 'cgl_core', [ 'cgl_core.c' ] ], [ 'cgl_epoxy_api', [ 'cgl_epoxy_api.c' ] ], ] foreach t: cgl_tests test_name = t[0] test_sources = t[1] test(test_name, executable( test_name, test_sources, c_args: test_cflags, include_directories: libepoxy_inc, dependencies: [ libepoxy_dep, opengl_dep ], ), ) endforeach endif libepoxy-1.5.10/test/miscdefines.c000066400000000000000000000033371420344275400170600ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #ifdef BUILD_EGL #include #endif #ifdef BUILD_GLX #include #endif #if GL_VERSION_3_2 != 1 #error bad GL_VERSION_3_2 #endif #if GL_ARB_ES2_compatibility != 1 #error bad GL_ARB_ES2_compatibility #endif #ifndef GLAPI #error missing GLAPI #endif #ifndef GLAPIENTRY #error missing GLAPIENTRY #endif #ifndef GLAPIENTRYP #error missing GLAPIENTRYP #endif #ifndef APIENTRY #error missing APIENTRY #endif #ifndef APIENTRYP #error missing APIENTRYP #endif /* Do we want to export GL_GLEXT_VERSION? */ int main(int argc, char **argv) { return 0; } libepoxy-1.5.10/test/wgl_common.c000066400000000000000000000072661420344275400167350ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #include #include "wgl_common.h" static int (*test_callback)(HDC hdc); static void setup_pixel_format(HDC hdc) { PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, PFD_MAIN_PLANE, 0, 0, 0, 0, }; int pixel_format; pixel_format = ChoosePixelFormat(hdc, &pfd); if (!pixel_format) { fputs("ChoosePixelFormat failed.\n", stderr); exit(1); } if (SetPixelFormat(hdc, pixel_format, &pfd) != TRUE) { fputs("SetPixelFormat() failed.\n", stderr); exit(1); } } static LRESULT CALLBACK window_proc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { HDC hdc = GetDC(hwnd); int ret; switch (message) { case WM_CREATE: setup_pixel_format(hdc); ret = test_callback(hdc); ReleaseDC(hwnd, hdc); exit(ret); return 0; default: return DefWindowProc(hwnd, message, wparam, lparam); } } void make_window_and_test(int (*callback)(HDC hdc)) { const char *class_name = "epoxy"; const char *window_name = "epoxy"; int width = 150; int height = 150; HWND hwnd; HINSTANCE hcurrentinst = NULL; WNDCLASS window_class; MSG msg; test_callback = callback; memset(&window_class, 0, sizeof(window_class)); window_class.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; window_class.lpfnWndProc = window_proc; window_class.cbClsExtra = 0; window_class.cbWndExtra = 0; window_class.hInstance = hcurrentinst; window_class.hIcon = LoadIcon(NULL, IDI_APPLICATION); window_class.hCursor = LoadCursor(NULL, IDC_ARROW); window_class.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); window_class.lpszMenuName = NULL; window_class.lpszClassName = class_name; if (!RegisterClass(&window_class)) { fputs("Failed to register window class\n", stderr); exit(1); } /* create window */ hwnd = CreateWindow(class_name, window_name, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0, 0, width, height, NULL, NULL, hcurrentinst, NULL); ShowWindow(hwnd, SW_SHOWDEFAULT); UpdateWindow(hwnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } } libepoxy-1.5.10/test/wgl_common.h000066400000000000000000000023221420344275400167260ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 void make_window_and_test(int (*callback)(HDC hdc)); libepoxy-1.5.10/test/wgl_core_and_exts.c000066400000000000000000000045241420344275400202540ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #include "wgl_common.h" #include static int test_function(HDC hdc) { bool pass = true; int val; HGLRC ctx; ctx = wglCreateContext(hdc); if (!ctx) { fputs("Failed to create wgl context\n", stderr); return 1; } if (!wglMakeCurrent(hdc, ctx)) { fputs("Failed to make context current\n", stderr); return 1; } /* GL 1.0 APIs are available as symbols in opengl32.dll. */ glEnable(GL_LIGHTING); val = 0; glGetIntegerv(GL_LIGHTING, &val); if (!val) { fputs("Enabling GL_LIGHTING didn't stick.\n", stderr); pass = false; } if (epoxy_gl_version() >= 15 || epoxy_has_gl_extension("GL_ARB_vertex_buffer_object")) { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 1234); val = 0; glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &val); if (val != 1234) { printf("GL_ELEMENT_ARRAY_BUFFER_BINDING didn't stick: %d\n", val); pass = false; } } wglMakeCurrent(NULL, NULL); wglDeleteContext(ctx); return !pass; } int main(int argc, char **argv) { make_window_and_test(test_function); /* UNREACHED */ return 1; } libepoxy-1.5.10/test/wgl_per_context_funcptrs.c000066400000000000000000000112051420344275400217070ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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. */ /** * @file wgl_per_context_funcptrs.c * * Tests that epoxy works correctly when wglGetProcAddress() returns * different function pointers for different contexts. * * wgl allows that to be the case when the device or pixel format are * different. We don't know if the underlying implementation actually * *will* return different function pointers, so force the issue by * overriding wglGetProcAddress() to return our function pointers with * magic behavior. This way we can test epoxy's implementation * regardless. */ #include #include #include "wgl_common.h" #include #define CREATESHADER_CTX1_VAL 1001 #define CREATESHADER_CTX2_VAL 1002 static HGLRC ctx1, ctx2, current_context; static bool pass = true; #define OVERRIDE_API(type) __declspec(dllexport) type __stdcall OVERRIDE_API (GLuint) override_glCreateShader_ctx1(GLenum target); OVERRIDE_API (GLuint) override_glCreateShader_ctx2(GLenum target); OVERRIDE_API (PROC) override_wglGetProcAddress(LPCSTR name); OVERRIDE_API (GLuint) override_glCreateShader_ctx1(GLenum target) { if (current_context != ctx1) { fputs("ctx1 called while other context current\n", stderr); pass = false; } return CREATESHADER_CTX1_VAL; } OVERRIDE_API (GLuint) override_glCreateShader_ctx2(GLenum target) { if (current_context != ctx2) { fputs("ctx2 called while other context current\n", stderr); pass = false; } return CREATESHADER_CTX2_VAL; } OVERRIDE_API (PROC) override_wglGetProcAddress(LPCSTR name) { assert(strcmp(name, "glCreateShader") == 0); if (current_context == ctx1) { return (PROC)override_glCreateShader_ctx1; } else { assert(current_context == ctx2); return (PROC)override_glCreateShader_ctx2; } } static void test_createshader(HDC hdc, HGLRC ctx) { GLuint shader, expected; int ctxnum; wglMakeCurrent(hdc, ctx); current_context = ctx; /* Install our GPA override so we can force per-context function * pointers. */ wglGetProcAddress = override_wglGetProcAddress; if (ctx == ctx1) { expected = CREATESHADER_CTX1_VAL; ctxnum = 1; } else { assert(ctx == ctx2); expected = CREATESHADER_CTX2_VAL; ctxnum = 2; } shader = glCreateShader(GL_FRAGMENT_SHADER); printf("ctx%d: Returned %d\n", ctxnum, shader); if (shader != expected) { fprintf(stderr, " expected %d\n", expected); pass = false; } } static int test_function(HDC hdc) { ctx1 = wglCreateContext(hdc); ctx2 = wglCreateContext(hdc); if (!ctx1 || !ctx2) { fputs("Failed to create wgl contexts\n", stderr); return 1; } if (!wglMakeCurrent(hdc, ctx1)) { fputs("Failed to make context current\n", stderr); return 1; } if (epoxy_gl_version() < 20) { /* We could possibly do a 1.3 entrypoint or something instead. */ fputs("Test relies on overriding a GL 2.0 entrypoint\n", stderr); return 77; } /* Force resolving epoxy_wglGetProcAddress. */ wglGetProcAddress("glCreateShader"); test_createshader(hdc, ctx1); test_createshader(hdc, ctx1); test_createshader(hdc, ctx2); test_createshader(hdc, ctx2); test_createshader(hdc, ctx1); test_createshader(hdc, ctx2); wglMakeCurrent(NULL, NULL); wglDeleteContext(ctx1); wglDeleteContext(ctx2); return !pass; } int main(int argc, char **argv) { make_window_and_test(test_function); /* UNREACHED */ return 1; } libepoxy-1.5.10/test/wgl_usefontbitmaps.c000066400000000000000000000043321420344275400204770ustar00rootroot00000000000000/* * Copyright © 2013 Intel Corporation * * 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 #include "wgl_common.h" #include static int test_function(HDC hdc) { bool pass = true; HGLRC ctx; GLuint dlist[2] = {100, 101}; const char *string = "some string"; ctx = wglCreateContext(hdc); if (!ctx) { fputs("Failed to create wgl context\n", stderr); return 1; } if (!wglMakeCurrent(hdc, ctx)) { fputs("Failed to make context current\n", stderr); return 1; } /* First, use the #ifdeffed variant of the function */ wglUseFontBitmaps(hdc, 0, 255, dlist[0]); glListBase(dlist[1]); glCallLists(strlen(string), GL_UNSIGNED_BYTE, string); /* Now, use the specific version, manually. */ #ifdef UNICODE wglUseFontBitmapsW(hdc, 0, 255, dlist[0]); #else wglUseFontBitmapsA(hdc, 0, 255, dlist[0]); #endif glListBase(dlist[1]); glCallLists(strlen(string), GL_UNSIGNED_BYTE, string); wglMakeCurrent(NULL, NULL); wglDeleteContext(ctx); return !pass; } int main(int argc, char **argv) { make_window_and_test(test_function); /* UNREACHED */ return 1; }