Update from https://crrev.com/312398 Involves adding many //testing/test.gni imports, fixing one SkSurface::NewRenderTarget invocation inside sky, and fixing up base::Process usage in the shell. Review URL: https://codereview.chromium.org/862133002
diff --git a/ui/gl/BUILD.gn b/ui/gl/BUILD.gn index ea1ea98..bdd7c98 100644 --- a/ui/gl/BUILD.gn +++ b/ui/gl/BUILD.gn
@@ -8,16 +8,10 @@ import("//build/config/android/rules.gni") } -gl_binding_output_dir = target_gen_dir - config("gl_config") { if (use_x11) { defines = [ "GL_GLEXT_PROTOTYPES" ] } - - # TODO(brettw) this should be removed and the the files using the generated - # GL bindings should use the path inside the gen directory. - include_dirs = [ gl_binding_output_dir ] } component("gl") { @@ -33,6 +27,10 @@ "android/surface_texture_listener.cc", "android/surface_texture_listener.h", "gl_bindings.h", + "gl_bindings_autogen_gl.cc", + "gl_bindings_autogen_gl.h", + "gl_bindings_autogen_osmesa.cc", + "gl_bindings_autogen_osmesa.h", "gl_bindings_skia_in_process.cc", "gl_bindings_skia_in_process.h", "gl_context.cc", @@ -46,6 +44,9 @@ "gl_context_stub_with_extensions.cc", "gl_context_stub_with_extensions.h", "gl_context_win.cc", + "gl_enums.cc", + "gl_enums.h", + "gl_enums_implementation_autogen.h", "gl_export.h", "gl_fence.cc", "gl_fence.h", @@ -96,10 +97,6 @@ "scoped_make_current.h", "sync_control_vsync_provider.cc", "sync_control_vsync_provider.h", - "$gl_binding_output_dir/gl_bindings_autogen_gl.cc", - "$gl_binding_output_dir/gl_bindings_autogen_gl.h", - "$gl_binding_output_dir/gl_bindings_autogen_osmesa.cc", - "$gl_binding_output_dir/gl_bindings_autogen_osmesa.h", ] defines = [ "GL_IMPLEMENTATION" ] @@ -108,13 +105,11 @@ "//third_party/switfshader/include", "//third_party/khronos", "//third_party/mesa/src/include", - gl_binding_output_dir, ] all_dependent_configs = [ ":gl_config" ] deps = [ - ":generate_gl_bindings", "//base/third_party/dynamic_annotations", "//gpu/command_buffer/common", "//skia", @@ -131,6 +126,8 @@ sources += [ "egl_util.cc", "egl_util.h", + "gl_bindings_autogen_egl.cc", + "gl_bindings_autogen_egl.h", "gl_context_egl.cc", "gl_context_egl.h", "gl_fence_egl.cc", @@ -139,8 +136,6 @@ "gl_image_egl.h", "gl_surface_egl.cc", "gl_surface_egl.h", - "$gl_binding_output_dir/gl_bindings_autogen_egl.cc", - "$gl_binding_output_dir/gl_bindings_autogen_egl.h", ] } if (is_android || is_linux) { @@ -158,6 +153,8 @@ } if (use_x11) { sources += [ + "gl_bindings_autogen_glx.cc", + "gl_bindings_autogen_glx.h", "gl_context_glx.cc", "gl_context_glx.h", "gl_context_x11.cc", @@ -171,8 +168,6 @@ "gl_surface_x11.cc", "gl_egl_api_implementation.cc", "gl_egl_api_implementation.h", - "$gl_binding_output_dir/gl_bindings_autogen_glx.cc", - "$gl_binding_output_dir/gl_bindings_autogen_glx.h", ] configs += [ @@ -185,6 +180,8 @@ } if (is_win) { sources += [ + "gl_bindings_autogen_wgl.cc", + "gl_bindings_autogen_wgl.h", "gl_context_wgl.cc", "gl_context_wgl.h", "gl_egl_api_implementation.cc", @@ -193,8 +190,6 @@ "gl_surface_wgl.h", "gl_wgl_api_implementation.cc", "gl_wgl_api_implementation.h", - "$gl_binding_output_dir/gl_bindings_autogen_wgl.cc", - "$gl_binding_output_dir/gl_bindings_autogen_wgl.h", ] libs = [ "dwmapi.lib" ] @@ -234,81 +229,36 @@ deps += [ ":gl_jni_headers" ] } + if (use_ozone) { + sources += [ + "gl_context_ozone.cc", + "gl_egl_api_implementation.cc", + "gl_egl_api_implementation.h", + "gl_implementation_ozone.cc", + "gl_surface_ozone.cc", + ] + deps += [ + "//ui/ozone", + "//ui/ozone:ozone_base", + ] + } if (is_android && !is_android_webview_build) { deps += [ "//ui/android:ui_java" ] } } -action("generate_gl_bindings") { - visibility = [ ":*" ] # Only targets in this file can see this. - - script = "generate_bindings.py" - - # TODO(brettw) make this dynamic. The GYP version calls "generate_bindings.py - # --inputs" to get the list here. What should happen is that the script - # should generate a .d file, which we should declare here. That will - # eliminate the need bot both hardcoding the list here or calling the script - # during GN-time. - inputs = [ - "EGL/eglextchromium.h", - "GL/glextchromium.h", - "//third_party/mesa/src/include/GL/glext.h", - "//third_party/khronos/GLES2/gl2ext.h", - "//gpu/GLES2/gl2chromium.h", - "//gpu/GLES2/gl2extchromium.h", - "//third_party/khronos/EGL/eglext.h", - "//third_party/mesa/src/include/GL/wglext.h", - "//third_party/mesa/src/include/GL/glx.h", - "//third_party/mesa/src/include/GL/glxext.h", - ] - - outputs = [ - "$gl_binding_output_dir/gl_bindings_autogen_egl.cc", - "$gl_binding_output_dir/gl_bindings_autogen_egl.h", - "$gl_binding_output_dir/gl_bindings_api_autogen_egl.h", - "$gl_binding_output_dir/gl_bindings_autogen_gl.cc", - "$gl_binding_output_dir/gl_bindings_autogen_gl.h", - "$gl_binding_output_dir/gl_bindings_api_autogen_gl.h", - "$gl_binding_output_dir/gl_bindings_autogen_glx.cc", - "$gl_binding_output_dir/gl_bindings_autogen_glx.h", - "$gl_binding_output_dir/gl_bindings_api_autogen_glx.h", - "$gl_binding_output_dir/gl_bindings_autogen_mock.cc", - "$gl_binding_output_dir/gl_bindings_autogen_mock.h", - "$gl_binding_output_dir/gl_bindings_autogen_osmesa.cc", - "$gl_binding_output_dir/gl_bindings_autogen_osmesa.h", - "$gl_binding_output_dir/gl_bindings_api_autogen_osmesa.h", - "$gl_binding_output_dir/gl_bindings_autogen_wgl.cc", - "$gl_binding_output_dir/gl_bindings_autogen_wgl.h", - "$gl_binding_output_dir/gl_bindings_api_autogen_wgl.h", - "$gl_binding_output_dir/gl_mock_autogen_gl.h", - ] - - args = [ - "--header-paths=" + rebase_path("//third_party/khronos", root_build_dir) + - ":" + rebase_path("//third_party/mesa/src/include", root_build_dir) + - ":" + rebase_path("//ui/gl", root_build_dir) + ":" + - rebase_path("//gpu", root_build_dir), - rebase_path(gl_binding_output_dir, root_build_dir), - ] -} - -config("gl_unittest_utils_config") { - include_dirs = [ gl_binding_output_dir ] -} - source_set("gl_unittest_utils") { testonly = true sources = [ + "gl_bindings_autogen_mock.cc", + "gl_bindings_autogen_mock.h", + "gl_mock_autogen_gl.h", "gl_mock.h", "gl_mock.cc", - "$gl_binding_output_dir/gl_bindings_autogen_mock.cc", - "$gl_binding_output_dir/gl_bindings_autogen_mock.h", - "$gl_binding_output_dir/gl_mock_autogen_gl.h", ] configs += [ "//third_party/khronos:khronos_headers" ] - public_configs = [ ":gl_unittest_utils_config" ] deps = [ ":gl",
diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py index af1bdc8..7a339b6 100755 --- a/ui/gl/generate_bindings.py +++ b/ui/gl/generate_bindings.py
@@ -9,7 +9,16 @@ import os import collections import re +import platform import sys +from subprocess import call + +HEADER_PATHS = [ + '../../third_party/khronos', + '../../third_party/mesa/src/include', + '.', + '../../gpu', +] """In case there are multiple versions of the same function, one that's listed first takes priority if its conditions are met. If the function is an extension @@ -149,7 +158,7 @@ 'glCheckFramebufferStatus'], 'arguments': 'GLenum target', 'logging_code': """ - GL_SERVICE_LOG("GL_RESULT: " << GLES2Util::GetStringEnum(result)); + GL_SERVICE_LOG("GL_RESULT: " << GLEnums::GetStringEnum(result)); """, }, { 'return_type': 'void', 'names': ['glClear'], @@ -521,7 +530,7 @@ 'names': ['glGetError'], 'arguments': 'void', 'logging_code': """ - GL_SERVICE_LOG("GL_RESULT: " << GLES2Util::GetStringError(result)); + GL_SERVICE_LOG("GL_RESULT: " << GLEnums::GetStringError(result)); """, }, { 'return_type': 'void', 'names': ['glGetFenceivNV'], @@ -1688,17 +1697,35 @@ [GLX_FUNCTIONS, 'glx', ['GL/glx.h', 'GL/glxext.h'], []], ] +GLES2_HEADERS_WITH_ENUMS = [ + 'GLES2/gl2.h', + 'GLES2/gl2ext.h', + 'GLES2/gl2chromium.h', + 'GLES2/gl2extchromium.h', + 'GLES3/gl3.h', +] + +SELF_LOCATION = os.path.dirname(os.path.abspath(__file__)) + +LICENSE_AND_HEADER = """\ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +""" def GenerateHeader(file, functions, set_name, used_extensions): """Generates gl_bindings_autogen_x.h""" # Write file header. - file.write( -"""// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This file is automatically generated. + file.write(LICENSE_AND_HEADER + +""" #ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_%(name)s_H_ #define UI_GFX_GL_GL_BINDINGS_AUTOGEN_%(name)s_H_ @@ -1763,14 +1790,7 @@ """Generates gl_bindings_api_autogen_x.h""" # Write file header. - file.write( -"""// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This file is automatically generated. - -""" % {'name': set_name.upper()}) + file.write(LICENSE_AND_HEADER) # Write API declaration. for func in functions: @@ -1784,14 +1804,7 @@ """Generates gl_mock_autogen_x.h""" # Write file header. - file.write( -"""// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This file is automatically generated. - -""" % {'name': set_name.upper()}) + file.write(LICENSE_AND_HEADER) # Write API declaration. for func in functions: @@ -1810,27 +1823,27 @@ def GenerateSource(file, functions, set_name, used_extensions): """Generates gl_bindings_autogen_x.cc""" - # Write file header. - file.write( -"""// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. + set_header_name = "ui/gl/gl_" + set_name.lower() + "_api_implementation.h" + include_list = [ 'base/debug/trace_event.h', + 'ui/gl/gl_enums.h', + 'ui/gl/gl_bindings.h', + 'ui/gl/gl_context.h', + 'ui/gl/gl_implementation.h', + 'ui/gl/gl_version_info.h', + set_header_name ] + includes_string = "\n".join(["#include \"{0}\"".format(h) + for h in sorted(include_list)]) -// This file is automatically generated. + # Write file header. + file.write(LICENSE_AND_HEADER + +""" #include <string> -#include "base/debug/trace_event.h" -#include "gpu/command_buffer/common/gles2_cmd_utils.h" -#include "ui/gl/gl_bindings.h" -#include "ui/gl/gl_context.h" -#include "ui/gl/gl_implementation.h" -#include "ui/gl/gl_version_info.h" -#include "ui/gl/gl_%s_api_implementation.h" -using gpu::gles2::GLES2Util; +%s namespace gfx { -""" % set_name.lower()) +""" % includes_string) file.write('\n') file.write('static bool g_debugBindingsInitialized;\n') @@ -1945,12 +1958,13 @@ # http://crbug.com/325668 if cond != '' and not last_version: if not first_version: - file.write(' if (!fn.%sFn && (%s))\n ' % (known_as, cond)) + file.write(' if (!fn.%sFn && (%s)) {\n ' % (known_as, cond)) else: - file.write(' if (%s)\n ' % cond) + file.write(' if (%s) {\n ' % cond) elif not first_version: - file.write(' if (!fn.%sFn)\n ' % known_as) + file.write(' if (!fn.%sFn) {\n ' % known_as) WriteFuncBinding(file, known_as, version['name']) + file.write('}\n') i += 1 first_version = False @@ -2002,10 +2016,10 @@ log_argument_names = re.sub( r'CONSTCHAR_([a-zA-Z0-9_]+)', r'\1', log_argument_names) log_argument_names = re.sub( - r'GLenum_([a-zA-Z0-9_]+)', r'GLES2Util::GetStringEnum(\1)', + r'GLenum_([a-zA-Z0-9_]+)', r'GLEnums::GetStringEnum(\1)', log_argument_names) log_argument_names = re.sub( - r'GLboolean_([a-zA-Z0-9_]+)', r'GLES2Util::GetStringBool(\1)', + r'GLboolean_([a-zA-Z0-9_]+)', r'GLEnums::GetStringBool(\1)', log_argument_names) log_argument_names = log_argument_names.replace(',', ' << ", " <<') if argument_names == 'void' or argument_names == '': @@ -2151,14 +2165,7 @@ def GenerateMockBindingsHeader(file, functions): """Headers for functions that invoke MockGLInterface members""" - file.write( -"""// Copyright (c) 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This file is automatically generated. - -""") + file.write(LICENSE_AND_HEADER) uniquely_named_functions = GetUniquelyNamedFunctions(functions) for key in sorted(uniquely_named_functions.iterkeys()): @@ -2171,12 +2178,8 @@ """Generates functions that invoke MockGLInterface members and a GetGLProcAddress function that returns addresses to those functions.""" - file.write( -"""// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// This file is automatically generated. + file.write(LICENSE_AND_HEADER + +""" #include <string.h> @@ -2238,6 +2241,39 @@ file.write('\n') file.write('} // namespace gfx\n') +def GenerateEnumUtils(out_file, input_filenames): + enum_re = re.compile(r'\#define\s+(GL_[a-zA-Z0-9_]+)\s+([0-9A-Fa-fx]+)') + dict = {} + for fname in input_filenames: + lines = open(fname).readlines() + for line in lines: + m = enum_re.match(line) + if m: + name = m.group(1) + value = m.group(2) + if len(value) <= 10: + if not value in dict: + dict[value] = name + # check our own _CHROMIUM macro conflicts with khronos GL headers. + elif dict[value] != name and (name.endswith('_CHROMIUM') or + dict[value].endswith('_CHROMIUM')): + raise RunTimeError("code collision: %s and %s have the same code %s" + % (dict[value], name, value)) + + out_file.write(LICENSE_AND_HEADER) + out_file.write("static const GLEnums::EnumToString " + "enum_to_string_table[] = {\n") + for value in dict: + out_file.write(' { %s, "%s", },\n' % (value, dict[value])) + out_file.write("""}; + +const GLEnums::EnumToString* const GLEnums::enum_to_string_table_ = + enum_to_string_table; +const size_t GLEnums::enum_to_string_table_len_ = + sizeof(enum_to_string_table) / sizeof(enum_to_string_table[0]); + +""") + def ParseExtensionFunctionsFromHeader(header_file): """Parse a C extension header file and return a map from extension names to @@ -2358,12 +2394,10 @@ def ResolveHeader(header, header_paths): - paths = header_paths.split(':') - - for path in paths: + for path in header_paths: result = os.path.join(path, header) if not os.path.isabs(path): - result = os.path.relpath(os.path.join(os.getcwd(), result), os.getcwd()) + result = os.path.abspath(os.path.join(SELF_LOCATION, result)) if os.path.exists(result): # Always use forward slashes as path separators. Otherwise backslashes # may be incorrectly interpreted as escape characters. @@ -2377,7 +2411,6 @@ parser = optparse.OptionParser() parser.add_option('--inputs', action='store_true') - parser.add_option('--header-paths') parser.add_option('--verify-order', action='store_true') options, args = parser.parse_args(argv) @@ -2385,13 +2418,19 @@ if options.inputs: for [_, _, headers, _] in FUNCTION_SETS: for header in headers: - print ResolveHeader(header, options.header_paths) + print ResolveHeader(header, HEADER_PATHS) return 0 - directory = '.' + directory = SELF_LOCATION if len(args) >= 1: directory = args[0] + def ClangFormat(filename): + formatter = "clang-format" + if platform.system() == "Windows": + formatter += ".bat" + call([formatter, "-i", "-style=chromium", filename]) + for [functions, set_name, extension_headers, extensions] in FUNCTION_SETS: # Function names can be specified in two ways (list of unique names or list # of versions with different binding conditions). Fill in the data to the @@ -2417,7 +2456,7 @@ if options.verify_order: continue - extension_headers = [ResolveHeader(h, options.header_paths) + extension_headers = [ResolveHeader(h, HEADER_PATHS) for h in extension_headers] used_extensions = FillExtensionsFromHeaders( functions, extension_headers, extensions) @@ -2426,33 +2465,48 @@ os.path.join(directory, 'gl_bindings_autogen_%s.h' % set_name), 'wb') GenerateHeader(header_file, functions, set_name, used_extensions) header_file.close() + ClangFormat(header_file.name) header_file = open( os.path.join(directory, 'gl_bindings_api_autogen_%s.h' % set_name), 'wb') GenerateAPIHeader(header_file, functions, set_name) header_file.close() + ClangFormat(header_file.name) source_file = open( os.path.join(directory, 'gl_bindings_autogen_%s.cc' % set_name), 'wb') GenerateSource(source_file, functions, set_name, used_extensions) source_file.close() + ClangFormat(source_file.name) if not options.verify_order: header_file = open( os.path.join(directory, 'gl_mock_autogen_gl.h'), 'wb') GenerateMockHeader(header_file, GL_FUNCTIONS, 'gl') header_file.close() + ClangFormat(header_file.name) header_file = open(os.path.join(directory, 'gl_bindings_autogen_mock.h'), 'wb') GenerateMockBindingsHeader(header_file, GL_FUNCTIONS) header_file.close() + ClangFormat(header_file.name) source_file = open(os.path.join(directory, 'gl_bindings_autogen_mock.cc'), 'wb') GenerateMockBindingsSource(source_file, GL_FUNCTIONS) source_file.close() + ClangFormat(source_file.name) + + enum_header_filenames = [ResolveHeader(h, HEADER_PATHS) + for h in GLES2_HEADERS_WITH_ENUMS] + header_file = open(os.path.join(directory, + 'gl_enums_implementation_autogen.h'), + 'wb') + GenerateEnumUtils(header_file, enum_header_filenames) + header_file.close() + ClangFormat(header_file.name) return 0
diff --git a/ui/gl/gl.gyp b/ui/gl/gl.gyp index f11f40c..93c4d2b 100644 --- a/ui/gl/gl.gyp +++ b/ui/gl/gl.gyp
@@ -21,22 +21,13 @@ '<(DEPTH)/ui/gfx/gfx.gyp:gfx', '<(DEPTH)/ui/gfx/gfx.gyp:gfx_geometry', ], - 'variables': { - 'gl_binding_output_dir': '<(SHARED_INTERMEDIATE_DIR)/ui/gl', - }, 'defines': [ 'GL_IMPLEMENTATION', ], 'include_dirs': [ '<(DEPTH)/third_party/swiftshader/include', '<(DEPTH)/third_party/khronos', - '<(gl_binding_output_dir)', ], - 'direct_dependent_settings': { - 'include_dirs': [ - '<(gl_binding_output_dir)', - ], - }, 'export_dependent_settings': [ '<(DEPTH)/third_party/mesa/mesa.gyp:mesa_headers', ], @@ -50,12 +41,17 @@ 'android/surface_texture_listener.cc', 'android/surface_texture_listener.h', 'gl_bindings.h', + 'gl_bindings_autogen_gl.cc', + 'gl_bindings_autogen_gl.h', + 'gl_bindings_autogen_osmesa.cc', + 'gl_bindings_autogen_osmesa.h', 'gl_bindings_skia_in_process.cc', 'gl_bindings_skia_in_process.h', 'gl_context.cc', 'gl_context.h', 'gl_context_android.cc', 'gl_context_mac.mm', + 'gl_context_ozone.cc', 'gl_context_osmesa.cc', 'gl_context_osmesa.h', 'gl_context_stub.cc', @@ -64,6 +60,9 @@ 'gl_context_stub_with_extensions.h', 'gl_context_win.cc', 'gl_context_x11.cc', + 'gl_enums.cc', + 'gl_enums.h', + 'gl_enums_implementation_autogen.h', 'gl_export.h', 'gl_fence.cc', 'gl_fence.h', @@ -85,6 +84,7 @@ 'gl_implementation.cc', 'gl_implementation.h', 'gl_implementation_android.cc', + 'gl_implementation_ozone.cc', 'gl_implementation_mac.cc', 'gl_implementation_win.cc', 'gl_implementation_x11.cc', @@ -104,6 +104,7 @@ 'gl_surface_x11.cc', 'gl_surface_osmesa.cc', 'gl_surface_osmesa.h', + 'gl_surface_ozone.cc', 'gl_switches.cc', 'gl_switches.h', 'gl_version_info.cc', @@ -117,61 +118,14 @@ 'scoped_make_current.h', 'sync_control_vsync_provider.cc', 'sync_control_vsync_provider.h', - '<(gl_binding_output_dir)/gl_bindings_autogen_gl.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_gl.h', - '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.h', - ], - # hard_dependency is necessary for this target because it has actions - # that generate header files included by dependent targets. The header - # files must be generated before the dependents are compiled. The usual - # semantics are to allow the two targets to build concurrently. - 'hard_dependency': 1, - 'actions': [ - { - 'action_name': 'generate_gl_bindings', - 'variables': { - 'generator_path': 'generate_bindings.py', - # Prefer khronos EGL/GLES headers by listing that path first. - 'header_paths': '../../third_party/khronos:../../third_party/mesa/src/include:.:../../gpu', - }, - 'inputs': [ - '<(generator_path)', - '<!@(python <(generator_path) --header-paths=<(header_paths) --inputs)', - ], - 'outputs': [ - '<(gl_binding_output_dir)/gl_bindings_autogen_egl.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_egl.h', - '<(gl_binding_output_dir)/gl_bindings_api_autogen_egl.h', - '<(gl_binding_output_dir)/gl_bindings_autogen_gl.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_gl.h', - '<(gl_binding_output_dir)/gl_bindings_api_autogen_gl.h', - '<(gl_binding_output_dir)/gl_bindings_autogen_glx.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_glx.h', - '<(gl_binding_output_dir)/gl_bindings_api_autogen_glx.h', - '<(gl_binding_output_dir)/gl_bindings_autogen_mock.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_mock.h', - '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.h', - '<(gl_binding_output_dir)/gl_bindings_api_autogen_osmesa.h', - '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.h', - '<(gl_binding_output_dir)/gl_bindings_api_autogen_wgl.h', - '<(gl_binding_output_dir)/gl_mock_autogen_gl.h', - ], - 'action': [ - 'python', - '<(generator_path)', - '--header-paths=<(header_paths)', - '<(gl_binding_output_dir)', - ], - }, ], 'conditions': [ ['OS in ("win", "android", "linux")', { 'sources': [ 'egl_util.cc', 'egl_util.h', + 'gl_bindings_autogen_egl.cc', + 'gl_bindings_autogen_egl.h', 'gl_context_egl.cc', 'gl_context_egl.h', 'gl_fence_egl.cc', @@ -182,8 +136,6 @@ 'gl_surface_egl.h', 'gl_egl_api_implementation.cc', 'gl_egl_api_implementation.h', - '<(gl_binding_output_dir)/gl_bindings_autogen_egl.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_egl.h', ], 'include_dirs': [ '<(DEPTH)/third_party/khronos', @@ -203,6 +155,8 @@ }], ['use_x11 == 1', { 'sources': [ + 'gl_bindings_autogen_glx.cc', + 'gl_bindings_autogen_glx.h', 'gl_context_glx.cc', 'gl_context_glx.h', 'gl_glx_api_implementation.cc', @@ -213,8 +167,6 @@ 'gl_surface_glx.h', 'gl_egl_api_implementation.cc', 'gl_egl_api_implementation.h', - '<(gl_binding_output_dir)/gl_bindings_autogen_glx.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_glx.h', ], 'all_dependent_settings': { 'defines': [ @@ -231,6 +183,8 @@ }], ['OS=="win"', { 'sources': [ + 'gl_bindings_autogen_wgl.cc', + 'gl_bindings_autogen_wgl.h', 'gl_context_wgl.cc', 'gl_context_wgl.h', 'gl_egl_api_implementation.cc', @@ -239,8 +193,6 @@ 'gl_surface_wgl.h', 'gl_wgl_api_implementation.cc', 'gl_wgl_api_implementation.h', - '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_wgl.h', ], 'msvs_settings': { 'VCLinkerTool': { @@ -300,6 +252,12 @@ ['OS!="android"', { 'sources/': [ ['exclude', '^android/'] ], }], + ['use_ozone==1', { + 'dependencies': [ + '../ozone/ozone.gyp:ozone', + '../ozone/ozone.gyp:ozone_base', + ], + }], ['OS=="android" and android_webview_build==0', { 'dependencies': [ '../android/ui_android.gyp:ui_java', @@ -310,29 +268,20 @@ { 'target_name': 'gl_unittest_utils', 'type': 'static_library', - 'variables': { - 'gl_binding_output_dir': '<(SHARED_INTERMEDIATE_DIR)/ui/gl', - }, 'dependencies': [ '../../testing/gmock.gyp:gmock', '../../third_party/khronos/khronos.gyp:khronos_headers', 'gl', ], 'include_dirs': [ - '<(gl_binding_output_dir)', '../..', ], - 'direct_dependent_settings': { - 'include_dirs': [ - '<(gl_binding_output_dir)', - ], - }, 'sources': [ + 'gl_bindings_autogen_mock.cc', + 'gl_bindings_autogen_mock.h', + 'gl_mock_autogen_gl.h', 'gl_mock.h', 'gl_mock.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_mock.cc', - '<(gl_binding_output_dir)/gl_bindings_autogen_mock.h', - '<(gl_binding_output_dir)/gl_mock_autogen_gl.h', ], }, ],
diff --git a/ui/gl/gl_bindings_api_autogen_egl.h b/ui/gl/gl_bindings_api_autogen_egl.h new file mode 100644 index 0000000..43337be --- /dev/null +++ b/ui/gl/gl_bindings_api_autogen_egl.h
@@ -0,0 +1,128 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +EGLBoolean eglBindAPIFn(EGLenum api) override; +EGLBoolean eglBindTexImageFn(EGLDisplay dpy, + EGLSurface surface, + EGLint buffer) override; +EGLBoolean eglChooseConfigFn(EGLDisplay dpy, + const EGLint* attrib_list, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config) override; +EGLint eglClientWaitSyncKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint flags, + EGLTimeKHR timeout) override; +EGLBoolean eglCopyBuffersFn(EGLDisplay dpy, + EGLSurface surface, + EGLNativePixmapType target) override; +EGLContext eglCreateContextFn(EGLDisplay dpy, + EGLConfig config, + EGLContext share_context, + const EGLint* attrib_list) override; +EGLImageKHR eglCreateImageKHRFn(EGLDisplay dpy, + EGLContext ctx, + EGLenum target, + EGLClientBuffer buffer, + const EGLint* attrib_list) override; +EGLSurface eglCreatePbufferFromClientBufferFn( + EGLDisplay dpy, + EGLenum buftype, + void* buffer, + EGLConfig config, + const EGLint* attrib_list) override; +EGLSurface eglCreatePbufferSurfaceFn(EGLDisplay dpy, + EGLConfig config, + const EGLint* attrib_list) override; +EGLSurface eglCreatePixmapSurfaceFn(EGLDisplay dpy, + EGLConfig config, + EGLNativePixmapType pixmap, + const EGLint* attrib_list) override; +EGLSyncKHR eglCreateSyncKHRFn(EGLDisplay dpy, + EGLenum type, + const EGLint* attrib_list) override; +EGLSurface eglCreateWindowSurfaceFn(EGLDisplay dpy, + EGLConfig config, + EGLNativeWindowType win, + const EGLint* attrib_list) override; +EGLBoolean eglDestroyContextFn(EGLDisplay dpy, EGLContext ctx) override; +EGLBoolean eglDestroyImageKHRFn(EGLDisplay dpy, EGLImageKHR image) override; +EGLBoolean eglDestroySurfaceFn(EGLDisplay dpy, EGLSurface surface) override; +EGLBoolean eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) override; +EGLBoolean eglGetConfigAttribFn(EGLDisplay dpy, + EGLConfig config, + EGLint attribute, + EGLint* value) override; +EGLBoolean eglGetConfigsFn(EGLDisplay dpy, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config) override; +EGLContext eglGetCurrentContextFn(void) override; +EGLDisplay eglGetCurrentDisplayFn(void) override; +EGLSurface eglGetCurrentSurfaceFn(EGLint readdraw) override; +EGLDisplay eglGetDisplayFn(EGLNativeDisplayType display_id) override; +EGLint eglGetErrorFn(void) override; +EGLDisplay eglGetPlatformDisplayEXTFn(EGLenum platform, + void* native_display, + const EGLint* attrib_list) override; +__eglMustCastToProperFunctionPointerType eglGetProcAddressFn( + const char* procname) override; +EGLBoolean eglGetSyncAttribKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint attribute, + EGLint* value) override; +EGLBoolean eglGetSyncValuesCHROMIUMFn(EGLDisplay dpy, + EGLSurface surface, + EGLuint64CHROMIUM* ust, + EGLuint64CHROMIUM* msc, + EGLuint64CHROMIUM* sbc) override; +EGLBoolean eglInitializeFn(EGLDisplay dpy, + EGLint* major, + EGLint* minor) override; +EGLBoolean eglMakeCurrentFn(EGLDisplay dpy, + EGLSurface draw, + EGLSurface read, + EGLContext ctx) override; +EGLBoolean eglPostSubBufferNVFn(EGLDisplay dpy, + EGLSurface surface, + EGLint x, + EGLint y, + EGLint width, + EGLint height) override; +EGLenum eglQueryAPIFn(void) override; +EGLBoolean eglQueryContextFn(EGLDisplay dpy, + EGLContext ctx, + EGLint attribute, + EGLint* value) override; +const char* eglQueryStringFn(EGLDisplay dpy, EGLint name) override; +EGLBoolean eglQuerySurfaceFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint* value) override; +EGLBoolean eglQuerySurfacePointerANGLEFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + void** value) override; +EGLBoolean eglReleaseTexImageFn(EGLDisplay dpy, + EGLSurface surface, + EGLint buffer) override; +EGLBoolean eglReleaseThreadFn(void) override; +EGLBoolean eglSurfaceAttribFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint value) override; +EGLBoolean eglSwapBuffersFn(EGLDisplay dpy, EGLSurface surface) override; +EGLBoolean eglSwapIntervalFn(EGLDisplay dpy, EGLint interval) override; +EGLBoolean eglTerminateFn(EGLDisplay dpy) override; +EGLBoolean eglWaitClientFn(void) override; +EGLBoolean eglWaitGLFn(void) override; +EGLBoolean eglWaitNativeFn(EGLint engine) override; +EGLint eglWaitSyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags) override;
diff --git a/ui/gl/gl_bindings_api_autogen_gl.h b/ui/gl/gl_bindings_api_autogen_gl.h new file mode 100644 index 0000000..5aac77c --- /dev/null +++ b/ui/gl/gl_bindings_api_autogen_gl.h
@@ -0,0 +1,703 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +void glActiveTextureFn(GLenum texture) override; +void glAttachShaderFn(GLuint program, GLuint shader) override; +void glBeginQueryFn(GLenum target, GLuint id) override; +void glBeginQueryARBFn(GLenum target, GLuint id) override; +void glBeginTransformFeedbackFn(GLenum primitiveMode) override; +void glBindAttribLocationFn(GLuint program, + GLuint index, + const char* name) override; +void glBindBufferFn(GLenum target, GLuint buffer) override; +void glBindBufferBaseFn(GLenum target, GLuint index, GLuint buffer) override; +void glBindBufferRangeFn(GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size) override; +void glBindFragDataLocationFn(GLuint program, + GLuint colorNumber, + const char* name) override; +void glBindFragDataLocationIndexedFn(GLuint program, + GLuint colorNumber, + GLuint index, + const char* name) override; +void glBindFramebufferEXTFn(GLenum target, GLuint framebuffer) override; +void glBindRenderbufferEXTFn(GLenum target, GLuint renderbuffer) override; +void glBindSamplerFn(GLuint unit, GLuint sampler) override; +void glBindTextureFn(GLenum target, GLuint texture) override; +void glBindTransformFeedbackFn(GLenum target, GLuint id) override; +void glBindVertexArrayOESFn(GLuint array) override; +void glBlendBarrierKHRFn(void) override; +void glBlendColorFn(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) override; +void glBlendEquationFn(GLenum mode) override; +void glBlendEquationSeparateFn(GLenum modeRGB, GLenum modeAlpha) override; +void glBlendFuncFn(GLenum sfactor, GLenum dfactor) override; +void glBlendFuncSeparateFn(GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha) override; +void glBlitFramebufferFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) override; +void glBlitFramebufferANGLEFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) override; +void glBlitFramebufferEXTFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) override; +void glBufferDataFn(GLenum target, + GLsizeiptr size, + const void* data, + GLenum usage) override; +void glBufferSubDataFn(GLenum target, + GLintptr offset, + GLsizeiptr size, + const void* data) override; +GLenum glCheckFramebufferStatusEXTFn(GLenum target) override; +void glClearFn(GLbitfield mask) override; +void glClearBufferfiFn(GLenum buffer, + GLint drawbuffer, + const GLfloat depth, + GLint stencil) override; +void glClearBufferfvFn(GLenum buffer, + GLint drawbuffer, + const GLfloat* value) override; +void glClearBufferivFn(GLenum buffer, + GLint drawbuffer, + const GLint* value) override; +void glClearBufferuivFn(GLenum buffer, + GLint drawbuffer, + const GLuint* value) override; +void glClearColorFn(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) override; +void glClearDepthFn(GLclampd depth) override; +void glClearDepthfFn(GLclampf depth) override; +void glClearStencilFn(GLint s) override; +GLenum glClientWaitSyncFn(GLsync sync, + GLbitfield flags, + GLuint64 timeout) override; +void glColorMaskFn(GLboolean red, + GLboolean green, + GLboolean blue, + GLboolean alpha) override; +void glCompileShaderFn(GLuint shader) override; +void glCompressedTexImage2DFn(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data) override; +void glCompressedTexImage3DFn(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data) override; +void glCompressedTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data) override; +void glCopyBufferSubDataFn(GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size) override; +void glCopyTexImage2DFn(GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border) override; +void glCopyTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) override; +void glCopyTexSubImage3DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) override; +GLuint glCreateProgramFn(void) override; +GLuint glCreateShaderFn(GLenum type) override; +void glCullFaceFn(GLenum mode) override; +void glDeleteBuffersARBFn(GLsizei n, const GLuint* buffers) override; +void glDeleteFencesAPPLEFn(GLsizei n, const GLuint* fences) override; +void glDeleteFencesNVFn(GLsizei n, const GLuint* fences) override; +void glDeleteFramebuffersEXTFn(GLsizei n, const GLuint* framebuffers) override; +void glDeleteProgramFn(GLuint program) override; +void glDeleteQueriesFn(GLsizei n, const GLuint* ids) override; +void glDeleteQueriesARBFn(GLsizei n, const GLuint* ids) override; +void glDeleteRenderbuffersEXTFn(GLsizei n, + const GLuint* renderbuffers) override; +void glDeleteSamplersFn(GLsizei n, const GLuint* samplers) override; +void glDeleteShaderFn(GLuint shader) override; +void glDeleteSyncFn(GLsync sync) override; +void glDeleteTexturesFn(GLsizei n, const GLuint* textures) override; +void glDeleteTransformFeedbacksFn(GLsizei n, const GLuint* ids) override; +void glDeleteVertexArraysOESFn(GLsizei n, const GLuint* arrays) override; +void glDepthFuncFn(GLenum func) override; +void glDepthMaskFn(GLboolean flag) override; +void glDepthRangeFn(GLclampd zNear, GLclampd zFar) override; +void glDepthRangefFn(GLclampf zNear, GLclampf zFar) override; +void glDetachShaderFn(GLuint program, GLuint shader) override; +void glDisableFn(GLenum cap) override; +void glDisableVertexAttribArrayFn(GLuint index) override; +void glDiscardFramebufferEXTFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) override; +void glDrawArraysFn(GLenum mode, GLint first, GLsizei count) override; +void glDrawArraysInstancedANGLEFn(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) override; +void glDrawBufferFn(GLenum mode) override; +void glDrawBuffersARBFn(GLsizei n, const GLenum* bufs) override; +void glDrawElementsFn(GLenum mode, + GLsizei count, + GLenum type, + const void* indices) override; +void glDrawElementsInstancedANGLEFn(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) override; +void glDrawRangeElementsFn(GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices) override; +void glEGLImageTargetRenderbufferStorageOESFn(GLenum target, + GLeglImageOES image) override; +void glEGLImageTargetTexture2DOESFn(GLenum target, + GLeglImageOES image) override; +void glEnableFn(GLenum cap) override; +void glEnableVertexAttribArrayFn(GLuint index) override; +void glEndQueryFn(GLenum target) override; +void glEndQueryARBFn(GLenum target) override; +void glEndTransformFeedbackFn(void) override; +GLsync glFenceSyncFn(GLenum condition, GLbitfield flags) override; +void glFinishFn(void) override; +void glFinishFenceAPPLEFn(GLuint fence) override; +void glFinishFenceNVFn(GLuint fence) override; +void glFlushFn(void) override; +void glFlushMappedBufferRangeFn(GLenum target, + GLintptr offset, + GLsizeiptr length) override; +void glFramebufferRenderbufferEXTFn(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer) override; +void glFramebufferTexture2DEXTFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level) override; +void glFramebufferTexture2DMultisampleEXTFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) override; +void glFramebufferTexture2DMultisampleIMGFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) override; +void glFramebufferTextureLayerFn(GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer) override; +void glFrontFaceFn(GLenum mode) override; +void glGenBuffersARBFn(GLsizei n, GLuint* buffers) override; +void glGenerateMipmapEXTFn(GLenum target) override; +void glGenFencesAPPLEFn(GLsizei n, GLuint* fences) override; +void glGenFencesNVFn(GLsizei n, GLuint* fences) override; +void glGenFramebuffersEXTFn(GLsizei n, GLuint* framebuffers) override; +void glGenQueriesFn(GLsizei n, GLuint* ids) override; +void glGenQueriesARBFn(GLsizei n, GLuint* ids) override; +void glGenRenderbuffersEXTFn(GLsizei n, GLuint* renderbuffers) override; +void glGenSamplersFn(GLsizei n, GLuint* samplers) override; +void glGenTexturesFn(GLsizei n, GLuint* textures) override; +void glGenTransformFeedbacksFn(GLsizei n, GLuint* ids) override; +void glGenVertexArraysOESFn(GLsizei n, GLuint* arrays) override; +void glGetActiveAttribFn(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) override; +void glGetActiveUniformFn(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) override; +void glGetActiveUniformBlockivFn(GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params) override; +void glGetActiveUniformBlockNameFn(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + char* uniformBlockName) override; +void glGetActiveUniformsivFn(GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params) override; +void glGetAttachedShadersFn(GLuint program, + GLsizei maxcount, + GLsizei* count, + GLuint* shaders) override; +GLint glGetAttribLocationFn(GLuint program, const char* name) override; +void glGetBooleanvFn(GLenum pname, GLboolean* params) override; +void glGetBufferParameterivFn(GLenum target, + GLenum pname, + GLint* params) override; +GLenum glGetErrorFn(void) override; +void glGetFenceivNVFn(GLuint fence, GLenum pname, GLint* params) override; +void glGetFloatvFn(GLenum pname, GLfloat* params) override; +GLint glGetFragDataLocationFn(GLuint program, const char* name) override; +void glGetFramebufferAttachmentParameterivEXTFn(GLenum target, + GLenum attachment, + GLenum pname, + GLint* params) override; +GLenum glGetGraphicsResetStatusARBFn(void) override; +void glGetInteger64i_vFn(GLenum target, GLuint index, GLint64* data) override; +void glGetInteger64vFn(GLenum pname, GLint64* params) override; +void glGetIntegeri_vFn(GLenum target, GLuint index, GLint* data) override; +void glGetIntegervFn(GLenum pname, GLint* params) override; +void glGetInternalformativFn(GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei bufSize, + GLint* params) override; +void glGetProgramBinaryFn(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary) override; +void glGetProgramInfoLogFn(GLuint program, + GLsizei bufsize, + GLsizei* length, + char* infolog) override; +void glGetProgramivFn(GLuint program, GLenum pname, GLint* params) override; +void glGetQueryivFn(GLenum target, GLenum pname, GLint* params) override; +void glGetQueryivARBFn(GLenum target, GLenum pname, GLint* params) override; +void glGetQueryObjecti64vFn(GLuint id, GLenum pname, GLint64* params) override; +void glGetQueryObjectivFn(GLuint id, GLenum pname, GLint* params) override; +void glGetQueryObjectivARBFn(GLuint id, GLenum pname, GLint* params) override; +void glGetQueryObjectui64vFn(GLuint id, + GLenum pname, + GLuint64* params) override; +void glGetQueryObjectuivFn(GLuint id, GLenum pname, GLuint* params) override; +void glGetQueryObjectuivARBFn(GLuint id, GLenum pname, GLuint* params) override; +void glGetRenderbufferParameterivEXTFn(GLenum target, + GLenum pname, + GLint* params) override; +void glGetSamplerParameterfvFn(GLuint sampler, + GLenum pname, + GLfloat* params) override; +void glGetSamplerParameterivFn(GLuint sampler, + GLenum pname, + GLint* params) override; +void glGetShaderInfoLogFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* infolog) override; +void glGetShaderivFn(GLuint shader, GLenum pname, GLint* params) override; +void glGetShaderPrecisionFormatFn(GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision) override; +void glGetShaderSourceFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) override; +const GLubyte* glGetStringFn(GLenum name) override; +void glGetSyncivFn(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values) override; +void glGetTexLevelParameterfvFn(GLenum target, + GLint level, + GLenum pname, + GLfloat* params) override; +void glGetTexLevelParameterivFn(GLenum target, + GLint level, + GLenum pname, + GLint* params) override; +void glGetTexParameterfvFn(GLenum target, + GLenum pname, + GLfloat* params) override; +void glGetTexParameterivFn(GLenum target, GLenum pname, GLint* params) override; +void glGetTransformFeedbackVaryingFn(GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLenum* type, + char* name) override; +void glGetTranslatedShaderSourceANGLEFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) override; +GLuint glGetUniformBlockIndexFn(GLuint program, + const char* uniformBlockName) override; +void glGetUniformfvFn(GLuint program, GLint location, GLfloat* params) override; +void glGetUniformIndicesFn(GLuint program, + GLsizei uniformCount, + const char* const* uniformNames, + GLuint* uniformIndices) override; +void glGetUniformivFn(GLuint program, GLint location, GLint* params) override; +GLint glGetUniformLocationFn(GLuint program, const char* name) override; +void glGetVertexAttribfvFn(GLuint index, + GLenum pname, + GLfloat* params) override; +void glGetVertexAttribivFn(GLuint index, GLenum pname, GLint* params) override; +void glGetVertexAttribPointervFn(GLuint index, + GLenum pname, + void** pointer) override; +void glHintFn(GLenum target, GLenum mode) override; +void glInsertEventMarkerEXTFn(GLsizei length, const char* marker) override; +void glInvalidateFramebufferFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) override; +void glInvalidateSubFramebufferFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLint width, + GLint height) override; +GLboolean glIsBufferFn(GLuint buffer) override; +GLboolean glIsEnabledFn(GLenum cap) override; +GLboolean glIsFenceAPPLEFn(GLuint fence) override; +GLboolean glIsFenceNVFn(GLuint fence) override; +GLboolean glIsFramebufferEXTFn(GLuint framebuffer) override; +GLboolean glIsProgramFn(GLuint program) override; +GLboolean glIsQueryFn(GLuint query) override; +GLboolean glIsQueryARBFn(GLuint query) override; +GLboolean glIsRenderbufferEXTFn(GLuint renderbuffer) override; +GLboolean glIsSamplerFn(GLuint sampler) override; +GLboolean glIsShaderFn(GLuint shader) override; +GLboolean glIsSyncFn(GLsync sync) override; +GLboolean glIsTextureFn(GLuint texture) override; +GLboolean glIsTransformFeedbackFn(GLuint id) override; +GLboolean glIsVertexArrayOESFn(GLuint array) override; +void glLineWidthFn(GLfloat width) override; +void glLinkProgramFn(GLuint program) override; +void* glMapBufferFn(GLenum target, GLenum access) override; +void* glMapBufferRangeFn(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access) override; +void glMatrixLoadfEXTFn(GLenum matrixMode, const GLfloat* m) override; +void glMatrixLoadIdentityEXTFn(GLenum matrixMode) override; +void glPauseTransformFeedbackFn(void) override; +void glPixelStoreiFn(GLenum pname, GLint param) override; +void glPointParameteriFn(GLenum pname, GLint param) override; +void glPolygonOffsetFn(GLfloat factor, GLfloat units) override; +void glPopGroupMarkerEXTFn(void) override; +void glProgramBinaryFn(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length) override; +void glProgramParameteriFn(GLuint program, GLenum pname, GLint value) override; +void glPushGroupMarkerEXTFn(GLsizei length, const char* marker) override; +void glQueryCounterFn(GLuint id, GLenum target) override; +void glReadBufferFn(GLenum src) override; +void glReadPixelsFn(GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels) override; +void glReleaseShaderCompilerFn(void) override; +void glRenderbufferStorageEXTFn(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height) override; +void glRenderbufferStorageMultisampleFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) override; +void glRenderbufferStorageMultisampleANGLEFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) override; +void glRenderbufferStorageMultisampleEXTFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) override; +void glRenderbufferStorageMultisampleIMGFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) override; +void glResumeTransformFeedbackFn(void) override; +void glSampleCoverageFn(GLclampf value, GLboolean invert) override; +void glSamplerParameterfFn(GLuint sampler, + GLenum pname, + GLfloat param) override; +void glSamplerParameterfvFn(GLuint sampler, + GLenum pname, + const GLfloat* params) override; +void glSamplerParameteriFn(GLuint sampler, GLenum pname, GLint param) override; +void glSamplerParameterivFn(GLuint sampler, + GLenum pname, + const GLint* params) override; +void glScissorFn(GLint x, GLint y, GLsizei width, GLsizei height) override; +void glSetFenceAPPLEFn(GLuint fence) override; +void glSetFenceNVFn(GLuint fence, GLenum condition) override; +void glShaderBinaryFn(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length) override; +void glShaderSourceFn(GLuint shader, + GLsizei count, + const char* const* str, + const GLint* length) override; +void glStencilFuncFn(GLenum func, GLint ref, GLuint mask) override; +void glStencilFuncSeparateFn(GLenum face, + GLenum func, + GLint ref, + GLuint mask) override; +void glStencilMaskFn(GLuint mask) override; +void glStencilMaskSeparateFn(GLenum face, GLuint mask) override; +void glStencilOpFn(GLenum fail, GLenum zfail, GLenum zpass) override; +void glStencilOpSeparateFn(GLenum face, + GLenum fail, + GLenum zfail, + GLenum zpass) override; +GLboolean glTestFenceAPPLEFn(GLuint fence) override; +GLboolean glTestFenceNVFn(GLuint fence) override; +void glTexImage2DFn(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels) override; +void glTexImage3DFn(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels) override; +void glTexParameterfFn(GLenum target, GLenum pname, GLfloat param) override; +void glTexParameterfvFn(GLenum target, + GLenum pname, + const GLfloat* params) override; +void glTexParameteriFn(GLenum target, GLenum pname, GLint param) override; +void glTexParameterivFn(GLenum target, + GLenum pname, + const GLint* params) override; +void glTexStorage2DEXTFn(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height) override; +void glTexStorage3DFn(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth) override; +void glTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels) override; +void glTransformFeedbackVaryingsFn(GLuint program, + GLsizei count, + const char* const* varyings, + GLenum bufferMode) override; +void glUniform1fFn(GLint location, GLfloat x) override; +void glUniform1fvFn(GLint location, GLsizei count, const GLfloat* v) override; +void glUniform1iFn(GLint location, GLint x) override; +void glUniform1ivFn(GLint location, GLsizei count, const GLint* v) override; +void glUniform1uiFn(GLint location, GLuint v0) override; +void glUniform1uivFn(GLint location, GLsizei count, const GLuint* v) override; +void glUniform2fFn(GLint location, GLfloat x, GLfloat y) override; +void glUniform2fvFn(GLint location, GLsizei count, const GLfloat* v) override; +void glUniform2iFn(GLint location, GLint x, GLint y) override; +void glUniform2ivFn(GLint location, GLsizei count, const GLint* v) override; +void glUniform2uiFn(GLint location, GLuint v0, GLuint v1) override; +void glUniform2uivFn(GLint location, GLsizei count, const GLuint* v) override; +void glUniform3fFn(GLint location, GLfloat x, GLfloat y, GLfloat z) override; +void glUniform3fvFn(GLint location, GLsizei count, const GLfloat* v) override; +void glUniform3iFn(GLint location, GLint x, GLint y, GLint z) override; +void glUniform3ivFn(GLint location, GLsizei count, const GLint* v) override; +void glUniform3uiFn(GLint location, GLuint v0, GLuint v1, GLuint v2) override; +void glUniform3uivFn(GLint location, GLsizei count, const GLuint* v) override; +void glUniform4fFn(GLint location, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) override; +void glUniform4fvFn(GLint location, GLsizei count, const GLfloat* v) override; +void glUniform4iFn(GLint location, GLint x, GLint y, GLint z, GLint w) override; +void glUniform4ivFn(GLint location, GLsizei count, const GLint* v) override; +void glUniform4uiFn(GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3) override; +void glUniform4uivFn(GLint location, GLsizei count, const GLuint* v) override; +void glUniformBlockBindingFn(GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding) override; +void glUniformMatrix2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) override; +void glUniformMatrix2x3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) override; +void glUniformMatrix2x4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) override; +void glUniformMatrix3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) override; +void glUniformMatrix3x2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) override; +void glUniformMatrix3x4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) override; +void glUniformMatrix4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) override; +void glUniformMatrix4x2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) override; +void glUniformMatrix4x3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) override; +GLboolean glUnmapBufferFn(GLenum target) override; +void glUseProgramFn(GLuint program) override; +void glValidateProgramFn(GLuint program) override; +void glVertexAttrib1fFn(GLuint indx, GLfloat x) override; +void glVertexAttrib1fvFn(GLuint indx, const GLfloat* values) override; +void glVertexAttrib2fFn(GLuint indx, GLfloat x, GLfloat y) override; +void glVertexAttrib2fvFn(GLuint indx, const GLfloat* values) override; +void glVertexAttrib3fFn(GLuint indx, GLfloat x, GLfloat y, GLfloat z) override; +void glVertexAttrib3fvFn(GLuint indx, const GLfloat* values) override; +void glVertexAttrib4fFn(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) override; +void glVertexAttrib4fvFn(GLuint indx, const GLfloat* values) override; +void glVertexAttribDivisorANGLEFn(GLuint index, GLuint divisor) override; +void glVertexAttribI4iFn(GLuint indx, + GLint x, + GLint y, + GLint z, + GLint w) override; +void glVertexAttribI4ivFn(GLuint indx, const GLint* values) override; +void glVertexAttribI4uiFn(GLuint indx, + GLuint x, + GLuint y, + GLuint z, + GLuint w) override; +void glVertexAttribI4uivFn(GLuint indx, const GLuint* values) override; +void glVertexAttribIPointerFn(GLuint indx, + GLint size, + GLenum type, + GLsizei stride, + const void* ptr) override; +void glVertexAttribPointerFn(GLuint indx, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* ptr) override; +void glViewportFn(GLint x, GLint y, GLsizei width, GLsizei height) override; +GLenum glWaitSyncFn(GLsync sync, GLbitfield flags, GLuint64 timeout) override;
diff --git a/ui/gl/gl_bindings_api_autogen_glx.h b/ui/gl/gl_bindings_api_autogen_glx.h new file mode 100644 index 0000000..7efbae1 --- /dev/null +++ b/ui/gl/gl_bindings_api_autogen_glx.h
@@ -0,0 +1,133 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +void glXBindTexImageEXTFn(Display* dpy, + GLXDrawable drawable, + int buffer, + int* attribList) override; +GLXFBConfig* glXChooseFBConfigFn(Display* dpy, + int screen, + const int* attribList, + int* nitems) override; +XVisualInfo* glXChooseVisualFn(Display* dpy, + int screen, + int* attribList) override; +void glXCopyContextFn(Display* dpy, + GLXContext src, + GLXContext dst, + unsigned long mask) override; +void glXCopySubBufferMESAFn(Display* dpy, + GLXDrawable drawable, + int x, + int y, + int width, + int height) override; +GLXContext glXCreateContextFn(Display* dpy, + XVisualInfo* vis, + GLXContext shareList, + int direct) override; +GLXContext glXCreateContextAttribsARBFn(Display* dpy, + GLXFBConfig config, + GLXContext share_context, + int direct, + const int* attrib_list) override; +GLXPixmap glXCreateGLXPixmapFn(Display* dpy, + XVisualInfo* visual, + Pixmap pixmap) override; +GLXContext glXCreateNewContextFn(Display* dpy, + GLXFBConfig config, + int renderType, + GLXContext shareList, + int direct) override; +GLXPbuffer glXCreatePbufferFn(Display* dpy, + GLXFBConfig config, + const int* attribList) override; +GLXPixmap glXCreatePixmapFn(Display* dpy, + GLXFBConfig config, + Pixmap pixmap, + const int* attribList) override; +GLXWindow glXCreateWindowFn(Display* dpy, + GLXFBConfig config, + Window win, + const int* attribList) override; +void glXDestroyContextFn(Display* dpy, GLXContext ctx) override; +void glXDestroyGLXPixmapFn(Display* dpy, GLXPixmap pixmap) override; +void glXDestroyPbufferFn(Display* dpy, GLXPbuffer pbuf) override; +void glXDestroyPixmapFn(Display* dpy, GLXPixmap pixmap) override; +void glXDestroyWindowFn(Display* dpy, GLXWindow window) override; +const char* glXGetClientStringFn(Display* dpy, int name) override; +int glXGetConfigFn(Display* dpy, + XVisualInfo* visual, + int attrib, + int* value) override; +GLXContext glXGetCurrentContextFn(void) override; +Display* glXGetCurrentDisplayFn(void) override; +GLXDrawable glXGetCurrentDrawableFn(void) override; +GLXDrawable glXGetCurrentReadDrawableFn(void) override; +int glXGetFBConfigAttribFn(Display* dpy, + GLXFBConfig config, + int attribute, + int* value) override; +GLXFBConfig glXGetFBConfigFromVisualSGIXFn(Display* dpy, + XVisualInfo* visualInfo) override; +GLXFBConfig* glXGetFBConfigsFn(Display* dpy, + int screen, + int* nelements) override; +bool glXGetMscRateOMLFn(Display* dpy, + GLXDrawable drawable, + int32* numerator, + int32* denominator) override; +void glXGetSelectedEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long* mask) override; +bool glXGetSyncValuesOMLFn(Display* dpy, + GLXDrawable drawable, + int64* ust, + int64* msc, + int64* sbc) override; +XVisualInfo* glXGetVisualFromFBConfigFn(Display* dpy, + GLXFBConfig config) override; +int glXIsDirectFn(Display* dpy, GLXContext ctx) override; +int glXMakeContextCurrentFn(Display* dpy, + GLXDrawable draw, + GLXDrawable read, + GLXContext ctx) override; +int glXMakeCurrentFn(Display* dpy, + GLXDrawable drawable, + GLXContext ctx) override; +int glXQueryContextFn(Display* dpy, + GLXContext ctx, + int attribute, + int* value) override; +void glXQueryDrawableFn(Display* dpy, + GLXDrawable draw, + int attribute, + unsigned int* value) override; +int glXQueryExtensionFn(Display* dpy, int* errorb, int* event) override; +const char* glXQueryExtensionsStringFn(Display* dpy, int screen) override; +const char* glXQueryServerStringFn(Display* dpy, int screen, int name) override; +int glXQueryVersionFn(Display* dpy, int* maj, int* min) override; +void glXReleaseTexImageEXTFn(Display* dpy, + GLXDrawable drawable, + int buffer) override; +void glXSelectEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long mask) override; +void glXSwapBuffersFn(Display* dpy, GLXDrawable drawable) override; +void glXSwapIntervalEXTFn(Display* dpy, + GLXDrawable drawable, + int interval) override; +void glXSwapIntervalMESAFn(unsigned int interval) override; +void glXUseXFontFn(Font font, int first, int count, int list) override; +void glXWaitGLFn(void) override; +int glXWaitVideoSyncSGIFn(int divisor, + int remainder, + unsigned int* count) override; +void glXWaitXFn(void) override;
diff --git a/ui/gl/gl_bindings_api_autogen_osmesa.h b/ui/gl/gl_bindings_api_autogen_osmesa.h new file mode 100644 index 0000000..c061275 --- /dev/null +++ b/ui/gl/gl_bindings_api_autogen_osmesa.h
@@ -0,0 +1,38 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +void OSMesaColorClampFn(GLboolean enable) override; +OSMesaContext OSMesaCreateContextFn(GLenum format, + OSMesaContext sharelist) override; +OSMesaContext OSMesaCreateContextExtFn(GLenum format, + GLint depthBits, + GLint stencilBits, + GLint accumBits, + OSMesaContext sharelist) override; +void OSMesaDestroyContextFn(OSMesaContext ctx) override; +GLboolean OSMesaGetColorBufferFn(OSMesaContext c, + GLint* width, + GLint* height, + GLint* format, + void** buffer) override; +OSMesaContext OSMesaGetCurrentContextFn(void) override; +GLboolean OSMesaGetDepthBufferFn(OSMesaContext c, + GLint* width, + GLint* height, + GLint* bytesPerValue, + void** buffer) override; +void OSMesaGetIntegervFn(GLint pname, GLint* value) override; +OSMESAproc OSMesaGetProcAddressFn(const char* funcName) override; +GLboolean OSMesaMakeCurrentFn(OSMesaContext ctx, + void* buffer, + GLenum type, + GLsizei width, + GLsizei height) override; +void OSMesaPixelStoreFn(GLint pname, GLint value) override;
diff --git a/ui/gl/gl_bindings_api_autogen_wgl.h b/ui/gl/gl_bindings_api_autogen_wgl.h new file mode 100644 index 0000000..18b471d --- /dev/null +++ b/ui/gl/gl_bindings_api_autogen_wgl.h
@@ -0,0 +1,39 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +BOOL wglChoosePixelFormatARBFn(HDC dc, + const int* int_attrib_list, + const float* float_attrib_list, + UINT max_formats, + int* formats, + UINT* num_formats) override; +BOOL wglCopyContextFn(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask) override; +HGLRC wglCreateContextFn(HDC hdc) override; +HGLRC wglCreateLayerContextFn(HDC hdc, int iLayerPlane) override; +HPBUFFERARB wglCreatePbufferARBFn(HDC hDC, + int iPixelFormat, + int iWidth, + int iHeight, + const int* piAttribList) override; +BOOL wglDeleteContextFn(HGLRC hglrc) override; +BOOL wglDestroyPbufferARBFn(HPBUFFERARB hPbuffer) override; +HGLRC wglGetCurrentContextFn() override; +HDC wglGetCurrentDCFn() override; +const char* wglGetExtensionsStringARBFn(HDC hDC) override; +const char* wglGetExtensionsStringEXTFn() override; +HDC wglGetPbufferDCARBFn(HPBUFFERARB hPbuffer) override; +BOOL wglMakeCurrentFn(HDC hdc, HGLRC hglrc) override; +BOOL wglQueryPbufferARBFn(HPBUFFERARB hPbuffer, + int iAttribute, + int* piValue) override; +int wglReleasePbufferDCARBFn(HPBUFFERARB hPbuffer, HDC hDC) override; +BOOL wglShareListsFn(HGLRC hglrc1, HGLRC hglrc2) override; +BOOL wglSwapIntervalEXTFn(int interval) override; +BOOL wglSwapLayerBuffersFn(HDC hdc, UINT fuPlanes) override;
diff --git a/ui/gl/gl_bindings_autogen_egl.cc b/ui/gl/gl_bindings_autogen_egl.cc new file mode 100644 index 0000000..051e1b3 --- /dev/null +++ b/ui/gl/gl_bindings_autogen_egl.cc
@@ -0,0 +1,1428 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#include <string> + +#include "base/debug/trace_event.h" +#include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_context.h" +#include "ui/gl/gl_egl_api_implementation.h" +#include "ui/gl/gl_enums.h" +#include "ui/gl/gl_implementation.h" +#include "ui/gl/gl_version_info.h" + +namespace gfx { + +static bool g_debugBindingsInitialized; +DriverEGL g_driver_egl; + +void DriverEGL::InitializeStaticBindings() { + fn.eglBindAPIFn = + reinterpret_cast<eglBindAPIProc>(GetGLProcAddress("eglBindAPI")); + fn.eglBindTexImageFn = reinterpret_cast<eglBindTexImageProc>( + GetGLProcAddress("eglBindTexImage")); + fn.eglChooseConfigFn = reinterpret_cast<eglChooseConfigProc>( + GetGLProcAddress("eglChooseConfig")); + fn.eglClientWaitSyncKHRFn = reinterpret_cast<eglClientWaitSyncKHRProc>( + GetGLProcAddress("eglClientWaitSyncKHR")); + fn.eglCopyBuffersFn = + reinterpret_cast<eglCopyBuffersProc>(GetGLProcAddress("eglCopyBuffers")); + fn.eglCreateContextFn = reinterpret_cast<eglCreateContextProc>( + GetGLProcAddress("eglCreateContext")); + fn.eglCreateImageKHRFn = reinterpret_cast<eglCreateImageKHRProc>( + GetGLProcAddress("eglCreateImageKHR")); + fn.eglCreatePbufferFromClientBufferFn = + reinterpret_cast<eglCreatePbufferFromClientBufferProc>( + GetGLProcAddress("eglCreatePbufferFromClientBuffer")); + fn.eglCreatePbufferSurfaceFn = reinterpret_cast<eglCreatePbufferSurfaceProc>( + GetGLProcAddress("eglCreatePbufferSurface")); + fn.eglCreatePixmapSurfaceFn = reinterpret_cast<eglCreatePixmapSurfaceProc>( + GetGLProcAddress("eglCreatePixmapSurface")); + fn.eglCreateSyncKHRFn = reinterpret_cast<eglCreateSyncKHRProc>( + GetGLProcAddress("eglCreateSyncKHR")); + fn.eglCreateWindowSurfaceFn = reinterpret_cast<eglCreateWindowSurfaceProc>( + GetGLProcAddress("eglCreateWindowSurface")); + fn.eglDestroyContextFn = reinterpret_cast<eglDestroyContextProc>( + GetGLProcAddress("eglDestroyContext")); + fn.eglDestroyImageKHRFn = reinterpret_cast<eglDestroyImageKHRProc>( + GetGLProcAddress("eglDestroyImageKHR")); + fn.eglDestroySurfaceFn = reinterpret_cast<eglDestroySurfaceProc>( + GetGLProcAddress("eglDestroySurface")); + fn.eglDestroySyncKHRFn = reinterpret_cast<eglDestroySyncKHRProc>( + GetGLProcAddress("eglDestroySyncKHR")); + fn.eglGetConfigAttribFn = reinterpret_cast<eglGetConfigAttribProc>( + GetGLProcAddress("eglGetConfigAttrib")); + fn.eglGetConfigsFn = + reinterpret_cast<eglGetConfigsProc>(GetGLProcAddress("eglGetConfigs")); + fn.eglGetCurrentContextFn = reinterpret_cast<eglGetCurrentContextProc>( + GetGLProcAddress("eglGetCurrentContext")); + fn.eglGetCurrentDisplayFn = reinterpret_cast<eglGetCurrentDisplayProc>( + GetGLProcAddress("eglGetCurrentDisplay")); + fn.eglGetCurrentSurfaceFn = reinterpret_cast<eglGetCurrentSurfaceProc>( + GetGLProcAddress("eglGetCurrentSurface")); + fn.eglGetDisplayFn = + reinterpret_cast<eglGetDisplayProc>(GetGLProcAddress("eglGetDisplay")); + fn.eglGetErrorFn = + reinterpret_cast<eglGetErrorProc>(GetGLProcAddress("eglGetError")); + fn.eglGetPlatformDisplayEXTFn = + reinterpret_cast<eglGetPlatformDisplayEXTProc>( + GetGLProcAddress("eglGetPlatformDisplayEXT")); + fn.eglGetProcAddressFn = reinterpret_cast<eglGetProcAddressProc>( + GetGLProcAddress("eglGetProcAddress")); + fn.eglGetSyncAttribKHRFn = reinterpret_cast<eglGetSyncAttribKHRProc>( + GetGLProcAddress("eglGetSyncAttribKHR")); + fn.eglGetSyncValuesCHROMIUMFn = + reinterpret_cast<eglGetSyncValuesCHROMIUMProc>( + GetGLProcAddress("eglGetSyncValuesCHROMIUM")); + fn.eglInitializeFn = + reinterpret_cast<eglInitializeProc>(GetGLProcAddress("eglInitialize")); + fn.eglMakeCurrentFn = + reinterpret_cast<eglMakeCurrentProc>(GetGLProcAddress("eglMakeCurrent")); + fn.eglPostSubBufferNVFn = reinterpret_cast<eglPostSubBufferNVProc>( + GetGLProcAddress("eglPostSubBufferNV")); + fn.eglQueryAPIFn = + reinterpret_cast<eglQueryAPIProc>(GetGLProcAddress("eglQueryAPI")); + fn.eglQueryContextFn = reinterpret_cast<eglQueryContextProc>( + GetGLProcAddress("eglQueryContext")); + fn.eglQueryStringFn = + reinterpret_cast<eglQueryStringProc>(GetGLProcAddress("eglQueryString")); + fn.eglQuerySurfaceFn = reinterpret_cast<eglQuerySurfaceProc>( + GetGLProcAddress("eglQuerySurface")); + fn.eglQuerySurfacePointerANGLEFn = + reinterpret_cast<eglQuerySurfacePointerANGLEProc>( + GetGLProcAddress("eglQuerySurfacePointerANGLE")); + fn.eglReleaseTexImageFn = reinterpret_cast<eglReleaseTexImageProc>( + GetGLProcAddress("eglReleaseTexImage")); + fn.eglReleaseThreadFn = reinterpret_cast<eglReleaseThreadProc>( + GetGLProcAddress("eglReleaseThread")); + fn.eglSurfaceAttribFn = reinterpret_cast<eglSurfaceAttribProc>( + GetGLProcAddress("eglSurfaceAttrib")); + fn.eglSwapBuffersFn = + reinterpret_cast<eglSwapBuffersProc>(GetGLProcAddress("eglSwapBuffers")); + fn.eglSwapIntervalFn = reinterpret_cast<eglSwapIntervalProc>( + GetGLProcAddress("eglSwapInterval")); + fn.eglTerminateFn = + reinterpret_cast<eglTerminateProc>(GetGLProcAddress("eglTerminate")); + fn.eglWaitClientFn = + reinterpret_cast<eglWaitClientProc>(GetGLProcAddress("eglWaitClient")); + fn.eglWaitGLFn = + reinterpret_cast<eglWaitGLProc>(GetGLProcAddress("eglWaitGL")); + fn.eglWaitNativeFn = + reinterpret_cast<eglWaitNativeProc>(GetGLProcAddress("eglWaitNative")); + fn.eglWaitSyncKHRFn = + reinterpret_cast<eglWaitSyncKHRProc>(GetGLProcAddress("eglWaitSyncKHR")); +} + +void DriverEGL::InitializeDynamicBindings(GLContext* context) { + DCHECK(context && context->IsCurrent(NULL)); + const GLVersionInfo* ver = context->GetVersionInfo(); + ALLOW_UNUSED_LOCAL(ver); + std::string extensions = context->GetExtensions() + " "; + ALLOW_UNUSED_LOCAL(extensions); + + ext.b_EGL_ANGLE_d3d_share_handle_client_buffer = + extensions.find("EGL_ANGLE_d3d_share_handle_client_buffer ") != + std::string::npos; + ext.b_EGL_ANGLE_platform_angle = + extensions.find("EGL_ANGLE_platform_angle ") != std::string::npos; + ext.b_EGL_ANGLE_query_surface_pointer = + extensions.find("EGL_ANGLE_query_surface_pointer ") != std::string::npos; + ext.b_EGL_ANGLE_surface_d3d_texture_2d_share_handle = + extensions.find("EGL_ANGLE_surface_d3d_texture_2d_share_handle ") != + std::string::npos; + ext.b_EGL_CHROMIUM_sync_control = + extensions.find("EGL_CHROMIUM_sync_control ") != std::string::npos; + ext.b_EGL_KHR_fence_sync = + extensions.find("EGL_KHR_fence_sync ") != std::string::npos; + ext.b_EGL_KHR_gl_texture_2D_image = + extensions.find("EGL_KHR_gl_texture_2D_image ") != std::string::npos; + ext.b_EGL_KHR_image_base = + extensions.find("EGL_KHR_image_base ") != std::string::npos; + ext.b_EGL_KHR_wait_sync = + extensions.find("EGL_KHR_wait_sync ") != std::string::npos; + ext.b_EGL_NV_post_sub_buffer = + extensions.find("EGL_NV_post_sub_buffer ") != std::string::npos; + + if (g_debugBindingsInitialized) + InitializeDebugBindings(); +} + +extern "C" { + +static EGLBoolean GL_BINDING_CALL Debug_eglBindAPI(EGLenum api) { + GL_SERVICE_LOG("eglBindAPI" + << "(" << api << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglBindAPIFn(api); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) { + GL_SERVICE_LOG("eglBindTexImage" + << "(" << dpy << ", " << surface << ", " << buffer << ")"); + EGLBoolean result = + g_driver_egl.debug_fn.eglBindTexImageFn(dpy, surface, buffer); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglChooseConfig(EGLDisplay dpy, + const EGLint* attrib_list, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config) { + GL_SERVICE_LOG("eglChooseConfig" + << "(" << dpy << ", " << static_cast<const void*>(attrib_list) + << ", " << static_cast<const void*>(configs) << ", " + << config_size << ", " << static_cast<const void*>(num_config) + << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglChooseConfigFn( + dpy, attrib_list, configs, config_size, num_config); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLint GL_BINDING_CALL Debug_eglClientWaitSyncKHR(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint flags, + EGLTimeKHR timeout) { + GL_SERVICE_LOG("eglClientWaitSyncKHR" + << "(" << dpy << ", " << sync << ", " << flags << ", " + << timeout << ")"); + EGLint result = + g_driver_egl.debug_fn.eglClientWaitSyncKHRFn(dpy, sync, flags, timeout); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglCopyBuffers(EGLDisplay dpy, + EGLSurface surface, + EGLNativePixmapType target) { + GL_SERVICE_LOG("eglCopyBuffers" + << "(" << dpy << ", " << surface << ", " << target << ")"); + EGLBoolean result = + g_driver_egl.debug_fn.eglCopyBuffersFn(dpy, surface, target); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLContext GL_BINDING_CALL +Debug_eglCreateContext(EGLDisplay dpy, + EGLConfig config, + EGLContext share_context, + const EGLint* attrib_list) { + GL_SERVICE_LOG("eglCreateContext" + << "(" << dpy << ", " << config << ", " << share_context + << ", " << static_cast<const void*>(attrib_list) << ")"); + EGLContext result = g_driver_egl.debug_fn.eglCreateContextFn( + dpy, config, share_context, attrib_list); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLImageKHR GL_BINDING_CALL +Debug_eglCreateImageKHR(EGLDisplay dpy, + EGLContext ctx, + EGLenum target, + EGLClientBuffer buffer, + const EGLint* attrib_list) { + GL_SERVICE_LOG("eglCreateImageKHR" + << "(" << dpy << ", " << ctx << ", " << target << ", " + << buffer << ", " << static_cast<const void*>(attrib_list) + << ")"); + EGLImageKHR result = g_driver_egl.debug_fn.eglCreateImageKHRFn( + dpy, ctx, target, buffer, attrib_list); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLSurface GL_BINDING_CALL +Debug_eglCreatePbufferFromClientBuffer(EGLDisplay dpy, + EGLenum buftype, + void* buffer, + EGLConfig config, + const EGLint* attrib_list) { + GL_SERVICE_LOG("eglCreatePbufferFromClientBuffer" + << "(" << dpy << ", " << buftype << ", " + << static_cast<const void*>(buffer) << ", " << config << ", " + << static_cast<const void*>(attrib_list) << ")"); + EGLSurface result = g_driver_egl.debug_fn.eglCreatePbufferFromClientBufferFn( + dpy, buftype, buffer, config, attrib_list); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLSurface GL_BINDING_CALL +Debug_eglCreatePbufferSurface(EGLDisplay dpy, + EGLConfig config, + const EGLint* attrib_list) { + GL_SERVICE_LOG("eglCreatePbufferSurface" + << "(" << dpy << ", " << config << ", " + << static_cast<const void*>(attrib_list) << ")"); + EGLSurface result = + g_driver_egl.debug_fn.eglCreatePbufferSurfaceFn(dpy, config, attrib_list); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLSurface GL_BINDING_CALL +Debug_eglCreatePixmapSurface(EGLDisplay dpy, + EGLConfig config, + EGLNativePixmapType pixmap, + const EGLint* attrib_list) { + GL_SERVICE_LOG("eglCreatePixmapSurface" + << "(" << dpy << ", " << config << ", " << pixmap << ", " + << static_cast<const void*>(attrib_list) << ")"); + EGLSurface result = g_driver_egl.debug_fn.eglCreatePixmapSurfaceFn( + dpy, config, pixmap, attrib_list); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLSyncKHR GL_BINDING_CALL +Debug_eglCreateSyncKHR(EGLDisplay dpy, + EGLenum type, + const EGLint* attrib_list) { + GL_SERVICE_LOG("eglCreateSyncKHR" + << "(" << dpy << ", " << type << ", " + << static_cast<const void*>(attrib_list) << ")"); + EGLSyncKHR result = + g_driver_egl.debug_fn.eglCreateSyncKHRFn(dpy, type, attrib_list); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLSurface GL_BINDING_CALL +Debug_eglCreateWindowSurface(EGLDisplay dpy, + EGLConfig config, + EGLNativeWindowType win, + const EGLint* attrib_list) { + GL_SERVICE_LOG("eglCreateWindowSurface" + << "(" << dpy << ", " << config << ", " << win << ", " + << static_cast<const void*>(attrib_list) << ")"); + EGLSurface result = g_driver_egl.debug_fn.eglCreateWindowSurfaceFn( + dpy, config, win, attrib_list); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglDestroyContext(EGLDisplay dpy, EGLContext ctx) { + GL_SERVICE_LOG("eglDestroyContext" + << "(" << dpy << ", " << ctx << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglDestroyContextFn(dpy, ctx); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image) { + GL_SERVICE_LOG("eglDestroyImageKHR" + << "(" << dpy << ", " << image << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglDestroyImageKHRFn(dpy, image); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglDestroySurface(EGLDisplay dpy, EGLSurface surface) { + GL_SERVICE_LOG("eglDestroySurface" + << "(" << dpy << ", " << surface << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglDestroySurfaceFn(dpy, surface); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync) { + GL_SERVICE_LOG("eglDestroySyncKHR" + << "(" << dpy << ", " << sync << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglDestroySyncKHRFn(dpy, sync); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglGetConfigAttrib(EGLDisplay dpy, + EGLConfig config, + EGLint attribute, + EGLint* value) { + GL_SERVICE_LOG("eglGetConfigAttrib" + << "(" << dpy << ", " << config << ", " << attribute << ", " + << static_cast<const void*>(value) << ")"); + EGLBoolean result = + g_driver_egl.debug_fn.eglGetConfigAttribFn(dpy, config, attribute, value); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglGetConfigs(EGLDisplay dpy, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config) { + GL_SERVICE_LOG("eglGetConfigs" + << "(" << dpy << ", " << static_cast<const void*>(configs) + << ", " << config_size << ", " + << static_cast<const void*>(num_config) << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglGetConfigsFn( + dpy, configs, config_size, num_config); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLContext GL_BINDING_CALL Debug_eglGetCurrentContext(void) { + GL_SERVICE_LOG("eglGetCurrentContext" + << "(" + << ")"); + EGLContext result = g_driver_egl.debug_fn.eglGetCurrentContextFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLDisplay GL_BINDING_CALL Debug_eglGetCurrentDisplay(void) { + GL_SERVICE_LOG("eglGetCurrentDisplay" + << "(" + << ")"); + EGLDisplay result = g_driver_egl.debug_fn.eglGetCurrentDisplayFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLSurface GL_BINDING_CALL Debug_eglGetCurrentSurface(EGLint readdraw) { + GL_SERVICE_LOG("eglGetCurrentSurface" + << "(" << readdraw << ")"); + EGLSurface result = g_driver_egl.debug_fn.eglGetCurrentSurfaceFn(readdraw); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLDisplay GL_BINDING_CALL +Debug_eglGetDisplay(EGLNativeDisplayType display_id) { + GL_SERVICE_LOG("eglGetDisplay" + << "(" << display_id << ")"); + EGLDisplay result = g_driver_egl.debug_fn.eglGetDisplayFn(display_id); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLint GL_BINDING_CALL Debug_eglGetError(void) { + GL_SERVICE_LOG("eglGetError" + << "(" + << ")"); + EGLint result = g_driver_egl.debug_fn.eglGetErrorFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLDisplay GL_BINDING_CALL +Debug_eglGetPlatformDisplayEXT(EGLenum platform, + void* native_display, + const EGLint* attrib_list) { + GL_SERVICE_LOG("eglGetPlatformDisplayEXT" + << "(" << platform << ", " + << static_cast<const void*>(native_display) << ", " + << static_cast<const void*>(attrib_list) << ")"); + EGLDisplay result = g_driver_egl.debug_fn.eglGetPlatformDisplayEXTFn( + platform, native_display, attrib_list); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static __eglMustCastToProperFunctionPointerType GL_BINDING_CALL +Debug_eglGetProcAddress(const char* procname) { + GL_SERVICE_LOG("eglGetProcAddress" + << "(" << procname << ")"); + __eglMustCastToProperFunctionPointerType result = + g_driver_egl.debug_fn.eglGetProcAddressFn(procname); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglGetSyncAttribKHR(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint attribute, + EGLint* value) { + GL_SERVICE_LOG("eglGetSyncAttribKHR" + << "(" << dpy << ", " << sync << ", " << attribute << ", " + << static_cast<const void*>(value) << ")"); + EGLBoolean result = + g_driver_egl.debug_fn.eglGetSyncAttribKHRFn(dpy, sync, attribute, value); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglGetSyncValuesCHROMIUM(EGLDisplay dpy, + EGLSurface surface, + EGLuint64CHROMIUM* ust, + EGLuint64CHROMIUM* msc, + EGLuint64CHROMIUM* sbc) { + GL_SERVICE_LOG("eglGetSyncValuesCHROMIUM" + << "(" << dpy << ", " << surface << ", " + << static_cast<const void*>(ust) << ", " + << static_cast<const void*>(msc) << ", " + << static_cast<const void*>(sbc) << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglGetSyncValuesCHROMIUMFn( + dpy, surface, ust, msc, sbc); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglInitialize(EGLDisplay dpy, EGLint* major, EGLint* minor) { + GL_SERVICE_LOG("eglInitialize" + << "(" << dpy << ", " << static_cast<const void*>(major) + << ", " << static_cast<const void*>(minor) << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglInitializeFn(dpy, major, minor); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglMakeCurrent(EGLDisplay dpy, + EGLSurface draw, + EGLSurface read, + EGLContext ctx) { + GL_SERVICE_LOG("eglMakeCurrent" + << "(" << dpy << ", " << draw << ", " << read << ", " << ctx + << ")"); + EGLBoolean result = + g_driver_egl.debug_fn.eglMakeCurrentFn(dpy, draw, read, ctx); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglPostSubBufferNV(EGLDisplay dpy, + EGLSurface surface, + EGLint x, + EGLint y, + EGLint width, + EGLint height) { + GL_SERVICE_LOG("eglPostSubBufferNV" + << "(" << dpy << ", " << surface << ", " << x << ", " << y + << ", " << width << ", " << height << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglPostSubBufferNVFn( + dpy, surface, x, y, width, height); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLenum GL_BINDING_CALL Debug_eglQueryAPI(void) { + GL_SERVICE_LOG("eglQueryAPI" + << "(" + << ")"); + EGLenum result = g_driver_egl.debug_fn.eglQueryAPIFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglQueryContext(EGLDisplay dpy, + EGLContext ctx, + EGLint attribute, + EGLint* value) { + GL_SERVICE_LOG("eglQueryContext" + << "(" << dpy << ", " << ctx << ", " << attribute << ", " + << static_cast<const void*>(value) << ")"); + EGLBoolean result = + g_driver_egl.debug_fn.eglQueryContextFn(dpy, ctx, attribute, value); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static const char* GL_BINDING_CALL +Debug_eglQueryString(EGLDisplay dpy, EGLint name) { + GL_SERVICE_LOG("eglQueryString" + << "(" << dpy << ", " << name << ")"); + const char* result = g_driver_egl.debug_fn.eglQueryStringFn(dpy, name); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglQuerySurface(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint* value) { + GL_SERVICE_LOG("eglQuerySurface" + << "(" << dpy << ", " << surface << ", " << attribute << ", " + << static_cast<const void*>(value) << ")"); + EGLBoolean result = + g_driver_egl.debug_fn.eglQuerySurfaceFn(dpy, surface, attribute, value); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglQuerySurfacePointerANGLE(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + void** value) { + GL_SERVICE_LOG("eglQuerySurfacePointerANGLE" + << "(" << dpy << ", " << surface << ", " << attribute << ", " + << value << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglQuerySurfacePointerANGLEFn( + dpy, surface, attribute, value); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) { + GL_SERVICE_LOG("eglReleaseTexImage" + << "(" << dpy << ", " << surface << ", " << buffer << ")"); + EGLBoolean result = + g_driver_egl.debug_fn.eglReleaseTexImageFn(dpy, surface, buffer); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglReleaseThread(void) { + GL_SERVICE_LOG("eglReleaseThread" + << "(" + << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglReleaseThreadFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglSurfaceAttrib(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint value) { + GL_SERVICE_LOG("eglSurfaceAttrib" + << "(" << dpy << ", " << surface << ", " << attribute << ", " + << value << ")"); + EGLBoolean result = + g_driver_egl.debug_fn.eglSurfaceAttribFn(dpy, surface, attribute, value); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) { + GL_SERVICE_LOG("eglSwapBuffers" + << "(" << dpy << ", " << surface << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglSwapBuffersFn(dpy, surface); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL +Debug_eglSwapInterval(EGLDisplay dpy, EGLint interval) { + GL_SERVICE_LOG("eglSwapInterval" + << "(" << dpy << ", " << interval << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglSwapIntervalFn(dpy, interval); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglTerminate(EGLDisplay dpy) { + GL_SERVICE_LOG("eglTerminate" + << "(" << dpy << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglTerminateFn(dpy); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglWaitClient(void) { + GL_SERVICE_LOG("eglWaitClient" + << "(" + << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglWaitClientFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglWaitGL(void) { + GL_SERVICE_LOG("eglWaitGL" + << "(" + << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglWaitGLFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLBoolean GL_BINDING_CALL Debug_eglWaitNative(EGLint engine) { + GL_SERVICE_LOG("eglWaitNative" + << "(" << engine << ")"); + EGLBoolean result = g_driver_egl.debug_fn.eglWaitNativeFn(engine); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static EGLint GL_BINDING_CALL +Debug_eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags) { + GL_SERVICE_LOG("eglWaitSyncKHR" + << "(" << dpy << ", " << sync << ", " << flags << ")"); + EGLint result = g_driver_egl.debug_fn.eglWaitSyncKHRFn(dpy, sync, flags); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} +} // extern "C" + +void DriverEGL::InitializeDebugBindings() { + if (!debug_fn.eglBindAPIFn) { + debug_fn.eglBindAPIFn = fn.eglBindAPIFn; + fn.eglBindAPIFn = Debug_eglBindAPI; + } + if (!debug_fn.eglBindTexImageFn) { + debug_fn.eglBindTexImageFn = fn.eglBindTexImageFn; + fn.eglBindTexImageFn = Debug_eglBindTexImage; + } + if (!debug_fn.eglChooseConfigFn) { + debug_fn.eglChooseConfigFn = fn.eglChooseConfigFn; + fn.eglChooseConfigFn = Debug_eglChooseConfig; + } + if (!debug_fn.eglClientWaitSyncKHRFn) { + debug_fn.eglClientWaitSyncKHRFn = fn.eglClientWaitSyncKHRFn; + fn.eglClientWaitSyncKHRFn = Debug_eglClientWaitSyncKHR; + } + if (!debug_fn.eglCopyBuffersFn) { + debug_fn.eglCopyBuffersFn = fn.eglCopyBuffersFn; + fn.eglCopyBuffersFn = Debug_eglCopyBuffers; + } + if (!debug_fn.eglCreateContextFn) { + debug_fn.eglCreateContextFn = fn.eglCreateContextFn; + fn.eglCreateContextFn = Debug_eglCreateContext; + } + if (!debug_fn.eglCreateImageKHRFn) { + debug_fn.eglCreateImageKHRFn = fn.eglCreateImageKHRFn; + fn.eglCreateImageKHRFn = Debug_eglCreateImageKHR; + } + if (!debug_fn.eglCreatePbufferFromClientBufferFn) { + debug_fn.eglCreatePbufferFromClientBufferFn = + fn.eglCreatePbufferFromClientBufferFn; + fn.eglCreatePbufferFromClientBufferFn = + Debug_eglCreatePbufferFromClientBuffer; + } + if (!debug_fn.eglCreatePbufferSurfaceFn) { + debug_fn.eglCreatePbufferSurfaceFn = fn.eglCreatePbufferSurfaceFn; + fn.eglCreatePbufferSurfaceFn = Debug_eglCreatePbufferSurface; + } + if (!debug_fn.eglCreatePixmapSurfaceFn) { + debug_fn.eglCreatePixmapSurfaceFn = fn.eglCreatePixmapSurfaceFn; + fn.eglCreatePixmapSurfaceFn = Debug_eglCreatePixmapSurface; + } + if (!debug_fn.eglCreateSyncKHRFn) { + debug_fn.eglCreateSyncKHRFn = fn.eglCreateSyncKHRFn; + fn.eglCreateSyncKHRFn = Debug_eglCreateSyncKHR; + } + if (!debug_fn.eglCreateWindowSurfaceFn) { + debug_fn.eglCreateWindowSurfaceFn = fn.eglCreateWindowSurfaceFn; + fn.eglCreateWindowSurfaceFn = Debug_eglCreateWindowSurface; + } + if (!debug_fn.eglDestroyContextFn) { + debug_fn.eglDestroyContextFn = fn.eglDestroyContextFn; + fn.eglDestroyContextFn = Debug_eglDestroyContext; + } + if (!debug_fn.eglDestroyImageKHRFn) { + debug_fn.eglDestroyImageKHRFn = fn.eglDestroyImageKHRFn; + fn.eglDestroyImageKHRFn = Debug_eglDestroyImageKHR; + } + if (!debug_fn.eglDestroySurfaceFn) { + debug_fn.eglDestroySurfaceFn = fn.eglDestroySurfaceFn; + fn.eglDestroySurfaceFn = Debug_eglDestroySurface; + } + if (!debug_fn.eglDestroySyncKHRFn) { + debug_fn.eglDestroySyncKHRFn = fn.eglDestroySyncKHRFn; + fn.eglDestroySyncKHRFn = Debug_eglDestroySyncKHR; + } + if (!debug_fn.eglGetConfigAttribFn) { + debug_fn.eglGetConfigAttribFn = fn.eglGetConfigAttribFn; + fn.eglGetConfigAttribFn = Debug_eglGetConfigAttrib; + } + if (!debug_fn.eglGetConfigsFn) { + debug_fn.eglGetConfigsFn = fn.eglGetConfigsFn; + fn.eglGetConfigsFn = Debug_eglGetConfigs; + } + if (!debug_fn.eglGetCurrentContextFn) { + debug_fn.eglGetCurrentContextFn = fn.eglGetCurrentContextFn; + fn.eglGetCurrentContextFn = Debug_eglGetCurrentContext; + } + if (!debug_fn.eglGetCurrentDisplayFn) { + debug_fn.eglGetCurrentDisplayFn = fn.eglGetCurrentDisplayFn; + fn.eglGetCurrentDisplayFn = Debug_eglGetCurrentDisplay; + } + if (!debug_fn.eglGetCurrentSurfaceFn) { + debug_fn.eglGetCurrentSurfaceFn = fn.eglGetCurrentSurfaceFn; + fn.eglGetCurrentSurfaceFn = Debug_eglGetCurrentSurface; + } + if (!debug_fn.eglGetDisplayFn) { + debug_fn.eglGetDisplayFn = fn.eglGetDisplayFn; + fn.eglGetDisplayFn = Debug_eglGetDisplay; + } + if (!debug_fn.eglGetErrorFn) { + debug_fn.eglGetErrorFn = fn.eglGetErrorFn; + fn.eglGetErrorFn = Debug_eglGetError; + } + if (!debug_fn.eglGetPlatformDisplayEXTFn) { + debug_fn.eglGetPlatformDisplayEXTFn = fn.eglGetPlatformDisplayEXTFn; + fn.eglGetPlatformDisplayEXTFn = Debug_eglGetPlatformDisplayEXT; + } + if (!debug_fn.eglGetProcAddressFn) { + debug_fn.eglGetProcAddressFn = fn.eglGetProcAddressFn; + fn.eglGetProcAddressFn = Debug_eglGetProcAddress; + } + if (!debug_fn.eglGetSyncAttribKHRFn) { + debug_fn.eglGetSyncAttribKHRFn = fn.eglGetSyncAttribKHRFn; + fn.eglGetSyncAttribKHRFn = Debug_eglGetSyncAttribKHR; + } + if (!debug_fn.eglGetSyncValuesCHROMIUMFn) { + debug_fn.eglGetSyncValuesCHROMIUMFn = fn.eglGetSyncValuesCHROMIUMFn; + fn.eglGetSyncValuesCHROMIUMFn = Debug_eglGetSyncValuesCHROMIUM; + } + if (!debug_fn.eglInitializeFn) { + debug_fn.eglInitializeFn = fn.eglInitializeFn; + fn.eglInitializeFn = Debug_eglInitialize; + } + if (!debug_fn.eglMakeCurrentFn) { + debug_fn.eglMakeCurrentFn = fn.eglMakeCurrentFn; + fn.eglMakeCurrentFn = Debug_eglMakeCurrent; + } + if (!debug_fn.eglPostSubBufferNVFn) { + debug_fn.eglPostSubBufferNVFn = fn.eglPostSubBufferNVFn; + fn.eglPostSubBufferNVFn = Debug_eglPostSubBufferNV; + } + if (!debug_fn.eglQueryAPIFn) { + debug_fn.eglQueryAPIFn = fn.eglQueryAPIFn; + fn.eglQueryAPIFn = Debug_eglQueryAPI; + } + if (!debug_fn.eglQueryContextFn) { + debug_fn.eglQueryContextFn = fn.eglQueryContextFn; + fn.eglQueryContextFn = Debug_eglQueryContext; + } + if (!debug_fn.eglQueryStringFn) { + debug_fn.eglQueryStringFn = fn.eglQueryStringFn; + fn.eglQueryStringFn = Debug_eglQueryString; + } + if (!debug_fn.eglQuerySurfaceFn) { + debug_fn.eglQuerySurfaceFn = fn.eglQuerySurfaceFn; + fn.eglQuerySurfaceFn = Debug_eglQuerySurface; + } + if (!debug_fn.eglQuerySurfacePointerANGLEFn) { + debug_fn.eglQuerySurfacePointerANGLEFn = fn.eglQuerySurfacePointerANGLEFn; + fn.eglQuerySurfacePointerANGLEFn = Debug_eglQuerySurfacePointerANGLE; + } + if (!debug_fn.eglReleaseTexImageFn) { + debug_fn.eglReleaseTexImageFn = fn.eglReleaseTexImageFn; + fn.eglReleaseTexImageFn = Debug_eglReleaseTexImage; + } + if (!debug_fn.eglReleaseThreadFn) { + debug_fn.eglReleaseThreadFn = fn.eglReleaseThreadFn; + fn.eglReleaseThreadFn = Debug_eglReleaseThread; + } + if (!debug_fn.eglSurfaceAttribFn) { + debug_fn.eglSurfaceAttribFn = fn.eglSurfaceAttribFn; + fn.eglSurfaceAttribFn = Debug_eglSurfaceAttrib; + } + if (!debug_fn.eglSwapBuffersFn) { + debug_fn.eglSwapBuffersFn = fn.eglSwapBuffersFn; + fn.eglSwapBuffersFn = Debug_eglSwapBuffers; + } + if (!debug_fn.eglSwapIntervalFn) { + debug_fn.eglSwapIntervalFn = fn.eglSwapIntervalFn; + fn.eglSwapIntervalFn = Debug_eglSwapInterval; + } + if (!debug_fn.eglTerminateFn) { + debug_fn.eglTerminateFn = fn.eglTerminateFn; + fn.eglTerminateFn = Debug_eglTerminate; + } + if (!debug_fn.eglWaitClientFn) { + debug_fn.eglWaitClientFn = fn.eglWaitClientFn; + fn.eglWaitClientFn = Debug_eglWaitClient; + } + if (!debug_fn.eglWaitGLFn) { + debug_fn.eglWaitGLFn = fn.eglWaitGLFn; + fn.eglWaitGLFn = Debug_eglWaitGL; + } + if (!debug_fn.eglWaitNativeFn) { + debug_fn.eglWaitNativeFn = fn.eglWaitNativeFn; + fn.eglWaitNativeFn = Debug_eglWaitNative; + } + if (!debug_fn.eglWaitSyncKHRFn) { + debug_fn.eglWaitSyncKHRFn = fn.eglWaitSyncKHRFn; + fn.eglWaitSyncKHRFn = Debug_eglWaitSyncKHR; + } + g_debugBindingsInitialized = true; +} + +void DriverEGL::ClearBindings() { + memset(this, 0, sizeof(*this)); +} + +EGLBoolean EGLApiBase::eglBindAPIFn(EGLenum api) { + return driver_->fn.eglBindAPIFn(api); +} + +EGLBoolean EGLApiBase::eglBindTexImageFn(EGLDisplay dpy, + EGLSurface surface, + EGLint buffer) { + return driver_->fn.eglBindTexImageFn(dpy, surface, buffer); +} + +EGLBoolean EGLApiBase::eglChooseConfigFn(EGLDisplay dpy, + const EGLint* attrib_list, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config) { + return driver_->fn.eglChooseConfigFn(dpy, attrib_list, configs, config_size, + num_config); +} + +EGLint EGLApiBase::eglClientWaitSyncKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint flags, + EGLTimeKHR timeout) { + return driver_->fn.eglClientWaitSyncKHRFn(dpy, sync, flags, timeout); +} + +EGLBoolean EGLApiBase::eglCopyBuffersFn(EGLDisplay dpy, + EGLSurface surface, + EGLNativePixmapType target) { + return driver_->fn.eglCopyBuffersFn(dpy, surface, target); +} + +EGLContext EGLApiBase::eglCreateContextFn(EGLDisplay dpy, + EGLConfig config, + EGLContext share_context, + const EGLint* attrib_list) { + return driver_->fn.eglCreateContextFn(dpy, config, share_context, + attrib_list); +} + +EGLImageKHR EGLApiBase::eglCreateImageKHRFn(EGLDisplay dpy, + EGLContext ctx, + EGLenum target, + EGLClientBuffer buffer, + const EGLint* attrib_list) { + return driver_->fn.eglCreateImageKHRFn(dpy, ctx, target, buffer, attrib_list); +} + +EGLSurface EGLApiBase::eglCreatePbufferFromClientBufferFn( + EGLDisplay dpy, + EGLenum buftype, + void* buffer, + EGLConfig config, + const EGLint* attrib_list) { + return driver_->fn.eglCreatePbufferFromClientBufferFn(dpy, buftype, buffer, + config, attrib_list); +} + +EGLSurface EGLApiBase::eglCreatePbufferSurfaceFn(EGLDisplay dpy, + EGLConfig config, + const EGLint* attrib_list) { + return driver_->fn.eglCreatePbufferSurfaceFn(dpy, config, attrib_list); +} + +EGLSurface EGLApiBase::eglCreatePixmapSurfaceFn(EGLDisplay dpy, + EGLConfig config, + EGLNativePixmapType pixmap, + const EGLint* attrib_list) { + return driver_->fn.eglCreatePixmapSurfaceFn(dpy, config, pixmap, attrib_list); +} + +EGLSyncKHR EGLApiBase::eglCreateSyncKHRFn(EGLDisplay dpy, + EGLenum type, + const EGLint* attrib_list) { + return driver_->fn.eglCreateSyncKHRFn(dpy, type, attrib_list); +} + +EGLSurface EGLApiBase::eglCreateWindowSurfaceFn(EGLDisplay dpy, + EGLConfig config, + EGLNativeWindowType win, + const EGLint* attrib_list) { + return driver_->fn.eglCreateWindowSurfaceFn(dpy, config, win, attrib_list); +} + +EGLBoolean EGLApiBase::eglDestroyContextFn(EGLDisplay dpy, EGLContext ctx) { + return driver_->fn.eglDestroyContextFn(dpy, ctx); +} + +EGLBoolean EGLApiBase::eglDestroyImageKHRFn(EGLDisplay dpy, EGLImageKHR image) { + return driver_->fn.eglDestroyImageKHRFn(dpy, image); +} + +EGLBoolean EGLApiBase::eglDestroySurfaceFn(EGLDisplay dpy, EGLSurface surface) { + return driver_->fn.eglDestroySurfaceFn(dpy, surface); +} + +EGLBoolean EGLApiBase::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) { + return driver_->fn.eglDestroySyncKHRFn(dpy, sync); +} + +EGLBoolean EGLApiBase::eglGetConfigAttribFn(EGLDisplay dpy, + EGLConfig config, + EGLint attribute, + EGLint* value) { + return driver_->fn.eglGetConfigAttribFn(dpy, config, attribute, value); +} + +EGLBoolean EGLApiBase::eglGetConfigsFn(EGLDisplay dpy, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config) { + return driver_->fn.eglGetConfigsFn(dpy, configs, config_size, num_config); +} + +EGLContext EGLApiBase::eglGetCurrentContextFn(void) { + return driver_->fn.eglGetCurrentContextFn(); +} + +EGLDisplay EGLApiBase::eglGetCurrentDisplayFn(void) { + return driver_->fn.eglGetCurrentDisplayFn(); +} + +EGLSurface EGLApiBase::eglGetCurrentSurfaceFn(EGLint readdraw) { + return driver_->fn.eglGetCurrentSurfaceFn(readdraw); +} + +EGLDisplay EGLApiBase::eglGetDisplayFn(EGLNativeDisplayType display_id) { + return driver_->fn.eglGetDisplayFn(display_id); +} + +EGLint EGLApiBase::eglGetErrorFn(void) { + return driver_->fn.eglGetErrorFn(); +} + +EGLDisplay EGLApiBase::eglGetPlatformDisplayEXTFn(EGLenum platform, + void* native_display, + const EGLint* attrib_list) { + return driver_->fn.eglGetPlatformDisplayEXTFn(platform, native_display, + attrib_list); +} + +__eglMustCastToProperFunctionPointerType EGLApiBase::eglGetProcAddressFn( + const char* procname) { + return driver_->fn.eglGetProcAddressFn(procname); +} + +EGLBoolean EGLApiBase::eglGetSyncAttribKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint attribute, + EGLint* value) { + return driver_->fn.eglGetSyncAttribKHRFn(dpy, sync, attribute, value); +} + +EGLBoolean EGLApiBase::eglGetSyncValuesCHROMIUMFn(EGLDisplay dpy, + EGLSurface surface, + EGLuint64CHROMIUM* ust, + EGLuint64CHROMIUM* msc, + EGLuint64CHROMIUM* sbc) { + return driver_->fn.eglGetSyncValuesCHROMIUMFn(dpy, surface, ust, msc, sbc); +} + +EGLBoolean EGLApiBase::eglInitializeFn(EGLDisplay dpy, + EGLint* major, + EGLint* minor) { + return driver_->fn.eglInitializeFn(dpy, major, minor); +} + +EGLBoolean EGLApiBase::eglMakeCurrentFn(EGLDisplay dpy, + EGLSurface draw, + EGLSurface read, + EGLContext ctx) { + return driver_->fn.eglMakeCurrentFn(dpy, draw, read, ctx); +} + +EGLBoolean EGLApiBase::eglPostSubBufferNVFn(EGLDisplay dpy, + EGLSurface surface, + EGLint x, + EGLint y, + EGLint width, + EGLint height) { + return driver_->fn.eglPostSubBufferNVFn(dpy, surface, x, y, width, height); +} + +EGLenum EGLApiBase::eglQueryAPIFn(void) { + return driver_->fn.eglQueryAPIFn(); +} + +EGLBoolean EGLApiBase::eglQueryContextFn(EGLDisplay dpy, + EGLContext ctx, + EGLint attribute, + EGLint* value) { + return driver_->fn.eglQueryContextFn(dpy, ctx, attribute, value); +} + +const char* EGLApiBase::eglQueryStringFn(EGLDisplay dpy, EGLint name) { + return driver_->fn.eglQueryStringFn(dpy, name); +} + +EGLBoolean EGLApiBase::eglQuerySurfaceFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint* value) { + return driver_->fn.eglQuerySurfaceFn(dpy, surface, attribute, value); +} + +EGLBoolean EGLApiBase::eglQuerySurfacePointerANGLEFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + void** value) { + return driver_->fn.eglQuerySurfacePointerANGLEFn(dpy, surface, attribute, + value); +} + +EGLBoolean EGLApiBase::eglReleaseTexImageFn(EGLDisplay dpy, + EGLSurface surface, + EGLint buffer) { + return driver_->fn.eglReleaseTexImageFn(dpy, surface, buffer); +} + +EGLBoolean EGLApiBase::eglReleaseThreadFn(void) { + return driver_->fn.eglReleaseThreadFn(); +} + +EGLBoolean EGLApiBase::eglSurfaceAttribFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint value) { + return driver_->fn.eglSurfaceAttribFn(dpy, surface, attribute, value); +} + +EGLBoolean EGLApiBase::eglSwapBuffersFn(EGLDisplay dpy, EGLSurface surface) { + return driver_->fn.eglSwapBuffersFn(dpy, surface); +} + +EGLBoolean EGLApiBase::eglSwapIntervalFn(EGLDisplay dpy, EGLint interval) { + return driver_->fn.eglSwapIntervalFn(dpy, interval); +} + +EGLBoolean EGLApiBase::eglTerminateFn(EGLDisplay dpy) { + return driver_->fn.eglTerminateFn(dpy); +} + +EGLBoolean EGLApiBase::eglWaitClientFn(void) { + return driver_->fn.eglWaitClientFn(); +} + +EGLBoolean EGLApiBase::eglWaitGLFn(void) { + return driver_->fn.eglWaitGLFn(); +} + +EGLBoolean EGLApiBase::eglWaitNativeFn(EGLint engine) { + return driver_->fn.eglWaitNativeFn(engine); +} + +EGLint EGLApiBase::eglWaitSyncKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint flags) { + return driver_->fn.eglWaitSyncKHRFn(dpy, sync, flags); +} + +EGLBoolean TraceEGLApi::eglBindAPIFn(EGLenum api) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglBindAPI") + return egl_api_->eglBindAPIFn(api); +} + +EGLBoolean TraceEGLApi::eglBindTexImageFn(EGLDisplay dpy, + EGLSurface surface, + EGLint buffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglBindTexImage") + return egl_api_->eglBindTexImageFn(dpy, surface, buffer); +} + +EGLBoolean TraceEGLApi::eglChooseConfigFn(EGLDisplay dpy, + const EGLint* attrib_list, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglChooseConfig") + return egl_api_->eglChooseConfigFn(dpy, attrib_list, configs, config_size, + num_config); +} + +EGLint TraceEGLApi::eglClientWaitSyncKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint flags, + EGLTimeKHR timeout) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglClientWaitSyncKHR") + return egl_api_->eglClientWaitSyncKHRFn(dpy, sync, flags, timeout); +} + +EGLBoolean TraceEGLApi::eglCopyBuffersFn(EGLDisplay dpy, + EGLSurface surface, + EGLNativePixmapType target) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCopyBuffers") + return egl_api_->eglCopyBuffersFn(dpy, surface, target); +} + +EGLContext TraceEGLApi::eglCreateContextFn(EGLDisplay dpy, + EGLConfig config, + EGLContext share_context, + const EGLint* attrib_list) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreateContext") + return egl_api_->eglCreateContextFn(dpy, config, share_context, attrib_list); +} + +EGLImageKHR TraceEGLApi::eglCreateImageKHRFn(EGLDisplay dpy, + EGLContext ctx, + EGLenum target, + EGLClientBuffer buffer, + const EGLint* attrib_list) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreateImageKHR") + return egl_api_->eglCreateImageKHRFn(dpy, ctx, target, buffer, attrib_list); +} + +EGLSurface TraceEGLApi::eglCreatePbufferFromClientBufferFn( + EGLDisplay dpy, + EGLenum buftype, + void* buffer, + EGLConfig config, + const EGLint* attrib_list) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::eglCreatePbufferFromClientBuffer") + return egl_api_->eglCreatePbufferFromClientBufferFn(dpy, buftype, buffer, + config, attrib_list); +} + +EGLSurface TraceEGLApi::eglCreatePbufferSurfaceFn(EGLDisplay dpy, + EGLConfig config, + const EGLint* attrib_list) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreatePbufferSurface") + return egl_api_->eglCreatePbufferSurfaceFn(dpy, config, attrib_list); +} + +EGLSurface TraceEGLApi::eglCreatePixmapSurfaceFn(EGLDisplay dpy, + EGLConfig config, + EGLNativePixmapType pixmap, + const EGLint* attrib_list) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreatePixmapSurface") + return egl_api_->eglCreatePixmapSurfaceFn(dpy, config, pixmap, attrib_list); +} + +EGLSyncKHR TraceEGLApi::eglCreateSyncKHRFn(EGLDisplay dpy, + EGLenum type, + const EGLint* attrib_list) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreateSyncKHR") + return egl_api_->eglCreateSyncKHRFn(dpy, type, attrib_list); +} + +EGLSurface TraceEGLApi::eglCreateWindowSurfaceFn(EGLDisplay dpy, + EGLConfig config, + EGLNativeWindowType win, + const EGLint* attrib_list) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreateWindowSurface") + return egl_api_->eglCreateWindowSurfaceFn(dpy, config, win, attrib_list); +} + +EGLBoolean TraceEGLApi::eglDestroyContextFn(EGLDisplay dpy, EGLContext ctx) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglDestroyContext") + return egl_api_->eglDestroyContextFn(dpy, ctx); +} + +EGLBoolean TraceEGLApi::eglDestroyImageKHRFn(EGLDisplay dpy, + EGLImageKHR image) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglDestroyImageKHR") + return egl_api_->eglDestroyImageKHRFn(dpy, image); +} + +EGLBoolean TraceEGLApi::eglDestroySurfaceFn(EGLDisplay dpy, + EGLSurface surface) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglDestroySurface") + return egl_api_->eglDestroySurfaceFn(dpy, surface); +} + +EGLBoolean TraceEGLApi::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglDestroySyncKHR") + return egl_api_->eglDestroySyncKHRFn(dpy, sync); +} + +EGLBoolean TraceEGLApi::eglGetConfigAttribFn(EGLDisplay dpy, + EGLConfig config, + EGLint attribute, + EGLint* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetConfigAttrib") + return egl_api_->eglGetConfigAttribFn(dpy, config, attribute, value); +} + +EGLBoolean TraceEGLApi::eglGetConfigsFn(EGLDisplay dpy, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetConfigs") + return egl_api_->eglGetConfigsFn(dpy, configs, config_size, num_config); +} + +EGLContext TraceEGLApi::eglGetCurrentContextFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetCurrentContext") + return egl_api_->eglGetCurrentContextFn(); +} + +EGLDisplay TraceEGLApi::eglGetCurrentDisplayFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetCurrentDisplay") + return egl_api_->eglGetCurrentDisplayFn(); +} + +EGLSurface TraceEGLApi::eglGetCurrentSurfaceFn(EGLint readdraw) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetCurrentSurface") + return egl_api_->eglGetCurrentSurfaceFn(readdraw); +} + +EGLDisplay TraceEGLApi::eglGetDisplayFn(EGLNativeDisplayType display_id) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetDisplay") + return egl_api_->eglGetDisplayFn(display_id); +} + +EGLint TraceEGLApi::eglGetErrorFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetError") + return egl_api_->eglGetErrorFn(); +} + +EGLDisplay TraceEGLApi::eglGetPlatformDisplayEXTFn(EGLenum platform, + void* native_display, + const EGLint* attrib_list) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetPlatformDisplayEXT") + return egl_api_->eglGetPlatformDisplayEXTFn(platform, native_display, + attrib_list); +} + +__eglMustCastToProperFunctionPointerType TraceEGLApi::eglGetProcAddressFn( + const char* procname) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetProcAddress") + return egl_api_->eglGetProcAddressFn(procname); +} + +EGLBoolean TraceEGLApi::eglGetSyncAttribKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint attribute, + EGLint* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetSyncAttribKHR") + return egl_api_->eglGetSyncAttribKHRFn(dpy, sync, attribute, value); +} + +EGLBoolean TraceEGLApi::eglGetSyncValuesCHROMIUMFn(EGLDisplay dpy, + EGLSurface surface, + EGLuint64CHROMIUM* ust, + EGLuint64CHROMIUM* msc, + EGLuint64CHROMIUM* sbc) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetSyncValuesCHROMIUM") + return egl_api_->eglGetSyncValuesCHROMIUMFn(dpy, surface, ust, msc, sbc); +} + +EGLBoolean TraceEGLApi::eglInitializeFn(EGLDisplay dpy, + EGLint* major, + EGLint* minor) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglInitialize") + return egl_api_->eglInitializeFn(dpy, major, minor); +} + +EGLBoolean TraceEGLApi::eglMakeCurrentFn(EGLDisplay dpy, + EGLSurface draw, + EGLSurface read, + EGLContext ctx) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglMakeCurrent") + return egl_api_->eglMakeCurrentFn(dpy, draw, read, ctx); +} + +EGLBoolean TraceEGLApi::eglPostSubBufferNVFn(EGLDisplay dpy, + EGLSurface surface, + EGLint x, + EGLint y, + EGLint width, + EGLint height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglPostSubBufferNV") + return egl_api_->eglPostSubBufferNVFn(dpy, surface, x, y, width, height); +} + +EGLenum TraceEGLApi::eglQueryAPIFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglQueryAPI") + return egl_api_->eglQueryAPIFn(); +} + +EGLBoolean TraceEGLApi::eglQueryContextFn(EGLDisplay dpy, + EGLContext ctx, + EGLint attribute, + EGLint* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglQueryContext") + return egl_api_->eglQueryContextFn(dpy, ctx, attribute, value); +} + +const char* TraceEGLApi::eglQueryStringFn(EGLDisplay dpy, EGLint name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglQueryString") + return egl_api_->eglQueryStringFn(dpy, name); +} + +EGLBoolean TraceEGLApi::eglQuerySurfaceFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglQuerySurface") + return egl_api_->eglQuerySurfaceFn(dpy, surface, attribute, value); +} + +EGLBoolean TraceEGLApi::eglQuerySurfacePointerANGLEFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + void** value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::eglQuerySurfacePointerANGLE") + return egl_api_->eglQuerySurfacePointerANGLEFn(dpy, surface, attribute, + value); +} + +EGLBoolean TraceEGLApi::eglReleaseTexImageFn(EGLDisplay dpy, + EGLSurface surface, + EGLint buffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglReleaseTexImage") + return egl_api_->eglReleaseTexImageFn(dpy, surface, buffer); +} + +EGLBoolean TraceEGLApi::eglReleaseThreadFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglReleaseThread") + return egl_api_->eglReleaseThreadFn(); +} + +EGLBoolean TraceEGLApi::eglSurfaceAttribFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglSurfaceAttrib") + return egl_api_->eglSurfaceAttribFn(dpy, surface, attribute, value); +} + +EGLBoolean TraceEGLApi::eglSwapBuffersFn(EGLDisplay dpy, EGLSurface surface) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglSwapBuffers") + return egl_api_->eglSwapBuffersFn(dpy, surface); +} + +EGLBoolean TraceEGLApi::eglSwapIntervalFn(EGLDisplay dpy, EGLint interval) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglSwapInterval") + return egl_api_->eglSwapIntervalFn(dpy, interval); +} + +EGLBoolean TraceEGLApi::eglTerminateFn(EGLDisplay dpy) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglTerminate") + return egl_api_->eglTerminateFn(dpy); +} + +EGLBoolean TraceEGLApi::eglWaitClientFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglWaitClient") + return egl_api_->eglWaitClientFn(); +} + +EGLBoolean TraceEGLApi::eglWaitGLFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglWaitGL") + return egl_api_->eglWaitGLFn(); +} + +EGLBoolean TraceEGLApi::eglWaitNativeFn(EGLint engine) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglWaitNative") + return egl_api_->eglWaitNativeFn(engine); +} + +EGLint TraceEGLApi::eglWaitSyncKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint flags) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglWaitSyncKHR") + return egl_api_->eglWaitSyncKHRFn(dpy, sync, flags); +} + +} // namespace gfx
diff --git a/ui/gl/gl_bindings_autogen_egl.h b/ui/gl/gl_bindings_autogen_egl.h new file mode 100644 index 0000000..a49935e --- /dev/null +++ b/ui/gl/gl_bindings_autogen_egl.h
@@ -0,0 +1,407 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_EGL_H_ +#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_EGL_H_ + +namespace gfx { + +class GLContext; + +typedef EGLBoolean(GL_BINDING_CALL* eglBindAPIProc)(EGLenum api); +typedef EGLBoolean(GL_BINDING_CALL* eglBindTexImageProc)(EGLDisplay dpy, + EGLSurface surface, + EGLint buffer); +typedef EGLBoolean(GL_BINDING_CALL* eglChooseConfigProc)( + EGLDisplay dpy, + const EGLint* attrib_list, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config); +typedef EGLint(GL_BINDING_CALL* eglClientWaitSyncKHRProc)(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint flags, + EGLTimeKHR timeout); +typedef EGLBoolean(GL_BINDING_CALL* eglCopyBuffersProc)( + EGLDisplay dpy, + EGLSurface surface, + EGLNativePixmapType target); +typedef EGLContext(GL_BINDING_CALL* eglCreateContextProc)( + EGLDisplay dpy, + EGLConfig config, + EGLContext share_context, + const EGLint* attrib_list); +typedef EGLImageKHR(GL_BINDING_CALL* eglCreateImageKHRProc)( + EGLDisplay dpy, + EGLContext ctx, + EGLenum target, + EGLClientBuffer buffer, + const EGLint* attrib_list); +typedef EGLSurface(GL_BINDING_CALL* eglCreatePbufferFromClientBufferProc)( + EGLDisplay dpy, + EGLenum buftype, + void* buffer, + EGLConfig config, + const EGLint* attrib_list); +typedef EGLSurface(GL_BINDING_CALL* eglCreatePbufferSurfaceProc)( + EGLDisplay dpy, + EGLConfig config, + const EGLint* attrib_list); +typedef EGLSurface(GL_BINDING_CALL* eglCreatePixmapSurfaceProc)( + EGLDisplay dpy, + EGLConfig config, + EGLNativePixmapType pixmap, + const EGLint* attrib_list); +typedef EGLSyncKHR(GL_BINDING_CALL* eglCreateSyncKHRProc)( + EGLDisplay dpy, + EGLenum type, + const EGLint* attrib_list); +typedef EGLSurface(GL_BINDING_CALL* eglCreateWindowSurfaceProc)( + EGLDisplay dpy, + EGLConfig config, + EGLNativeWindowType win, + const EGLint* attrib_list); +typedef EGLBoolean(GL_BINDING_CALL* eglDestroyContextProc)(EGLDisplay dpy, + EGLContext ctx); +typedef EGLBoolean(GL_BINDING_CALL* eglDestroyImageKHRProc)(EGLDisplay dpy, + EGLImageKHR image); +typedef EGLBoolean(GL_BINDING_CALL* eglDestroySurfaceProc)(EGLDisplay dpy, + EGLSurface surface); +typedef EGLBoolean(GL_BINDING_CALL* eglDestroySyncKHRProc)(EGLDisplay dpy, + EGLSyncKHR sync); +typedef EGLBoolean(GL_BINDING_CALL* eglGetConfigAttribProc)(EGLDisplay dpy, + EGLConfig config, + EGLint attribute, + EGLint* value); +typedef EGLBoolean(GL_BINDING_CALL* eglGetConfigsProc)(EGLDisplay dpy, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config); +typedef EGLContext(GL_BINDING_CALL* eglGetCurrentContextProc)(void); +typedef EGLDisplay(GL_BINDING_CALL* eglGetCurrentDisplayProc)(void); +typedef EGLSurface(GL_BINDING_CALL* eglGetCurrentSurfaceProc)(EGLint readdraw); +typedef EGLDisplay(GL_BINDING_CALL* eglGetDisplayProc)( + EGLNativeDisplayType display_id); +typedef EGLint(GL_BINDING_CALL* eglGetErrorProc)(void); +typedef EGLDisplay(GL_BINDING_CALL* eglGetPlatformDisplayEXTProc)( + EGLenum platform, + void* native_display, + const EGLint* attrib_list); +typedef __eglMustCastToProperFunctionPointerType( + GL_BINDING_CALL* eglGetProcAddressProc)(const char* procname); +typedef EGLBoolean(GL_BINDING_CALL* eglGetSyncAttribKHRProc)(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint attribute, + EGLint* value); +typedef EGLBoolean(GL_BINDING_CALL* eglGetSyncValuesCHROMIUMProc)( + EGLDisplay dpy, + EGLSurface surface, + EGLuint64CHROMIUM* ust, + EGLuint64CHROMIUM* msc, + EGLuint64CHROMIUM* sbc); +typedef EGLBoolean(GL_BINDING_CALL* eglInitializeProc)(EGLDisplay dpy, + EGLint* major, + EGLint* minor); +typedef EGLBoolean(GL_BINDING_CALL* eglMakeCurrentProc)(EGLDisplay dpy, + EGLSurface draw, + EGLSurface read, + EGLContext ctx); +typedef EGLBoolean(GL_BINDING_CALL* eglPostSubBufferNVProc)(EGLDisplay dpy, + EGLSurface surface, + EGLint x, + EGLint y, + EGLint width, + EGLint height); +typedef EGLenum(GL_BINDING_CALL* eglQueryAPIProc)(void); +typedef EGLBoolean(GL_BINDING_CALL* eglQueryContextProc)(EGLDisplay dpy, + EGLContext ctx, + EGLint attribute, + EGLint* value); +typedef const char*(GL_BINDING_CALL* eglQueryStringProc)(EGLDisplay dpy, + EGLint name); +typedef EGLBoolean(GL_BINDING_CALL* eglQuerySurfaceProc)(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint* value); +typedef EGLBoolean(GL_BINDING_CALL* eglQuerySurfacePointerANGLEProc)( + EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + void** value); +typedef EGLBoolean(GL_BINDING_CALL* eglReleaseTexImageProc)(EGLDisplay dpy, + EGLSurface surface, + EGLint buffer); +typedef EGLBoolean(GL_BINDING_CALL* eglReleaseThreadProc)(void); +typedef EGLBoolean(GL_BINDING_CALL* eglSurfaceAttribProc)(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint value); +typedef EGLBoolean(GL_BINDING_CALL* eglSwapBuffersProc)(EGLDisplay dpy, + EGLSurface surface); +typedef EGLBoolean(GL_BINDING_CALL* eglSwapIntervalProc)(EGLDisplay dpy, + EGLint interval); +typedef EGLBoolean(GL_BINDING_CALL* eglTerminateProc)(EGLDisplay dpy); +typedef EGLBoolean(GL_BINDING_CALL* eglWaitClientProc)(void); +typedef EGLBoolean(GL_BINDING_CALL* eglWaitGLProc)(void); +typedef EGLBoolean(GL_BINDING_CALL* eglWaitNativeProc)(EGLint engine); +typedef EGLint(GL_BINDING_CALL* eglWaitSyncKHRProc)(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint flags); + +struct ExtensionsEGL { + bool b_EGL_ANGLE_d3d_share_handle_client_buffer; + bool b_EGL_ANGLE_platform_angle; + bool b_EGL_ANGLE_query_surface_pointer; + bool b_EGL_ANGLE_surface_d3d_texture_2d_share_handle; + bool b_EGL_CHROMIUM_sync_control; + bool b_EGL_KHR_fence_sync; + bool b_EGL_KHR_gl_texture_2D_image; + bool b_EGL_KHR_image_base; + bool b_EGL_KHR_wait_sync; + bool b_EGL_NV_post_sub_buffer; +}; + +struct ProcsEGL { + eglBindAPIProc eglBindAPIFn; + eglBindTexImageProc eglBindTexImageFn; + eglChooseConfigProc eglChooseConfigFn; + eglClientWaitSyncKHRProc eglClientWaitSyncKHRFn; + eglCopyBuffersProc eglCopyBuffersFn; + eglCreateContextProc eglCreateContextFn; + eglCreateImageKHRProc eglCreateImageKHRFn; + eglCreatePbufferFromClientBufferProc eglCreatePbufferFromClientBufferFn; + eglCreatePbufferSurfaceProc eglCreatePbufferSurfaceFn; + eglCreatePixmapSurfaceProc eglCreatePixmapSurfaceFn; + eglCreateSyncKHRProc eglCreateSyncKHRFn; + eglCreateWindowSurfaceProc eglCreateWindowSurfaceFn; + eglDestroyContextProc eglDestroyContextFn; + eglDestroyImageKHRProc eglDestroyImageKHRFn; + eglDestroySurfaceProc eglDestroySurfaceFn; + eglDestroySyncKHRProc eglDestroySyncKHRFn; + eglGetConfigAttribProc eglGetConfigAttribFn; + eglGetConfigsProc eglGetConfigsFn; + eglGetCurrentContextProc eglGetCurrentContextFn; + eglGetCurrentDisplayProc eglGetCurrentDisplayFn; + eglGetCurrentSurfaceProc eglGetCurrentSurfaceFn; + eglGetDisplayProc eglGetDisplayFn; + eglGetErrorProc eglGetErrorFn; + eglGetPlatformDisplayEXTProc eglGetPlatformDisplayEXTFn; + eglGetProcAddressProc eglGetProcAddressFn; + eglGetSyncAttribKHRProc eglGetSyncAttribKHRFn; + eglGetSyncValuesCHROMIUMProc eglGetSyncValuesCHROMIUMFn; + eglInitializeProc eglInitializeFn; + eglMakeCurrentProc eglMakeCurrentFn; + eglPostSubBufferNVProc eglPostSubBufferNVFn; + eglQueryAPIProc eglQueryAPIFn; + eglQueryContextProc eglQueryContextFn; + eglQueryStringProc eglQueryStringFn; + eglQuerySurfaceProc eglQuerySurfaceFn; + eglQuerySurfacePointerANGLEProc eglQuerySurfacePointerANGLEFn; + eglReleaseTexImageProc eglReleaseTexImageFn; + eglReleaseThreadProc eglReleaseThreadFn; + eglSurfaceAttribProc eglSurfaceAttribFn; + eglSwapBuffersProc eglSwapBuffersFn; + eglSwapIntervalProc eglSwapIntervalFn; + eglTerminateProc eglTerminateFn; + eglWaitClientProc eglWaitClientFn; + eglWaitGLProc eglWaitGLFn; + eglWaitNativeProc eglWaitNativeFn; + eglWaitSyncKHRProc eglWaitSyncKHRFn; +}; + +class GL_EXPORT EGLApi { + public: + EGLApi(); + virtual ~EGLApi(); + + virtual EGLBoolean eglBindAPIFn(EGLenum api) = 0; + virtual EGLBoolean eglBindTexImageFn(EGLDisplay dpy, + EGLSurface surface, + EGLint buffer) = 0; + virtual EGLBoolean eglChooseConfigFn(EGLDisplay dpy, + const EGLint* attrib_list, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config) = 0; + virtual EGLint eglClientWaitSyncKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint flags, + EGLTimeKHR timeout) = 0; + virtual EGLBoolean eglCopyBuffersFn(EGLDisplay dpy, + EGLSurface surface, + EGLNativePixmapType target) = 0; + virtual EGLContext eglCreateContextFn(EGLDisplay dpy, + EGLConfig config, + EGLContext share_context, + const EGLint* attrib_list) = 0; + virtual EGLImageKHR eglCreateImageKHRFn(EGLDisplay dpy, + EGLContext ctx, + EGLenum target, + EGLClientBuffer buffer, + const EGLint* attrib_list) = 0; + virtual EGLSurface eglCreatePbufferFromClientBufferFn( + EGLDisplay dpy, + EGLenum buftype, + void* buffer, + EGLConfig config, + const EGLint* attrib_list) = 0; + virtual EGLSurface eglCreatePbufferSurfaceFn(EGLDisplay dpy, + EGLConfig config, + const EGLint* attrib_list) = 0; + virtual EGLSurface eglCreatePixmapSurfaceFn(EGLDisplay dpy, + EGLConfig config, + EGLNativePixmapType pixmap, + const EGLint* attrib_list) = 0; + virtual EGLSyncKHR eglCreateSyncKHRFn(EGLDisplay dpy, + EGLenum type, + const EGLint* attrib_list) = 0; + virtual EGLSurface eglCreateWindowSurfaceFn(EGLDisplay dpy, + EGLConfig config, + EGLNativeWindowType win, + const EGLint* attrib_list) = 0; + virtual EGLBoolean eglDestroyContextFn(EGLDisplay dpy, EGLContext ctx) = 0; + virtual EGLBoolean eglDestroyImageKHRFn(EGLDisplay dpy, + EGLImageKHR image) = 0; + virtual EGLBoolean eglDestroySurfaceFn(EGLDisplay dpy, + EGLSurface surface) = 0; + virtual EGLBoolean eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) = 0; + virtual EGLBoolean eglGetConfigAttribFn(EGLDisplay dpy, + EGLConfig config, + EGLint attribute, + EGLint* value) = 0; + virtual EGLBoolean eglGetConfigsFn(EGLDisplay dpy, + EGLConfig* configs, + EGLint config_size, + EGLint* num_config) = 0; + virtual EGLContext eglGetCurrentContextFn(void) = 0; + virtual EGLDisplay eglGetCurrentDisplayFn(void) = 0; + virtual EGLSurface eglGetCurrentSurfaceFn(EGLint readdraw) = 0; + virtual EGLDisplay eglGetDisplayFn(EGLNativeDisplayType display_id) = 0; + virtual EGLint eglGetErrorFn(void) = 0; + virtual EGLDisplay eglGetPlatformDisplayEXTFn(EGLenum platform, + void* native_display, + const EGLint* attrib_list) = 0; + virtual __eglMustCastToProperFunctionPointerType eglGetProcAddressFn( + const char* procname) = 0; + virtual EGLBoolean eglGetSyncAttribKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint attribute, + EGLint* value) = 0; + virtual EGLBoolean eglGetSyncValuesCHROMIUMFn(EGLDisplay dpy, + EGLSurface surface, + EGLuint64CHROMIUM* ust, + EGLuint64CHROMIUM* msc, + EGLuint64CHROMIUM* sbc) = 0; + virtual EGLBoolean eglInitializeFn(EGLDisplay dpy, + EGLint* major, + EGLint* minor) = 0; + virtual EGLBoolean eglMakeCurrentFn(EGLDisplay dpy, + EGLSurface draw, + EGLSurface read, + EGLContext ctx) = 0; + virtual EGLBoolean eglPostSubBufferNVFn(EGLDisplay dpy, + EGLSurface surface, + EGLint x, + EGLint y, + EGLint width, + EGLint height) = 0; + virtual EGLenum eglQueryAPIFn(void) = 0; + virtual EGLBoolean eglQueryContextFn(EGLDisplay dpy, + EGLContext ctx, + EGLint attribute, + EGLint* value) = 0; + virtual const char* eglQueryStringFn(EGLDisplay dpy, EGLint name) = 0; + virtual EGLBoolean eglQuerySurfaceFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint* value) = 0; + virtual EGLBoolean eglQuerySurfacePointerANGLEFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + void** value) = 0; + virtual EGLBoolean eglReleaseTexImageFn(EGLDisplay dpy, + EGLSurface surface, + EGLint buffer) = 0; + virtual EGLBoolean eglReleaseThreadFn(void) = 0; + virtual EGLBoolean eglSurfaceAttribFn(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, + EGLint value) = 0; + virtual EGLBoolean eglSwapBuffersFn(EGLDisplay dpy, EGLSurface surface) = 0; + virtual EGLBoolean eglSwapIntervalFn(EGLDisplay dpy, EGLint interval) = 0; + virtual EGLBoolean eglTerminateFn(EGLDisplay dpy) = 0; + virtual EGLBoolean eglWaitClientFn(void) = 0; + virtual EGLBoolean eglWaitGLFn(void) = 0; + virtual EGLBoolean eglWaitNativeFn(EGLint engine) = 0; + virtual EGLint eglWaitSyncKHRFn(EGLDisplay dpy, + EGLSyncKHR sync, + EGLint flags) = 0; +}; + +} // namespace gfx + +#define eglBindAPI ::gfx::g_current_egl_context->eglBindAPIFn +#define eglBindTexImage ::gfx::g_current_egl_context->eglBindTexImageFn +#define eglChooseConfig ::gfx::g_current_egl_context->eglChooseConfigFn +#define eglClientWaitSyncKHR \ + ::gfx::g_current_egl_context->eglClientWaitSyncKHRFn +#define eglCopyBuffers ::gfx::g_current_egl_context->eglCopyBuffersFn +#define eglCreateContext ::gfx::g_current_egl_context->eglCreateContextFn +#define eglCreateImageKHR ::gfx::g_current_egl_context->eglCreateImageKHRFn +#define eglCreatePbufferFromClientBuffer \ + ::gfx::g_current_egl_context->eglCreatePbufferFromClientBufferFn +#define eglCreatePbufferSurface \ + ::gfx::g_current_egl_context->eglCreatePbufferSurfaceFn +#define eglCreatePixmapSurface \ + ::gfx::g_current_egl_context->eglCreatePixmapSurfaceFn +#define eglCreateSyncKHR ::gfx::g_current_egl_context->eglCreateSyncKHRFn +#define eglCreateWindowSurface \ + ::gfx::g_current_egl_context->eglCreateWindowSurfaceFn +#define eglDestroyContext ::gfx::g_current_egl_context->eglDestroyContextFn +#define eglDestroyImageKHR ::gfx::g_current_egl_context->eglDestroyImageKHRFn +#define eglDestroySurface ::gfx::g_current_egl_context->eglDestroySurfaceFn +#define eglDestroySyncKHR ::gfx::g_current_egl_context->eglDestroySyncKHRFn +#define eglGetConfigAttrib ::gfx::g_current_egl_context->eglGetConfigAttribFn +#define eglGetConfigs ::gfx::g_current_egl_context->eglGetConfigsFn +#define eglGetCurrentContext \ + ::gfx::g_current_egl_context->eglGetCurrentContextFn +#define eglGetCurrentDisplay \ + ::gfx::g_current_egl_context->eglGetCurrentDisplayFn +#define eglGetCurrentSurface \ + ::gfx::g_current_egl_context->eglGetCurrentSurfaceFn +#define eglGetDisplay ::gfx::g_current_egl_context->eglGetDisplayFn +#define eglGetError ::gfx::g_current_egl_context->eglGetErrorFn +#define eglGetPlatformDisplayEXT \ + ::gfx::g_current_egl_context->eglGetPlatformDisplayEXTFn +#define eglGetProcAddress ::gfx::g_current_egl_context->eglGetProcAddressFn +#define eglGetSyncAttribKHR ::gfx::g_current_egl_context->eglGetSyncAttribKHRFn +#define eglGetSyncValuesCHROMIUM \ + ::gfx::g_current_egl_context->eglGetSyncValuesCHROMIUMFn +#define eglInitialize ::gfx::g_current_egl_context->eglInitializeFn +#define eglMakeCurrent ::gfx::g_current_egl_context->eglMakeCurrentFn +#define eglPostSubBufferNV ::gfx::g_current_egl_context->eglPostSubBufferNVFn +#define eglQueryAPI ::gfx::g_current_egl_context->eglQueryAPIFn +#define eglQueryContext ::gfx::g_current_egl_context->eglQueryContextFn +#define eglQueryString ::gfx::g_current_egl_context->eglQueryStringFn +#define eglQuerySurface ::gfx::g_current_egl_context->eglQuerySurfaceFn +#define eglQuerySurfacePointerANGLE \ + ::gfx::g_current_egl_context->eglQuerySurfacePointerANGLEFn +#define eglReleaseTexImage ::gfx::g_current_egl_context->eglReleaseTexImageFn +#define eglReleaseThread ::gfx::g_current_egl_context->eglReleaseThreadFn +#define eglSurfaceAttrib ::gfx::g_current_egl_context->eglSurfaceAttribFn +#define eglSwapBuffers ::gfx::g_current_egl_context->eglSwapBuffersFn +#define eglSwapInterval ::gfx::g_current_egl_context->eglSwapIntervalFn +#define eglTerminate ::gfx::g_current_egl_context->eglTerminateFn +#define eglWaitClient ::gfx::g_current_egl_context->eglWaitClientFn +#define eglWaitGL ::gfx::g_current_egl_context->eglWaitGLFn +#define eglWaitNative ::gfx::g_current_egl_context->eglWaitNativeFn +#define eglWaitSyncKHR ::gfx::g_current_egl_context->eglWaitSyncKHRFn + +#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_EGL_H_
diff --git a/ui/gl/gl_bindings_autogen_gl.cc b/ui/gl/gl_bindings_autogen_gl.cc new file mode 100644 index 0000000..435758d --- /dev/null +++ b/ui/gl/gl_bindings_autogen_gl.cc
@@ -0,0 +1,11338 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#include <string> + +#include "base/debug/trace_event.h" +#include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_context.h" +#include "ui/gl/gl_enums.h" +#include "ui/gl/gl_gl_api_implementation.h" +#include "ui/gl/gl_implementation.h" +#include "ui/gl/gl_version_info.h" + +namespace gfx { + +static bool g_debugBindingsInitialized; +DriverGL g_driver_gl; + +void glBeginQueryARBNotBound(GLenum target, GLuint id) { + NOTREACHED(); +} +void glBindFramebufferEXTNotBound(GLenum target, GLuint framebuffer) { + NOTREACHED(); +} +void glBindRenderbufferEXTNotBound(GLenum target, GLuint renderbuffer) { + NOTREACHED(); +} +void glBindVertexArrayOESNotBound(GLuint array) { + NOTREACHED(); +} +void glBlendBarrierKHRNotBound(void) { + NOTREACHED(); +} +void glBlitFramebufferANGLENotBound(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + NOTREACHED(); +} +void glBlitFramebufferEXTNotBound(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + NOTREACHED(); +} +GLenum glCheckFramebufferStatusEXTNotBound(GLenum target) { + NOTREACHED(); + return 0; +} +void glDeleteBuffersARBNotBound(GLsizei n, const GLuint* buffers) { + NOTREACHED(); +} +void glDeleteFramebuffersEXTNotBound(GLsizei n, const GLuint* framebuffers) { + NOTREACHED(); +} +void glDeleteQueriesARBNotBound(GLsizei n, const GLuint* ids) { + NOTREACHED(); +} +void glDeleteRenderbuffersEXTNotBound(GLsizei n, const GLuint* renderbuffers) { + NOTREACHED(); +} +void glDeleteVertexArraysOESNotBound(GLsizei n, const GLuint* arrays) { + NOTREACHED(); +} +void glDrawArraysInstancedANGLENotBound(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) { + NOTREACHED(); +} +void glDrawBuffersARBNotBound(GLsizei n, const GLenum* bufs) { + NOTREACHED(); +} +void glDrawElementsInstancedANGLENotBound(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) { + NOTREACHED(); +} +void glEndQueryARBNotBound(GLenum target) { + NOTREACHED(); +} +void glFramebufferRenderbufferEXTNotBound(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer) { + NOTREACHED(); +} +void glFramebufferTexture2DEXTNotBound(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level) { + NOTREACHED(); +} +void glGenBuffersARBNotBound(GLsizei n, GLuint* buffers) { + NOTREACHED(); +} +void glGenerateMipmapEXTNotBound(GLenum target) { + NOTREACHED(); +} +void glGenFramebuffersEXTNotBound(GLsizei n, GLuint* framebuffers) { + NOTREACHED(); +} +void glGenQueriesARBNotBound(GLsizei n, GLuint* ids) { + NOTREACHED(); +} +void glGenRenderbuffersEXTNotBound(GLsizei n, GLuint* renderbuffers) { + NOTREACHED(); +} +void glGenVertexArraysOESNotBound(GLsizei n, GLuint* arrays) { + NOTREACHED(); +} +void glGetFramebufferAttachmentParameterivEXTNotBound(GLenum target, + GLenum attachment, + GLenum pname, + GLint* params) { + NOTREACHED(); +} +GLenum glGetGraphicsResetStatusARBNotBound(void) { + NOTREACHED(); + return 0; +} +void glGetProgramBinaryNotBound(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary) { + NOTREACHED(); +} +void glGetQueryivARBNotBound(GLenum target, GLenum pname, GLint* params) { + NOTREACHED(); +} +void glGetQueryObjectivARBNotBound(GLuint id, GLenum pname, GLint* params) { + NOTREACHED(); +} +void glGetQueryObjectui64vNotBound(GLuint id, GLenum pname, GLuint64* params) { + NOTREACHED(); +} +void glGetQueryObjectuivARBNotBound(GLuint id, GLenum pname, GLuint* params) { + NOTREACHED(); +} +void glGetRenderbufferParameterivEXTNotBound(GLenum target, + GLenum pname, + GLint* params) { + NOTREACHED(); +} +GLboolean glIsFramebufferEXTNotBound(GLuint framebuffer) { + NOTREACHED(); + return 0; +} +GLboolean glIsQueryARBNotBound(GLuint query) { + NOTREACHED(); + return 0; +} +GLboolean glIsRenderbufferEXTNotBound(GLuint renderbuffer) { + NOTREACHED(); + return 0; +} +GLboolean glIsVertexArrayOESNotBound(GLuint array) { + NOTREACHED(); + return 0; +} +void* glMapBufferNotBound(GLenum target, GLenum access) { + NOTREACHED(); + return 0; +} +void* glMapBufferRangeNotBound(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access) { + NOTREACHED(); + return 0; +} +void glProgramBinaryNotBound(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length) { + NOTREACHED(); +} +void glQueryCounterNotBound(GLuint id, GLenum target) { + NOTREACHED(); +} +void glRenderbufferStorageEXTNotBound(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height) { + NOTREACHED(); +} +void glRenderbufferStorageMultisampleANGLENotBound(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + NOTREACHED(); +} +void glRenderbufferStorageMultisampleEXTNotBound(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + NOTREACHED(); +} +void glTexStorage2DEXTNotBound(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height) { + NOTREACHED(); +} +GLboolean glUnmapBufferNotBound(GLenum target) { + NOTREACHED(); + return 0; +} +void glVertexAttribDivisorANGLENotBound(GLuint index, GLuint divisor) { + NOTREACHED(); +} + +void DriverGL::InitializeStaticBindings() { + fn.glActiveTextureFn = reinterpret_cast<glActiveTextureProc>( + GetGLProcAddress("glActiveTexture")); + fn.glAttachShaderFn = + reinterpret_cast<glAttachShaderProc>(GetGLProcAddress("glAttachShader")); + fn.glBeginQueryFn = + reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQuery")); + fn.glBeginQueryARBFn = + reinterpret_cast<glBeginQueryARBProc>(glBeginQueryARBNotBound); + fn.glBeginTransformFeedbackFn = + reinterpret_cast<glBeginTransformFeedbackProc>( + GetGLProcAddress("glBeginTransformFeedback")); + fn.glBindAttribLocationFn = reinterpret_cast<glBindAttribLocationProc>( + GetGLProcAddress("glBindAttribLocation")); + fn.glBindBufferFn = + reinterpret_cast<glBindBufferProc>(GetGLProcAddress("glBindBuffer")); + fn.glBindBufferBaseFn = reinterpret_cast<glBindBufferBaseProc>( + GetGLProcAddress("glBindBufferBase")); + fn.glBindBufferRangeFn = reinterpret_cast<glBindBufferRangeProc>( + GetGLProcAddress("glBindBufferRange")); + fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>( + GetGLProcAddress("glBindFragDataLocation")); + fn.glBindFragDataLocationIndexedFn = + reinterpret_cast<glBindFragDataLocationIndexedProc>( + GetGLProcAddress("glBindFragDataLocationIndexed")); + fn.glBindFramebufferEXTFn = + reinterpret_cast<glBindFramebufferEXTProc>(glBindFramebufferEXTNotBound); + fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>( + glBindRenderbufferEXTNotBound); + fn.glBindSamplerFn = + reinterpret_cast<glBindSamplerProc>(GetGLProcAddress("glBindSampler")); + fn.glBindTextureFn = + reinterpret_cast<glBindTextureProc>(GetGLProcAddress("glBindTexture")); + fn.glBindTransformFeedbackFn = reinterpret_cast<glBindTransformFeedbackProc>( + GetGLProcAddress("glBindTransformFeedback")); + fn.glBindVertexArrayOESFn = + reinterpret_cast<glBindVertexArrayOESProc>(glBindVertexArrayOESNotBound); + fn.glBlendBarrierKHRFn = + reinterpret_cast<glBlendBarrierKHRProc>(glBlendBarrierKHRNotBound); + fn.glBlendColorFn = + reinterpret_cast<glBlendColorProc>(GetGLProcAddress("glBlendColor")); + fn.glBlendEquationFn = reinterpret_cast<glBlendEquationProc>( + GetGLProcAddress("glBlendEquation")); + fn.glBlendEquationSeparateFn = reinterpret_cast<glBlendEquationSeparateProc>( + GetGLProcAddress("glBlendEquationSeparate")); + fn.glBlendFuncFn = + reinterpret_cast<glBlendFuncProc>(GetGLProcAddress("glBlendFunc")); + fn.glBlendFuncSeparateFn = reinterpret_cast<glBlendFuncSeparateProc>( + GetGLProcAddress("glBlendFuncSeparate")); + fn.glBlitFramebufferFn = reinterpret_cast<glBlitFramebufferProc>( + GetGLProcAddress("glBlitFramebuffer")); + fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>( + glBlitFramebufferANGLENotBound); + fn.glBlitFramebufferEXTFn = + reinterpret_cast<glBlitFramebufferEXTProc>(glBlitFramebufferEXTNotBound); + fn.glBufferDataFn = + reinterpret_cast<glBufferDataProc>(GetGLProcAddress("glBufferData")); + fn.glBufferSubDataFn = reinterpret_cast<glBufferSubDataProc>( + GetGLProcAddress("glBufferSubData")); + fn.glCheckFramebufferStatusEXTFn = + reinterpret_cast<glCheckFramebufferStatusEXTProc>( + glCheckFramebufferStatusEXTNotBound); + fn.glClearFn = reinterpret_cast<glClearProc>(GetGLProcAddress("glClear")); + fn.glClearBufferfiFn = reinterpret_cast<glClearBufferfiProc>( + GetGLProcAddress("glClearBufferfi")); + fn.glClearBufferfvFn = reinterpret_cast<glClearBufferfvProc>( + GetGLProcAddress("glClearBufferfv")); + fn.glClearBufferivFn = reinterpret_cast<glClearBufferivProc>( + GetGLProcAddress("glClearBufferiv")); + fn.glClearBufferuivFn = reinterpret_cast<glClearBufferuivProc>( + GetGLProcAddress("glClearBufferuiv")); + fn.glClearColorFn = + reinterpret_cast<glClearColorProc>(GetGLProcAddress("glClearColor")); + fn.glClearDepthFn = + reinterpret_cast<glClearDepthProc>(GetGLProcAddress("glClearDepth")); + fn.glClearDepthfFn = + reinterpret_cast<glClearDepthfProc>(GetGLProcAddress("glClearDepthf")); + fn.glClearStencilFn = + reinterpret_cast<glClearStencilProc>(GetGLProcAddress("glClearStencil")); + fn.glClientWaitSyncFn = reinterpret_cast<glClientWaitSyncProc>( + GetGLProcAddress("glClientWaitSync")); + fn.glColorMaskFn = + reinterpret_cast<glColorMaskProc>(GetGLProcAddress("glColorMask")); + fn.glCompileShaderFn = reinterpret_cast<glCompileShaderProc>( + GetGLProcAddress("glCompileShader")); + fn.glCompressedTexImage2DFn = reinterpret_cast<glCompressedTexImage2DProc>( + GetGLProcAddress("glCompressedTexImage2D")); + fn.glCompressedTexImage3DFn = reinterpret_cast<glCompressedTexImage3DProc>( + GetGLProcAddress("glCompressedTexImage3D")); + fn.glCompressedTexSubImage2DFn = + reinterpret_cast<glCompressedTexSubImage2DProc>( + GetGLProcAddress("glCompressedTexSubImage2D")); + fn.glCopyBufferSubDataFn = reinterpret_cast<glCopyBufferSubDataProc>( + GetGLProcAddress("glCopyBufferSubData")); + fn.glCopyTexImage2DFn = reinterpret_cast<glCopyTexImage2DProc>( + GetGLProcAddress("glCopyTexImage2D")); + fn.glCopyTexSubImage2DFn = reinterpret_cast<glCopyTexSubImage2DProc>( + GetGLProcAddress("glCopyTexSubImage2D")); + fn.glCopyTexSubImage3DFn = reinterpret_cast<glCopyTexSubImage3DProc>( + GetGLProcAddress("glCopyTexSubImage3D")); + fn.glCreateProgramFn = reinterpret_cast<glCreateProgramProc>( + GetGLProcAddress("glCreateProgram")); + fn.glCreateShaderFn = + reinterpret_cast<glCreateShaderProc>(GetGLProcAddress("glCreateShader")); + fn.glCullFaceFn = + reinterpret_cast<glCullFaceProc>(GetGLProcAddress("glCullFace")); + fn.glDeleteBuffersARBFn = + reinterpret_cast<glDeleteBuffersARBProc>(glDeleteBuffersARBNotBound); + fn.glDeleteFencesAPPLEFn = reinterpret_cast<glDeleteFencesAPPLEProc>( + GetGLProcAddress("glDeleteFencesAPPLE")); + fn.glDeleteFencesNVFn = reinterpret_cast<glDeleteFencesNVProc>( + GetGLProcAddress("glDeleteFencesNV")); + fn.glDeleteFramebuffersEXTFn = reinterpret_cast<glDeleteFramebuffersEXTProc>( + glDeleteFramebuffersEXTNotBound); + fn.glDeleteProgramFn = reinterpret_cast<glDeleteProgramProc>( + GetGLProcAddress("glDeleteProgram")); + fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>( + GetGLProcAddress("glDeleteQueries")); + fn.glDeleteQueriesARBFn = + reinterpret_cast<glDeleteQueriesARBProc>(glDeleteQueriesARBNotBound); + fn.glDeleteRenderbuffersEXTFn = + reinterpret_cast<glDeleteRenderbuffersEXTProc>( + glDeleteRenderbuffersEXTNotBound); + fn.glDeleteSamplersFn = reinterpret_cast<glDeleteSamplersProc>( + GetGLProcAddress("glDeleteSamplers")); + fn.glDeleteShaderFn = + reinterpret_cast<glDeleteShaderProc>(GetGLProcAddress("glDeleteShader")); + fn.glDeleteSyncFn = + reinterpret_cast<glDeleteSyncProc>(GetGLProcAddress("glDeleteSync")); + fn.glDeleteTexturesFn = reinterpret_cast<glDeleteTexturesProc>( + GetGLProcAddress("glDeleteTextures")); + fn.glDeleteTransformFeedbacksFn = + reinterpret_cast<glDeleteTransformFeedbacksProc>( + GetGLProcAddress("glDeleteTransformFeedbacks")); + fn.glDeleteVertexArraysOESFn = reinterpret_cast<glDeleteVertexArraysOESProc>( + glDeleteVertexArraysOESNotBound); + fn.glDepthFuncFn = + reinterpret_cast<glDepthFuncProc>(GetGLProcAddress("glDepthFunc")); + fn.glDepthMaskFn = + reinterpret_cast<glDepthMaskProc>(GetGLProcAddress("glDepthMask")); + fn.glDepthRangeFn = + reinterpret_cast<glDepthRangeProc>(GetGLProcAddress("glDepthRange")); + fn.glDepthRangefFn = + reinterpret_cast<glDepthRangefProc>(GetGLProcAddress("glDepthRangef")); + fn.glDetachShaderFn = + reinterpret_cast<glDetachShaderProc>(GetGLProcAddress("glDetachShader")); + fn.glDisableFn = + reinterpret_cast<glDisableProc>(GetGLProcAddress("glDisable")); + fn.glDisableVertexAttribArrayFn = + reinterpret_cast<glDisableVertexAttribArrayProc>( + GetGLProcAddress("glDisableVertexAttribArray")); + fn.glDiscardFramebufferEXTFn = reinterpret_cast<glDiscardFramebufferEXTProc>( + GetGLProcAddress("glDiscardFramebufferEXT")); + fn.glDrawArraysFn = + reinterpret_cast<glDrawArraysProc>(GetGLProcAddress("glDrawArrays")); + fn.glDrawArraysInstancedANGLEFn = + reinterpret_cast<glDrawArraysInstancedANGLEProc>( + glDrawArraysInstancedANGLENotBound); + fn.glDrawBufferFn = + reinterpret_cast<glDrawBufferProc>(GetGLProcAddress("glDrawBuffer")); + fn.glDrawBuffersARBFn = + reinterpret_cast<glDrawBuffersARBProc>(glDrawBuffersARBNotBound); + fn.glDrawElementsFn = + reinterpret_cast<glDrawElementsProc>(GetGLProcAddress("glDrawElements")); + fn.glDrawElementsInstancedANGLEFn = + reinterpret_cast<glDrawElementsInstancedANGLEProc>( + glDrawElementsInstancedANGLENotBound); + fn.glDrawRangeElementsFn = reinterpret_cast<glDrawRangeElementsProc>( + GetGLProcAddress("glDrawRangeElements")); + fn.glEGLImageTargetRenderbufferStorageOESFn = + reinterpret_cast<glEGLImageTargetRenderbufferStorageOESProc>( + GetGLProcAddress("glEGLImageTargetRenderbufferStorageOES")); + fn.glEGLImageTargetTexture2DOESFn = + reinterpret_cast<glEGLImageTargetTexture2DOESProc>( + GetGLProcAddress("glEGLImageTargetTexture2DOES")); + fn.glEnableFn = reinterpret_cast<glEnableProc>(GetGLProcAddress("glEnable")); + fn.glEnableVertexAttribArrayFn = + reinterpret_cast<glEnableVertexAttribArrayProc>( + GetGLProcAddress("glEnableVertexAttribArray")); + fn.glEndQueryFn = + reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQuery")); + fn.glEndQueryARBFn = + reinterpret_cast<glEndQueryARBProc>(glEndQueryARBNotBound); + fn.glEndTransformFeedbackFn = reinterpret_cast<glEndTransformFeedbackProc>( + GetGLProcAddress("glEndTransformFeedback")); + fn.glFenceSyncFn = + reinterpret_cast<glFenceSyncProc>(GetGLProcAddress("glFenceSync")); + fn.glFinishFn = reinterpret_cast<glFinishProc>(GetGLProcAddress("glFinish")); + fn.glFinishFenceAPPLEFn = reinterpret_cast<glFinishFenceAPPLEProc>( + GetGLProcAddress("glFinishFenceAPPLE")); + fn.glFinishFenceNVFn = reinterpret_cast<glFinishFenceNVProc>( + GetGLProcAddress("glFinishFenceNV")); + fn.glFlushFn = reinterpret_cast<glFlushProc>(GetGLProcAddress("glFlush")); + fn.glFlushMappedBufferRangeFn = + reinterpret_cast<glFlushMappedBufferRangeProc>( + GetGLProcAddress("glFlushMappedBufferRange")); + fn.glFramebufferRenderbufferEXTFn = + reinterpret_cast<glFramebufferRenderbufferEXTProc>( + glFramebufferRenderbufferEXTNotBound); + fn.glFramebufferTexture2DEXTFn = + reinterpret_cast<glFramebufferTexture2DEXTProc>( + glFramebufferTexture2DEXTNotBound); + fn.glFramebufferTexture2DMultisampleEXTFn = + reinterpret_cast<glFramebufferTexture2DMultisampleEXTProc>( + GetGLProcAddress("glFramebufferTexture2DMultisampleEXT")); + fn.glFramebufferTexture2DMultisampleIMGFn = + reinterpret_cast<glFramebufferTexture2DMultisampleIMGProc>( + GetGLProcAddress("glFramebufferTexture2DMultisampleIMG")); + fn.glFramebufferTextureLayerFn = + reinterpret_cast<glFramebufferTextureLayerProc>( + GetGLProcAddress("glFramebufferTextureLayer")); + fn.glFrontFaceFn = + reinterpret_cast<glFrontFaceProc>(GetGLProcAddress("glFrontFace")); + fn.glGenBuffersARBFn = + reinterpret_cast<glGenBuffersARBProc>(glGenBuffersARBNotBound); + fn.glGenerateMipmapEXTFn = + reinterpret_cast<glGenerateMipmapEXTProc>(glGenerateMipmapEXTNotBound); + fn.glGenFencesAPPLEFn = reinterpret_cast<glGenFencesAPPLEProc>( + GetGLProcAddress("glGenFencesAPPLE")); + fn.glGenFencesNVFn = + reinterpret_cast<glGenFencesNVProc>(GetGLProcAddress("glGenFencesNV")); + fn.glGenFramebuffersEXTFn = + reinterpret_cast<glGenFramebuffersEXTProc>(glGenFramebuffersEXTNotBound); + fn.glGenQueriesFn = + reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueries")); + fn.glGenQueriesARBFn = + reinterpret_cast<glGenQueriesARBProc>(glGenQueriesARBNotBound); + fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>( + glGenRenderbuffersEXTNotBound); + fn.glGenSamplersFn = + reinterpret_cast<glGenSamplersProc>(GetGLProcAddress("glGenSamplers")); + fn.glGenTexturesFn = + reinterpret_cast<glGenTexturesProc>(GetGLProcAddress("glGenTextures")); + fn.glGenTransformFeedbacksFn = reinterpret_cast<glGenTransformFeedbacksProc>( + GetGLProcAddress("glGenTransformFeedbacks")); + fn.glGenVertexArraysOESFn = + reinterpret_cast<glGenVertexArraysOESProc>(glGenVertexArraysOESNotBound); + fn.glGetActiveAttribFn = reinterpret_cast<glGetActiveAttribProc>( + GetGLProcAddress("glGetActiveAttrib")); + fn.glGetActiveUniformFn = reinterpret_cast<glGetActiveUniformProc>( + GetGLProcAddress("glGetActiveUniform")); + fn.glGetActiveUniformBlockivFn = + reinterpret_cast<glGetActiveUniformBlockivProc>( + GetGLProcAddress("glGetActiveUniformBlockiv")); + fn.glGetActiveUniformBlockNameFn = + reinterpret_cast<glGetActiveUniformBlockNameProc>( + GetGLProcAddress("glGetActiveUniformBlockName")); + fn.glGetActiveUniformsivFn = reinterpret_cast<glGetActiveUniformsivProc>( + GetGLProcAddress("glGetActiveUniformsiv")); + fn.glGetAttachedShadersFn = reinterpret_cast<glGetAttachedShadersProc>( + GetGLProcAddress("glGetAttachedShaders")); + fn.glGetAttribLocationFn = reinterpret_cast<glGetAttribLocationProc>( + GetGLProcAddress("glGetAttribLocation")); + fn.glGetBooleanvFn = + reinterpret_cast<glGetBooleanvProc>(GetGLProcAddress("glGetBooleanv")); + fn.glGetBufferParameterivFn = reinterpret_cast<glGetBufferParameterivProc>( + GetGLProcAddress("glGetBufferParameteriv")); + fn.glGetErrorFn = + reinterpret_cast<glGetErrorProc>(GetGLProcAddress("glGetError")); + fn.glGetFenceivNVFn = + reinterpret_cast<glGetFenceivNVProc>(GetGLProcAddress("glGetFenceivNV")); + fn.glGetFloatvFn = + reinterpret_cast<glGetFloatvProc>(GetGLProcAddress("glGetFloatv")); + fn.glGetFragDataLocationFn = reinterpret_cast<glGetFragDataLocationProc>( + GetGLProcAddress("glGetFragDataLocation")); + fn.glGetFramebufferAttachmentParameterivEXTFn = + reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>( + glGetFramebufferAttachmentParameterivEXTNotBound); + fn.glGetGraphicsResetStatusARBFn = + reinterpret_cast<glGetGraphicsResetStatusARBProc>( + glGetGraphicsResetStatusARBNotBound); + fn.glGetInteger64i_vFn = reinterpret_cast<glGetInteger64i_vProc>( + GetGLProcAddress("glGetInteger64i_v")); + fn.glGetInteger64vFn = reinterpret_cast<glGetInteger64vProc>( + GetGLProcAddress("glGetInteger64v")); + fn.glGetIntegeri_vFn = reinterpret_cast<glGetIntegeri_vProc>( + GetGLProcAddress("glGetIntegeri_v")); + fn.glGetIntegervFn = + reinterpret_cast<glGetIntegervProc>(GetGLProcAddress("glGetIntegerv")); + fn.glGetInternalformativFn = reinterpret_cast<glGetInternalformativProc>( + GetGLProcAddress("glGetInternalformativ")); + fn.glGetProgramBinaryFn = + reinterpret_cast<glGetProgramBinaryProc>(glGetProgramBinaryNotBound); + fn.glGetProgramInfoLogFn = reinterpret_cast<glGetProgramInfoLogProc>( + GetGLProcAddress("glGetProgramInfoLog")); + fn.glGetProgramivFn = + reinterpret_cast<glGetProgramivProc>(GetGLProcAddress("glGetProgramiv")); + fn.glGetQueryivFn = + reinterpret_cast<glGetQueryivProc>(GetGLProcAddress("glGetQueryiv")); + fn.glGetQueryivARBFn = + reinterpret_cast<glGetQueryivARBProc>(glGetQueryivARBNotBound); + fn.glGetQueryObjecti64vFn = reinterpret_cast<glGetQueryObjecti64vProc>( + GetGLProcAddress("glGetQueryObjecti64v")); + fn.glGetQueryObjectivFn = reinterpret_cast<glGetQueryObjectivProc>( + GetGLProcAddress("glGetQueryObjectiv")); + fn.glGetQueryObjectivARBFn = reinterpret_cast<glGetQueryObjectivARBProc>( + glGetQueryObjectivARBNotBound); + fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>( + glGetQueryObjectui64vNotBound); + fn.glGetQueryObjectuivFn = reinterpret_cast<glGetQueryObjectuivProc>( + GetGLProcAddress("glGetQueryObjectuiv")); + fn.glGetQueryObjectuivARBFn = reinterpret_cast<glGetQueryObjectuivARBProc>( + glGetQueryObjectuivARBNotBound); + fn.glGetRenderbufferParameterivEXTFn = + reinterpret_cast<glGetRenderbufferParameterivEXTProc>( + glGetRenderbufferParameterivEXTNotBound); + fn.glGetSamplerParameterfvFn = reinterpret_cast<glGetSamplerParameterfvProc>( + GetGLProcAddress("glGetSamplerParameterfv")); + fn.glGetSamplerParameterivFn = reinterpret_cast<glGetSamplerParameterivProc>( + GetGLProcAddress("glGetSamplerParameteriv")); + fn.glGetShaderInfoLogFn = reinterpret_cast<glGetShaderInfoLogProc>( + GetGLProcAddress("glGetShaderInfoLog")); + fn.glGetShaderivFn = + reinterpret_cast<glGetShaderivProc>(GetGLProcAddress("glGetShaderiv")); + fn.glGetShaderPrecisionFormatFn = + reinterpret_cast<glGetShaderPrecisionFormatProc>( + GetGLProcAddress("glGetShaderPrecisionFormat")); + fn.glGetShaderSourceFn = reinterpret_cast<glGetShaderSourceProc>( + GetGLProcAddress("glGetShaderSource")); + fn.glGetStringFn = + reinterpret_cast<glGetStringProc>(GetGLProcAddress("glGetString")); + fn.glGetSyncivFn = + reinterpret_cast<glGetSyncivProc>(GetGLProcAddress("glGetSynciv")); + fn.glGetTexLevelParameterfvFn = + reinterpret_cast<glGetTexLevelParameterfvProc>( + GetGLProcAddress("glGetTexLevelParameterfv")); + fn.glGetTexLevelParameterivFn = + reinterpret_cast<glGetTexLevelParameterivProc>( + GetGLProcAddress("glGetTexLevelParameteriv")); + fn.glGetTexParameterfvFn = reinterpret_cast<glGetTexParameterfvProc>( + GetGLProcAddress("glGetTexParameterfv")); + fn.glGetTexParameterivFn = reinterpret_cast<glGetTexParameterivProc>( + GetGLProcAddress("glGetTexParameteriv")); + fn.glGetTransformFeedbackVaryingFn = + reinterpret_cast<glGetTransformFeedbackVaryingProc>( + GetGLProcAddress("glGetTransformFeedbackVarying")); + fn.glGetTranslatedShaderSourceANGLEFn = + reinterpret_cast<glGetTranslatedShaderSourceANGLEProc>( + GetGLProcAddress("glGetTranslatedShaderSourceANGLE")); + fn.glGetUniformBlockIndexFn = reinterpret_cast<glGetUniformBlockIndexProc>( + GetGLProcAddress("glGetUniformBlockIndex")); + fn.glGetUniformfvFn = + reinterpret_cast<glGetUniformfvProc>(GetGLProcAddress("glGetUniformfv")); + fn.glGetUniformIndicesFn = reinterpret_cast<glGetUniformIndicesProc>( + GetGLProcAddress("glGetUniformIndices")); + fn.glGetUniformivFn = + reinterpret_cast<glGetUniformivProc>(GetGLProcAddress("glGetUniformiv")); + fn.glGetUniformLocationFn = reinterpret_cast<glGetUniformLocationProc>( + GetGLProcAddress("glGetUniformLocation")); + fn.glGetVertexAttribfvFn = reinterpret_cast<glGetVertexAttribfvProc>( + GetGLProcAddress("glGetVertexAttribfv")); + fn.glGetVertexAttribivFn = reinterpret_cast<glGetVertexAttribivProc>( + GetGLProcAddress("glGetVertexAttribiv")); + fn.glGetVertexAttribPointervFn = + reinterpret_cast<glGetVertexAttribPointervProc>( + GetGLProcAddress("glGetVertexAttribPointerv")); + fn.glHintFn = reinterpret_cast<glHintProc>(GetGLProcAddress("glHint")); + fn.glInsertEventMarkerEXTFn = reinterpret_cast<glInsertEventMarkerEXTProc>( + GetGLProcAddress("glInsertEventMarkerEXT")); + fn.glInvalidateFramebufferFn = reinterpret_cast<glInvalidateFramebufferProc>( + GetGLProcAddress("glInvalidateFramebuffer")); + fn.glInvalidateSubFramebufferFn = + reinterpret_cast<glInvalidateSubFramebufferProc>( + GetGLProcAddress("glInvalidateSubFramebuffer")); + fn.glIsBufferFn = + reinterpret_cast<glIsBufferProc>(GetGLProcAddress("glIsBuffer")); + fn.glIsEnabledFn = + reinterpret_cast<glIsEnabledProc>(GetGLProcAddress("glIsEnabled")); + fn.glIsFenceAPPLEFn = + reinterpret_cast<glIsFenceAPPLEProc>(GetGLProcAddress("glIsFenceAPPLE")); + fn.glIsFenceNVFn = + reinterpret_cast<glIsFenceNVProc>(GetGLProcAddress("glIsFenceNV")); + fn.glIsFramebufferEXTFn = + reinterpret_cast<glIsFramebufferEXTProc>(glIsFramebufferEXTNotBound); + fn.glIsProgramFn = + reinterpret_cast<glIsProgramProc>(GetGLProcAddress("glIsProgram")); + fn.glIsQueryFn = + reinterpret_cast<glIsQueryProc>(GetGLProcAddress("glIsQuery")); + fn.glIsQueryARBFn = reinterpret_cast<glIsQueryARBProc>(glIsQueryARBNotBound); + fn.glIsRenderbufferEXTFn = + reinterpret_cast<glIsRenderbufferEXTProc>(glIsRenderbufferEXTNotBound); + fn.glIsSamplerFn = + reinterpret_cast<glIsSamplerProc>(GetGLProcAddress("glIsSampler")); + fn.glIsShaderFn = + reinterpret_cast<glIsShaderProc>(GetGLProcAddress("glIsShader")); + fn.glIsSyncFn = reinterpret_cast<glIsSyncProc>(GetGLProcAddress("glIsSync")); + fn.glIsTextureFn = + reinterpret_cast<glIsTextureProc>(GetGLProcAddress("glIsTexture")); + fn.glIsTransformFeedbackFn = reinterpret_cast<glIsTransformFeedbackProc>( + GetGLProcAddress("glIsTransformFeedback")); + fn.glIsVertexArrayOESFn = + reinterpret_cast<glIsVertexArrayOESProc>(glIsVertexArrayOESNotBound); + fn.glLineWidthFn = + reinterpret_cast<glLineWidthProc>(GetGLProcAddress("glLineWidth")); + fn.glLinkProgramFn = + reinterpret_cast<glLinkProgramProc>(GetGLProcAddress("glLinkProgram")); + fn.glMapBufferFn = reinterpret_cast<glMapBufferProc>(glMapBufferNotBound); + fn.glMapBufferRangeFn = + reinterpret_cast<glMapBufferRangeProc>(glMapBufferRangeNotBound); + fn.glMatrixLoadfEXTFn = reinterpret_cast<glMatrixLoadfEXTProc>( + GetGLProcAddress("glMatrixLoadfEXT")); + fn.glMatrixLoadIdentityEXTFn = reinterpret_cast<glMatrixLoadIdentityEXTProc>( + GetGLProcAddress("glMatrixLoadIdentityEXT")); + fn.glPauseTransformFeedbackFn = + reinterpret_cast<glPauseTransformFeedbackProc>( + GetGLProcAddress("glPauseTransformFeedback")); + fn.glPixelStoreiFn = + reinterpret_cast<glPixelStoreiProc>(GetGLProcAddress("glPixelStorei")); + fn.glPointParameteriFn = reinterpret_cast<glPointParameteriProc>( + GetGLProcAddress("glPointParameteri")); + fn.glPolygonOffsetFn = reinterpret_cast<glPolygonOffsetProc>( + GetGLProcAddress("glPolygonOffset")); + fn.glPopGroupMarkerEXTFn = reinterpret_cast<glPopGroupMarkerEXTProc>( + GetGLProcAddress("glPopGroupMarkerEXT")); + fn.glProgramBinaryFn = + reinterpret_cast<glProgramBinaryProc>(glProgramBinaryNotBound); + fn.glProgramParameteriFn = reinterpret_cast<glProgramParameteriProc>( + GetGLProcAddress("glProgramParameteri")); + fn.glPushGroupMarkerEXTFn = reinterpret_cast<glPushGroupMarkerEXTProc>( + GetGLProcAddress("glPushGroupMarkerEXT")); + fn.glQueryCounterFn = + reinterpret_cast<glQueryCounterProc>(glQueryCounterNotBound); + fn.glReadBufferFn = + reinterpret_cast<glReadBufferProc>(GetGLProcAddress("glReadBuffer")); + fn.glReadPixelsFn = + reinterpret_cast<glReadPixelsProc>(GetGLProcAddress("glReadPixels")); + fn.glReleaseShaderCompilerFn = reinterpret_cast<glReleaseShaderCompilerProc>( + GetGLProcAddress("glReleaseShaderCompiler")); + fn.glRenderbufferStorageEXTFn = + reinterpret_cast<glRenderbufferStorageEXTProc>( + glRenderbufferStorageEXTNotBound); + fn.glRenderbufferStorageMultisampleFn = + reinterpret_cast<glRenderbufferStorageMultisampleProc>( + GetGLProcAddress("glRenderbufferStorageMultisample")); + fn.glRenderbufferStorageMultisampleANGLEFn = + reinterpret_cast<glRenderbufferStorageMultisampleANGLEProc>( + glRenderbufferStorageMultisampleANGLENotBound); + fn.glRenderbufferStorageMultisampleEXTFn = + reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>( + glRenderbufferStorageMultisampleEXTNotBound); + fn.glRenderbufferStorageMultisampleIMGFn = + reinterpret_cast<glRenderbufferStorageMultisampleIMGProc>( + GetGLProcAddress("glRenderbufferStorageMultisampleIMG")); + fn.glResumeTransformFeedbackFn = + reinterpret_cast<glResumeTransformFeedbackProc>( + GetGLProcAddress("glResumeTransformFeedback")); + fn.glSampleCoverageFn = reinterpret_cast<glSampleCoverageProc>( + GetGLProcAddress("glSampleCoverage")); + fn.glSamplerParameterfFn = reinterpret_cast<glSamplerParameterfProc>( + GetGLProcAddress("glSamplerParameterf")); + fn.glSamplerParameterfvFn = reinterpret_cast<glSamplerParameterfvProc>( + GetGLProcAddress("glSamplerParameterfv")); + fn.glSamplerParameteriFn = reinterpret_cast<glSamplerParameteriProc>( + GetGLProcAddress("glSamplerParameteri")); + fn.glSamplerParameterivFn = reinterpret_cast<glSamplerParameterivProc>( + GetGLProcAddress("glSamplerParameteriv")); + fn.glScissorFn = + reinterpret_cast<glScissorProc>(GetGLProcAddress("glScissor")); + fn.glSetFenceAPPLEFn = reinterpret_cast<glSetFenceAPPLEProc>( + GetGLProcAddress("glSetFenceAPPLE")); + fn.glSetFenceNVFn = + reinterpret_cast<glSetFenceNVProc>(GetGLProcAddress("glSetFenceNV")); + fn.glShaderBinaryFn = + reinterpret_cast<glShaderBinaryProc>(GetGLProcAddress("glShaderBinary")); + fn.glShaderSourceFn = + reinterpret_cast<glShaderSourceProc>(GetGLProcAddress("glShaderSource")); + fn.glStencilFuncFn = + reinterpret_cast<glStencilFuncProc>(GetGLProcAddress("glStencilFunc")); + fn.glStencilFuncSeparateFn = reinterpret_cast<glStencilFuncSeparateProc>( + GetGLProcAddress("glStencilFuncSeparate")); + fn.glStencilMaskFn = + reinterpret_cast<glStencilMaskProc>(GetGLProcAddress("glStencilMask")); + fn.glStencilMaskSeparateFn = reinterpret_cast<glStencilMaskSeparateProc>( + GetGLProcAddress("glStencilMaskSeparate")); + fn.glStencilOpFn = + reinterpret_cast<glStencilOpProc>(GetGLProcAddress("glStencilOp")); + fn.glStencilOpSeparateFn = reinterpret_cast<glStencilOpSeparateProc>( + GetGLProcAddress("glStencilOpSeparate")); + fn.glTestFenceAPPLEFn = reinterpret_cast<glTestFenceAPPLEProc>( + GetGLProcAddress("glTestFenceAPPLE")); + fn.glTestFenceNVFn = + reinterpret_cast<glTestFenceNVProc>(GetGLProcAddress("glTestFenceNV")); + fn.glTexImage2DFn = + reinterpret_cast<glTexImage2DProc>(GetGLProcAddress("glTexImage2D")); + fn.glTexImage3DFn = + reinterpret_cast<glTexImage3DProc>(GetGLProcAddress("glTexImage3D")); + fn.glTexParameterfFn = reinterpret_cast<glTexParameterfProc>( + GetGLProcAddress("glTexParameterf")); + fn.glTexParameterfvFn = reinterpret_cast<glTexParameterfvProc>( + GetGLProcAddress("glTexParameterfv")); + fn.glTexParameteriFn = reinterpret_cast<glTexParameteriProc>( + GetGLProcAddress("glTexParameteri")); + fn.glTexParameterivFn = reinterpret_cast<glTexParameterivProc>( + GetGLProcAddress("glTexParameteriv")); + fn.glTexStorage2DEXTFn = + reinterpret_cast<glTexStorage2DEXTProc>(glTexStorage2DEXTNotBound); + fn.glTexStorage3DFn = + reinterpret_cast<glTexStorage3DProc>(GetGLProcAddress("glTexStorage3D")); + fn.glTexSubImage2DFn = reinterpret_cast<glTexSubImage2DProc>( + GetGLProcAddress("glTexSubImage2D")); + fn.glTransformFeedbackVaryingsFn = + reinterpret_cast<glTransformFeedbackVaryingsProc>( + GetGLProcAddress("glTransformFeedbackVaryings")); + fn.glUniform1fFn = + reinterpret_cast<glUniform1fProc>(GetGLProcAddress("glUniform1f")); + fn.glUniform1fvFn = + reinterpret_cast<glUniform1fvProc>(GetGLProcAddress("glUniform1fv")); + fn.glUniform1iFn = + reinterpret_cast<glUniform1iProc>(GetGLProcAddress("glUniform1i")); + fn.glUniform1ivFn = + reinterpret_cast<glUniform1ivProc>(GetGLProcAddress("glUniform1iv")); + fn.glUniform1uiFn = + reinterpret_cast<glUniform1uiProc>(GetGLProcAddress("glUniform1ui")); + fn.glUniform1uivFn = + reinterpret_cast<glUniform1uivProc>(GetGLProcAddress("glUniform1uiv")); + fn.glUniform2fFn = + reinterpret_cast<glUniform2fProc>(GetGLProcAddress("glUniform2f")); + fn.glUniform2fvFn = + reinterpret_cast<glUniform2fvProc>(GetGLProcAddress("glUniform2fv")); + fn.glUniform2iFn = + reinterpret_cast<glUniform2iProc>(GetGLProcAddress("glUniform2i")); + fn.glUniform2ivFn = + reinterpret_cast<glUniform2ivProc>(GetGLProcAddress("glUniform2iv")); + fn.glUniform2uiFn = + reinterpret_cast<glUniform2uiProc>(GetGLProcAddress("glUniform2ui")); + fn.glUniform2uivFn = + reinterpret_cast<glUniform2uivProc>(GetGLProcAddress("glUniform2uiv")); + fn.glUniform3fFn = + reinterpret_cast<glUniform3fProc>(GetGLProcAddress("glUniform3f")); + fn.glUniform3fvFn = + reinterpret_cast<glUniform3fvProc>(GetGLProcAddress("glUniform3fv")); + fn.glUniform3iFn = + reinterpret_cast<glUniform3iProc>(GetGLProcAddress("glUniform3i")); + fn.glUniform3ivFn = + reinterpret_cast<glUniform3ivProc>(GetGLProcAddress("glUniform3iv")); + fn.glUniform3uiFn = + reinterpret_cast<glUniform3uiProc>(GetGLProcAddress("glUniform3ui")); + fn.glUniform3uivFn = + reinterpret_cast<glUniform3uivProc>(GetGLProcAddress("glUniform3uiv")); + fn.glUniform4fFn = + reinterpret_cast<glUniform4fProc>(GetGLProcAddress("glUniform4f")); + fn.glUniform4fvFn = + reinterpret_cast<glUniform4fvProc>(GetGLProcAddress("glUniform4fv")); + fn.glUniform4iFn = + reinterpret_cast<glUniform4iProc>(GetGLProcAddress("glUniform4i")); + fn.glUniform4ivFn = + reinterpret_cast<glUniform4ivProc>(GetGLProcAddress("glUniform4iv")); + fn.glUniform4uiFn = + reinterpret_cast<glUniform4uiProc>(GetGLProcAddress("glUniform4ui")); + fn.glUniform4uivFn = + reinterpret_cast<glUniform4uivProc>(GetGLProcAddress("glUniform4uiv")); + fn.glUniformBlockBindingFn = reinterpret_cast<glUniformBlockBindingProc>( + GetGLProcAddress("glUniformBlockBinding")); + fn.glUniformMatrix2fvFn = reinterpret_cast<glUniformMatrix2fvProc>( + GetGLProcAddress("glUniformMatrix2fv")); + fn.glUniformMatrix2x3fvFn = reinterpret_cast<glUniformMatrix2x3fvProc>( + GetGLProcAddress("glUniformMatrix2x3fv")); + fn.glUniformMatrix2x4fvFn = reinterpret_cast<glUniformMatrix2x4fvProc>( + GetGLProcAddress("glUniformMatrix2x4fv")); + fn.glUniformMatrix3fvFn = reinterpret_cast<glUniformMatrix3fvProc>( + GetGLProcAddress("glUniformMatrix3fv")); + fn.glUniformMatrix3x2fvFn = reinterpret_cast<glUniformMatrix3x2fvProc>( + GetGLProcAddress("glUniformMatrix3x2fv")); + fn.glUniformMatrix3x4fvFn = reinterpret_cast<glUniformMatrix3x4fvProc>( + GetGLProcAddress("glUniformMatrix3x4fv")); + fn.glUniformMatrix4fvFn = reinterpret_cast<glUniformMatrix4fvProc>( + GetGLProcAddress("glUniformMatrix4fv")); + fn.glUniformMatrix4x2fvFn = reinterpret_cast<glUniformMatrix4x2fvProc>( + GetGLProcAddress("glUniformMatrix4x2fv")); + fn.glUniformMatrix4x3fvFn = reinterpret_cast<glUniformMatrix4x3fvProc>( + GetGLProcAddress("glUniformMatrix4x3fv")); + fn.glUnmapBufferFn = + reinterpret_cast<glUnmapBufferProc>(glUnmapBufferNotBound); + fn.glUseProgramFn = + reinterpret_cast<glUseProgramProc>(GetGLProcAddress("glUseProgram")); + fn.glValidateProgramFn = reinterpret_cast<glValidateProgramProc>( + GetGLProcAddress("glValidateProgram")); + fn.glVertexAttrib1fFn = reinterpret_cast<glVertexAttrib1fProc>( + GetGLProcAddress("glVertexAttrib1f")); + fn.glVertexAttrib1fvFn = reinterpret_cast<glVertexAttrib1fvProc>( + GetGLProcAddress("glVertexAttrib1fv")); + fn.glVertexAttrib2fFn = reinterpret_cast<glVertexAttrib2fProc>( + GetGLProcAddress("glVertexAttrib2f")); + fn.glVertexAttrib2fvFn = reinterpret_cast<glVertexAttrib2fvProc>( + GetGLProcAddress("glVertexAttrib2fv")); + fn.glVertexAttrib3fFn = reinterpret_cast<glVertexAttrib3fProc>( + GetGLProcAddress("glVertexAttrib3f")); + fn.glVertexAttrib3fvFn = reinterpret_cast<glVertexAttrib3fvProc>( + GetGLProcAddress("glVertexAttrib3fv")); + fn.glVertexAttrib4fFn = reinterpret_cast<glVertexAttrib4fProc>( + GetGLProcAddress("glVertexAttrib4f")); + fn.glVertexAttrib4fvFn = reinterpret_cast<glVertexAttrib4fvProc>( + GetGLProcAddress("glVertexAttrib4fv")); + fn.glVertexAttribDivisorANGLEFn = + reinterpret_cast<glVertexAttribDivisorANGLEProc>( + glVertexAttribDivisorANGLENotBound); + fn.glVertexAttribI4iFn = reinterpret_cast<glVertexAttribI4iProc>( + GetGLProcAddress("glVertexAttribI4i")); + fn.glVertexAttribI4ivFn = reinterpret_cast<glVertexAttribI4ivProc>( + GetGLProcAddress("glVertexAttribI4iv")); + fn.glVertexAttribI4uiFn = reinterpret_cast<glVertexAttribI4uiProc>( + GetGLProcAddress("glVertexAttribI4ui")); + fn.glVertexAttribI4uivFn = reinterpret_cast<glVertexAttribI4uivProc>( + GetGLProcAddress("glVertexAttribI4uiv")); + fn.glVertexAttribIPointerFn = reinterpret_cast<glVertexAttribIPointerProc>( + GetGLProcAddress("glVertexAttribIPointer")); + fn.glVertexAttribPointerFn = reinterpret_cast<glVertexAttribPointerProc>( + GetGLProcAddress("glVertexAttribPointer")); + fn.glViewportFn = + reinterpret_cast<glViewportProc>(GetGLProcAddress("glViewport")); + fn.glWaitSyncFn = + reinterpret_cast<glWaitSyncProc>(GetGLProcAddress("glWaitSync")); +} + +void DriverGL::InitializeDynamicBindings(GLContext* context) { + DCHECK(context && context->IsCurrent(NULL)); + const GLVersionInfo* ver = context->GetVersionInfo(); + ALLOW_UNUSED_LOCAL(ver); + std::string extensions = context->GetExtensions() + " "; + ALLOW_UNUSED_LOCAL(extensions); + + ext.b_GL_ANGLE_framebuffer_blit = + extensions.find("GL_ANGLE_framebuffer_blit ") != std::string::npos; + ext.b_GL_ANGLE_framebuffer_multisample = + extensions.find("GL_ANGLE_framebuffer_multisample ") != std::string::npos; + ext.b_GL_ANGLE_instanced_arrays = + extensions.find("GL_ANGLE_instanced_arrays ") != std::string::npos; + ext.b_GL_ANGLE_translated_shader_source = + extensions.find("GL_ANGLE_translated_shader_source ") != + std::string::npos; + ext.b_GL_APPLE_fence = + extensions.find("GL_APPLE_fence ") != std::string::npos; + ext.b_GL_APPLE_vertex_array_object = + extensions.find("GL_APPLE_vertex_array_object ") != std::string::npos; + ext.b_GL_ARB_ES2_compatibility = + extensions.find("GL_ARB_ES2_compatibility ") != std::string::npos; + ext.b_GL_ARB_blend_func_extended = + extensions.find("GL_ARB_blend_func_extended ") != std::string::npos; + ext.b_GL_ARB_copy_buffer = + extensions.find("GL_ARB_copy_buffer ") != std::string::npos; + ext.b_GL_ARB_draw_buffers = + extensions.find("GL_ARB_draw_buffers ") != std::string::npos; + ext.b_GL_ARB_draw_instanced = + extensions.find("GL_ARB_draw_instanced ") != std::string::npos; + ext.b_GL_ARB_framebuffer_object = + extensions.find("GL_ARB_framebuffer_object ") != std::string::npos; + ext.b_GL_ARB_get_program_binary = + extensions.find("GL_ARB_get_program_binary ") != std::string::npos; + ext.b_GL_ARB_instanced_arrays = + extensions.find("GL_ARB_instanced_arrays ") != std::string::npos; + ext.b_GL_ARB_internalformat_query = + extensions.find("GL_ARB_internalformat_query ") != std::string::npos; + ext.b_GL_ARB_invalidate_subdata = + extensions.find("GL_ARB_invalidate_subdata ") != std::string::npos; + ext.b_GL_ARB_map_buffer_range = + extensions.find("GL_ARB_map_buffer_range ") != std::string::npos; + ext.b_GL_ARB_occlusion_query = + extensions.find("GL_ARB_occlusion_query ") != std::string::npos; + ext.b_GL_ARB_robustness = + extensions.find("GL_ARB_robustness ") != std::string::npos; + ext.b_GL_ARB_sampler_objects = + extensions.find("GL_ARB_sampler_objects ") != std::string::npos; + ext.b_GL_ARB_sync = extensions.find("GL_ARB_sync ") != std::string::npos; + ext.b_GL_ARB_texture_storage = + extensions.find("GL_ARB_texture_storage ") != std::string::npos; + ext.b_GL_ARB_timer_query = + extensions.find("GL_ARB_timer_query ") != std::string::npos; + ext.b_GL_ARB_transform_feedback2 = + extensions.find("GL_ARB_transform_feedback2 ") != std::string::npos; + ext.b_GL_ARB_uniform_buffer_object = + extensions.find("GL_ARB_uniform_buffer_object ") != std::string::npos; + ext.b_GL_ARB_vertex_array_object = + extensions.find("GL_ARB_vertex_array_object ") != std::string::npos; + ext.b_GL_ARB_vertex_buffer_object = + extensions.find("GL_ARB_vertex_buffer_object ") != std::string::npos; + ext.b_GL_EXT_debug_marker = + extensions.find("GL_EXT_debug_marker ") != std::string::npos; + ext.b_GL_EXT_direct_state_access = + extensions.find("GL_EXT_direct_state_access ") != std::string::npos; + ext.b_GL_EXT_discard_framebuffer = + extensions.find("GL_EXT_discard_framebuffer ") != std::string::npos; + ext.b_GL_EXT_disjoint_timer_query = + extensions.find("GL_EXT_disjoint_timer_query ") != std::string::npos; + ext.b_GL_EXT_draw_buffers = + extensions.find("GL_EXT_draw_buffers ") != std::string::npos; + ext.b_GL_EXT_framebuffer_blit = + extensions.find("GL_EXT_framebuffer_blit ") != std::string::npos; + ext.b_GL_EXT_framebuffer_multisample = + extensions.find("GL_EXT_framebuffer_multisample ") != std::string::npos; + ext.b_GL_EXT_framebuffer_object = + extensions.find("GL_EXT_framebuffer_object ") != std::string::npos; + ext.b_GL_EXT_map_buffer_range = + extensions.find("GL_EXT_map_buffer_range ") != std::string::npos; + ext.b_GL_EXT_multisampled_render_to_texture = + extensions.find("GL_EXT_multisampled_render_to_texture ") != + std::string::npos; + ext.b_GL_EXT_robustness = + extensions.find("GL_EXT_robustness ") != std::string::npos; + ext.b_GL_EXT_texture_storage = + extensions.find("GL_EXT_texture_storage ") != std::string::npos; + ext.b_GL_EXT_timer_query = + extensions.find("GL_EXT_timer_query ") != std::string::npos; + ext.b_GL_IMG_multisampled_render_to_texture = + extensions.find("GL_IMG_multisampled_render_to_texture ") != + std::string::npos; + ext.b_GL_KHR_blend_equation_advanced = + extensions.find("GL_KHR_blend_equation_advanced ") != std::string::npos; + ext.b_GL_KHR_robustness = + extensions.find("GL_KHR_robustness ") != std::string::npos; + ext.b_GL_NV_blend_equation_advanced = + extensions.find("GL_NV_blend_equation_advanced ") != std::string::npos; + ext.b_GL_NV_fence = extensions.find("GL_NV_fence ") != std::string::npos; + ext.b_GL_NV_path_rendering = + extensions.find("GL_NV_path_rendering ") != std::string::npos; + ext.b_GL_OES_EGL_image = + extensions.find("GL_OES_EGL_image ") != std::string::npos; + ext.b_GL_OES_get_program_binary = + extensions.find("GL_OES_get_program_binary ") != std::string::npos; + ext.b_GL_OES_mapbuffer = + extensions.find("GL_OES_mapbuffer ") != std::string::npos; + ext.b_GL_OES_vertex_array_object = + extensions.find("GL_OES_vertex_array_object ") != std::string::npos; + + fn.glBeginQueryARBFn = 0; + debug_fn.glBeginQueryARBFn = 0; + if (ext.b_GL_ARB_occlusion_query) { + fn.glBeginQueryARBFn = reinterpret_cast<glBeginQueryARBProc>( + GetGLProcAddress("glBeginQueryARB")); + } + if (!fn.glBeginQueryARBFn) { + fn.glBeginQueryARBFn = reinterpret_cast<glBeginQueryARBProc>( + GetGLProcAddress("glBeginQueryEXT")); + } + + fn.glBindFramebufferEXTFn = 0; + debug_fn.glBindFramebufferEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>( + GetGLProcAddress("glBindFramebufferEXT")); + } + if (!fn.glBindFramebufferEXTFn) { + fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>( + GetGLProcAddress("glBindFramebuffer")); + } + + fn.glBindRenderbufferEXTFn = 0; + debug_fn.glBindRenderbufferEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>( + GetGLProcAddress("glBindRenderbufferEXT")); + } + if (!fn.glBindRenderbufferEXTFn) { + fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>( + GetGLProcAddress("glBindRenderbuffer")); + } + + fn.glBindVertexArrayOESFn = 0; + debug_fn.glBindVertexArrayOESFn = 0; + if ((ver->is_gl3 || ver->is_gl4 || ver->is_es3) || + ext.b_GL_ARB_vertex_array_object) { + fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>( + GetGLProcAddress("glBindVertexArray")); + } + if (!fn.glBindVertexArrayOESFn && (ext.b_GL_OES_vertex_array_object)) { + fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>( + GetGLProcAddress("glBindVertexArrayOES")); + } + if (!fn.glBindVertexArrayOESFn) { + fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>( + GetGLProcAddress("glBindVertexArrayAPPLE")); + } + + fn.glBlendBarrierKHRFn = 0; + debug_fn.glBlendBarrierKHRFn = 0; + if (ext.b_GL_NV_blend_equation_advanced) { + fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>( + GetGLProcAddress("glBlendBarrierNV")); + } + if (!fn.glBlendBarrierKHRFn) { + fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>( + GetGLProcAddress("glBlendBarrierKHR")); + } + + fn.glBlitFramebufferANGLEFn = 0; + debug_fn.glBlitFramebufferANGLEFn = 0; + if (ext.b_GL_ANGLE_framebuffer_blit) { + fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>( + GetGLProcAddress("glBlitFramebufferANGLE")); + } + if (!fn.glBlitFramebufferANGLEFn) { + fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>( + GetGLProcAddress("glBlitFramebuffer")); + } + + fn.glBlitFramebufferEXTFn = 0; + debug_fn.glBlitFramebufferEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_blit) { + fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>( + GetGLProcAddress("glBlitFramebufferEXT")); + } + if (!fn.glBlitFramebufferEXTFn) { + fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>( + GetGLProcAddress("glBlitFramebuffer")); + } + + fn.glCheckFramebufferStatusEXTFn = 0; + debug_fn.glCheckFramebufferStatusEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glCheckFramebufferStatusEXTFn = + reinterpret_cast<glCheckFramebufferStatusEXTProc>( + GetGLProcAddress("glCheckFramebufferStatusEXT")); + } + if (!fn.glCheckFramebufferStatusEXTFn) { + fn.glCheckFramebufferStatusEXTFn = + reinterpret_cast<glCheckFramebufferStatusEXTProc>( + GetGLProcAddress("glCheckFramebufferStatus")); + } + + fn.glDeleteBuffersARBFn = 0; + debug_fn.glDeleteBuffersARBFn = 0; + if (ext.b_GL_ARB_vertex_buffer_object) { + fn.glDeleteBuffersARBFn = reinterpret_cast<glDeleteBuffersARBProc>( + GetGLProcAddress("glDeleteBuffersARB")); + } + if (!fn.glDeleteBuffersARBFn) { + fn.glDeleteBuffersARBFn = reinterpret_cast<glDeleteBuffersARBProc>( + GetGLProcAddress("glDeleteBuffers")); + } + + fn.glDeleteFramebuffersEXTFn = 0; + debug_fn.glDeleteFramebuffersEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glDeleteFramebuffersEXTFn = + reinterpret_cast<glDeleteFramebuffersEXTProc>( + GetGLProcAddress("glDeleteFramebuffersEXT")); + } + if (!fn.glDeleteFramebuffersEXTFn) { + fn.glDeleteFramebuffersEXTFn = + reinterpret_cast<glDeleteFramebuffersEXTProc>( + GetGLProcAddress("glDeleteFramebuffers")); + } + + fn.glDeleteQueriesARBFn = 0; + debug_fn.glDeleteQueriesARBFn = 0; + if (ext.b_GL_ARB_occlusion_query) { + fn.glDeleteQueriesARBFn = reinterpret_cast<glDeleteQueriesARBProc>( + GetGLProcAddress("glDeleteQueriesARB")); + } + if (!fn.glDeleteQueriesARBFn) { + fn.glDeleteQueriesARBFn = reinterpret_cast<glDeleteQueriesARBProc>( + GetGLProcAddress("glDeleteQueriesEXT")); + } + + fn.glDeleteRenderbuffersEXTFn = 0; + debug_fn.glDeleteRenderbuffersEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glDeleteRenderbuffersEXTFn = + reinterpret_cast<glDeleteRenderbuffersEXTProc>( + GetGLProcAddress("glDeleteRenderbuffersEXT")); + } + if (!fn.glDeleteRenderbuffersEXTFn) { + fn.glDeleteRenderbuffersEXTFn = + reinterpret_cast<glDeleteRenderbuffersEXTProc>( + GetGLProcAddress("glDeleteRenderbuffers")); + } + + fn.glDeleteVertexArraysOESFn = 0; + debug_fn.glDeleteVertexArraysOESFn = 0; + if ((ver->is_gl3 || ver->is_gl4 || ver->is_es3) || + ext.b_GL_ARB_vertex_array_object) { + fn.glDeleteVertexArraysOESFn = + reinterpret_cast<glDeleteVertexArraysOESProc>( + GetGLProcAddress("glDeleteVertexArrays")); + } + if (!fn.glDeleteVertexArraysOESFn && (ext.b_GL_OES_vertex_array_object)) { + fn.glDeleteVertexArraysOESFn = + reinterpret_cast<glDeleteVertexArraysOESProc>( + GetGLProcAddress("glDeleteVertexArraysOES")); + } + if (!fn.glDeleteVertexArraysOESFn) { + fn.glDeleteVertexArraysOESFn = + reinterpret_cast<glDeleteVertexArraysOESProc>( + GetGLProcAddress("glDeleteVertexArraysAPPLE")); + } + + fn.glDrawArraysInstancedANGLEFn = 0; + debug_fn.glDrawArraysInstancedANGLEFn = 0; + if (ext.b_GL_ARB_draw_instanced) { + fn.glDrawArraysInstancedANGLEFn = + reinterpret_cast<glDrawArraysInstancedANGLEProc>( + GetGLProcAddress("glDrawArraysInstancedARB")); + } + if (!fn.glDrawArraysInstancedANGLEFn && (ext.b_GL_ANGLE_instanced_arrays)) { + fn.glDrawArraysInstancedANGLEFn = + reinterpret_cast<glDrawArraysInstancedANGLEProc>( + GetGLProcAddress("glDrawArraysInstancedANGLE")); + } + if (!fn.glDrawArraysInstancedANGLEFn) { + fn.glDrawArraysInstancedANGLEFn = + reinterpret_cast<glDrawArraysInstancedANGLEProc>( + GetGLProcAddress("glDrawArraysInstanced")); + } + + fn.glDrawBuffersARBFn = 0; + debug_fn.glDrawBuffersARBFn = 0; + if (ext.b_GL_ARB_draw_buffers) { + fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>( + GetGLProcAddress("glDrawBuffersARB")); + } + if (!fn.glDrawBuffersARBFn && (ext.b_GL_EXT_draw_buffers)) { + fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>( + GetGLProcAddress("glDrawBuffersEXT")); + } + if (!fn.glDrawBuffersARBFn) { + fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>( + GetGLProcAddress("glDrawBuffers")); + } + + fn.glDrawElementsInstancedANGLEFn = 0; + debug_fn.glDrawElementsInstancedANGLEFn = 0; + if (ext.b_GL_ARB_draw_instanced) { + fn.glDrawElementsInstancedANGLEFn = + reinterpret_cast<glDrawElementsInstancedANGLEProc>( + GetGLProcAddress("glDrawElementsInstancedARB")); + } + if (!fn.glDrawElementsInstancedANGLEFn && (ext.b_GL_ANGLE_instanced_arrays)) { + fn.glDrawElementsInstancedANGLEFn = + reinterpret_cast<glDrawElementsInstancedANGLEProc>( + GetGLProcAddress("glDrawElementsInstancedANGLE")); + } + if (!fn.glDrawElementsInstancedANGLEFn) { + fn.glDrawElementsInstancedANGLEFn = + reinterpret_cast<glDrawElementsInstancedANGLEProc>( + GetGLProcAddress("glDrawElementsInstanced")); + } + + fn.glEndQueryARBFn = 0; + debug_fn.glEndQueryARBFn = 0; + if (ext.b_GL_ARB_occlusion_query) { + fn.glEndQueryARBFn = + reinterpret_cast<glEndQueryARBProc>(GetGLProcAddress("glEndQueryARB")); + } + if (!fn.glEndQueryARBFn) { + fn.glEndQueryARBFn = + reinterpret_cast<glEndQueryARBProc>(GetGLProcAddress("glEndQueryEXT")); + } + + fn.glFramebufferRenderbufferEXTFn = 0; + debug_fn.glFramebufferRenderbufferEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glFramebufferRenderbufferEXTFn = + reinterpret_cast<glFramebufferRenderbufferEXTProc>( + GetGLProcAddress("glFramebufferRenderbufferEXT")); + } + if (!fn.glFramebufferRenderbufferEXTFn) { + fn.glFramebufferRenderbufferEXTFn = + reinterpret_cast<glFramebufferRenderbufferEXTProc>( + GetGLProcAddress("glFramebufferRenderbuffer")); + } + + fn.glFramebufferTexture2DEXTFn = 0; + debug_fn.glFramebufferTexture2DEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glFramebufferTexture2DEXTFn = + reinterpret_cast<glFramebufferTexture2DEXTProc>( + GetGLProcAddress("glFramebufferTexture2DEXT")); + } + if (!fn.glFramebufferTexture2DEXTFn) { + fn.glFramebufferTexture2DEXTFn = + reinterpret_cast<glFramebufferTexture2DEXTProc>( + GetGLProcAddress("glFramebufferTexture2D")); + } + + fn.glGenBuffersARBFn = 0; + debug_fn.glGenBuffersARBFn = 0; + if (ext.b_GL_ARB_vertex_buffer_object) { + fn.glGenBuffersARBFn = reinterpret_cast<glGenBuffersARBProc>( + GetGLProcAddress("glGenBuffersARB")); + } + if (!fn.glGenBuffersARBFn) { + fn.glGenBuffersARBFn = + reinterpret_cast<glGenBuffersARBProc>(GetGLProcAddress("glGenBuffers")); + } + + fn.glGenerateMipmapEXTFn = 0; + debug_fn.glGenerateMipmapEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>( + GetGLProcAddress("glGenerateMipmapEXT")); + } + if (!fn.glGenerateMipmapEXTFn) { + fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>( + GetGLProcAddress("glGenerateMipmap")); + } + + fn.glGenFramebuffersEXTFn = 0; + debug_fn.glGenFramebuffersEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>( + GetGLProcAddress("glGenFramebuffersEXT")); + } + if (!fn.glGenFramebuffersEXTFn) { + fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>( + GetGLProcAddress("glGenFramebuffers")); + } + + fn.glGenQueriesARBFn = 0; + debug_fn.glGenQueriesARBFn = 0; + if (ext.b_GL_ARB_occlusion_query) { + fn.glGenQueriesARBFn = reinterpret_cast<glGenQueriesARBProc>( + GetGLProcAddress("glGenQueriesARB")); + } + if (!fn.glGenQueriesARBFn) { + fn.glGenQueriesARBFn = reinterpret_cast<glGenQueriesARBProc>( + GetGLProcAddress("glGenQueriesEXT")); + } + + fn.glGenRenderbuffersEXTFn = 0; + debug_fn.glGenRenderbuffersEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>( + GetGLProcAddress("glGenRenderbuffersEXT")); + } + if (!fn.glGenRenderbuffersEXTFn) { + fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>( + GetGLProcAddress("glGenRenderbuffers")); + } + + fn.glGenVertexArraysOESFn = 0; + debug_fn.glGenVertexArraysOESFn = 0; + if ((ver->is_gl3 || ver->is_gl4 || ver->is_es3) || + ext.b_GL_ARB_vertex_array_object) { + fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>( + GetGLProcAddress("glGenVertexArrays")); + } + if (!fn.glGenVertexArraysOESFn && (ext.b_GL_OES_vertex_array_object)) { + fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>( + GetGLProcAddress("glGenVertexArraysOES")); + } + if (!fn.glGenVertexArraysOESFn) { + fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>( + GetGLProcAddress("glGenVertexArraysAPPLE")); + } + + fn.glGetFramebufferAttachmentParameterivEXTFn = 0; + debug_fn.glGetFramebufferAttachmentParameterivEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glGetFramebufferAttachmentParameterivEXTFn = + reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>( + GetGLProcAddress("glGetFramebufferAttachmentParameterivEXT")); + } + if (!fn.glGetFramebufferAttachmentParameterivEXTFn) { + fn.glGetFramebufferAttachmentParameterivEXTFn = + reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>( + GetGLProcAddress("glGetFramebufferAttachmentParameteriv")); + } + + fn.glGetGraphicsResetStatusARBFn = 0; + debug_fn.glGetGraphicsResetStatusARBFn = 0; + if (ext.b_GL_ARB_robustness) { + fn.glGetGraphicsResetStatusARBFn = + reinterpret_cast<glGetGraphicsResetStatusARBProc>( + GetGLProcAddress("glGetGraphicsResetStatusARB")); + } + if (!fn.glGetGraphicsResetStatusARBFn && (ext.b_GL_KHR_robustness)) { + fn.glGetGraphicsResetStatusARBFn = + reinterpret_cast<glGetGraphicsResetStatusARBProc>( + GetGLProcAddress("glGetGraphicsResetStatusKHR")); + } + if (!fn.glGetGraphicsResetStatusARBFn && (ext.b_GL_EXT_robustness)) { + fn.glGetGraphicsResetStatusARBFn = + reinterpret_cast<glGetGraphicsResetStatusARBProc>( + GetGLProcAddress("glGetGraphicsResetStatusEXT")); + } + if (!fn.glGetGraphicsResetStatusARBFn) { + fn.glGetGraphicsResetStatusARBFn = + reinterpret_cast<glGetGraphicsResetStatusARBProc>( + GetGLProcAddress("glGetGraphicsResetStatus")); + } + + fn.glGetProgramBinaryFn = 0; + debug_fn.glGetProgramBinaryFn = 0; + if (ext.b_GL_OES_get_program_binary) { + fn.glGetProgramBinaryFn = reinterpret_cast<glGetProgramBinaryProc>( + GetGLProcAddress("glGetProgramBinaryOES")); + } + if (!fn.glGetProgramBinaryFn) { + fn.glGetProgramBinaryFn = reinterpret_cast<glGetProgramBinaryProc>( + GetGLProcAddress("glGetProgramBinary")); + } + + fn.glGetQueryivARBFn = 0; + debug_fn.glGetQueryivARBFn = 0; + if (ext.b_GL_ARB_occlusion_query) { + fn.glGetQueryivARBFn = reinterpret_cast<glGetQueryivARBProc>( + GetGLProcAddress("glGetQueryivARB")); + } + if (!fn.glGetQueryivARBFn) { + fn.glGetQueryivARBFn = reinterpret_cast<glGetQueryivARBProc>( + GetGLProcAddress("glGetQueryivEXT")); + } + + fn.glGetQueryObjectivARBFn = 0; + debug_fn.glGetQueryObjectivARBFn = 0; + if (ext.b_GL_ARB_occlusion_query) { + fn.glGetQueryObjectivARBFn = reinterpret_cast<glGetQueryObjectivARBProc>( + GetGLProcAddress("glGetQueryObjectivARB")); + } + if (!fn.glGetQueryObjectivARBFn) { + fn.glGetQueryObjectivARBFn = reinterpret_cast<glGetQueryObjectivARBProc>( + GetGLProcAddress("glGetQueryObjectivEXT")); + } + + fn.glGetQueryObjectui64vFn = 0; + debug_fn.glGetQueryObjectui64vFn = 0; + if (ext.b_GL_ARB_timer_query) { + fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>( + GetGLProcAddress("glGetQueryObjectui64v")); + } + if (!fn.glGetQueryObjectui64vFn) { + fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>( + GetGLProcAddress("glGetQueryObjectui64vEXT")); + } + + fn.glGetQueryObjectuivARBFn = 0; + debug_fn.glGetQueryObjectuivARBFn = 0; + if (ext.b_GL_ARB_occlusion_query) { + fn.glGetQueryObjectuivARBFn = reinterpret_cast<glGetQueryObjectuivARBProc>( + GetGLProcAddress("glGetQueryObjectuivARB")); + } + if (!fn.glGetQueryObjectuivARBFn) { + fn.glGetQueryObjectuivARBFn = reinterpret_cast<glGetQueryObjectuivARBProc>( + GetGLProcAddress("glGetQueryObjectuivEXT")); + } + + fn.glGetRenderbufferParameterivEXTFn = 0; + debug_fn.glGetRenderbufferParameterivEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glGetRenderbufferParameterivEXTFn = + reinterpret_cast<glGetRenderbufferParameterivEXTProc>( + GetGLProcAddress("glGetRenderbufferParameterivEXT")); + } + if (!fn.glGetRenderbufferParameterivEXTFn) { + fn.glGetRenderbufferParameterivEXTFn = + reinterpret_cast<glGetRenderbufferParameterivEXTProc>( + GetGLProcAddress("glGetRenderbufferParameteriv")); + } + + fn.glIsFramebufferEXTFn = 0; + debug_fn.glIsFramebufferEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glIsFramebufferEXTFn = reinterpret_cast<glIsFramebufferEXTProc>( + GetGLProcAddress("glIsFramebufferEXT")); + } + if (!fn.glIsFramebufferEXTFn) { + fn.glIsFramebufferEXTFn = reinterpret_cast<glIsFramebufferEXTProc>( + GetGLProcAddress("glIsFramebuffer")); + } + + fn.glIsQueryARBFn = 0; + debug_fn.glIsQueryARBFn = 0; + if (ext.b_GL_ARB_occlusion_query) { + fn.glIsQueryARBFn = + reinterpret_cast<glIsQueryARBProc>(GetGLProcAddress("glIsQueryARB")); + } + if (!fn.glIsQueryARBFn) { + fn.glIsQueryARBFn = + reinterpret_cast<glIsQueryARBProc>(GetGLProcAddress("glIsQueryEXT")); + } + + fn.glIsRenderbufferEXTFn = 0; + debug_fn.glIsRenderbufferEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glIsRenderbufferEXTFn = reinterpret_cast<glIsRenderbufferEXTProc>( + GetGLProcAddress("glIsRenderbufferEXT")); + } + if (!fn.glIsRenderbufferEXTFn) { + fn.glIsRenderbufferEXTFn = reinterpret_cast<glIsRenderbufferEXTProc>( + GetGLProcAddress("glIsRenderbuffer")); + } + + fn.glIsVertexArrayOESFn = 0; + debug_fn.glIsVertexArrayOESFn = 0; + if ((ver->is_gl3 || ver->is_gl4 || ver->is_es3) || + ext.b_GL_ARB_vertex_array_object) { + fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>( + GetGLProcAddress("glIsVertexArray")); + } + if (!fn.glIsVertexArrayOESFn && (ext.b_GL_OES_vertex_array_object)) { + fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>( + GetGLProcAddress("glIsVertexArrayOES")); + } + if (!fn.glIsVertexArrayOESFn) { + fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>( + GetGLProcAddress("glIsVertexArrayAPPLE")); + } + + fn.glMapBufferFn = 0; + debug_fn.glMapBufferFn = 0; + if (ext.b_GL_OES_mapbuffer) { + fn.glMapBufferFn = + reinterpret_cast<glMapBufferProc>(GetGLProcAddress("glMapBufferOES")); + } + if (!fn.glMapBufferFn) { + fn.glMapBufferFn = + reinterpret_cast<glMapBufferProc>(GetGLProcAddress("glMapBuffer")); + } + + fn.glMapBufferRangeFn = 0; + debug_fn.glMapBufferRangeFn = 0; + if ((ver->is_gl3 || ver->is_gl4 || ver->is_es3) || + ext.b_GL_ARB_map_buffer_range) { + fn.glMapBufferRangeFn = reinterpret_cast<glMapBufferRangeProc>( + GetGLProcAddress("glMapBufferRange")); + } + if (!fn.glMapBufferRangeFn) { + fn.glMapBufferRangeFn = reinterpret_cast<glMapBufferRangeProc>( + GetGLProcAddress("glMapBufferRangeEXT")); + } + + fn.glProgramBinaryFn = 0; + debug_fn.glProgramBinaryFn = 0; + if (ext.b_GL_OES_get_program_binary) { + fn.glProgramBinaryFn = reinterpret_cast<glProgramBinaryProc>( + GetGLProcAddress("glProgramBinaryOES")); + } + if (!fn.glProgramBinaryFn) { + fn.glProgramBinaryFn = reinterpret_cast<glProgramBinaryProc>( + GetGLProcAddress("glProgramBinary")); + } + + fn.glQueryCounterFn = 0; + debug_fn.glQueryCounterFn = 0; + if (ext.b_GL_ARB_timer_query) { + fn.glQueryCounterFn = reinterpret_cast<glQueryCounterProc>( + GetGLProcAddress("glQueryCounter")); + } + if (!fn.glQueryCounterFn) { + fn.glQueryCounterFn = reinterpret_cast<glQueryCounterProc>( + GetGLProcAddress("glQueryCounterEXT")); + } + + fn.glRenderbufferStorageEXTFn = 0; + debug_fn.glRenderbufferStorageEXTFn = 0; + if (ext.b_GL_EXT_framebuffer_object) { + fn.glRenderbufferStorageEXTFn = + reinterpret_cast<glRenderbufferStorageEXTProc>( + GetGLProcAddress("glRenderbufferStorageEXT")); + } + if (!fn.glRenderbufferStorageEXTFn) { + fn.glRenderbufferStorageEXTFn = + reinterpret_cast<glRenderbufferStorageEXTProc>( + GetGLProcAddress("glRenderbufferStorage")); + } + + fn.glRenderbufferStorageMultisampleANGLEFn = 0; + debug_fn.glRenderbufferStorageMultisampleANGLEFn = 0; + if (ext.b_GL_ANGLE_framebuffer_multisample) { + fn.glRenderbufferStorageMultisampleANGLEFn = + reinterpret_cast<glRenderbufferStorageMultisampleANGLEProc>( + GetGLProcAddress("glRenderbufferStorageMultisampleANGLE")); + } + if (!fn.glRenderbufferStorageMultisampleANGLEFn) { + fn.glRenderbufferStorageMultisampleANGLEFn = + reinterpret_cast<glRenderbufferStorageMultisampleANGLEProc>( + GetGLProcAddress("glRenderbufferStorageMultisample")); + } + + fn.glRenderbufferStorageMultisampleEXTFn = 0; + debug_fn.glRenderbufferStorageMultisampleEXTFn = 0; + if ((ext.b_GL_EXT_framebuffer_multisample || + ext.b_GL_EXT_multisampled_render_to_texture)) { + fn.glRenderbufferStorageMultisampleEXTFn = + reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>( + GetGLProcAddress("glRenderbufferStorageMultisampleEXT")); + } + if (!fn.glRenderbufferStorageMultisampleEXTFn) { + fn.glRenderbufferStorageMultisampleEXTFn = + reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>( + GetGLProcAddress("glRenderbufferStorageMultisample")); + } + + fn.glTexStorage2DEXTFn = 0; + debug_fn.glTexStorage2DEXTFn = 0; + if (ver->is_es3 || ext.b_GL_ARB_texture_storage) { + fn.glTexStorage2DEXTFn = reinterpret_cast<glTexStorage2DEXTProc>( + GetGLProcAddress("glTexStorage2D")); + } + if (!fn.glTexStorage2DEXTFn) { + fn.glTexStorage2DEXTFn = reinterpret_cast<glTexStorage2DEXTProc>( + GetGLProcAddress("glTexStorage2DEXT")); + } + + fn.glUnmapBufferFn = 0; + debug_fn.glUnmapBufferFn = 0; + if (ext.b_GL_OES_mapbuffer) { + fn.glUnmapBufferFn = reinterpret_cast<glUnmapBufferProc>( + GetGLProcAddress("glUnmapBufferOES")); + } + if (!fn.glUnmapBufferFn) { + fn.glUnmapBufferFn = + reinterpret_cast<glUnmapBufferProc>(GetGLProcAddress("glUnmapBuffer")); + } + + fn.glVertexAttribDivisorANGLEFn = 0; + debug_fn.glVertexAttribDivisorANGLEFn = 0; + if (ext.b_GL_ARB_instanced_arrays) { + fn.glVertexAttribDivisorANGLEFn = + reinterpret_cast<glVertexAttribDivisorANGLEProc>( + GetGLProcAddress("glVertexAttribDivisorARB")); + } + if (!fn.glVertexAttribDivisorANGLEFn && (ext.b_GL_ANGLE_instanced_arrays)) { + fn.glVertexAttribDivisorANGLEFn = + reinterpret_cast<glVertexAttribDivisorANGLEProc>( + GetGLProcAddress("glVertexAttribDivisorANGLE")); + } + if (!fn.glVertexAttribDivisorANGLEFn) { + fn.glVertexAttribDivisorANGLEFn = + reinterpret_cast<glVertexAttribDivisorANGLEProc>( + GetGLProcAddress("glVertexAttribDivisor")); + } + + if (g_debugBindingsInitialized) + InitializeDebugBindings(); +} + +extern "C" { + +static void GL_BINDING_CALL Debug_glActiveTexture(GLenum texture) { + GL_SERVICE_LOG("glActiveTexture" + << "(" << GLEnums::GetStringEnum(texture) << ")"); + g_driver_gl.debug_fn.glActiveTextureFn(texture); +} + +static void GL_BINDING_CALL +Debug_glAttachShader(GLuint program, GLuint shader) { + GL_SERVICE_LOG("glAttachShader" + << "(" << program << ", " << shader << ")"); + g_driver_gl.debug_fn.glAttachShaderFn(program, shader); +} + +static void GL_BINDING_CALL Debug_glBeginQuery(GLenum target, GLuint id) { + GL_SERVICE_LOG("glBeginQuery" + << "(" << GLEnums::GetStringEnum(target) << ", " << id << ")"); + g_driver_gl.debug_fn.glBeginQueryFn(target, id); +} + +static void GL_BINDING_CALL Debug_glBeginQueryARB(GLenum target, GLuint id) { + GL_SERVICE_LOG("glBeginQueryARB" + << "(" << GLEnums::GetStringEnum(target) << ", " << id << ")"); + g_driver_gl.debug_fn.glBeginQueryARBFn(target, id); +} + +static void GL_BINDING_CALL +Debug_glBeginTransformFeedback(GLenum primitiveMode) { + GL_SERVICE_LOG("glBeginTransformFeedback" + << "(" << GLEnums::GetStringEnum(primitiveMode) << ")"); + g_driver_gl.debug_fn.glBeginTransformFeedbackFn(primitiveMode); +} + +static void GL_BINDING_CALL +Debug_glBindAttribLocation(GLuint program, GLuint index, const char* name) { + GL_SERVICE_LOG("glBindAttribLocation" + << "(" << program << ", " << index << ", " << name << ")"); + g_driver_gl.debug_fn.glBindAttribLocationFn(program, index, name); +} + +static void GL_BINDING_CALL Debug_glBindBuffer(GLenum target, GLuint buffer) { + GL_SERVICE_LOG("glBindBuffer" + << "(" << GLEnums::GetStringEnum(target) << ", " << buffer + << ")"); + g_driver_gl.debug_fn.glBindBufferFn(target, buffer); +} + +static void GL_BINDING_CALL +Debug_glBindBufferBase(GLenum target, GLuint index, GLuint buffer) { + GL_SERVICE_LOG("glBindBufferBase" + << "(" << GLEnums::GetStringEnum(target) << ", " << index + << ", " << buffer << ")"); + g_driver_gl.debug_fn.glBindBufferBaseFn(target, index, buffer); +} + +static void GL_BINDING_CALL Debug_glBindBufferRange(GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size) { + GL_SERVICE_LOG("glBindBufferRange" + << "(" << GLEnums::GetStringEnum(target) << ", " << index + << ", " << buffer << ", " << offset << ", " << size << ")"); + g_driver_gl.debug_fn.glBindBufferRangeFn(target, index, buffer, offset, size); +} + +static void GL_BINDING_CALL Debug_glBindFragDataLocation(GLuint program, + GLuint colorNumber, + const char* name) { + GL_SERVICE_LOG("glBindFragDataLocation" + << "(" << program << ", " << colorNumber << ", " << name + << ")"); + g_driver_gl.debug_fn.glBindFragDataLocationFn(program, colorNumber, name); +} + +static void GL_BINDING_CALL +Debug_glBindFragDataLocationIndexed(GLuint program, + GLuint colorNumber, + GLuint index, + const char* name) { + GL_SERVICE_LOG("glBindFragDataLocationIndexed" + << "(" << program << ", " << colorNumber << ", " << index + << ", " << name << ")"); + g_driver_gl.debug_fn.glBindFragDataLocationIndexedFn(program, colorNumber, + index, name); +} + +static void GL_BINDING_CALL +Debug_glBindFramebufferEXT(GLenum target, GLuint framebuffer) { + GL_SERVICE_LOG("glBindFramebufferEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " << framebuffer + << ")"); + g_driver_gl.debug_fn.glBindFramebufferEXTFn(target, framebuffer); +} + +static void GL_BINDING_CALL +Debug_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer) { + GL_SERVICE_LOG("glBindRenderbufferEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " + << renderbuffer << ")"); + g_driver_gl.debug_fn.glBindRenderbufferEXTFn(target, renderbuffer); +} + +static void GL_BINDING_CALL Debug_glBindSampler(GLuint unit, GLuint sampler) { + GL_SERVICE_LOG("glBindSampler" + << "(" << unit << ", " << sampler << ")"); + g_driver_gl.debug_fn.glBindSamplerFn(unit, sampler); +} + +static void GL_BINDING_CALL Debug_glBindTexture(GLenum target, GLuint texture) { + GL_SERVICE_LOG("glBindTexture" + << "(" << GLEnums::GetStringEnum(target) << ", " << texture + << ")"); + g_driver_gl.debug_fn.glBindTextureFn(target, texture); +} + +static void GL_BINDING_CALL +Debug_glBindTransformFeedback(GLenum target, GLuint id) { + GL_SERVICE_LOG("glBindTransformFeedback" + << "(" << GLEnums::GetStringEnum(target) << ", " << id << ")"); + g_driver_gl.debug_fn.glBindTransformFeedbackFn(target, id); +} + +static void GL_BINDING_CALL Debug_glBindVertexArrayOES(GLuint array) { + GL_SERVICE_LOG("glBindVertexArrayOES" + << "(" << array << ")"); + g_driver_gl.debug_fn.glBindVertexArrayOESFn(array); +} + +static void GL_BINDING_CALL Debug_glBlendBarrierKHR(void) { + GL_SERVICE_LOG("glBlendBarrierKHR" + << "(" + << ")"); + g_driver_gl.debug_fn.glBlendBarrierKHRFn(); +} + +static void GL_BINDING_CALL Debug_glBlendColor(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) { + GL_SERVICE_LOG("glBlendColor" + << "(" << red << ", " << green << ", " << blue << ", " << alpha + << ")"); + g_driver_gl.debug_fn.glBlendColorFn(red, green, blue, alpha); +} + +static void GL_BINDING_CALL Debug_glBlendEquation(GLenum mode) { + GL_SERVICE_LOG("glBlendEquation" + << "(" << GLEnums::GetStringEnum(mode) << ")"); + g_driver_gl.debug_fn.glBlendEquationFn(mode); +} + +static void GL_BINDING_CALL +Debug_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) { + GL_SERVICE_LOG("glBlendEquationSeparate" + << "(" << GLEnums::GetStringEnum(modeRGB) << ", " + << GLEnums::GetStringEnum(modeAlpha) << ")"); + g_driver_gl.debug_fn.glBlendEquationSeparateFn(modeRGB, modeAlpha); +} + +static void GL_BINDING_CALL Debug_glBlendFunc(GLenum sfactor, GLenum dfactor) { + GL_SERVICE_LOG("glBlendFunc" + << "(" << GLEnums::GetStringEnum(sfactor) << ", " + << GLEnums::GetStringEnum(dfactor) << ")"); + g_driver_gl.debug_fn.glBlendFuncFn(sfactor, dfactor); +} + +static void GL_BINDING_CALL Debug_glBlendFuncSeparate(GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha) { + GL_SERVICE_LOG("glBlendFuncSeparate" + << "(" << GLEnums::GetStringEnum(srcRGB) << ", " + << GLEnums::GetStringEnum(dstRGB) << ", " + << GLEnums::GetStringEnum(srcAlpha) << ", " + << GLEnums::GetStringEnum(dstAlpha) << ")"); + g_driver_gl.debug_fn.glBlendFuncSeparateFn(srcRGB, dstRGB, srcAlpha, + dstAlpha); +} + +static void GL_BINDING_CALL Debug_glBlitFramebuffer(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + GL_SERVICE_LOG("glBlitFramebuffer" + << "(" << srcX0 << ", " << srcY0 << ", " << srcX1 << ", " + << srcY1 << ", " << dstX0 << ", " << dstY0 << ", " << dstX1 + << ", " << dstY1 << ", " << mask << ", " + << GLEnums::GetStringEnum(filter) << ")"); + g_driver_gl.debug_fn.glBlitFramebufferFn(srcX0, srcY0, srcX1, srcY1, dstX0, + dstY0, dstX1, dstY1, mask, filter); +} + +static void GL_BINDING_CALL Debug_glBlitFramebufferANGLE(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + GL_SERVICE_LOG("glBlitFramebufferANGLE" + << "(" << srcX0 << ", " << srcY0 << ", " << srcX1 << ", " + << srcY1 << ", " << dstX0 << ", " << dstY0 << ", " << dstX1 + << ", " << dstY1 << ", " << mask << ", " + << GLEnums::GetStringEnum(filter) << ")"); + g_driver_gl.debug_fn.glBlitFramebufferANGLEFn( + srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +static void GL_BINDING_CALL Debug_glBlitFramebufferEXT(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + GL_SERVICE_LOG("glBlitFramebufferEXT" + << "(" << srcX0 << ", " << srcY0 << ", " << srcX1 << ", " + << srcY1 << ", " << dstX0 << ", " << dstY0 << ", " << dstX1 + << ", " << dstY1 << ", " << mask << ", " + << GLEnums::GetStringEnum(filter) << ")"); + g_driver_gl.debug_fn.glBlitFramebufferEXTFn( + srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +static void GL_BINDING_CALL Debug_glBufferData(GLenum target, + GLsizeiptr size, + const void* data, + GLenum usage) { + GL_SERVICE_LOG("glBufferData" + << "(" << GLEnums::GetStringEnum(target) << ", " << size + << ", " << static_cast<const void*>(data) << ", " + << GLEnums::GetStringEnum(usage) << ")"); + g_driver_gl.debug_fn.glBufferDataFn(target, size, data, usage); +} + +static void GL_BINDING_CALL Debug_glBufferSubData(GLenum target, + GLintptr offset, + GLsizeiptr size, + const void* data) { + GL_SERVICE_LOG("glBufferSubData" + << "(" << GLEnums::GetStringEnum(target) << ", " << offset + << ", " << size << ", " << static_cast<const void*>(data) + << ")"); + g_driver_gl.debug_fn.glBufferSubDataFn(target, offset, size, data); +} + +static GLenum GL_BINDING_CALL Debug_glCheckFramebufferStatusEXT(GLenum target) { + GL_SERVICE_LOG("glCheckFramebufferStatusEXT" + << "(" << GLEnums::GetStringEnum(target) << ")"); + GLenum result = g_driver_gl.debug_fn.glCheckFramebufferStatusEXTFn(target); + + GL_SERVICE_LOG("GL_RESULT: " << GLEnums::GetStringEnum(result)); + + return result; +} + +static void GL_BINDING_CALL Debug_glClear(GLbitfield mask) { + GL_SERVICE_LOG("glClear" + << "(" << mask << ")"); + g_driver_gl.debug_fn.glClearFn(mask); +} + +static void GL_BINDING_CALL Debug_glClearBufferfi(GLenum buffer, + GLint drawbuffer, + const GLfloat depth, + GLint stencil) { + GL_SERVICE_LOG("glClearBufferfi" + << "(" << GLEnums::GetStringEnum(buffer) << ", " << drawbuffer + << ", " << depth << ", " << stencil << ")"); + g_driver_gl.debug_fn.glClearBufferfiFn(buffer, drawbuffer, depth, stencil); +} + +static void GL_BINDING_CALL +Debug_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value) { + GL_SERVICE_LOG("glClearBufferfv" + << "(" << GLEnums::GetStringEnum(buffer) << ", " << drawbuffer + << ", " << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glClearBufferfvFn(buffer, drawbuffer, value); +} + +static void GL_BINDING_CALL +Debug_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value) { + GL_SERVICE_LOG("glClearBufferiv" + << "(" << GLEnums::GetStringEnum(buffer) << ", " << drawbuffer + << ", " << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glClearBufferivFn(buffer, drawbuffer, value); +} + +static void GL_BINDING_CALL +Debug_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value) { + GL_SERVICE_LOG("glClearBufferuiv" + << "(" << GLEnums::GetStringEnum(buffer) << ", " << drawbuffer + << ", " << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glClearBufferuivFn(buffer, drawbuffer, value); +} + +static void GL_BINDING_CALL Debug_glClearColor(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) { + GL_SERVICE_LOG("glClearColor" + << "(" << red << ", " << green << ", " << blue << ", " << alpha + << ")"); + g_driver_gl.debug_fn.glClearColorFn(red, green, blue, alpha); +} + +static void GL_BINDING_CALL Debug_glClearDepth(GLclampd depth) { + GL_SERVICE_LOG("glClearDepth" + << "(" << depth << ")"); + g_driver_gl.debug_fn.glClearDepthFn(depth); +} + +static void GL_BINDING_CALL Debug_glClearDepthf(GLclampf depth) { + GL_SERVICE_LOG("glClearDepthf" + << "(" << depth << ")"); + g_driver_gl.debug_fn.glClearDepthfFn(depth); +} + +static void GL_BINDING_CALL Debug_glClearStencil(GLint s) { + GL_SERVICE_LOG("glClearStencil" + << "(" << s << ")"); + g_driver_gl.debug_fn.glClearStencilFn(s); +} + +static GLenum GL_BINDING_CALL +Debug_glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) { + GL_SERVICE_LOG("glClientWaitSync" + << "(" << sync << ", " << flags << ", " << timeout << ")"); + GLenum result = g_driver_gl.debug_fn.glClientWaitSyncFn(sync, flags, timeout); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glColorMask(GLboolean red, + GLboolean green, + GLboolean blue, + GLboolean alpha) { + GL_SERVICE_LOG("glColorMask" + << "(" << GLEnums::GetStringBool(red) << ", " + << GLEnums::GetStringBool(green) << ", " + << GLEnums::GetStringBool(blue) << ", " + << GLEnums::GetStringBool(alpha) << ")"); + g_driver_gl.debug_fn.glColorMaskFn(red, green, blue, alpha); +} + +static void GL_BINDING_CALL Debug_glCompileShader(GLuint shader) { + GL_SERVICE_LOG("glCompileShader" + << "(" << shader << ")"); + g_driver_gl.debug_fn.glCompileShaderFn(shader); +} + +static void GL_BINDING_CALL Debug_glCompressedTexImage2D(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data) { + GL_SERVICE_LOG("glCompressedTexImage2D" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << GLEnums::GetStringEnum(internalformat) << ", " + << width << ", " << height << ", " << border << ", " + << imageSize << ", " << static_cast<const void*>(data) << ")"); + g_driver_gl.debug_fn.glCompressedTexImage2DFn( + target, level, internalformat, width, height, border, imageSize, data); +} + +static void GL_BINDING_CALL Debug_glCompressedTexImage3D(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data) { + GL_SERVICE_LOG("glCompressedTexImage3D" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << GLEnums::GetStringEnum(internalformat) << ", " + << width << ", " << height << ", " << depth << ", " << border + << ", " << imageSize << ", " << static_cast<const void*>(data) + << ")"); + g_driver_gl.debug_fn.glCompressedTexImage3DFn(target, level, internalformat, + width, height, depth, border, + imageSize, data); +} + +static void GL_BINDING_CALL Debug_glCompressedTexSubImage2D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data) { + GL_SERVICE_LOG("glCompressedTexSubImage2D" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << xoffset << ", " << yoffset << ", " << width << ", " + << height << ", " << GLEnums::GetStringEnum(format) << ", " + << imageSize << ", " << static_cast<const void*>(data) << ")"); + g_driver_gl.debug_fn.glCompressedTexSubImage2DFn( + target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +static void GL_BINDING_CALL Debug_glCopyBufferSubData(GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size) { + GL_SERVICE_LOG("glCopyBufferSubData" + << "(" << GLEnums::GetStringEnum(readTarget) << ", " + << GLEnums::GetStringEnum(writeTarget) << ", " << readOffset + << ", " << writeOffset << ", " << size << ")"); + g_driver_gl.debug_fn.glCopyBufferSubDataFn(readTarget, writeTarget, + readOffset, writeOffset, size); +} + +static void GL_BINDING_CALL Debug_glCopyTexImage2D(GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border) { + GL_SERVICE_LOG("glCopyTexImage2D" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << GLEnums::GetStringEnum(internalformat) << ", " << x + << ", " << y << ", " << width << ", " << height << ", " + << border << ")"); + g_driver_gl.debug_fn.glCopyTexImage2DFn(target, level, internalformat, x, y, + width, height, border); +} + +static void GL_BINDING_CALL Debug_glCopyTexSubImage2D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) { + GL_SERVICE_LOG("glCopyTexSubImage2D" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << xoffset << ", " << yoffset << ", " << x << ", " << y + << ", " << width << ", " << height << ")"); + g_driver_gl.debug_fn.glCopyTexSubImage2DFn(target, level, xoffset, yoffset, x, + y, width, height); +} + +static void GL_BINDING_CALL Debug_glCopyTexSubImage3D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) { + GL_SERVICE_LOG("glCopyTexSubImage3D" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << xoffset << ", " << yoffset << ", " << zoffset + << ", " << x << ", " << y << ", " << width << ", " << height + << ")"); + g_driver_gl.debug_fn.glCopyTexSubImage3DFn(target, level, xoffset, yoffset, + zoffset, x, y, width, height); +} + +static GLuint GL_BINDING_CALL Debug_glCreateProgram(void) { + GL_SERVICE_LOG("glCreateProgram" + << "(" + << ")"); + GLuint result = g_driver_gl.debug_fn.glCreateProgramFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLuint GL_BINDING_CALL Debug_glCreateShader(GLenum type) { + GL_SERVICE_LOG("glCreateShader" + << "(" << GLEnums::GetStringEnum(type) << ")"); + GLuint result = g_driver_gl.debug_fn.glCreateShaderFn(type); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glCullFace(GLenum mode) { + GL_SERVICE_LOG("glCullFace" + << "(" << GLEnums::GetStringEnum(mode) << ")"); + g_driver_gl.debug_fn.glCullFaceFn(mode); +} + +static void GL_BINDING_CALL +Debug_glDeleteBuffersARB(GLsizei n, const GLuint* buffers) { + GL_SERVICE_LOG("glDeleteBuffersARB" + << "(" << n << ", " << static_cast<const void*>(buffers) + << ")"); + g_driver_gl.debug_fn.glDeleteBuffersARBFn(n, buffers); +} + +static void GL_BINDING_CALL +Debug_glDeleteFencesAPPLE(GLsizei n, const GLuint* fences) { + GL_SERVICE_LOG("glDeleteFencesAPPLE" + << "(" << n << ", " << static_cast<const void*>(fences) + << ")"); + g_driver_gl.debug_fn.glDeleteFencesAPPLEFn(n, fences); +} + +static void GL_BINDING_CALL +Debug_glDeleteFencesNV(GLsizei n, const GLuint* fences) { + GL_SERVICE_LOG("glDeleteFencesNV" + << "(" << n << ", " << static_cast<const void*>(fences) + << ")"); + g_driver_gl.debug_fn.glDeleteFencesNVFn(n, fences); +} + +static void GL_BINDING_CALL +Debug_glDeleteFramebuffersEXT(GLsizei n, const GLuint* framebuffers) { + GL_SERVICE_LOG("glDeleteFramebuffersEXT" + << "(" << n << ", " << static_cast<const void*>(framebuffers) + << ")"); + g_driver_gl.debug_fn.glDeleteFramebuffersEXTFn(n, framebuffers); +} + +static void GL_BINDING_CALL Debug_glDeleteProgram(GLuint program) { + GL_SERVICE_LOG("glDeleteProgram" + << "(" << program << ")"); + g_driver_gl.debug_fn.glDeleteProgramFn(program); +} + +static void GL_BINDING_CALL +Debug_glDeleteQueries(GLsizei n, const GLuint* ids) { + GL_SERVICE_LOG("glDeleteQueries" + << "(" << n << ", " << static_cast<const void*>(ids) << ")"); + g_driver_gl.debug_fn.glDeleteQueriesFn(n, ids); +} + +static void GL_BINDING_CALL +Debug_glDeleteQueriesARB(GLsizei n, const GLuint* ids) { + GL_SERVICE_LOG("glDeleteQueriesARB" + << "(" << n << ", " << static_cast<const void*>(ids) << ")"); + g_driver_gl.debug_fn.glDeleteQueriesARBFn(n, ids); +} + +static void GL_BINDING_CALL +Debug_glDeleteRenderbuffersEXT(GLsizei n, const GLuint* renderbuffers) { + GL_SERVICE_LOG("glDeleteRenderbuffersEXT" + << "(" << n << ", " << static_cast<const void*>(renderbuffers) + << ")"); + g_driver_gl.debug_fn.glDeleteRenderbuffersEXTFn(n, renderbuffers); +} + +static void GL_BINDING_CALL +Debug_glDeleteSamplers(GLsizei n, const GLuint* samplers) { + GL_SERVICE_LOG("glDeleteSamplers" + << "(" << n << ", " << static_cast<const void*>(samplers) + << ")"); + g_driver_gl.debug_fn.glDeleteSamplersFn(n, samplers); +} + +static void GL_BINDING_CALL Debug_glDeleteShader(GLuint shader) { + GL_SERVICE_LOG("glDeleteShader" + << "(" << shader << ")"); + g_driver_gl.debug_fn.glDeleteShaderFn(shader); +} + +static void GL_BINDING_CALL Debug_glDeleteSync(GLsync sync) { + GL_SERVICE_LOG("glDeleteSync" + << "(" << sync << ")"); + g_driver_gl.debug_fn.glDeleteSyncFn(sync); +} + +static void GL_BINDING_CALL +Debug_glDeleteTextures(GLsizei n, const GLuint* textures) { + GL_SERVICE_LOG("glDeleteTextures" + << "(" << n << ", " << static_cast<const void*>(textures) + << ")"); + g_driver_gl.debug_fn.glDeleteTexturesFn(n, textures); +} + +static void GL_BINDING_CALL +Debug_glDeleteTransformFeedbacks(GLsizei n, const GLuint* ids) { + GL_SERVICE_LOG("glDeleteTransformFeedbacks" + << "(" << n << ", " << static_cast<const void*>(ids) << ")"); + g_driver_gl.debug_fn.glDeleteTransformFeedbacksFn(n, ids); +} + +static void GL_BINDING_CALL +Debug_glDeleteVertexArraysOES(GLsizei n, const GLuint* arrays) { + GL_SERVICE_LOG("glDeleteVertexArraysOES" + << "(" << n << ", " << static_cast<const void*>(arrays) + << ")"); + g_driver_gl.debug_fn.glDeleteVertexArraysOESFn(n, arrays); +} + +static void GL_BINDING_CALL Debug_glDepthFunc(GLenum func) { + GL_SERVICE_LOG("glDepthFunc" + << "(" << GLEnums::GetStringEnum(func) << ")"); + g_driver_gl.debug_fn.glDepthFuncFn(func); +} + +static void GL_BINDING_CALL Debug_glDepthMask(GLboolean flag) { + GL_SERVICE_LOG("glDepthMask" + << "(" << GLEnums::GetStringBool(flag) << ")"); + g_driver_gl.debug_fn.glDepthMaskFn(flag); +} + +static void GL_BINDING_CALL Debug_glDepthRange(GLclampd zNear, GLclampd zFar) { + GL_SERVICE_LOG("glDepthRange" + << "(" << zNear << ", " << zFar << ")"); + g_driver_gl.debug_fn.glDepthRangeFn(zNear, zFar); +} + +static void GL_BINDING_CALL Debug_glDepthRangef(GLclampf zNear, GLclampf zFar) { + GL_SERVICE_LOG("glDepthRangef" + << "(" << zNear << ", " << zFar << ")"); + g_driver_gl.debug_fn.glDepthRangefFn(zNear, zFar); +} + +static void GL_BINDING_CALL +Debug_glDetachShader(GLuint program, GLuint shader) { + GL_SERVICE_LOG("glDetachShader" + << "(" << program << ", " << shader << ")"); + g_driver_gl.debug_fn.glDetachShaderFn(program, shader); +} + +static void GL_BINDING_CALL Debug_glDisable(GLenum cap) { + GL_SERVICE_LOG("glDisable" + << "(" << GLEnums::GetStringEnum(cap) << ")"); + g_driver_gl.debug_fn.glDisableFn(cap); +} + +static void GL_BINDING_CALL Debug_glDisableVertexAttribArray(GLuint index) { + GL_SERVICE_LOG("glDisableVertexAttribArray" + << "(" << index << ")"); + g_driver_gl.debug_fn.glDisableVertexAttribArrayFn(index); +} + +static void GL_BINDING_CALL +Debug_glDiscardFramebufferEXT(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) { + GL_SERVICE_LOG("glDiscardFramebufferEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " + << numAttachments << ", " + << static_cast<const void*>(attachments) << ")"); + g_driver_gl.debug_fn.glDiscardFramebufferEXTFn(target, numAttachments, + attachments); +} + +static void GL_BINDING_CALL +Debug_glDrawArrays(GLenum mode, GLint first, GLsizei count) { + GL_SERVICE_LOG("glDrawArrays" + << "(" << GLEnums::GetStringEnum(mode) << ", " << first << ", " + << count << ")"); + g_driver_gl.debug_fn.glDrawArraysFn(mode, first, count); +} + +static void GL_BINDING_CALL +Debug_glDrawArraysInstancedANGLE(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) { + GL_SERVICE_LOG("glDrawArraysInstancedANGLE" + << "(" << GLEnums::GetStringEnum(mode) << ", " << first << ", " + << count << ", " << primcount << ")"); + g_driver_gl.debug_fn.glDrawArraysInstancedANGLEFn(mode, first, count, + primcount); +} + +static void GL_BINDING_CALL Debug_glDrawBuffer(GLenum mode) { + GL_SERVICE_LOG("glDrawBuffer" + << "(" << GLEnums::GetStringEnum(mode) << ")"); + g_driver_gl.debug_fn.glDrawBufferFn(mode); +} + +static void GL_BINDING_CALL +Debug_glDrawBuffersARB(GLsizei n, const GLenum* bufs) { + GL_SERVICE_LOG("glDrawBuffersARB" + << "(" << n << ", " << static_cast<const void*>(bufs) << ")"); + g_driver_gl.debug_fn.glDrawBuffersARBFn(n, bufs); +} + +static void GL_BINDING_CALL Debug_glDrawElements(GLenum mode, + GLsizei count, + GLenum type, + const void* indices) { + GL_SERVICE_LOG("glDrawElements" + << "(" << GLEnums::GetStringEnum(mode) << ", " << count << ", " + << GLEnums::GetStringEnum(type) << ", " + << static_cast<const void*>(indices) << ")"); + g_driver_gl.debug_fn.glDrawElementsFn(mode, count, type, indices); +} + +static void GL_BINDING_CALL +Debug_glDrawElementsInstancedANGLE(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) { + GL_SERVICE_LOG("glDrawElementsInstancedANGLE" + << "(" << GLEnums::GetStringEnum(mode) << ", " << count << ", " + << GLEnums::GetStringEnum(type) << ", " + << static_cast<const void*>(indices) << ", " << primcount + << ")"); + g_driver_gl.debug_fn.glDrawElementsInstancedANGLEFn(mode, count, type, + indices, primcount); +} + +static void GL_BINDING_CALL Debug_glDrawRangeElements(GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices) { + GL_SERVICE_LOG("glDrawRangeElements" + << "(" << GLEnums::GetStringEnum(mode) << ", " << start << ", " + << end << ", " << count << ", " << GLEnums::GetStringEnum(type) + << ", " << static_cast<const void*>(indices) << ")"); + g_driver_gl.debug_fn.glDrawRangeElementsFn(mode, start, end, count, type, + indices); +} + +static void GL_BINDING_CALL +Debug_glEGLImageTargetRenderbufferStorageOES(GLenum target, + GLeglImageOES image) { + GL_SERVICE_LOG("glEGLImageTargetRenderbufferStorageOES" + << "(" << GLEnums::GetStringEnum(target) << ", " << image + << ")"); + g_driver_gl.debug_fn.glEGLImageTargetRenderbufferStorageOESFn(target, image); +} + +static void GL_BINDING_CALL +Debug_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) { + GL_SERVICE_LOG("glEGLImageTargetTexture2DOES" + << "(" << GLEnums::GetStringEnum(target) << ", " << image + << ")"); + g_driver_gl.debug_fn.glEGLImageTargetTexture2DOESFn(target, image); +} + +static void GL_BINDING_CALL Debug_glEnable(GLenum cap) { + GL_SERVICE_LOG("glEnable" + << "(" << GLEnums::GetStringEnum(cap) << ")"); + g_driver_gl.debug_fn.glEnableFn(cap); +} + +static void GL_BINDING_CALL Debug_glEnableVertexAttribArray(GLuint index) { + GL_SERVICE_LOG("glEnableVertexAttribArray" + << "(" << index << ")"); + g_driver_gl.debug_fn.glEnableVertexAttribArrayFn(index); +} + +static void GL_BINDING_CALL Debug_glEndQuery(GLenum target) { + GL_SERVICE_LOG("glEndQuery" + << "(" << GLEnums::GetStringEnum(target) << ")"); + g_driver_gl.debug_fn.glEndQueryFn(target); +} + +static void GL_BINDING_CALL Debug_glEndQueryARB(GLenum target) { + GL_SERVICE_LOG("glEndQueryARB" + << "(" << GLEnums::GetStringEnum(target) << ")"); + g_driver_gl.debug_fn.glEndQueryARBFn(target); +} + +static void GL_BINDING_CALL Debug_glEndTransformFeedback(void) { + GL_SERVICE_LOG("glEndTransformFeedback" + << "(" + << ")"); + g_driver_gl.debug_fn.glEndTransformFeedbackFn(); +} + +static GLsync GL_BINDING_CALL +Debug_glFenceSync(GLenum condition, GLbitfield flags) { + GL_SERVICE_LOG("glFenceSync" + << "(" << GLEnums::GetStringEnum(condition) << ", " << flags + << ")"); + GLsync result = g_driver_gl.debug_fn.glFenceSyncFn(condition, flags); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glFinish(void) { + GL_SERVICE_LOG("glFinish" + << "(" + << ")"); + g_driver_gl.debug_fn.glFinishFn(); +} + +static void GL_BINDING_CALL Debug_glFinishFenceAPPLE(GLuint fence) { + GL_SERVICE_LOG("glFinishFenceAPPLE" + << "(" << fence << ")"); + g_driver_gl.debug_fn.glFinishFenceAPPLEFn(fence); +} + +static void GL_BINDING_CALL Debug_glFinishFenceNV(GLuint fence) { + GL_SERVICE_LOG("glFinishFenceNV" + << "(" << fence << ")"); + g_driver_gl.debug_fn.glFinishFenceNVFn(fence); +} + +static void GL_BINDING_CALL Debug_glFlush(void) { + GL_SERVICE_LOG("glFlush" + << "(" + << ")"); + g_driver_gl.debug_fn.glFlushFn(); +} + +static void GL_BINDING_CALL Debug_glFlushMappedBufferRange(GLenum target, + GLintptr offset, + GLsizeiptr length) { + GL_SERVICE_LOG("glFlushMappedBufferRange" + << "(" << GLEnums::GetStringEnum(target) << ", " << offset + << ", " << length << ")"); + g_driver_gl.debug_fn.glFlushMappedBufferRangeFn(target, offset, length); +} + +static void GL_BINDING_CALL +Debug_glFramebufferRenderbufferEXT(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer) { + GL_SERVICE_LOG("glFramebufferRenderbufferEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(attachment) << ", " + << GLEnums::GetStringEnum(renderbuffertarget) << ", " + << renderbuffer << ")"); + g_driver_gl.debug_fn.glFramebufferRenderbufferEXTFn( + target, attachment, renderbuffertarget, renderbuffer); +} + +static void GL_BINDING_CALL Debug_glFramebufferTexture2DEXT(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level) { + GL_SERVICE_LOG("glFramebufferTexture2DEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(attachment) << ", " + << GLEnums::GetStringEnum(textarget) << ", " << texture << ", " + << level << ")"); + g_driver_gl.debug_fn.glFramebufferTexture2DEXTFn(target, attachment, + textarget, texture, level); +} + +static void GL_BINDING_CALL +Debug_glFramebufferTexture2DMultisampleEXT(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) { + GL_SERVICE_LOG("glFramebufferTexture2DMultisampleEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(attachment) << ", " + << GLEnums::GetStringEnum(textarget) << ", " << texture << ", " + << level << ", " << samples << ")"); + g_driver_gl.debug_fn.glFramebufferTexture2DMultisampleEXTFn( + target, attachment, textarget, texture, level, samples); +} + +static void GL_BINDING_CALL +Debug_glFramebufferTexture2DMultisampleIMG(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) { + GL_SERVICE_LOG("glFramebufferTexture2DMultisampleIMG" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(attachment) << ", " + << GLEnums::GetStringEnum(textarget) << ", " << texture << ", " + << level << ", " << samples << ")"); + g_driver_gl.debug_fn.glFramebufferTexture2DMultisampleIMGFn( + target, attachment, textarget, texture, level, samples); +} + +static void GL_BINDING_CALL Debug_glFramebufferTextureLayer(GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer) { + GL_SERVICE_LOG("glFramebufferTextureLayer" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(attachment) << ", " << texture + << ", " << level << ", " << layer << ")"); + g_driver_gl.debug_fn.glFramebufferTextureLayerFn(target, attachment, texture, + level, layer); +} + +static void GL_BINDING_CALL Debug_glFrontFace(GLenum mode) { + GL_SERVICE_LOG("glFrontFace" + << "(" << GLEnums::GetStringEnum(mode) << ")"); + g_driver_gl.debug_fn.glFrontFaceFn(mode); +} + +static void GL_BINDING_CALL Debug_glGenBuffersARB(GLsizei n, GLuint* buffers) { + GL_SERVICE_LOG("glGenBuffersARB" + << "(" << n << ", " << static_cast<const void*>(buffers) + << ")"); + g_driver_gl.debug_fn.glGenBuffersARBFn(n, buffers); +} + +static void GL_BINDING_CALL Debug_glGenerateMipmapEXT(GLenum target) { + GL_SERVICE_LOG("glGenerateMipmapEXT" + << "(" << GLEnums::GetStringEnum(target) << ")"); + g_driver_gl.debug_fn.glGenerateMipmapEXTFn(target); +} + +static void GL_BINDING_CALL Debug_glGenFencesAPPLE(GLsizei n, GLuint* fences) { + GL_SERVICE_LOG("glGenFencesAPPLE" + << "(" << n << ", " << static_cast<const void*>(fences) + << ")"); + g_driver_gl.debug_fn.glGenFencesAPPLEFn(n, fences); +} + +static void GL_BINDING_CALL Debug_glGenFencesNV(GLsizei n, GLuint* fences) { + GL_SERVICE_LOG("glGenFencesNV" + << "(" << n << ", " << static_cast<const void*>(fences) + << ")"); + g_driver_gl.debug_fn.glGenFencesNVFn(n, fences); +} + +static void GL_BINDING_CALL +Debug_glGenFramebuffersEXT(GLsizei n, GLuint* framebuffers) { + GL_SERVICE_LOG("glGenFramebuffersEXT" + << "(" << n << ", " << static_cast<const void*>(framebuffers) + << ")"); + g_driver_gl.debug_fn.glGenFramebuffersEXTFn(n, framebuffers); +} + +static void GL_BINDING_CALL Debug_glGenQueries(GLsizei n, GLuint* ids) { + GL_SERVICE_LOG("glGenQueries" + << "(" << n << ", " << static_cast<const void*>(ids) << ")"); + g_driver_gl.debug_fn.glGenQueriesFn(n, ids); +} + +static void GL_BINDING_CALL Debug_glGenQueriesARB(GLsizei n, GLuint* ids) { + GL_SERVICE_LOG("glGenQueriesARB" + << "(" << n << ", " << static_cast<const void*>(ids) << ")"); + g_driver_gl.debug_fn.glGenQueriesARBFn(n, ids); +} + +static void GL_BINDING_CALL +Debug_glGenRenderbuffersEXT(GLsizei n, GLuint* renderbuffers) { + GL_SERVICE_LOG("glGenRenderbuffersEXT" + << "(" << n << ", " << static_cast<const void*>(renderbuffers) + << ")"); + g_driver_gl.debug_fn.glGenRenderbuffersEXTFn(n, renderbuffers); +} + +static void GL_BINDING_CALL Debug_glGenSamplers(GLsizei n, GLuint* samplers) { + GL_SERVICE_LOG("glGenSamplers" + << "(" << n << ", " << static_cast<const void*>(samplers) + << ")"); + g_driver_gl.debug_fn.glGenSamplersFn(n, samplers); +} + +static void GL_BINDING_CALL Debug_glGenTextures(GLsizei n, GLuint* textures) { + GL_SERVICE_LOG("glGenTextures" + << "(" << n << ", " << static_cast<const void*>(textures) + << ")"); + g_driver_gl.debug_fn.glGenTexturesFn(n, textures); +} + +static void GL_BINDING_CALL +Debug_glGenTransformFeedbacks(GLsizei n, GLuint* ids) { + GL_SERVICE_LOG("glGenTransformFeedbacks" + << "(" << n << ", " << static_cast<const void*>(ids) << ")"); + g_driver_gl.debug_fn.glGenTransformFeedbacksFn(n, ids); +} + +static void GL_BINDING_CALL +Debug_glGenVertexArraysOES(GLsizei n, GLuint* arrays) { + GL_SERVICE_LOG("glGenVertexArraysOES" + << "(" << n << ", " << static_cast<const void*>(arrays) + << ")"); + g_driver_gl.debug_fn.glGenVertexArraysOESFn(n, arrays); +} + +static void GL_BINDING_CALL Debug_glGetActiveAttrib(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) { + GL_SERVICE_LOG("glGetActiveAttrib" + << "(" << program << ", " << index << ", " << bufsize << ", " + << static_cast<const void*>(length) << ", " + << static_cast<const void*>(size) << ", " + << static_cast<const void*>(type) << ", " + << static_cast<const void*>(name) << ")"); + g_driver_gl.debug_fn.glGetActiveAttribFn(program, index, bufsize, length, + size, type, name); +} + +static void GL_BINDING_CALL Debug_glGetActiveUniform(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) { + GL_SERVICE_LOG("glGetActiveUniform" + << "(" << program << ", " << index << ", " << bufsize << ", " + << static_cast<const void*>(length) << ", " + << static_cast<const void*>(size) << ", " + << static_cast<const void*>(type) << ", " + << static_cast<const void*>(name) << ")"); + g_driver_gl.debug_fn.glGetActiveUniformFn(program, index, bufsize, length, + size, type, name); +} + +static void GL_BINDING_CALL +Debug_glGetActiveUniformBlockiv(GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params) { + GL_SERVICE_LOG("glGetActiveUniformBlockiv" + << "(" << program << ", " << uniformBlockIndex << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetActiveUniformBlockivFn(program, uniformBlockIndex, + pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetActiveUniformBlockName(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + char* uniformBlockName) { + GL_SERVICE_LOG("glGetActiveUniformBlockName" + << "(" << program << ", " << uniformBlockIndex << ", " + << bufSize << ", " << static_cast<const void*>(length) << ", " + << static_cast<const void*>(uniformBlockName) << ")"); + g_driver_gl.debug_fn.glGetActiveUniformBlockNameFn( + program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +static void GL_BINDING_CALL +Debug_glGetActiveUniformsiv(GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params) { + GL_SERVICE_LOG("glGetActiveUniformsiv" + << "(" << program << ", " << uniformCount << ", " + << static_cast<const void*>(uniformIndices) << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetActiveUniformsivFn(program, uniformCount, + uniformIndices, pname, params); +} + +static void GL_BINDING_CALL Debug_glGetAttachedShaders(GLuint program, + GLsizei maxcount, + GLsizei* count, + GLuint* shaders) { + GL_SERVICE_LOG("glGetAttachedShaders" + << "(" << program << ", " << maxcount << ", " + << static_cast<const void*>(count) << ", " + << static_cast<const void*>(shaders) << ")"); + g_driver_gl.debug_fn.glGetAttachedShadersFn(program, maxcount, count, + shaders); +} + +static GLint GL_BINDING_CALL +Debug_glGetAttribLocation(GLuint program, const char* name) { + GL_SERVICE_LOG("glGetAttribLocation" + << "(" << program << ", " << name << ")"); + GLint result = g_driver_gl.debug_fn.glGetAttribLocationFn(program, name); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL +Debug_glGetBooleanv(GLenum pname, GLboolean* params) { + GL_SERVICE_LOG("glGetBooleanv" + << "(" << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetBooleanvFn(pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetBufferParameteriv" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetBufferParameterivFn(target, pname, params); +} + +static GLenum GL_BINDING_CALL Debug_glGetError(void) { + GL_SERVICE_LOG("glGetError" + << "(" + << ")"); + GLenum result = g_driver_gl.debug_fn.glGetErrorFn(); + + GL_SERVICE_LOG("GL_RESULT: " << GLEnums::GetStringError(result)); + + return result; +} + +static void GL_BINDING_CALL +Debug_glGetFenceivNV(GLuint fence, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetFenceivNV" + << "(" << fence << ", " << GLEnums::GetStringEnum(pname) + << ", " << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetFenceivNVFn(fence, pname, params); +} + +static void GL_BINDING_CALL Debug_glGetFloatv(GLenum pname, GLfloat* params) { + GL_SERVICE_LOG("glGetFloatv" + << "(" << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetFloatvFn(pname, params); +} + +static GLint GL_BINDING_CALL +Debug_glGetFragDataLocation(GLuint program, const char* name) { + GL_SERVICE_LOG("glGetFragDataLocation" + << "(" << program << ", " << name << ")"); + GLint result = g_driver_gl.debug_fn.glGetFragDataLocationFn(program, name); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL +Debug_glGetFramebufferAttachmentParameterivEXT(GLenum target, + GLenum attachment, + GLenum pname, + GLint* params) { + GL_SERVICE_LOG("glGetFramebufferAttachmentParameterivEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(attachment) << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetFramebufferAttachmentParameterivEXTFn( + target, attachment, pname, params); +} + +static GLenum GL_BINDING_CALL Debug_glGetGraphicsResetStatusARB(void) { + GL_SERVICE_LOG("glGetGraphicsResetStatusARB" + << "(" + << ")"); + GLenum result = g_driver_gl.debug_fn.glGetGraphicsResetStatusARBFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL +Debug_glGetInteger64i_v(GLenum target, GLuint index, GLint64* data) { + GL_SERVICE_LOG("glGetInteger64i_v" + << "(" << GLEnums::GetStringEnum(target) << ", " << index + << ", " << static_cast<const void*>(data) << ")"); + g_driver_gl.debug_fn.glGetInteger64i_vFn(target, index, data); +} + +static void GL_BINDING_CALL +Debug_glGetInteger64v(GLenum pname, GLint64* params) { + GL_SERVICE_LOG("glGetInteger64v" + << "(" << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetInteger64vFn(pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetIntegeri_v(GLenum target, GLuint index, GLint* data) { + GL_SERVICE_LOG("glGetIntegeri_v" + << "(" << GLEnums::GetStringEnum(target) << ", " << index + << ", " << static_cast<const void*>(data) << ")"); + g_driver_gl.debug_fn.glGetIntegeri_vFn(target, index, data); +} + +static void GL_BINDING_CALL Debug_glGetIntegerv(GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetIntegerv" + << "(" << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetIntegervFn(pname, params); +} + +static void GL_BINDING_CALL Debug_glGetInternalformativ(GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei bufSize, + GLint* params) { + GL_SERVICE_LOG("glGetInternalformativ" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(internalformat) << ", " + << GLEnums::GetStringEnum(pname) << ", " << bufSize << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetInternalformativFn(target, internalformat, pname, + bufSize, params); +} + +static void GL_BINDING_CALL Debug_glGetProgramBinary(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary) { + GL_SERVICE_LOG("glGetProgramBinary" + << "(" << program << ", " << bufSize << ", " + << static_cast<const void*>(length) << ", " + << static_cast<const void*>(binaryFormat) << ", " + << static_cast<const void*>(binary) << ")"); + g_driver_gl.debug_fn.glGetProgramBinaryFn(program, bufSize, length, + binaryFormat, binary); +} + +static void GL_BINDING_CALL Debug_glGetProgramInfoLog(GLuint program, + GLsizei bufsize, + GLsizei* length, + char* infolog) { + GL_SERVICE_LOG("glGetProgramInfoLog" + << "(" << program << ", " << bufsize << ", " + << static_cast<const void*>(length) << ", " + << static_cast<const void*>(infolog) << ")"); + g_driver_gl.debug_fn.glGetProgramInfoLogFn(program, bufsize, length, infolog); +} + +static void GL_BINDING_CALL +Debug_glGetProgramiv(GLuint program, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetProgramiv" + << "(" << program << ", " << GLEnums::GetStringEnum(pname) + << ", " << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetProgramivFn(program, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetQueryiv(GLenum target, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetQueryiv" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetQueryivFn(target, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetQueryivARB(GLenum target, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetQueryivARB" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetQueryivARBFn(target, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64* params) { + GL_SERVICE_LOG("glGetQueryObjecti64v" + << "(" << id << ", " << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetQueryObjecti64vFn(id, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetQueryObjectiv(GLuint id, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetQueryObjectiv" + << "(" << id << ", " << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetQueryObjectivFn(id, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetQueryObjectivARB(GLuint id, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetQueryObjectivARB" + << "(" << id << ", " << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetQueryObjectivARBFn(id, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64* params) { + GL_SERVICE_LOG("glGetQueryObjectui64v" + << "(" << id << ", " << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetQueryObjectui64vFn(id, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params) { + GL_SERVICE_LOG("glGetQueryObjectuiv" + << "(" << id << ", " << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetQueryObjectuivFn(id, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint* params) { + GL_SERVICE_LOG("glGetQueryObjectuivARB" + << "(" << id << ", " << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetQueryObjectuivARBFn(id, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetRenderbufferParameterivEXT(GLenum target, + GLenum pname, + GLint* params) { + GL_SERVICE_LOG("glGetRenderbufferParameterivEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetRenderbufferParameterivEXTFn(target, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params) { + GL_SERVICE_LOG("glGetSamplerParameterfv" + << "(" << sampler << ", " << GLEnums::GetStringEnum(pname) + << ", " << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetSamplerParameterfvFn(sampler, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetSamplerParameteriv" + << "(" << sampler << ", " << GLEnums::GetStringEnum(pname) + << ", " << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetSamplerParameterivFn(sampler, pname, params); +} + +static void GL_BINDING_CALL Debug_glGetShaderInfoLog(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* infolog) { + GL_SERVICE_LOG("glGetShaderInfoLog" + << "(" << shader << ", " << bufsize << ", " + << static_cast<const void*>(length) << ", " + << static_cast<const void*>(infolog) << ")"); + g_driver_gl.debug_fn.glGetShaderInfoLogFn(shader, bufsize, length, infolog); +} + +static void GL_BINDING_CALL +Debug_glGetShaderiv(GLuint shader, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetShaderiv" + << "(" << shader << ", " << GLEnums::GetStringEnum(pname) + << ", " << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetShaderivFn(shader, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetShaderPrecisionFormat(GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision) { + GL_SERVICE_LOG("glGetShaderPrecisionFormat" + << "(" << GLEnums::GetStringEnum(shadertype) << ", " + << GLEnums::GetStringEnum(precisiontype) << ", " + << static_cast<const void*>(range) << ", " + << static_cast<const void*>(precision) << ")"); + g_driver_gl.debug_fn.glGetShaderPrecisionFormatFn(shadertype, precisiontype, + range, precision); +} + +static void GL_BINDING_CALL Debug_glGetShaderSource(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) { + GL_SERVICE_LOG("glGetShaderSource" + << "(" << shader << ", " << bufsize << ", " + << static_cast<const void*>(length) << ", " + << static_cast<const void*>(source) << ")"); + g_driver_gl.debug_fn.glGetShaderSourceFn(shader, bufsize, length, source); +} + +static const GLubyte* GL_BINDING_CALL Debug_glGetString(GLenum name) { + GL_SERVICE_LOG("glGetString" + << "(" << GLEnums::GetStringEnum(name) << ")"); + const GLubyte* result = g_driver_gl.debug_fn.glGetStringFn(name); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glGetSynciv(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values) { + GL_SERVICE_LOG("glGetSynciv" + << "(" << sync << ", " << GLEnums::GetStringEnum(pname) << ", " + << bufSize << ", " << static_cast<const void*>(length) << ", " + << static_cast<const void*>(values) << ")"); + g_driver_gl.debug_fn.glGetSyncivFn(sync, pname, bufSize, length, values); +} + +static void GL_BINDING_CALL Debug_glGetTexLevelParameterfv(GLenum target, + GLint level, + GLenum pname, + GLfloat* params) { + GL_SERVICE_LOG("glGetTexLevelParameterfv" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetTexLevelParameterfvFn(target, level, pname, params); +} + +static void GL_BINDING_CALL Debug_glGetTexLevelParameteriv(GLenum target, + GLint level, + GLenum pname, + GLint* params) { + GL_SERVICE_LOG("glGetTexLevelParameteriv" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetTexLevelParameterivFn(target, level, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) { + GL_SERVICE_LOG("glGetTexParameterfv" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetTexParameterfvFn(target, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetTexParameteriv" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetTexParameterivFn(target, pname, params); +} + +static void GL_BINDING_CALL Debug_glGetTransformFeedbackVarying(GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLenum* type, + char* name) { + GL_SERVICE_LOG("glGetTransformFeedbackVarying" + << "(" << program << ", " << index << ", " << bufSize << ", " + << static_cast<const void*>(length) << ", " + << static_cast<const void*>(type) << ", " + << static_cast<const void*>(name) << ")"); + g_driver_gl.debug_fn.glGetTransformFeedbackVaryingFn(program, index, bufSize, + length, type, name); +} + +static void GL_BINDING_CALL +Debug_glGetTranslatedShaderSourceANGLE(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) { + GL_SERVICE_LOG("glGetTranslatedShaderSourceANGLE" + << "(" << shader << ", " << bufsize << ", " + << static_cast<const void*>(length) << ", " + << static_cast<const void*>(source) << ")"); + g_driver_gl.debug_fn.glGetTranslatedShaderSourceANGLEFn(shader, bufsize, + length, source); +} + +static GLuint GL_BINDING_CALL +Debug_glGetUniformBlockIndex(GLuint program, const char* uniformBlockName) { + GL_SERVICE_LOG("glGetUniformBlockIndex" + << "(" << program << ", " << uniformBlockName << ")"); + GLuint result = + g_driver_gl.debug_fn.glGetUniformBlockIndexFn(program, uniformBlockName); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL +Debug_glGetUniformfv(GLuint program, GLint location, GLfloat* params) { + GL_SERVICE_LOG("glGetUniformfv" + << "(" << program << ", " << location << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetUniformfvFn(program, location, params); +} + +static void GL_BINDING_CALL +Debug_glGetUniformIndices(GLuint program, + GLsizei uniformCount, + const char* const* uniformNames, + GLuint* uniformIndices) { + GL_SERVICE_LOG("glGetUniformIndices" + << "(" << program << ", " << uniformCount << ", " + << static_cast<const void*>(uniformNames) << ", " + << static_cast<const void*>(uniformIndices) << ")"); + g_driver_gl.debug_fn.glGetUniformIndicesFn(program, uniformCount, + uniformNames, uniformIndices); +} + +static void GL_BINDING_CALL +Debug_glGetUniformiv(GLuint program, GLint location, GLint* params) { + GL_SERVICE_LOG("glGetUniformiv" + << "(" << program << ", " << location << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetUniformivFn(program, location, params); +} + +static GLint GL_BINDING_CALL +Debug_glGetUniformLocation(GLuint program, const char* name) { + GL_SERVICE_LOG("glGetUniformLocation" + << "(" << program << ", " << name << ")"); + GLint result = g_driver_gl.debug_fn.glGetUniformLocationFn(program, name); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL +Debug_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params) { + GL_SERVICE_LOG("glGetVertexAttribfv" + << "(" << index << ", " << GLEnums::GetStringEnum(pname) + << ", " << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetVertexAttribfvFn(index, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params) { + GL_SERVICE_LOG("glGetVertexAttribiv" + << "(" << index << ", " << GLEnums::GetStringEnum(pname) + << ", " << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glGetVertexAttribivFn(index, pname, params); +} + +static void GL_BINDING_CALL +Debug_glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer) { + GL_SERVICE_LOG("glGetVertexAttribPointerv" + << "(" << index << ", " << GLEnums::GetStringEnum(pname) + << ", " << pointer << ")"); + g_driver_gl.debug_fn.glGetVertexAttribPointervFn(index, pname, pointer); +} + +static void GL_BINDING_CALL Debug_glHint(GLenum target, GLenum mode) { + GL_SERVICE_LOG("glHint" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(mode) << ")"); + g_driver_gl.debug_fn.glHintFn(target, mode); +} + +static void GL_BINDING_CALL +Debug_glInsertEventMarkerEXT(GLsizei length, const char* marker) { + GL_SERVICE_LOG("glInsertEventMarkerEXT" + << "(" << length << ", " << marker << ")"); + g_driver_gl.debug_fn.glInsertEventMarkerEXTFn(length, marker); +} + +static void GL_BINDING_CALL +Debug_glInvalidateFramebuffer(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) { + GL_SERVICE_LOG("glInvalidateFramebuffer" + << "(" << GLEnums::GetStringEnum(target) << ", " + << numAttachments << ", " + << static_cast<const void*>(attachments) << ")"); + g_driver_gl.debug_fn.glInvalidateFramebufferFn(target, numAttachments, + attachments); +} + +static void GL_BINDING_CALL +Debug_glInvalidateSubFramebuffer(GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLint width, + GLint height) { + GL_SERVICE_LOG("glInvalidateSubFramebuffer" + << "(" << GLEnums::GetStringEnum(target) << ", " + << numAttachments << ", " + << static_cast<const void*>(attachments) << ", " << x << ", " + << y << ", " << width << ", " << height << ")"); + g_driver_gl.debug_fn.glInvalidateSubFramebufferFn( + target, numAttachments, attachments, x, y, width, height); +} + +static GLboolean GL_BINDING_CALL Debug_glIsBuffer(GLuint buffer) { + GL_SERVICE_LOG("glIsBuffer" + << "(" << buffer << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsBufferFn(buffer); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsEnabled(GLenum cap) { + GL_SERVICE_LOG("glIsEnabled" + << "(" << GLEnums::GetStringEnum(cap) << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsEnabledFn(cap); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsFenceAPPLE(GLuint fence) { + GL_SERVICE_LOG("glIsFenceAPPLE" + << "(" << fence << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsFenceAPPLEFn(fence); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsFenceNV(GLuint fence) { + GL_SERVICE_LOG("glIsFenceNV" + << "(" << fence << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsFenceNVFn(fence); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsFramebufferEXT(GLuint framebuffer) { + GL_SERVICE_LOG("glIsFramebufferEXT" + << "(" << framebuffer << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsFramebufferEXTFn(framebuffer); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsProgram(GLuint program) { + GL_SERVICE_LOG("glIsProgram" + << "(" << program << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsProgramFn(program); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsQuery(GLuint query) { + GL_SERVICE_LOG("glIsQuery" + << "(" << query << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsQueryFn(query); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsQueryARB(GLuint query) { + GL_SERVICE_LOG("glIsQueryARB" + << "(" << query << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsQueryARBFn(query); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL +Debug_glIsRenderbufferEXT(GLuint renderbuffer) { + GL_SERVICE_LOG("glIsRenderbufferEXT" + << "(" << renderbuffer << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsRenderbufferEXTFn(renderbuffer); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsSampler(GLuint sampler) { + GL_SERVICE_LOG("glIsSampler" + << "(" << sampler << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsSamplerFn(sampler); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsShader(GLuint shader) { + GL_SERVICE_LOG("glIsShader" + << "(" << shader << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsShaderFn(shader); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsSync(GLsync sync) { + GL_SERVICE_LOG("glIsSync" + << "(" << sync << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsSyncFn(sync); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsTexture(GLuint texture) { + GL_SERVICE_LOG("glIsTexture" + << "(" << texture << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsTextureFn(texture); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsTransformFeedback(GLuint id) { + GL_SERVICE_LOG("glIsTransformFeedback" + << "(" << id << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsTransformFeedbackFn(id); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glIsVertexArrayOES(GLuint array) { + GL_SERVICE_LOG("glIsVertexArrayOES" + << "(" << array << ")"); + GLboolean result = g_driver_gl.debug_fn.glIsVertexArrayOESFn(array); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glLineWidth(GLfloat width) { + GL_SERVICE_LOG("glLineWidth" + << "(" << width << ")"); + g_driver_gl.debug_fn.glLineWidthFn(width); +} + +static void GL_BINDING_CALL Debug_glLinkProgram(GLuint program) { + GL_SERVICE_LOG("glLinkProgram" + << "(" << program << ")"); + g_driver_gl.debug_fn.glLinkProgramFn(program); +} + +static void* GL_BINDING_CALL Debug_glMapBuffer(GLenum target, GLenum access) { + GL_SERVICE_LOG("glMapBuffer" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(access) << ")"); + void* result = g_driver_gl.debug_fn.glMapBufferFn(target, access); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void* GL_BINDING_CALL Debug_glMapBufferRange(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access) { + GL_SERVICE_LOG("glMapBufferRange" + << "(" << GLEnums::GetStringEnum(target) << ", " << offset + << ", " << length << ", " << access << ")"); + void* result = + g_driver_gl.debug_fn.glMapBufferRangeFn(target, offset, length, access); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL +Debug_glMatrixLoadfEXT(GLenum matrixMode, const GLfloat* m) { + GL_SERVICE_LOG("glMatrixLoadfEXT" + << "(" << GLEnums::GetStringEnum(matrixMode) << ", " + << static_cast<const void*>(m) << ")"); + g_driver_gl.debug_fn.glMatrixLoadfEXTFn(matrixMode, m); +} + +static void GL_BINDING_CALL Debug_glMatrixLoadIdentityEXT(GLenum matrixMode) { + GL_SERVICE_LOG("glMatrixLoadIdentityEXT" + << "(" << GLEnums::GetStringEnum(matrixMode) << ")"); + g_driver_gl.debug_fn.glMatrixLoadIdentityEXTFn(matrixMode); +} + +static void GL_BINDING_CALL Debug_glPauseTransformFeedback(void) { + GL_SERVICE_LOG("glPauseTransformFeedback" + << "(" + << ")"); + g_driver_gl.debug_fn.glPauseTransformFeedbackFn(); +} + +static void GL_BINDING_CALL Debug_glPixelStorei(GLenum pname, GLint param) { + GL_SERVICE_LOG("glPixelStorei" + << "(" << GLEnums::GetStringEnum(pname) << ", " << param + << ")"); + g_driver_gl.debug_fn.glPixelStoreiFn(pname, param); +} + +static void GL_BINDING_CALL Debug_glPointParameteri(GLenum pname, GLint param) { + GL_SERVICE_LOG("glPointParameteri" + << "(" << GLEnums::GetStringEnum(pname) << ", " << param + << ")"); + g_driver_gl.debug_fn.glPointParameteriFn(pname, param); +} + +static void GL_BINDING_CALL +Debug_glPolygonOffset(GLfloat factor, GLfloat units) { + GL_SERVICE_LOG("glPolygonOffset" + << "(" << factor << ", " << units << ")"); + g_driver_gl.debug_fn.glPolygonOffsetFn(factor, units); +} + +static void GL_BINDING_CALL Debug_glPopGroupMarkerEXT(void) { + GL_SERVICE_LOG("glPopGroupMarkerEXT" + << "(" + << ")"); + g_driver_gl.debug_fn.glPopGroupMarkerEXTFn(); +} + +static void GL_BINDING_CALL Debug_glProgramBinary(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length) { + GL_SERVICE_LOG("glProgramBinary" + << "(" << program << ", " + << GLEnums::GetStringEnum(binaryFormat) << ", " + << static_cast<const void*>(binary) << ", " << length << ")"); + g_driver_gl.debug_fn.glProgramBinaryFn(program, binaryFormat, binary, length); +} + +static void GL_BINDING_CALL +Debug_glProgramParameteri(GLuint program, GLenum pname, GLint value) { + GL_SERVICE_LOG("glProgramParameteri" + << "(" << program << ", " << GLEnums::GetStringEnum(pname) + << ", " << value << ")"); + g_driver_gl.debug_fn.glProgramParameteriFn(program, pname, value); +} + +static void GL_BINDING_CALL +Debug_glPushGroupMarkerEXT(GLsizei length, const char* marker) { + GL_SERVICE_LOG("glPushGroupMarkerEXT" + << "(" << length << ", " << marker << ")"); + g_driver_gl.debug_fn.glPushGroupMarkerEXTFn(length, marker); +} + +static void GL_BINDING_CALL Debug_glQueryCounter(GLuint id, GLenum target) { + GL_SERVICE_LOG("glQueryCounter" + << "(" << id << ", " << GLEnums::GetStringEnum(target) << ")"); + g_driver_gl.debug_fn.glQueryCounterFn(id, target); +} + +static void GL_BINDING_CALL Debug_glReadBuffer(GLenum src) { + GL_SERVICE_LOG("glReadBuffer" + << "(" << GLEnums::GetStringEnum(src) << ")"); + g_driver_gl.debug_fn.glReadBufferFn(src); +} + +static void GL_BINDING_CALL Debug_glReadPixels(GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels) { + GL_SERVICE_LOG("glReadPixels" + << "(" << x << ", " << y << ", " << width << ", " << height + << ", " << GLEnums::GetStringEnum(format) << ", " + << GLEnums::GetStringEnum(type) << ", " + << static_cast<const void*>(pixels) << ")"); + g_driver_gl.debug_fn.glReadPixelsFn(x, y, width, height, format, type, + pixels); +} + +static void GL_BINDING_CALL Debug_glReleaseShaderCompiler(void) { + GL_SERVICE_LOG("glReleaseShaderCompiler" + << "(" + << ")"); + g_driver_gl.debug_fn.glReleaseShaderCompilerFn(); +} + +static void GL_BINDING_CALL +Debug_glRenderbufferStorageEXT(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height) { + GL_SERVICE_LOG("glRenderbufferStorageEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(internalformat) << ", " << width + << ", " << height << ")"); + g_driver_gl.debug_fn.glRenderbufferStorageEXTFn(target, internalformat, width, + height); +} + +static void GL_BINDING_CALL +Debug_glRenderbufferStorageMultisample(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + GL_SERVICE_LOG("glRenderbufferStorageMultisample" + << "(" << GLEnums::GetStringEnum(target) << ", " << samples + << ", " << GLEnums::GetStringEnum(internalformat) << ", " + << width << ", " << height << ")"); + g_driver_gl.debug_fn.glRenderbufferStorageMultisampleFn( + target, samples, internalformat, width, height); +} + +static void GL_BINDING_CALL +Debug_glRenderbufferStorageMultisampleANGLE(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + GL_SERVICE_LOG("glRenderbufferStorageMultisampleANGLE" + << "(" << GLEnums::GetStringEnum(target) << ", " << samples + << ", " << GLEnums::GetStringEnum(internalformat) << ", " + << width << ", " << height << ")"); + g_driver_gl.debug_fn.glRenderbufferStorageMultisampleANGLEFn( + target, samples, internalformat, width, height); +} + +static void GL_BINDING_CALL +Debug_glRenderbufferStorageMultisampleEXT(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + GL_SERVICE_LOG("glRenderbufferStorageMultisampleEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " << samples + << ", " << GLEnums::GetStringEnum(internalformat) << ", " + << width << ", " << height << ")"); + g_driver_gl.debug_fn.glRenderbufferStorageMultisampleEXTFn( + target, samples, internalformat, width, height); +} + +static void GL_BINDING_CALL +Debug_glRenderbufferStorageMultisampleIMG(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + GL_SERVICE_LOG("glRenderbufferStorageMultisampleIMG" + << "(" << GLEnums::GetStringEnum(target) << ", " << samples + << ", " << GLEnums::GetStringEnum(internalformat) << ", " + << width << ", " << height << ")"); + g_driver_gl.debug_fn.glRenderbufferStorageMultisampleIMGFn( + target, samples, internalformat, width, height); +} + +static void GL_BINDING_CALL Debug_glResumeTransformFeedback(void) { + GL_SERVICE_LOG("glResumeTransformFeedback" + << "(" + << ")"); + g_driver_gl.debug_fn.glResumeTransformFeedbackFn(); +} + +static void GL_BINDING_CALL +Debug_glSampleCoverage(GLclampf value, GLboolean invert) { + GL_SERVICE_LOG("glSampleCoverage" + << "(" << value << ", " << GLEnums::GetStringBool(invert) + << ")"); + g_driver_gl.debug_fn.glSampleCoverageFn(value, invert); +} + +static void GL_BINDING_CALL +Debug_glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) { + GL_SERVICE_LOG("glSamplerParameterf" + << "(" << sampler << ", " << GLEnums::GetStringEnum(pname) + << ", " << param << ")"); + g_driver_gl.debug_fn.glSamplerParameterfFn(sampler, pname, param); +} + +static void GL_BINDING_CALL Debug_glSamplerParameterfv(GLuint sampler, + GLenum pname, + const GLfloat* params) { + GL_SERVICE_LOG("glSamplerParameterfv" + << "(" << sampler << ", " << GLEnums::GetStringEnum(pname) + << ", " << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glSamplerParameterfvFn(sampler, pname, params); +} + +static void GL_BINDING_CALL +Debug_glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) { + GL_SERVICE_LOG("glSamplerParameteri" + << "(" << sampler << ", " << GLEnums::GetStringEnum(pname) + << ", " << param << ")"); + g_driver_gl.debug_fn.glSamplerParameteriFn(sampler, pname, param); +} + +static void GL_BINDING_CALL +Debug_glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint* params) { + GL_SERVICE_LOG("glSamplerParameteriv" + << "(" << sampler << ", " << GLEnums::GetStringEnum(pname) + << ", " << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glSamplerParameterivFn(sampler, pname, params); +} + +static void GL_BINDING_CALL +Debug_glScissor(GLint x, GLint y, GLsizei width, GLsizei height) { + GL_SERVICE_LOG("glScissor" + << "(" << x << ", " << y << ", " << width << ", " << height + << ")"); + g_driver_gl.debug_fn.glScissorFn(x, y, width, height); +} + +static void GL_BINDING_CALL Debug_glSetFenceAPPLE(GLuint fence) { + GL_SERVICE_LOG("glSetFenceAPPLE" + << "(" << fence << ")"); + g_driver_gl.debug_fn.glSetFenceAPPLEFn(fence); +} + +static void GL_BINDING_CALL Debug_glSetFenceNV(GLuint fence, GLenum condition) { + GL_SERVICE_LOG("glSetFenceNV" + << "(" << fence << ", " << GLEnums::GetStringEnum(condition) + << ")"); + g_driver_gl.debug_fn.glSetFenceNVFn(fence, condition); +} + +static void GL_BINDING_CALL Debug_glShaderBinary(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length) { + GL_SERVICE_LOG("glShaderBinary" + << "(" << n << ", " << static_cast<const void*>(shaders) + << ", " << GLEnums::GetStringEnum(binaryformat) << ", " + << static_cast<const void*>(binary) << ", " << length << ")"); + g_driver_gl.debug_fn.glShaderBinaryFn(n, shaders, binaryformat, binary, + length); +} + +static void GL_BINDING_CALL Debug_glShaderSource(GLuint shader, + GLsizei count, + const char* const* str, + const GLint* length) { + GL_SERVICE_LOG("glShaderSource" + << "(" << shader << ", " << count << ", " + << static_cast<const void*>(str) << ", " + << static_cast<const void*>(length) << ")"); + g_driver_gl.debug_fn.glShaderSourceFn(shader, count, str, length); + + GL_SERVICE_LOG_CODE_BLOCK({ + for (GLsizei ii = 0; ii < count; ++ii) { + if (str[ii]) { + if (length && length[ii] >= 0) { + std::string source(str[ii], length[ii]); + GL_SERVICE_LOG(" " << ii << ": ---\n" << source << "\n---"); + } else { + GL_SERVICE_LOG(" " << ii << ": ---\n" << str[ii] << "\n---"); + } + } else { + GL_SERVICE_LOG(" " << ii << ": NULL"); + } + } + }); +} + +static void GL_BINDING_CALL +Debug_glStencilFunc(GLenum func, GLint ref, GLuint mask) { + GL_SERVICE_LOG("glStencilFunc" + << "(" << GLEnums::GetStringEnum(func) << ", " << ref << ", " + << mask << ")"); + g_driver_gl.debug_fn.glStencilFuncFn(func, ref, mask); +} + +static void GL_BINDING_CALL +Debug_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) { + GL_SERVICE_LOG("glStencilFuncSeparate" + << "(" << GLEnums::GetStringEnum(face) << ", " + << GLEnums::GetStringEnum(func) << ", " << ref << ", " << mask + << ")"); + g_driver_gl.debug_fn.glStencilFuncSeparateFn(face, func, ref, mask); +} + +static void GL_BINDING_CALL Debug_glStencilMask(GLuint mask) { + GL_SERVICE_LOG("glStencilMask" + << "(" << mask << ")"); + g_driver_gl.debug_fn.glStencilMaskFn(mask); +} + +static void GL_BINDING_CALL +Debug_glStencilMaskSeparate(GLenum face, GLuint mask) { + GL_SERVICE_LOG("glStencilMaskSeparate" + << "(" << GLEnums::GetStringEnum(face) << ", " << mask << ")"); + g_driver_gl.debug_fn.glStencilMaskSeparateFn(face, mask); +} + +static void GL_BINDING_CALL +Debug_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) { + GL_SERVICE_LOG("glStencilOp" + << "(" << GLEnums::GetStringEnum(fail) << ", " + << GLEnums::GetStringEnum(zfail) << ", " + << GLEnums::GetStringEnum(zpass) << ")"); + g_driver_gl.debug_fn.glStencilOpFn(fail, zfail, zpass); +} + +static void GL_BINDING_CALL Debug_glStencilOpSeparate(GLenum face, + GLenum fail, + GLenum zfail, + GLenum zpass) { + GL_SERVICE_LOG("glStencilOpSeparate" + << "(" << GLEnums::GetStringEnum(face) << ", " + << GLEnums::GetStringEnum(fail) << ", " + << GLEnums::GetStringEnum(zfail) << ", " + << GLEnums::GetStringEnum(zpass) << ")"); + g_driver_gl.debug_fn.glStencilOpSeparateFn(face, fail, zfail, zpass); +} + +static GLboolean GL_BINDING_CALL Debug_glTestFenceAPPLE(GLuint fence) { + GL_SERVICE_LOG("glTestFenceAPPLE" + << "(" << fence << ")"); + GLboolean result = g_driver_gl.debug_fn.glTestFenceAPPLEFn(fence); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_glTestFenceNV(GLuint fence) { + GL_SERVICE_LOG("glTestFenceNV" + << "(" << fence << ")"); + GLboolean result = g_driver_gl.debug_fn.glTestFenceNVFn(fence); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glTexImage2D(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels) { + GL_SERVICE_LOG("glTexImage2D" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << internalformat << ", " << width << ", " << height + << ", " << border << ", " << GLEnums::GetStringEnum(format) + << ", " << GLEnums::GetStringEnum(type) << ", " + << static_cast<const void*>(pixels) << ")"); + g_driver_gl.debug_fn.glTexImage2DFn(target, level, internalformat, width, + height, border, format, type, pixels); +} + +static void GL_BINDING_CALL Debug_glTexImage3D(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels) { + GL_SERVICE_LOG("glTexImage3D" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << internalformat << ", " << width << ", " << height + << ", " << depth << ", " << border << ", " + << GLEnums::GetStringEnum(format) << ", " + << GLEnums::GetStringEnum(type) << ", " + << static_cast<const void*>(pixels) << ")"); + g_driver_gl.debug_fn.glTexImage3DFn(target, level, internalformat, width, + height, depth, border, format, type, + pixels); +} + +static void GL_BINDING_CALL +Debug_glTexParameterf(GLenum target, GLenum pname, GLfloat param) { + GL_SERVICE_LOG("glTexParameterf" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(pname) << ", " << param << ")"); + g_driver_gl.debug_fn.glTexParameterfFn(target, pname, param); +} + +static void GL_BINDING_CALL +Debug_glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params) { + GL_SERVICE_LOG("glTexParameterfv" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glTexParameterfvFn(target, pname, params); +} + +static void GL_BINDING_CALL +Debug_glTexParameteri(GLenum target, GLenum pname, GLint param) { + GL_SERVICE_LOG("glTexParameteri" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(pname) << ", " << param << ")"); + g_driver_gl.debug_fn.glTexParameteriFn(target, pname, param); +} + +static void GL_BINDING_CALL +Debug_glTexParameteriv(GLenum target, GLenum pname, const GLint* params) { + GL_SERVICE_LOG("glTexParameteriv" + << "(" << GLEnums::GetStringEnum(target) << ", " + << GLEnums::GetStringEnum(pname) << ", " + << static_cast<const void*>(params) << ")"); + g_driver_gl.debug_fn.glTexParameterivFn(target, pname, params); +} + +static void GL_BINDING_CALL Debug_glTexStorage2DEXT(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height) { + GL_SERVICE_LOG("glTexStorage2DEXT" + << "(" << GLEnums::GetStringEnum(target) << ", " << levels + << ", " << GLEnums::GetStringEnum(internalformat) << ", " + << width << ", " << height << ")"); + g_driver_gl.debug_fn.glTexStorage2DEXTFn(target, levels, internalformat, + width, height); +} + +static void GL_BINDING_CALL Debug_glTexStorage3D(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth) { + GL_SERVICE_LOG("glTexStorage3D" + << "(" << GLEnums::GetStringEnum(target) << ", " << levels + << ", " << GLEnums::GetStringEnum(internalformat) << ", " + << width << ", " << height << ", " << depth << ")"); + g_driver_gl.debug_fn.glTexStorage3DFn(target, levels, internalformat, width, + height, depth); +} + +static void GL_BINDING_CALL Debug_glTexSubImage2D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels) { + GL_SERVICE_LOG("glTexSubImage2D" + << "(" << GLEnums::GetStringEnum(target) << ", " << level + << ", " << xoffset << ", " << yoffset << ", " << width << ", " + << height << ", " << GLEnums::GetStringEnum(format) << ", " + << GLEnums::GetStringEnum(type) << ", " + << static_cast<const void*>(pixels) << ")"); + g_driver_gl.debug_fn.glTexSubImage2DFn(target, level, xoffset, yoffset, width, + height, format, type, pixels); +} + +static void GL_BINDING_CALL +Debug_glTransformFeedbackVaryings(GLuint program, + GLsizei count, + const char* const* varyings, + GLenum bufferMode) { + GL_SERVICE_LOG("glTransformFeedbackVaryings" + << "(" << program << ", " << count << ", " + << static_cast<const void*>(varyings) << ", " + << GLEnums::GetStringEnum(bufferMode) << ")"); + g_driver_gl.debug_fn.glTransformFeedbackVaryingsFn(program, count, varyings, + bufferMode); +} + +static void GL_BINDING_CALL Debug_glUniform1f(GLint location, GLfloat x) { + GL_SERVICE_LOG("glUniform1f" + << "(" << location << ", " << x << ")"); + g_driver_gl.debug_fn.glUniform1fFn(location, x); +} + +static void GL_BINDING_CALL +Debug_glUniform1fv(GLint location, GLsizei count, const GLfloat* v) { + GL_SERVICE_LOG("glUniform1fv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform1fvFn(location, count, v); +} + +static void GL_BINDING_CALL Debug_glUniform1i(GLint location, GLint x) { + GL_SERVICE_LOG("glUniform1i" + << "(" << location << ", " << x << ")"); + g_driver_gl.debug_fn.glUniform1iFn(location, x); +} + +static void GL_BINDING_CALL +Debug_glUniform1iv(GLint location, GLsizei count, const GLint* v) { + GL_SERVICE_LOG("glUniform1iv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform1ivFn(location, count, v); +} + +static void GL_BINDING_CALL Debug_glUniform1ui(GLint location, GLuint v0) { + GL_SERVICE_LOG("glUniform1ui" + << "(" << location << ", " << v0 << ")"); + g_driver_gl.debug_fn.glUniform1uiFn(location, v0); +} + +static void GL_BINDING_CALL +Debug_glUniform1uiv(GLint location, GLsizei count, const GLuint* v) { + GL_SERVICE_LOG("glUniform1uiv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform1uivFn(location, count, v); +} + +static void GL_BINDING_CALL +Debug_glUniform2f(GLint location, GLfloat x, GLfloat y) { + GL_SERVICE_LOG("glUniform2f" + << "(" << location << ", " << x << ", " << y << ")"); + g_driver_gl.debug_fn.glUniform2fFn(location, x, y); +} + +static void GL_BINDING_CALL +Debug_glUniform2fv(GLint location, GLsizei count, const GLfloat* v) { + GL_SERVICE_LOG("glUniform2fv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform2fvFn(location, count, v); +} + +static void GL_BINDING_CALL +Debug_glUniform2i(GLint location, GLint x, GLint y) { + GL_SERVICE_LOG("glUniform2i" + << "(" << location << ", " << x << ", " << y << ")"); + g_driver_gl.debug_fn.glUniform2iFn(location, x, y); +} + +static void GL_BINDING_CALL +Debug_glUniform2iv(GLint location, GLsizei count, const GLint* v) { + GL_SERVICE_LOG("glUniform2iv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform2ivFn(location, count, v); +} + +static void GL_BINDING_CALL +Debug_glUniform2ui(GLint location, GLuint v0, GLuint v1) { + GL_SERVICE_LOG("glUniform2ui" + << "(" << location << ", " << v0 << ", " << v1 << ")"); + g_driver_gl.debug_fn.glUniform2uiFn(location, v0, v1); +} + +static void GL_BINDING_CALL +Debug_glUniform2uiv(GLint location, GLsizei count, const GLuint* v) { + GL_SERVICE_LOG("glUniform2uiv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform2uivFn(location, count, v); +} + +static void GL_BINDING_CALL +Debug_glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) { + GL_SERVICE_LOG("glUniform3f" + << "(" << location << ", " << x << ", " << y << ", " << z + << ")"); + g_driver_gl.debug_fn.glUniform3fFn(location, x, y, z); +} + +static void GL_BINDING_CALL +Debug_glUniform3fv(GLint location, GLsizei count, const GLfloat* v) { + GL_SERVICE_LOG("glUniform3fv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform3fvFn(location, count, v); +} + +static void GL_BINDING_CALL +Debug_glUniform3i(GLint location, GLint x, GLint y, GLint z) { + GL_SERVICE_LOG("glUniform3i" + << "(" << location << ", " << x << ", " << y << ", " << z + << ")"); + g_driver_gl.debug_fn.glUniform3iFn(location, x, y, z); +} + +static void GL_BINDING_CALL +Debug_glUniform3iv(GLint location, GLsizei count, const GLint* v) { + GL_SERVICE_LOG("glUniform3iv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform3ivFn(location, count, v); +} + +static void GL_BINDING_CALL +Debug_glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) { + GL_SERVICE_LOG("glUniform3ui" + << "(" << location << ", " << v0 << ", " << v1 << ", " << v2 + << ")"); + g_driver_gl.debug_fn.glUniform3uiFn(location, v0, v1, v2); +} + +static void GL_BINDING_CALL +Debug_glUniform3uiv(GLint location, GLsizei count, const GLuint* v) { + GL_SERVICE_LOG("glUniform3uiv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform3uivFn(location, count, v); +} + +static void GL_BINDING_CALL +Debug_glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { + GL_SERVICE_LOG("glUniform4f" + << "(" << location << ", " << x << ", " << y << ", " << z + << ", " << w << ")"); + g_driver_gl.debug_fn.glUniform4fFn(location, x, y, z, w); +} + +static void GL_BINDING_CALL +Debug_glUniform4fv(GLint location, GLsizei count, const GLfloat* v) { + GL_SERVICE_LOG("glUniform4fv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform4fvFn(location, count, v); +} + +static void GL_BINDING_CALL +Debug_glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) { + GL_SERVICE_LOG("glUniform4i" + << "(" << location << ", " << x << ", " << y << ", " << z + << ", " << w << ")"); + g_driver_gl.debug_fn.glUniform4iFn(location, x, y, z, w); +} + +static void GL_BINDING_CALL +Debug_glUniform4iv(GLint location, GLsizei count, const GLint* v) { + GL_SERVICE_LOG("glUniform4iv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform4ivFn(location, count, v); +} + +static void GL_BINDING_CALL +Debug_glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { + GL_SERVICE_LOG("glUniform4ui" + << "(" << location << ", " << v0 << ", " << v1 << ", " << v2 + << ", " << v3 << ")"); + g_driver_gl.debug_fn.glUniform4uiFn(location, v0, v1, v2, v3); +} + +static void GL_BINDING_CALL +Debug_glUniform4uiv(GLint location, GLsizei count, const GLuint* v) { + GL_SERVICE_LOG("glUniform4uiv" + << "(" << location << ", " << count << ", " + << static_cast<const void*>(v) << ")"); + g_driver_gl.debug_fn.glUniform4uivFn(location, count, v); +} + +static void GL_BINDING_CALL +Debug_glUniformBlockBinding(GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding) { + GL_SERVICE_LOG("glUniformBlockBinding" + << "(" << program << ", " << uniformBlockIndex << ", " + << uniformBlockBinding << ")"); + g_driver_gl.debug_fn.glUniformBlockBindingFn(program, uniformBlockIndex, + uniformBlockBinding); +} + +static void GL_BINDING_CALL Debug_glUniformMatrix2fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + GL_SERVICE_LOG("glUniformMatrix2fv" + << "(" << location << ", " << count << ", " + << GLEnums::GetStringBool(transpose) << ", " + << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glUniformMatrix2fvFn(location, count, transpose, value); +} + +static void GL_BINDING_CALL Debug_glUniformMatrix2x3fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + GL_SERVICE_LOG("glUniformMatrix2x3fv" + << "(" << location << ", " << count << ", " + << GLEnums::GetStringBool(transpose) << ", " + << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glUniformMatrix2x3fvFn(location, count, transpose, + value); +} + +static void GL_BINDING_CALL Debug_glUniformMatrix2x4fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + GL_SERVICE_LOG("glUniformMatrix2x4fv" + << "(" << location << ", " << count << ", " + << GLEnums::GetStringBool(transpose) << ", " + << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glUniformMatrix2x4fvFn(location, count, transpose, + value); +} + +static void GL_BINDING_CALL Debug_glUniformMatrix3fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + GL_SERVICE_LOG("glUniformMatrix3fv" + << "(" << location << ", " << count << ", " + << GLEnums::GetStringBool(transpose) << ", " + << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glUniformMatrix3fvFn(location, count, transpose, value); +} + +static void GL_BINDING_CALL Debug_glUniformMatrix3x2fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + GL_SERVICE_LOG("glUniformMatrix3x2fv" + << "(" << location << ", " << count << ", " + << GLEnums::GetStringBool(transpose) << ", " + << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glUniformMatrix3x2fvFn(location, count, transpose, + value); +} + +static void GL_BINDING_CALL Debug_glUniformMatrix3x4fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + GL_SERVICE_LOG("glUniformMatrix3x4fv" + << "(" << location << ", " << count << ", " + << GLEnums::GetStringBool(transpose) << ", " + << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glUniformMatrix3x4fvFn(location, count, transpose, + value); +} + +static void GL_BINDING_CALL Debug_glUniformMatrix4fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + GL_SERVICE_LOG("glUniformMatrix4fv" + << "(" << location << ", " << count << ", " + << GLEnums::GetStringBool(transpose) << ", " + << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glUniformMatrix4fvFn(location, count, transpose, value); +} + +static void GL_BINDING_CALL Debug_glUniformMatrix4x2fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + GL_SERVICE_LOG("glUniformMatrix4x2fv" + << "(" << location << ", " << count << ", " + << GLEnums::GetStringBool(transpose) << ", " + << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glUniformMatrix4x2fvFn(location, count, transpose, + value); +} + +static void GL_BINDING_CALL Debug_glUniformMatrix4x3fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + GL_SERVICE_LOG("glUniformMatrix4x3fv" + << "(" << location << ", " << count << ", " + << GLEnums::GetStringBool(transpose) << ", " + << static_cast<const void*>(value) << ")"); + g_driver_gl.debug_fn.glUniformMatrix4x3fvFn(location, count, transpose, + value); +} + +static GLboolean GL_BINDING_CALL Debug_glUnmapBuffer(GLenum target) { + GL_SERVICE_LOG("glUnmapBuffer" + << "(" << GLEnums::GetStringEnum(target) << ")"); + GLboolean result = g_driver_gl.debug_fn.glUnmapBufferFn(target); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glUseProgram(GLuint program) { + GL_SERVICE_LOG("glUseProgram" + << "(" << program << ")"); + g_driver_gl.debug_fn.glUseProgramFn(program); +} + +static void GL_BINDING_CALL Debug_glValidateProgram(GLuint program) { + GL_SERVICE_LOG("glValidateProgram" + << "(" << program << ")"); + g_driver_gl.debug_fn.glValidateProgramFn(program); +} + +static void GL_BINDING_CALL Debug_glVertexAttrib1f(GLuint indx, GLfloat x) { + GL_SERVICE_LOG("glVertexAttrib1f" + << "(" << indx << ", " << x << ")"); + g_driver_gl.debug_fn.glVertexAttrib1fFn(indx, x); +} + +static void GL_BINDING_CALL +Debug_glVertexAttrib1fv(GLuint indx, const GLfloat* values) { + GL_SERVICE_LOG("glVertexAttrib1fv" + << "(" << indx << ", " << static_cast<const void*>(values) + << ")"); + g_driver_gl.debug_fn.glVertexAttrib1fvFn(indx, values); +} + +static void GL_BINDING_CALL +Debug_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) { + GL_SERVICE_LOG("glVertexAttrib2f" + << "(" << indx << ", " << x << ", " << y << ")"); + g_driver_gl.debug_fn.glVertexAttrib2fFn(indx, x, y); +} + +static void GL_BINDING_CALL +Debug_glVertexAttrib2fv(GLuint indx, const GLfloat* values) { + GL_SERVICE_LOG("glVertexAttrib2fv" + << "(" << indx << ", " << static_cast<const void*>(values) + << ")"); + g_driver_gl.debug_fn.glVertexAttrib2fvFn(indx, values); +} + +static void GL_BINDING_CALL +Debug_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) { + GL_SERVICE_LOG("glVertexAttrib3f" + << "(" << indx << ", " << x << ", " << y << ", " << z << ")"); + g_driver_gl.debug_fn.glVertexAttrib3fFn(indx, x, y, z); +} + +static void GL_BINDING_CALL +Debug_glVertexAttrib3fv(GLuint indx, const GLfloat* values) { + GL_SERVICE_LOG("glVertexAttrib3fv" + << "(" << indx << ", " << static_cast<const void*>(values) + << ")"); + g_driver_gl.debug_fn.glVertexAttrib3fvFn(indx, values); +} + +static void GL_BINDING_CALL Debug_glVertexAttrib4f(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) { + GL_SERVICE_LOG("glVertexAttrib4f" + << "(" << indx << ", " << x << ", " << y << ", " << z << ", " + << w << ")"); + g_driver_gl.debug_fn.glVertexAttrib4fFn(indx, x, y, z, w); +} + +static void GL_BINDING_CALL +Debug_glVertexAttrib4fv(GLuint indx, const GLfloat* values) { + GL_SERVICE_LOG("glVertexAttrib4fv" + << "(" << indx << ", " << static_cast<const void*>(values) + << ")"); + g_driver_gl.debug_fn.glVertexAttrib4fvFn(indx, values); +} + +static void GL_BINDING_CALL +Debug_glVertexAttribDivisorANGLE(GLuint index, GLuint divisor) { + GL_SERVICE_LOG("glVertexAttribDivisorANGLE" + << "(" << index << ", " << divisor << ")"); + g_driver_gl.debug_fn.glVertexAttribDivisorANGLEFn(index, divisor); +} + +static void GL_BINDING_CALL +Debug_glVertexAttribI4i(GLuint indx, GLint x, GLint y, GLint z, GLint w) { + GL_SERVICE_LOG("glVertexAttribI4i" + << "(" << indx << ", " << x << ", " << y << ", " << z << ", " + << w << ")"); + g_driver_gl.debug_fn.glVertexAttribI4iFn(indx, x, y, z, w); +} + +static void GL_BINDING_CALL +Debug_glVertexAttribI4iv(GLuint indx, const GLint* values) { + GL_SERVICE_LOG("glVertexAttribI4iv" + << "(" << indx << ", " << static_cast<const void*>(values) + << ")"); + g_driver_gl.debug_fn.glVertexAttribI4ivFn(indx, values); +} + +static void GL_BINDING_CALL +Debug_glVertexAttribI4ui(GLuint indx, GLuint x, GLuint y, GLuint z, GLuint w) { + GL_SERVICE_LOG("glVertexAttribI4ui" + << "(" << indx << ", " << x << ", " << y << ", " << z << ", " + << w << ")"); + g_driver_gl.debug_fn.glVertexAttribI4uiFn(indx, x, y, z, w); +} + +static void GL_BINDING_CALL +Debug_glVertexAttribI4uiv(GLuint indx, const GLuint* values) { + GL_SERVICE_LOG("glVertexAttribI4uiv" + << "(" << indx << ", " << static_cast<const void*>(values) + << ")"); + g_driver_gl.debug_fn.glVertexAttribI4uivFn(indx, values); +} + +static void GL_BINDING_CALL Debug_glVertexAttribIPointer(GLuint indx, + GLint size, + GLenum type, + GLsizei stride, + const void* ptr) { + GL_SERVICE_LOG("glVertexAttribIPointer" + << "(" << indx << ", " << size << ", " + << GLEnums::GetStringEnum(type) << ", " << stride << ", " + << static_cast<const void*>(ptr) << ")"); + g_driver_gl.debug_fn.glVertexAttribIPointerFn(indx, size, type, stride, ptr); +} + +static void GL_BINDING_CALL Debug_glVertexAttribPointer(GLuint indx, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* ptr) { + GL_SERVICE_LOG("glVertexAttribPointer" + << "(" << indx << ", " << size << ", " + << GLEnums::GetStringEnum(type) << ", " + << GLEnums::GetStringBool(normalized) << ", " << stride << ", " + << static_cast<const void*>(ptr) << ")"); + g_driver_gl.debug_fn.glVertexAttribPointerFn(indx, size, type, normalized, + stride, ptr); +} + +static void GL_BINDING_CALL +Debug_glViewport(GLint x, GLint y, GLsizei width, GLsizei height) { + GL_SERVICE_LOG("glViewport" + << "(" << x << ", " << y << ", " << width << ", " << height + << ")"); + g_driver_gl.debug_fn.glViewportFn(x, y, width, height); +} + +static GLenum GL_BINDING_CALL +Debug_glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) { + GL_SERVICE_LOG("glWaitSync" + << "(" << sync << ", " << flags << ", " << timeout << ")"); + GLenum result = g_driver_gl.debug_fn.glWaitSyncFn(sync, flags, timeout); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} +} // extern "C" + +void DriverGL::InitializeDebugBindings() { + if (!debug_fn.glActiveTextureFn) { + debug_fn.glActiveTextureFn = fn.glActiveTextureFn; + fn.glActiveTextureFn = Debug_glActiveTexture; + } + if (!debug_fn.glAttachShaderFn) { + debug_fn.glAttachShaderFn = fn.glAttachShaderFn; + fn.glAttachShaderFn = Debug_glAttachShader; + } + if (!debug_fn.glBeginQueryFn) { + debug_fn.glBeginQueryFn = fn.glBeginQueryFn; + fn.glBeginQueryFn = Debug_glBeginQuery; + } + if (!debug_fn.glBeginQueryARBFn) { + debug_fn.glBeginQueryARBFn = fn.glBeginQueryARBFn; + fn.glBeginQueryARBFn = Debug_glBeginQueryARB; + } + if (!debug_fn.glBeginTransformFeedbackFn) { + debug_fn.glBeginTransformFeedbackFn = fn.glBeginTransformFeedbackFn; + fn.glBeginTransformFeedbackFn = Debug_glBeginTransformFeedback; + } + if (!debug_fn.glBindAttribLocationFn) { + debug_fn.glBindAttribLocationFn = fn.glBindAttribLocationFn; + fn.glBindAttribLocationFn = Debug_glBindAttribLocation; + } + if (!debug_fn.glBindBufferFn) { + debug_fn.glBindBufferFn = fn.glBindBufferFn; + fn.glBindBufferFn = Debug_glBindBuffer; + } + if (!debug_fn.glBindBufferBaseFn) { + debug_fn.glBindBufferBaseFn = fn.glBindBufferBaseFn; + fn.glBindBufferBaseFn = Debug_glBindBufferBase; + } + if (!debug_fn.glBindBufferRangeFn) { + debug_fn.glBindBufferRangeFn = fn.glBindBufferRangeFn; + fn.glBindBufferRangeFn = Debug_glBindBufferRange; + } + if (!debug_fn.glBindFragDataLocationFn) { + debug_fn.glBindFragDataLocationFn = fn.glBindFragDataLocationFn; + fn.glBindFragDataLocationFn = Debug_glBindFragDataLocation; + } + if (!debug_fn.glBindFragDataLocationIndexedFn) { + debug_fn.glBindFragDataLocationIndexedFn = + fn.glBindFragDataLocationIndexedFn; + fn.glBindFragDataLocationIndexedFn = Debug_glBindFragDataLocationIndexed; + } + if (!debug_fn.glBindFramebufferEXTFn) { + debug_fn.glBindFramebufferEXTFn = fn.glBindFramebufferEXTFn; + fn.glBindFramebufferEXTFn = Debug_glBindFramebufferEXT; + } + if (!debug_fn.glBindRenderbufferEXTFn) { + debug_fn.glBindRenderbufferEXTFn = fn.glBindRenderbufferEXTFn; + fn.glBindRenderbufferEXTFn = Debug_glBindRenderbufferEXT; + } + if (!debug_fn.glBindSamplerFn) { + debug_fn.glBindSamplerFn = fn.glBindSamplerFn; + fn.glBindSamplerFn = Debug_glBindSampler; + } + if (!debug_fn.glBindTextureFn) { + debug_fn.glBindTextureFn = fn.glBindTextureFn; + fn.glBindTextureFn = Debug_glBindTexture; + } + if (!debug_fn.glBindTransformFeedbackFn) { + debug_fn.glBindTransformFeedbackFn = fn.glBindTransformFeedbackFn; + fn.glBindTransformFeedbackFn = Debug_glBindTransformFeedback; + } + if (!debug_fn.glBindVertexArrayOESFn) { + debug_fn.glBindVertexArrayOESFn = fn.glBindVertexArrayOESFn; + fn.glBindVertexArrayOESFn = Debug_glBindVertexArrayOES; + } + if (!debug_fn.glBlendBarrierKHRFn) { + debug_fn.glBlendBarrierKHRFn = fn.glBlendBarrierKHRFn; + fn.glBlendBarrierKHRFn = Debug_glBlendBarrierKHR; + } + if (!debug_fn.glBlendColorFn) { + debug_fn.glBlendColorFn = fn.glBlendColorFn; + fn.glBlendColorFn = Debug_glBlendColor; + } + if (!debug_fn.glBlendEquationFn) { + debug_fn.glBlendEquationFn = fn.glBlendEquationFn; + fn.glBlendEquationFn = Debug_glBlendEquation; + } + if (!debug_fn.glBlendEquationSeparateFn) { + debug_fn.glBlendEquationSeparateFn = fn.glBlendEquationSeparateFn; + fn.glBlendEquationSeparateFn = Debug_glBlendEquationSeparate; + } + if (!debug_fn.glBlendFuncFn) { + debug_fn.glBlendFuncFn = fn.glBlendFuncFn; + fn.glBlendFuncFn = Debug_glBlendFunc; + } + if (!debug_fn.glBlendFuncSeparateFn) { + debug_fn.glBlendFuncSeparateFn = fn.glBlendFuncSeparateFn; + fn.glBlendFuncSeparateFn = Debug_glBlendFuncSeparate; + } + if (!debug_fn.glBlitFramebufferFn) { + debug_fn.glBlitFramebufferFn = fn.glBlitFramebufferFn; + fn.glBlitFramebufferFn = Debug_glBlitFramebuffer; + } + if (!debug_fn.glBlitFramebufferANGLEFn) { + debug_fn.glBlitFramebufferANGLEFn = fn.glBlitFramebufferANGLEFn; + fn.glBlitFramebufferANGLEFn = Debug_glBlitFramebufferANGLE; + } + if (!debug_fn.glBlitFramebufferEXTFn) { + debug_fn.glBlitFramebufferEXTFn = fn.glBlitFramebufferEXTFn; + fn.glBlitFramebufferEXTFn = Debug_glBlitFramebufferEXT; + } + if (!debug_fn.glBufferDataFn) { + debug_fn.glBufferDataFn = fn.glBufferDataFn; + fn.glBufferDataFn = Debug_glBufferData; + } + if (!debug_fn.glBufferSubDataFn) { + debug_fn.glBufferSubDataFn = fn.glBufferSubDataFn; + fn.glBufferSubDataFn = Debug_glBufferSubData; + } + if (!debug_fn.glCheckFramebufferStatusEXTFn) { + debug_fn.glCheckFramebufferStatusEXTFn = fn.glCheckFramebufferStatusEXTFn; + fn.glCheckFramebufferStatusEXTFn = Debug_glCheckFramebufferStatusEXT; + } + if (!debug_fn.glClearFn) { + debug_fn.glClearFn = fn.glClearFn; + fn.glClearFn = Debug_glClear; + } + if (!debug_fn.glClearBufferfiFn) { + debug_fn.glClearBufferfiFn = fn.glClearBufferfiFn; + fn.glClearBufferfiFn = Debug_glClearBufferfi; + } + if (!debug_fn.glClearBufferfvFn) { + debug_fn.glClearBufferfvFn = fn.glClearBufferfvFn; + fn.glClearBufferfvFn = Debug_glClearBufferfv; + } + if (!debug_fn.glClearBufferivFn) { + debug_fn.glClearBufferivFn = fn.glClearBufferivFn; + fn.glClearBufferivFn = Debug_glClearBufferiv; + } + if (!debug_fn.glClearBufferuivFn) { + debug_fn.glClearBufferuivFn = fn.glClearBufferuivFn; + fn.glClearBufferuivFn = Debug_glClearBufferuiv; + } + if (!debug_fn.glClearColorFn) { + debug_fn.glClearColorFn = fn.glClearColorFn; + fn.glClearColorFn = Debug_glClearColor; + } + if (!debug_fn.glClearDepthFn) { + debug_fn.glClearDepthFn = fn.glClearDepthFn; + fn.glClearDepthFn = Debug_glClearDepth; + } + if (!debug_fn.glClearDepthfFn) { + debug_fn.glClearDepthfFn = fn.glClearDepthfFn; + fn.glClearDepthfFn = Debug_glClearDepthf; + } + if (!debug_fn.glClearStencilFn) { + debug_fn.glClearStencilFn = fn.glClearStencilFn; + fn.glClearStencilFn = Debug_glClearStencil; + } + if (!debug_fn.glClientWaitSyncFn) { + debug_fn.glClientWaitSyncFn = fn.glClientWaitSyncFn; + fn.glClientWaitSyncFn = Debug_glClientWaitSync; + } + if (!debug_fn.glColorMaskFn) { + debug_fn.glColorMaskFn = fn.glColorMaskFn; + fn.glColorMaskFn = Debug_glColorMask; + } + if (!debug_fn.glCompileShaderFn) { + debug_fn.glCompileShaderFn = fn.glCompileShaderFn; + fn.glCompileShaderFn = Debug_glCompileShader; + } + if (!debug_fn.glCompressedTexImage2DFn) { + debug_fn.glCompressedTexImage2DFn = fn.glCompressedTexImage2DFn; + fn.glCompressedTexImage2DFn = Debug_glCompressedTexImage2D; + } + if (!debug_fn.glCompressedTexImage3DFn) { + debug_fn.glCompressedTexImage3DFn = fn.glCompressedTexImage3DFn; + fn.glCompressedTexImage3DFn = Debug_glCompressedTexImage3D; + } + if (!debug_fn.glCompressedTexSubImage2DFn) { + debug_fn.glCompressedTexSubImage2DFn = fn.glCompressedTexSubImage2DFn; + fn.glCompressedTexSubImage2DFn = Debug_glCompressedTexSubImage2D; + } + if (!debug_fn.glCopyBufferSubDataFn) { + debug_fn.glCopyBufferSubDataFn = fn.glCopyBufferSubDataFn; + fn.glCopyBufferSubDataFn = Debug_glCopyBufferSubData; + } + if (!debug_fn.glCopyTexImage2DFn) { + debug_fn.glCopyTexImage2DFn = fn.glCopyTexImage2DFn; + fn.glCopyTexImage2DFn = Debug_glCopyTexImage2D; + } + if (!debug_fn.glCopyTexSubImage2DFn) { + debug_fn.glCopyTexSubImage2DFn = fn.glCopyTexSubImage2DFn; + fn.glCopyTexSubImage2DFn = Debug_glCopyTexSubImage2D; + } + if (!debug_fn.glCopyTexSubImage3DFn) { + debug_fn.glCopyTexSubImage3DFn = fn.glCopyTexSubImage3DFn; + fn.glCopyTexSubImage3DFn = Debug_glCopyTexSubImage3D; + } + if (!debug_fn.glCreateProgramFn) { + debug_fn.glCreateProgramFn = fn.glCreateProgramFn; + fn.glCreateProgramFn = Debug_glCreateProgram; + } + if (!debug_fn.glCreateShaderFn) { + debug_fn.glCreateShaderFn = fn.glCreateShaderFn; + fn.glCreateShaderFn = Debug_glCreateShader; + } + if (!debug_fn.glCullFaceFn) { + debug_fn.glCullFaceFn = fn.glCullFaceFn; + fn.glCullFaceFn = Debug_glCullFace; + } + if (!debug_fn.glDeleteBuffersARBFn) { + debug_fn.glDeleteBuffersARBFn = fn.glDeleteBuffersARBFn; + fn.glDeleteBuffersARBFn = Debug_glDeleteBuffersARB; + } + if (!debug_fn.glDeleteFencesAPPLEFn) { + debug_fn.glDeleteFencesAPPLEFn = fn.glDeleteFencesAPPLEFn; + fn.glDeleteFencesAPPLEFn = Debug_glDeleteFencesAPPLE; + } + if (!debug_fn.glDeleteFencesNVFn) { + debug_fn.glDeleteFencesNVFn = fn.glDeleteFencesNVFn; + fn.glDeleteFencesNVFn = Debug_glDeleteFencesNV; + } + if (!debug_fn.glDeleteFramebuffersEXTFn) { + debug_fn.glDeleteFramebuffersEXTFn = fn.glDeleteFramebuffersEXTFn; + fn.glDeleteFramebuffersEXTFn = Debug_glDeleteFramebuffersEXT; + } + if (!debug_fn.glDeleteProgramFn) { + debug_fn.glDeleteProgramFn = fn.glDeleteProgramFn; + fn.glDeleteProgramFn = Debug_glDeleteProgram; + } + if (!debug_fn.glDeleteQueriesFn) { + debug_fn.glDeleteQueriesFn = fn.glDeleteQueriesFn; + fn.glDeleteQueriesFn = Debug_glDeleteQueries; + } + if (!debug_fn.glDeleteQueriesARBFn) { + debug_fn.glDeleteQueriesARBFn = fn.glDeleteQueriesARBFn; + fn.glDeleteQueriesARBFn = Debug_glDeleteQueriesARB; + } + if (!debug_fn.glDeleteRenderbuffersEXTFn) { + debug_fn.glDeleteRenderbuffersEXTFn = fn.glDeleteRenderbuffersEXTFn; + fn.glDeleteRenderbuffersEXTFn = Debug_glDeleteRenderbuffersEXT; + } + if (!debug_fn.glDeleteSamplersFn) { + debug_fn.glDeleteSamplersFn = fn.glDeleteSamplersFn; + fn.glDeleteSamplersFn = Debug_glDeleteSamplers; + } + if (!debug_fn.glDeleteShaderFn) { + debug_fn.glDeleteShaderFn = fn.glDeleteShaderFn; + fn.glDeleteShaderFn = Debug_glDeleteShader; + } + if (!debug_fn.glDeleteSyncFn) { + debug_fn.glDeleteSyncFn = fn.glDeleteSyncFn; + fn.glDeleteSyncFn = Debug_glDeleteSync; + } + if (!debug_fn.glDeleteTexturesFn) { + debug_fn.glDeleteTexturesFn = fn.glDeleteTexturesFn; + fn.glDeleteTexturesFn = Debug_glDeleteTextures; + } + if (!debug_fn.glDeleteTransformFeedbacksFn) { + debug_fn.glDeleteTransformFeedbacksFn = fn.glDeleteTransformFeedbacksFn; + fn.glDeleteTransformFeedbacksFn = Debug_glDeleteTransformFeedbacks; + } + if (!debug_fn.glDeleteVertexArraysOESFn) { + debug_fn.glDeleteVertexArraysOESFn = fn.glDeleteVertexArraysOESFn; + fn.glDeleteVertexArraysOESFn = Debug_glDeleteVertexArraysOES; + } + if (!debug_fn.glDepthFuncFn) { + debug_fn.glDepthFuncFn = fn.glDepthFuncFn; + fn.glDepthFuncFn = Debug_glDepthFunc; + } + if (!debug_fn.glDepthMaskFn) { + debug_fn.glDepthMaskFn = fn.glDepthMaskFn; + fn.glDepthMaskFn = Debug_glDepthMask; + } + if (!debug_fn.glDepthRangeFn) { + debug_fn.glDepthRangeFn = fn.glDepthRangeFn; + fn.glDepthRangeFn = Debug_glDepthRange; + } + if (!debug_fn.glDepthRangefFn) { + debug_fn.glDepthRangefFn = fn.glDepthRangefFn; + fn.glDepthRangefFn = Debug_glDepthRangef; + } + if (!debug_fn.glDetachShaderFn) { + debug_fn.glDetachShaderFn = fn.glDetachShaderFn; + fn.glDetachShaderFn = Debug_glDetachShader; + } + if (!debug_fn.glDisableFn) { + debug_fn.glDisableFn = fn.glDisableFn; + fn.glDisableFn = Debug_glDisable; + } + if (!debug_fn.glDisableVertexAttribArrayFn) { + debug_fn.glDisableVertexAttribArrayFn = fn.glDisableVertexAttribArrayFn; + fn.glDisableVertexAttribArrayFn = Debug_glDisableVertexAttribArray; + } + if (!debug_fn.glDiscardFramebufferEXTFn) { + debug_fn.glDiscardFramebufferEXTFn = fn.glDiscardFramebufferEXTFn; + fn.glDiscardFramebufferEXTFn = Debug_glDiscardFramebufferEXT; + } + if (!debug_fn.glDrawArraysFn) { + debug_fn.glDrawArraysFn = fn.glDrawArraysFn; + fn.glDrawArraysFn = Debug_glDrawArrays; + } + if (!debug_fn.glDrawArraysInstancedANGLEFn) { + debug_fn.glDrawArraysInstancedANGLEFn = fn.glDrawArraysInstancedANGLEFn; + fn.glDrawArraysInstancedANGLEFn = Debug_glDrawArraysInstancedANGLE; + } + if (!debug_fn.glDrawBufferFn) { + debug_fn.glDrawBufferFn = fn.glDrawBufferFn; + fn.glDrawBufferFn = Debug_glDrawBuffer; + } + if (!debug_fn.glDrawBuffersARBFn) { + debug_fn.glDrawBuffersARBFn = fn.glDrawBuffersARBFn; + fn.glDrawBuffersARBFn = Debug_glDrawBuffersARB; + } + if (!debug_fn.glDrawElementsFn) { + debug_fn.glDrawElementsFn = fn.glDrawElementsFn; + fn.glDrawElementsFn = Debug_glDrawElements; + } + if (!debug_fn.glDrawElementsInstancedANGLEFn) { + debug_fn.glDrawElementsInstancedANGLEFn = fn.glDrawElementsInstancedANGLEFn; + fn.glDrawElementsInstancedANGLEFn = Debug_glDrawElementsInstancedANGLE; + } + if (!debug_fn.glDrawRangeElementsFn) { + debug_fn.glDrawRangeElementsFn = fn.glDrawRangeElementsFn; + fn.glDrawRangeElementsFn = Debug_glDrawRangeElements; + } + if (!debug_fn.glEGLImageTargetRenderbufferStorageOESFn) { + debug_fn.glEGLImageTargetRenderbufferStorageOESFn = + fn.glEGLImageTargetRenderbufferStorageOESFn; + fn.glEGLImageTargetRenderbufferStorageOESFn = + Debug_glEGLImageTargetRenderbufferStorageOES; + } + if (!debug_fn.glEGLImageTargetTexture2DOESFn) { + debug_fn.glEGLImageTargetTexture2DOESFn = fn.glEGLImageTargetTexture2DOESFn; + fn.glEGLImageTargetTexture2DOESFn = Debug_glEGLImageTargetTexture2DOES; + } + if (!debug_fn.glEnableFn) { + debug_fn.glEnableFn = fn.glEnableFn; + fn.glEnableFn = Debug_glEnable; + } + if (!debug_fn.glEnableVertexAttribArrayFn) { + debug_fn.glEnableVertexAttribArrayFn = fn.glEnableVertexAttribArrayFn; + fn.glEnableVertexAttribArrayFn = Debug_glEnableVertexAttribArray; + } + if (!debug_fn.glEndQueryFn) { + debug_fn.glEndQueryFn = fn.glEndQueryFn; + fn.glEndQueryFn = Debug_glEndQuery; + } + if (!debug_fn.glEndQueryARBFn) { + debug_fn.glEndQueryARBFn = fn.glEndQueryARBFn; + fn.glEndQueryARBFn = Debug_glEndQueryARB; + } + if (!debug_fn.glEndTransformFeedbackFn) { + debug_fn.glEndTransformFeedbackFn = fn.glEndTransformFeedbackFn; + fn.glEndTransformFeedbackFn = Debug_glEndTransformFeedback; + } + if (!debug_fn.glFenceSyncFn) { + debug_fn.glFenceSyncFn = fn.glFenceSyncFn; + fn.glFenceSyncFn = Debug_glFenceSync; + } + if (!debug_fn.glFinishFn) { + debug_fn.glFinishFn = fn.glFinishFn; + fn.glFinishFn = Debug_glFinish; + } + if (!debug_fn.glFinishFenceAPPLEFn) { + debug_fn.glFinishFenceAPPLEFn = fn.glFinishFenceAPPLEFn; + fn.glFinishFenceAPPLEFn = Debug_glFinishFenceAPPLE; + } + if (!debug_fn.glFinishFenceNVFn) { + debug_fn.glFinishFenceNVFn = fn.glFinishFenceNVFn; + fn.glFinishFenceNVFn = Debug_glFinishFenceNV; + } + if (!debug_fn.glFlushFn) { + debug_fn.glFlushFn = fn.glFlushFn; + fn.glFlushFn = Debug_glFlush; + } + if (!debug_fn.glFlushMappedBufferRangeFn) { + debug_fn.glFlushMappedBufferRangeFn = fn.glFlushMappedBufferRangeFn; + fn.glFlushMappedBufferRangeFn = Debug_glFlushMappedBufferRange; + } + if (!debug_fn.glFramebufferRenderbufferEXTFn) { + debug_fn.glFramebufferRenderbufferEXTFn = fn.glFramebufferRenderbufferEXTFn; + fn.glFramebufferRenderbufferEXTFn = Debug_glFramebufferRenderbufferEXT; + } + if (!debug_fn.glFramebufferTexture2DEXTFn) { + debug_fn.glFramebufferTexture2DEXTFn = fn.glFramebufferTexture2DEXTFn; + fn.glFramebufferTexture2DEXTFn = Debug_glFramebufferTexture2DEXT; + } + if (!debug_fn.glFramebufferTexture2DMultisampleEXTFn) { + debug_fn.glFramebufferTexture2DMultisampleEXTFn = + fn.glFramebufferTexture2DMultisampleEXTFn; + fn.glFramebufferTexture2DMultisampleEXTFn = + Debug_glFramebufferTexture2DMultisampleEXT; + } + if (!debug_fn.glFramebufferTexture2DMultisampleIMGFn) { + debug_fn.glFramebufferTexture2DMultisampleIMGFn = + fn.glFramebufferTexture2DMultisampleIMGFn; + fn.glFramebufferTexture2DMultisampleIMGFn = + Debug_glFramebufferTexture2DMultisampleIMG; + } + if (!debug_fn.glFramebufferTextureLayerFn) { + debug_fn.glFramebufferTextureLayerFn = fn.glFramebufferTextureLayerFn; + fn.glFramebufferTextureLayerFn = Debug_glFramebufferTextureLayer; + } + if (!debug_fn.glFrontFaceFn) { + debug_fn.glFrontFaceFn = fn.glFrontFaceFn; + fn.glFrontFaceFn = Debug_glFrontFace; + } + if (!debug_fn.glGenBuffersARBFn) { + debug_fn.glGenBuffersARBFn = fn.glGenBuffersARBFn; + fn.glGenBuffersARBFn = Debug_glGenBuffersARB; + } + if (!debug_fn.glGenerateMipmapEXTFn) { + debug_fn.glGenerateMipmapEXTFn = fn.glGenerateMipmapEXTFn; + fn.glGenerateMipmapEXTFn = Debug_glGenerateMipmapEXT; + } + if (!debug_fn.glGenFencesAPPLEFn) { + debug_fn.glGenFencesAPPLEFn = fn.glGenFencesAPPLEFn; + fn.glGenFencesAPPLEFn = Debug_glGenFencesAPPLE; + } + if (!debug_fn.glGenFencesNVFn) { + debug_fn.glGenFencesNVFn = fn.glGenFencesNVFn; + fn.glGenFencesNVFn = Debug_glGenFencesNV; + } + if (!debug_fn.glGenFramebuffersEXTFn) { + debug_fn.glGenFramebuffersEXTFn = fn.glGenFramebuffersEXTFn; + fn.glGenFramebuffersEXTFn = Debug_glGenFramebuffersEXT; + } + if (!debug_fn.glGenQueriesFn) { + debug_fn.glGenQueriesFn = fn.glGenQueriesFn; + fn.glGenQueriesFn = Debug_glGenQueries; + } + if (!debug_fn.glGenQueriesARBFn) { + debug_fn.glGenQueriesARBFn = fn.glGenQueriesARBFn; + fn.glGenQueriesARBFn = Debug_glGenQueriesARB; + } + if (!debug_fn.glGenRenderbuffersEXTFn) { + debug_fn.glGenRenderbuffersEXTFn = fn.glGenRenderbuffersEXTFn; + fn.glGenRenderbuffersEXTFn = Debug_glGenRenderbuffersEXT; + } + if (!debug_fn.glGenSamplersFn) { + debug_fn.glGenSamplersFn = fn.glGenSamplersFn; + fn.glGenSamplersFn = Debug_glGenSamplers; + } + if (!debug_fn.glGenTexturesFn) { + debug_fn.glGenTexturesFn = fn.glGenTexturesFn; + fn.glGenTexturesFn = Debug_glGenTextures; + } + if (!debug_fn.glGenTransformFeedbacksFn) { + debug_fn.glGenTransformFeedbacksFn = fn.glGenTransformFeedbacksFn; + fn.glGenTransformFeedbacksFn = Debug_glGenTransformFeedbacks; + } + if (!debug_fn.glGenVertexArraysOESFn) { + debug_fn.glGenVertexArraysOESFn = fn.glGenVertexArraysOESFn; + fn.glGenVertexArraysOESFn = Debug_glGenVertexArraysOES; + } + if (!debug_fn.glGetActiveAttribFn) { + debug_fn.glGetActiveAttribFn = fn.glGetActiveAttribFn; + fn.glGetActiveAttribFn = Debug_glGetActiveAttrib; + } + if (!debug_fn.glGetActiveUniformFn) { + debug_fn.glGetActiveUniformFn = fn.glGetActiveUniformFn; + fn.glGetActiveUniformFn = Debug_glGetActiveUniform; + } + if (!debug_fn.glGetActiveUniformBlockivFn) { + debug_fn.glGetActiveUniformBlockivFn = fn.glGetActiveUniformBlockivFn; + fn.glGetActiveUniformBlockivFn = Debug_glGetActiveUniformBlockiv; + } + if (!debug_fn.glGetActiveUniformBlockNameFn) { + debug_fn.glGetActiveUniformBlockNameFn = fn.glGetActiveUniformBlockNameFn; + fn.glGetActiveUniformBlockNameFn = Debug_glGetActiveUniformBlockName; + } + if (!debug_fn.glGetActiveUniformsivFn) { + debug_fn.glGetActiveUniformsivFn = fn.glGetActiveUniformsivFn; + fn.glGetActiveUniformsivFn = Debug_glGetActiveUniformsiv; + } + if (!debug_fn.glGetAttachedShadersFn) { + debug_fn.glGetAttachedShadersFn = fn.glGetAttachedShadersFn; + fn.glGetAttachedShadersFn = Debug_glGetAttachedShaders; + } + if (!debug_fn.glGetAttribLocationFn) { + debug_fn.glGetAttribLocationFn = fn.glGetAttribLocationFn; + fn.glGetAttribLocationFn = Debug_glGetAttribLocation; + } + if (!debug_fn.glGetBooleanvFn) { + debug_fn.glGetBooleanvFn = fn.glGetBooleanvFn; + fn.glGetBooleanvFn = Debug_glGetBooleanv; + } + if (!debug_fn.glGetBufferParameterivFn) { + debug_fn.glGetBufferParameterivFn = fn.glGetBufferParameterivFn; + fn.glGetBufferParameterivFn = Debug_glGetBufferParameteriv; + } + if (!debug_fn.glGetErrorFn) { + debug_fn.glGetErrorFn = fn.glGetErrorFn; + fn.glGetErrorFn = Debug_glGetError; + } + if (!debug_fn.glGetFenceivNVFn) { + debug_fn.glGetFenceivNVFn = fn.glGetFenceivNVFn; + fn.glGetFenceivNVFn = Debug_glGetFenceivNV; + } + if (!debug_fn.glGetFloatvFn) { + debug_fn.glGetFloatvFn = fn.glGetFloatvFn; + fn.glGetFloatvFn = Debug_glGetFloatv; + } + if (!debug_fn.glGetFragDataLocationFn) { + debug_fn.glGetFragDataLocationFn = fn.glGetFragDataLocationFn; + fn.glGetFragDataLocationFn = Debug_glGetFragDataLocation; + } + if (!debug_fn.glGetFramebufferAttachmentParameterivEXTFn) { + debug_fn.glGetFramebufferAttachmentParameterivEXTFn = + fn.glGetFramebufferAttachmentParameterivEXTFn; + fn.glGetFramebufferAttachmentParameterivEXTFn = + Debug_glGetFramebufferAttachmentParameterivEXT; + } + if (!debug_fn.glGetGraphicsResetStatusARBFn) { + debug_fn.glGetGraphicsResetStatusARBFn = fn.glGetGraphicsResetStatusARBFn; + fn.glGetGraphicsResetStatusARBFn = Debug_glGetGraphicsResetStatusARB; + } + if (!debug_fn.glGetInteger64i_vFn) { + debug_fn.glGetInteger64i_vFn = fn.glGetInteger64i_vFn; + fn.glGetInteger64i_vFn = Debug_glGetInteger64i_v; + } + if (!debug_fn.glGetInteger64vFn) { + debug_fn.glGetInteger64vFn = fn.glGetInteger64vFn; + fn.glGetInteger64vFn = Debug_glGetInteger64v; + } + if (!debug_fn.glGetIntegeri_vFn) { + debug_fn.glGetIntegeri_vFn = fn.glGetIntegeri_vFn; + fn.glGetIntegeri_vFn = Debug_glGetIntegeri_v; + } + if (!debug_fn.glGetIntegervFn) { + debug_fn.glGetIntegervFn = fn.glGetIntegervFn; + fn.glGetIntegervFn = Debug_glGetIntegerv; + } + if (!debug_fn.glGetInternalformativFn) { + debug_fn.glGetInternalformativFn = fn.glGetInternalformativFn; + fn.glGetInternalformativFn = Debug_glGetInternalformativ; + } + if (!debug_fn.glGetProgramBinaryFn) { + debug_fn.glGetProgramBinaryFn = fn.glGetProgramBinaryFn; + fn.glGetProgramBinaryFn = Debug_glGetProgramBinary; + } + if (!debug_fn.glGetProgramInfoLogFn) { + debug_fn.glGetProgramInfoLogFn = fn.glGetProgramInfoLogFn; + fn.glGetProgramInfoLogFn = Debug_glGetProgramInfoLog; + } + if (!debug_fn.glGetProgramivFn) { + debug_fn.glGetProgramivFn = fn.glGetProgramivFn; + fn.glGetProgramivFn = Debug_glGetProgramiv; + } + if (!debug_fn.glGetQueryivFn) { + debug_fn.glGetQueryivFn = fn.glGetQueryivFn; + fn.glGetQueryivFn = Debug_glGetQueryiv; + } + if (!debug_fn.glGetQueryivARBFn) { + debug_fn.glGetQueryivARBFn = fn.glGetQueryivARBFn; + fn.glGetQueryivARBFn = Debug_glGetQueryivARB; + } + if (!debug_fn.glGetQueryObjecti64vFn) { + debug_fn.glGetQueryObjecti64vFn = fn.glGetQueryObjecti64vFn; + fn.glGetQueryObjecti64vFn = Debug_glGetQueryObjecti64v; + } + if (!debug_fn.glGetQueryObjectivFn) { + debug_fn.glGetQueryObjectivFn = fn.glGetQueryObjectivFn; + fn.glGetQueryObjectivFn = Debug_glGetQueryObjectiv; + } + if (!debug_fn.glGetQueryObjectivARBFn) { + debug_fn.glGetQueryObjectivARBFn = fn.glGetQueryObjectivARBFn; + fn.glGetQueryObjectivARBFn = Debug_glGetQueryObjectivARB; + } + if (!debug_fn.glGetQueryObjectui64vFn) { + debug_fn.glGetQueryObjectui64vFn = fn.glGetQueryObjectui64vFn; + fn.glGetQueryObjectui64vFn = Debug_glGetQueryObjectui64v; + } + if (!debug_fn.glGetQueryObjectuivFn) { + debug_fn.glGetQueryObjectuivFn = fn.glGetQueryObjectuivFn; + fn.glGetQueryObjectuivFn = Debug_glGetQueryObjectuiv; + } + if (!debug_fn.glGetQueryObjectuivARBFn) { + debug_fn.glGetQueryObjectuivARBFn = fn.glGetQueryObjectuivARBFn; + fn.glGetQueryObjectuivARBFn = Debug_glGetQueryObjectuivARB; + } + if (!debug_fn.glGetRenderbufferParameterivEXTFn) { + debug_fn.glGetRenderbufferParameterivEXTFn = + fn.glGetRenderbufferParameterivEXTFn; + fn.glGetRenderbufferParameterivEXTFn = + Debug_glGetRenderbufferParameterivEXT; + } + if (!debug_fn.glGetSamplerParameterfvFn) { + debug_fn.glGetSamplerParameterfvFn = fn.glGetSamplerParameterfvFn; + fn.glGetSamplerParameterfvFn = Debug_glGetSamplerParameterfv; + } + if (!debug_fn.glGetSamplerParameterivFn) { + debug_fn.glGetSamplerParameterivFn = fn.glGetSamplerParameterivFn; + fn.glGetSamplerParameterivFn = Debug_glGetSamplerParameteriv; + } + if (!debug_fn.glGetShaderInfoLogFn) { + debug_fn.glGetShaderInfoLogFn = fn.glGetShaderInfoLogFn; + fn.glGetShaderInfoLogFn = Debug_glGetShaderInfoLog; + } + if (!debug_fn.glGetShaderivFn) { + debug_fn.glGetShaderivFn = fn.glGetShaderivFn; + fn.glGetShaderivFn = Debug_glGetShaderiv; + } + if (!debug_fn.glGetShaderPrecisionFormatFn) { + debug_fn.glGetShaderPrecisionFormatFn = fn.glGetShaderPrecisionFormatFn; + fn.glGetShaderPrecisionFormatFn = Debug_glGetShaderPrecisionFormat; + } + if (!debug_fn.glGetShaderSourceFn) { + debug_fn.glGetShaderSourceFn = fn.glGetShaderSourceFn; + fn.glGetShaderSourceFn = Debug_glGetShaderSource; + } + if (!debug_fn.glGetStringFn) { + debug_fn.glGetStringFn = fn.glGetStringFn; + fn.glGetStringFn = Debug_glGetString; + } + if (!debug_fn.glGetSyncivFn) { + debug_fn.glGetSyncivFn = fn.glGetSyncivFn; + fn.glGetSyncivFn = Debug_glGetSynciv; + } + if (!debug_fn.glGetTexLevelParameterfvFn) { + debug_fn.glGetTexLevelParameterfvFn = fn.glGetTexLevelParameterfvFn; + fn.glGetTexLevelParameterfvFn = Debug_glGetTexLevelParameterfv; + } + if (!debug_fn.glGetTexLevelParameterivFn) { + debug_fn.glGetTexLevelParameterivFn = fn.glGetTexLevelParameterivFn; + fn.glGetTexLevelParameterivFn = Debug_glGetTexLevelParameteriv; + } + if (!debug_fn.glGetTexParameterfvFn) { + debug_fn.glGetTexParameterfvFn = fn.glGetTexParameterfvFn; + fn.glGetTexParameterfvFn = Debug_glGetTexParameterfv; + } + if (!debug_fn.glGetTexParameterivFn) { + debug_fn.glGetTexParameterivFn = fn.glGetTexParameterivFn; + fn.glGetTexParameterivFn = Debug_glGetTexParameteriv; + } + if (!debug_fn.glGetTransformFeedbackVaryingFn) { + debug_fn.glGetTransformFeedbackVaryingFn = + fn.glGetTransformFeedbackVaryingFn; + fn.glGetTransformFeedbackVaryingFn = Debug_glGetTransformFeedbackVarying; + } + if (!debug_fn.glGetTranslatedShaderSourceANGLEFn) { + debug_fn.glGetTranslatedShaderSourceANGLEFn = + fn.glGetTranslatedShaderSourceANGLEFn; + fn.glGetTranslatedShaderSourceANGLEFn = + Debug_glGetTranslatedShaderSourceANGLE; + } + if (!debug_fn.glGetUniformBlockIndexFn) { + debug_fn.glGetUniformBlockIndexFn = fn.glGetUniformBlockIndexFn; + fn.glGetUniformBlockIndexFn = Debug_glGetUniformBlockIndex; + } + if (!debug_fn.glGetUniformfvFn) { + debug_fn.glGetUniformfvFn = fn.glGetUniformfvFn; + fn.glGetUniformfvFn = Debug_glGetUniformfv; + } + if (!debug_fn.glGetUniformIndicesFn) { + debug_fn.glGetUniformIndicesFn = fn.glGetUniformIndicesFn; + fn.glGetUniformIndicesFn = Debug_glGetUniformIndices; + } + if (!debug_fn.glGetUniformivFn) { + debug_fn.glGetUniformivFn = fn.glGetUniformivFn; + fn.glGetUniformivFn = Debug_glGetUniformiv; + } + if (!debug_fn.glGetUniformLocationFn) { + debug_fn.glGetUniformLocationFn = fn.glGetUniformLocationFn; + fn.glGetUniformLocationFn = Debug_glGetUniformLocation; + } + if (!debug_fn.glGetVertexAttribfvFn) { + debug_fn.glGetVertexAttribfvFn = fn.glGetVertexAttribfvFn; + fn.glGetVertexAttribfvFn = Debug_glGetVertexAttribfv; + } + if (!debug_fn.glGetVertexAttribivFn) { + debug_fn.glGetVertexAttribivFn = fn.glGetVertexAttribivFn; + fn.glGetVertexAttribivFn = Debug_glGetVertexAttribiv; + } + if (!debug_fn.glGetVertexAttribPointervFn) { + debug_fn.glGetVertexAttribPointervFn = fn.glGetVertexAttribPointervFn; + fn.glGetVertexAttribPointervFn = Debug_glGetVertexAttribPointerv; + } + if (!debug_fn.glHintFn) { + debug_fn.glHintFn = fn.glHintFn; + fn.glHintFn = Debug_glHint; + } + if (!debug_fn.glInsertEventMarkerEXTFn) { + debug_fn.glInsertEventMarkerEXTFn = fn.glInsertEventMarkerEXTFn; + fn.glInsertEventMarkerEXTFn = Debug_glInsertEventMarkerEXT; + } + if (!debug_fn.glInvalidateFramebufferFn) { + debug_fn.glInvalidateFramebufferFn = fn.glInvalidateFramebufferFn; + fn.glInvalidateFramebufferFn = Debug_glInvalidateFramebuffer; + } + if (!debug_fn.glInvalidateSubFramebufferFn) { + debug_fn.glInvalidateSubFramebufferFn = fn.glInvalidateSubFramebufferFn; + fn.glInvalidateSubFramebufferFn = Debug_glInvalidateSubFramebuffer; + } + if (!debug_fn.glIsBufferFn) { + debug_fn.glIsBufferFn = fn.glIsBufferFn; + fn.glIsBufferFn = Debug_glIsBuffer; + } + if (!debug_fn.glIsEnabledFn) { + debug_fn.glIsEnabledFn = fn.glIsEnabledFn; + fn.glIsEnabledFn = Debug_glIsEnabled; + } + if (!debug_fn.glIsFenceAPPLEFn) { + debug_fn.glIsFenceAPPLEFn = fn.glIsFenceAPPLEFn; + fn.glIsFenceAPPLEFn = Debug_glIsFenceAPPLE; + } + if (!debug_fn.glIsFenceNVFn) { + debug_fn.glIsFenceNVFn = fn.glIsFenceNVFn; + fn.glIsFenceNVFn = Debug_glIsFenceNV; + } + if (!debug_fn.glIsFramebufferEXTFn) { + debug_fn.glIsFramebufferEXTFn = fn.glIsFramebufferEXTFn; + fn.glIsFramebufferEXTFn = Debug_glIsFramebufferEXT; + } + if (!debug_fn.glIsProgramFn) { + debug_fn.glIsProgramFn = fn.glIsProgramFn; + fn.glIsProgramFn = Debug_glIsProgram; + } + if (!debug_fn.glIsQueryFn) { + debug_fn.glIsQueryFn = fn.glIsQueryFn; + fn.glIsQueryFn = Debug_glIsQuery; + } + if (!debug_fn.glIsQueryARBFn) { + debug_fn.glIsQueryARBFn = fn.glIsQueryARBFn; + fn.glIsQueryARBFn = Debug_glIsQueryARB; + } + if (!debug_fn.glIsRenderbufferEXTFn) { + debug_fn.glIsRenderbufferEXTFn = fn.glIsRenderbufferEXTFn; + fn.glIsRenderbufferEXTFn = Debug_glIsRenderbufferEXT; + } + if (!debug_fn.glIsSamplerFn) { + debug_fn.glIsSamplerFn = fn.glIsSamplerFn; + fn.glIsSamplerFn = Debug_glIsSampler; + } + if (!debug_fn.glIsShaderFn) { + debug_fn.glIsShaderFn = fn.glIsShaderFn; + fn.glIsShaderFn = Debug_glIsShader; + } + if (!debug_fn.glIsSyncFn) { + debug_fn.glIsSyncFn = fn.glIsSyncFn; + fn.glIsSyncFn = Debug_glIsSync; + } + if (!debug_fn.glIsTextureFn) { + debug_fn.glIsTextureFn = fn.glIsTextureFn; + fn.glIsTextureFn = Debug_glIsTexture; + } + if (!debug_fn.glIsTransformFeedbackFn) { + debug_fn.glIsTransformFeedbackFn = fn.glIsTransformFeedbackFn; + fn.glIsTransformFeedbackFn = Debug_glIsTransformFeedback; + } + if (!debug_fn.glIsVertexArrayOESFn) { + debug_fn.glIsVertexArrayOESFn = fn.glIsVertexArrayOESFn; + fn.glIsVertexArrayOESFn = Debug_glIsVertexArrayOES; + } + if (!debug_fn.glLineWidthFn) { + debug_fn.glLineWidthFn = fn.glLineWidthFn; + fn.glLineWidthFn = Debug_glLineWidth; + } + if (!debug_fn.glLinkProgramFn) { + debug_fn.glLinkProgramFn = fn.glLinkProgramFn; + fn.glLinkProgramFn = Debug_glLinkProgram; + } + if (!debug_fn.glMapBufferFn) { + debug_fn.glMapBufferFn = fn.glMapBufferFn; + fn.glMapBufferFn = Debug_glMapBuffer; + } + if (!debug_fn.glMapBufferRangeFn) { + debug_fn.glMapBufferRangeFn = fn.glMapBufferRangeFn; + fn.glMapBufferRangeFn = Debug_glMapBufferRange; + } + if (!debug_fn.glMatrixLoadfEXTFn) { + debug_fn.glMatrixLoadfEXTFn = fn.glMatrixLoadfEXTFn; + fn.glMatrixLoadfEXTFn = Debug_glMatrixLoadfEXT; + } + if (!debug_fn.glMatrixLoadIdentityEXTFn) { + debug_fn.glMatrixLoadIdentityEXTFn = fn.glMatrixLoadIdentityEXTFn; + fn.glMatrixLoadIdentityEXTFn = Debug_glMatrixLoadIdentityEXT; + } + if (!debug_fn.glPauseTransformFeedbackFn) { + debug_fn.glPauseTransformFeedbackFn = fn.glPauseTransformFeedbackFn; + fn.glPauseTransformFeedbackFn = Debug_glPauseTransformFeedback; + } + if (!debug_fn.glPixelStoreiFn) { + debug_fn.glPixelStoreiFn = fn.glPixelStoreiFn; + fn.glPixelStoreiFn = Debug_glPixelStorei; + } + if (!debug_fn.glPointParameteriFn) { + debug_fn.glPointParameteriFn = fn.glPointParameteriFn; + fn.glPointParameteriFn = Debug_glPointParameteri; + } + if (!debug_fn.glPolygonOffsetFn) { + debug_fn.glPolygonOffsetFn = fn.glPolygonOffsetFn; + fn.glPolygonOffsetFn = Debug_glPolygonOffset; + } + if (!debug_fn.glPopGroupMarkerEXTFn) { + debug_fn.glPopGroupMarkerEXTFn = fn.glPopGroupMarkerEXTFn; + fn.glPopGroupMarkerEXTFn = Debug_glPopGroupMarkerEXT; + } + if (!debug_fn.glProgramBinaryFn) { + debug_fn.glProgramBinaryFn = fn.glProgramBinaryFn; + fn.glProgramBinaryFn = Debug_glProgramBinary; + } + if (!debug_fn.glProgramParameteriFn) { + debug_fn.glProgramParameteriFn = fn.glProgramParameteriFn; + fn.glProgramParameteriFn = Debug_glProgramParameteri; + } + if (!debug_fn.glPushGroupMarkerEXTFn) { + debug_fn.glPushGroupMarkerEXTFn = fn.glPushGroupMarkerEXTFn; + fn.glPushGroupMarkerEXTFn = Debug_glPushGroupMarkerEXT; + } + if (!debug_fn.glQueryCounterFn) { + debug_fn.glQueryCounterFn = fn.glQueryCounterFn; + fn.glQueryCounterFn = Debug_glQueryCounter; + } + if (!debug_fn.glReadBufferFn) { + debug_fn.glReadBufferFn = fn.glReadBufferFn; + fn.glReadBufferFn = Debug_glReadBuffer; + } + if (!debug_fn.glReadPixelsFn) { + debug_fn.glReadPixelsFn = fn.glReadPixelsFn; + fn.glReadPixelsFn = Debug_glReadPixels; + } + if (!debug_fn.glReleaseShaderCompilerFn) { + debug_fn.glReleaseShaderCompilerFn = fn.glReleaseShaderCompilerFn; + fn.glReleaseShaderCompilerFn = Debug_glReleaseShaderCompiler; + } + if (!debug_fn.glRenderbufferStorageEXTFn) { + debug_fn.glRenderbufferStorageEXTFn = fn.glRenderbufferStorageEXTFn; + fn.glRenderbufferStorageEXTFn = Debug_glRenderbufferStorageEXT; + } + if (!debug_fn.glRenderbufferStorageMultisampleFn) { + debug_fn.glRenderbufferStorageMultisampleFn = + fn.glRenderbufferStorageMultisampleFn; + fn.glRenderbufferStorageMultisampleFn = + Debug_glRenderbufferStorageMultisample; + } + if (!debug_fn.glRenderbufferStorageMultisampleANGLEFn) { + debug_fn.glRenderbufferStorageMultisampleANGLEFn = + fn.glRenderbufferStorageMultisampleANGLEFn; + fn.glRenderbufferStorageMultisampleANGLEFn = + Debug_glRenderbufferStorageMultisampleANGLE; + } + if (!debug_fn.glRenderbufferStorageMultisampleEXTFn) { + debug_fn.glRenderbufferStorageMultisampleEXTFn = + fn.glRenderbufferStorageMultisampleEXTFn; + fn.glRenderbufferStorageMultisampleEXTFn = + Debug_glRenderbufferStorageMultisampleEXT; + } + if (!debug_fn.glRenderbufferStorageMultisampleIMGFn) { + debug_fn.glRenderbufferStorageMultisampleIMGFn = + fn.glRenderbufferStorageMultisampleIMGFn; + fn.glRenderbufferStorageMultisampleIMGFn = + Debug_glRenderbufferStorageMultisampleIMG; + } + if (!debug_fn.glResumeTransformFeedbackFn) { + debug_fn.glResumeTransformFeedbackFn = fn.glResumeTransformFeedbackFn; + fn.glResumeTransformFeedbackFn = Debug_glResumeTransformFeedback; + } + if (!debug_fn.glSampleCoverageFn) { + debug_fn.glSampleCoverageFn = fn.glSampleCoverageFn; + fn.glSampleCoverageFn = Debug_glSampleCoverage; + } + if (!debug_fn.glSamplerParameterfFn) { + debug_fn.glSamplerParameterfFn = fn.glSamplerParameterfFn; + fn.glSamplerParameterfFn = Debug_glSamplerParameterf; + } + if (!debug_fn.glSamplerParameterfvFn) { + debug_fn.glSamplerParameterfvFn = fn.glSamplerParameterfvFn; + fn.glSamplerParameterfvFn = Debug_glSamplerParameterfv; + } + if (!debug_fn.glSamplerParameteriFn) { + debug_fn.glSamplerParameteriFn = fn.glSamplerParameteriFn; + fn.glSamplerParameteriFn = Debug_glSamplerParameteri; + } + if (!debug_fn.glSamplerParameterivFn) { + debug_fn.glSamplerParameterivFn = fn.glSamplerParameterivFn; + fn.glSamplerParameterivFn = Debug_glSamplerParameteriv; + } + if (!debug_fn.glScissorFn) { + debug_fn.glScissorFn = fn.glScissorFn; + fn.glScissorFn = Debug_glScissor; + } + if (!debug_fn.glSetFenceAPPLEFn) { + debug_fn.glSetFenceAPPLEFn = fn.glSetFenceAPPLEFn; + fn.glSetFenceAPPLEFn = Debug_glSetFenceAPPLE; + } + if (!debug_fn.glSetFenceNVFn) { + debug_fn.glSetFenceNVFn = fn.glSetFenceNVFn; + fn.glSetFenceNVFn = Debug_glSetFenceNV; + } + if (!debug_fn.glShaderBinaryFn) { + debug_fn.glShaderBinaryFn = fn.glShaderBinaryFn; + fn.glShaderBinaryFn = Debug_glShaderBinary; + } + if (!debug_fn.glShaderSourceFn) { + debug_fn.glShaderSourceFn = fn.glShaderSourceFn; + fn.glShaderSourceFn = Debug_glShaderSource; + } + if (!debug_fn.glStencilFuncFn) { + debug_fn.glStencilFuncFn = fn.glStencilFuncFn; + fn.glStencilFuncFn = Debug_glStencilFunc; + } + if (!debug_fn.glStencilFuncSeparateFn) { + debug_fn.glStencilFuncSeparateFn = fn.glStencilFuncSeparateFn; + fn.glStencilFuncSeparateFn = Debug_glStencilFuncSeparate; + } + if (!debug_fn.glStencilMaskFn) { + debug_fn.glStencilMaskFn = fn.glStencilMaskFn; + fn.glStencilMaskFn = Debug_glStencilMask; + } + if (!debug_fn.glStencilMaskSeparateFn) { + debug_fn.glStencilMaskSeparateFn = fn.glStencilMaskSeparateFn; + fn.glStencilMaskSeparateFn = Debug_glStencilMaskSeparate; + } + if (!debug_fn.glStencilOpFn) { + debug_fn.glStencilOpFn = fn.glStencilOpFn; + fn.glStencilOpFn = Debug_glStencilOp; + } + if (!debug_fn.glStencilOpSeparateFn) { + debug_fn.glStencilOpSeparateFn = fn.glStencilOpSeparateFn; + fn.glStencilOpSeparateFn = Debug_glStencilOpSeparate; + } + if (!debug_fn.glTestFenceAPPLEFn) { + debug_fn.glTestFenceAPPLEFn = fn.glTestFenceAPPLEFn; + fn.glTestFenceAPPLEFn = Debug_glTestFenceAPPLE; + } + if (!debug_fn.glTestFenceNVFn) { + debug_fn.glTestFenceNVFn = fn.glTestFenceNVFn; + fn.glTestFenceNVFn = Debug_glTestFenceNV; + } + if (!debug_fn.glTexImage2DFn) { + debug_fn.glTexImage2DFn = fn.glTexImage2DFn; + fn.glTexImage2DFn = Debug_glTexImage2D; + } + if (!debug_fn.glTexImage3DFn) { + debug_fn.glTexImage3DFn = fn.glTexImage3DFn; + fn.glTexImage3DFn = Debug_glTexImage3D; + } + if (!debug_fn.glTexParameterfFn) { + debug_fn.glTexParameterfFn = fn.glTexParameterfFn; + fn.glTexParameterfFn = Debug_glTexParameterf; + } + if (!debug_fn.glTexParameterfvFn) { + debug_fn.glTexParameterfvFn = fn.glTexParameterfvFn; + fn.glTexParameterfvFn = Debug_glTexParameterfv; + } + if (!debug_fn.glTexParameteriFn) { + debug_fn.glTexParameteriFn = fn.glTexParameteriFn; + fn.glTexParameteriFn = Debug_glTexParameteri; + } + if (!debug_fn.glTexParameterivFn) { + debug_fn.glTexParameterivFn = fn.glTexParameterivFn; + fn.glTexParameterivFn = Debug_glTexParameteriv; + } + if (!debug_fn.glTexStorage2DEXTFn) { + debug_fn.glTexStorage2DEXTFn = fn.glTexStorage2DEXTFn; + fn.glTexStorage2DEXTFn = Debug_glTexStorage2DEXT; + } + if (!debug_fn.glTexStorage3DFn) { + debug_fn.glTexStorage3DFn = fn.glTexStorage3DFn; + fn.glTexStorage3DFn = Debug_glTexStorage3D; + } + if (!debug_fn.glTexSubImage2DFn) { + debug_fn.glTexSubImage2DFn = fn.glTexSubImage2DFn; + fn.glTexSubImage2DFn = Debug_glTexSubImage2D; + } + if (!debug_fn.glTransformFeedbackVaryingsFn) { + debug_fn.glTransformFeedbackVaryingsFn = fn.glTransformFeedbackVaryingsFn; + fn.glTransformFeedbackVaryingsFn = Debug_glTransformFeedbackVaryings; + } + if (!debug_fn.glUniform1fFn) { + debug_fn.glUniform1fFn = fn.glUniform1fFn; + fn.glUniform1fFn = Debug_glUniform1f; + } + if (!debug_fn.glUniform1fvFn) { + debug_fn.glUniform1fvFn = fn.glUniform1fvFn; + fn.glUniform1fvFn = Debug_glUniform1fv; + } + if (!debug_fn.glUniform1iFn) { + debug_fn.glUniform1iFn = fn.glUniform1iFn; + fn.glUniform1iFn = Debug_glUniform1i; + } + if (!debug_fn.glUniform1ivFn) { + debug_fn.glUniform1ivFn = fn.glUniform1ivFn; + fn.glUniform1ivFn = Debug_glUniform1iv; + } + if (!debug_fn.glUniform1uiFn) { + debug_fn.glUniform1uiFn = fn.glUniform1uiFn; + fn.glUniform1uiFn = Debug_glUniform1ui; + } + if (!debug_fn.glUniform1uivFn) { + debug_fn.glUniform1uivFn = fn.glUniform1uivFn; + fn.glUniform1uivFn = Debug_glUniform1uiv; + } + if (!debug_fn.glUniform2fFn) { + debug_fn.glUniform2fFn = fn.glUniform2fFn; + fn.glUniform2fFn = Debug_glUniform2f; + } + if (!debug_fn.glUniform2fvFn) { + debug_fn.glUniform2fvFn = fn.glUniform2fvFn; + fn.glUniform2fvFn = Debug_glUniform2fv; + } + if (!debug_fn.glUniform2iFn) { + debug_fn.glUniform2iFn = fn.glUniform2iFn; + fn.glUniform2iFn = Debug_glUniform2i; + } + if (!debug_fn.glUniform2ivFn) { + debug_fn.glUniform2ivFn = fn.glUniform2ivFn; + fn.glUniform2ivFn = Debug_glUniform2iv; + } + if (!debug_fn.glUniform2uiFn) { + debug_fn.glUniform2uiFn = fn.glUniform2uiFn; + fn.glUniform2uiFn = Debug_glUniform2ui; + } + if (!debug_fn.glUniform2uivFn) { + debug_fn.glUniform2uivFn = fn.glUniform2uivFn; + fn.glUniform2uivFn = Debug_glUniform2uiv; + } + if (!debug_fn.glUniform3fFn) { + debug_fn.glUniform3fFn = fn.glUniform3fFn; + fn.glUniform3fFn = Debug_glUniform3f; + } + if (!debug_fn.glUniform3fvFn) { + debug_fn.glUniform3fvFn = fn.glUniform3fvFn; + fn.glUniform3fvFn = Debug_glUniform3fv; + } + if (!debug_fn.glUniform3iFn) { + debug_fn.glUniform3iFn = fn.glUniform3iFn; + fn.glUniform3iFn = Debug_glUniform3i; + } + if (!debug_fn.glUniform3ivFn) { + debug_fn.glUniform3ivFn = fn.glUniform3ivFn; + fn.glUniform3ivFn = Debug_glUniform3iv; + } + if (!debug_fn.glUniform3uiFn) { + debug_fn.glUniform3uiFn = fn.glUniform3uiFn; + fn.glUniform3uiFn = Debug_glUniform3ui; + } + if (!debug_fn.glUniform3uivFn) { + debug_fn.glUniform3uivFn = fn.glUniform3uivFn; + fn.glUniform3uivFn = Debug_glUniform3uiv; + } + if (!debug_fn.glUniform4fFn) { + debug_fn.glUniform4fFn = fn.glUniform4fFn; + fn.glUniform4fFn = Debug_glUniform4f; + } + if (!debug_fn.glUniform4fvFn) { + debug_fn.glUniform4fvFn = fn.glUniform4fvFn; + fn.glUniform4fvFn = Debug_glUniform4fv; + } + if (!debug_fn.glUniform4iFn) { + debug_fn.glUniform4iFn = fn.glUniform4iFn; + fn.glUniform4iFn = Debug_glUniform4i; + } + if (!debug_fn.glUniform4ivFn) { + debug_fn.glUniform4ivFn = fn.glUniform4ivFn; + fn.glUniform4ivFn = Debug_glUniform4iv; + } + if (!debug_fn.glUniform4uiFn) { + debug_fn.glUniform4uiFn = fn.glUniform4uiFn; + fn.glUniform4uiFn = Debug_glUniform4ui; + } + if (!debug_fn.glUniform4uivFn) { + debug_fn.glUniform4uivFn = fn.glUniform4uivFn; + fn.glUniform4uivFn = Debug_glUniform4uiv; + } + if (!debug_fn.glUniformBlockBindingFn) { + debug_fn.glUniformBlockBindingFn = fn.glUniformBlockBindingFn; + fn.glUniformBlockBindingFn = Debug_glUniformBlockBinding; + } + if (!debug_fn.glUniformMatrix2fvFn) { + debug_fn.glUniformMatrix2fvFn = fn.glUniformMatrix2fvFn; + fn.glUniformMatrix2fvFn = Debug_glUniformMatrix2fv; + } + if (!debug_fn.glUniformMatrix2x3fvFn) { + debug_fn.glUniformMatrix2x3fvFn = fn.glUniformMatrix2x3fvFn; + fn.glUniformMatrix2x3fvFn = Debug_glUniformMatrix2x3fv; + } + if (!debug_fn.glUniformMatrix2x4fvFn) { + debug_fn.glUniformMatrix2x4fvFn = fn.glUniformMatrix2x4fvFn; + fn.glUniformMatrix2x4fvFn = Debug_glUniformMatrix2x4fv; + } + if (!debug_fn.glUniformMatrix3fvFn) { + debug_fn.glUniformMatrix3fvFn = fn.glUniformMatrix3fvFn; + fn.glUniformMatrix3fvFn = Debug_glUniformMatrix3fv; + } + if (!debug_fn.glUniformMatrix3x2fvFn) { + debug_fn.glUniformMatrix3x2fvFn = fn.glUniformMatrix3x2fvFn; + fn.glUniformMatrix3x2fvFn = Debug_glUniformMatrix3x2fv; + } + if (!debug_fn.glUniformMatrix3x4fvFn) { + debug_fn.glUniformMatrix3x4fvFn = fn.glUniformMatrix3x4fvFn; + fn.glUniformMatrix3x4fvFn = Debug_glUniformMatrix3x4fv; + } + if (!debug_fn.glUniformMatrix4fvFn) { + debug_fn.glUniformMatrix4fvFn = fn.glUniformMatrix4fvFn; + fn.glUniformMatrix4fvFn = Debug_glUniformMatrix4fv; + } + if (!debug_fn.glUniformMatrix4x2fvFn) { + debug_fn.glUniformMatrix4x2fvFn = fn.glUniformMatrix4x2fvFn; + fn.glUniformMatrix4x2fvFn = Debug_glUniformMatrix4x2fv; + } + if (!debug_fn.glUniformMatrix4x3fvFn) { + debug_fn.glUniformMatrix4x3fvFn = fn.glUniformMatrix4x3fvFn; + fn.glUniformMatrix4x3fvFn = Debug_glUniformMatrix4x3fv; + } + if (!debug_fn.glUnmapBufferFn) { + debug_fn.glUnmapBufferFn = fn.glUnmapBufferFn; + fn.glUnmapBufferFn = Debug_glUnmapBuffer; + } + if (!debug_fn.glUseProgramFn) { + debug_fn.glUseProgramFn = fn.glUseProgramFn; + fn.glUseProgramFn = Debug_glUseProgram; + } + if (!debug_fn.glValidateProgramFn) { + debug_fn.glValidateProgramFn = fn.glValidateProgramFn; + fn.glValidateProgramFn = Debug_glValidateProgram; + } + if (!debug_fn.glVertexAttrib1fFn) { + debug_fn.glVertexAttrib1fFn = fn.glVertexAttrib1fFn; + fn.glVertexAttrib1fFn = Debug_glVertexAttrib1f; + } + if (!debug_fn.glVertexAttrib1fvFn) { + debug_fn.glVertexAttrib1fvFn = fn.glVertexAttrib1fvFn; + fn.glVertexAttrib1fvFn = Debug_glVertexAttrib1fv; + } + if (!debug_fn.glVertexAttrib2fFn) { + debug_fn.glVertexAttrib2fFn = fn.glVertexAttrib2fFn; + fn.glVertexAttrib2fFn = Debug_glVertexAttrib2f; + } + if (!debug_fn.glVertexAttrib2fvFn) { + debug_fn.glVertexAttrib2fvFn = fn.glVertexAttrib2fvFn; + fn.glVertexAttrib2fvFn = Debug_glVertexAttrib2fv; + } + if (!debug_fn.glVertexAttrib3fFn) { + debug_fn.glVertexAttrib3fFn = fn.glVertexAttrib3fFn; + fn.glVertexAttrib3fFn = Debug_glVertexAttrib3f; + } + if (!debug_fn.glVertexAttrib3fvFn) { + debug_fn.glVertexAttrib3fvFn = fn.glVertexAttrib3fvFn; + fn.glVertexAttrib3fvFn = Debug_glVertexAttrib3fv; + } + if (!debug_fn.glVertexAttrib4fFn) { + debug_fn.glVertexAttrib4fFn = fn.glVertexAttrib4fFn; + fn.glVertexAttrib4fFn = Debug_glVertexAttrib4f; + } + if (!debug_fn.glVertexAttrib4fvFn) { + debug_fn.glVertexAttrib4fvFn = fn.glVertexAttrib4fvFn; + fn.glVertexAttrib4fvFn = Debug_glVertexAttrib4fv; + } + if (!debug_fn.glVertexAttribDivisorANGLEFn) { + debug_fn.glVertexAttribDivisorANGLEFn = fn.glVertexAttribDivisorANGLEFn; + fn.glVertexAttribDivisorANGLEFn = Debug_glVertexAttribDivisorANGLE; + } + if (!debug_fn.glVertexAttribI4iFn) { + debug_fn.glVertexAttribI4iFn = fn.glVertexAttribI4iFn; + fn.glVertexAttribI4iFn = Debug_glVertexAttribI4i; + } + if (!debug_fn.glVertexAttribI4ivFn) { + debug_fn.glVertexAttribI4ivFn = fn.glVertexAttribI4ivFn; + fn.glVertexAttribI4ivFn = Debug_glVertexAttribI4iv; + } + if (!debug_fn.glVertexAttribI4uiFn) { + debug_fn.glVertexAttribI4uiFn = fn.glVertexAttribI4uiFn; + fn.glVertexAttribI4uiFn = Debug_glVertexAttribI4ui; + } + if (!debug_fn.glVertexAttribI4uivFn) { + debug_fn.glVertexAttribI4uivFn = fn.glVertexAttribI4uivFn; + fn.glVertexAttribI4uivFn = Debug_glVertexAttribI4uiv; + } + if (!debug_fn.glVertexAttribIPointerFn) { + debug_fn.glVertexAttribIPointerFn = fn.glVertexAttribIPointerFn; + fn.glVertexAttribIPointerFn = Debug_glVertexAttribIPointer; + } + if (!debug_fn.glVertexAttribPointerFn) { + debug_fn.glVertexAttribPointerFn = fn.glVertexAttribPointerFn; + fn.glVertexAttribPointerFn = Debug_glVertexAttribPointer; + } + if (!debug_fn.glViewportFn) { + debug_fn.glViewportFn = fn.glViewportFn; + fn.glViewportFn = Debug_glViewport; + } + if (!debug_fn.glWaitSyncFn) { + debug_fn.glWaitSyncFn = fn.glWaitSyncFn; + fn.glWaitSyncFn = Debug_glWaitSync; + } + g_debugBindingsInitialized = true; +} + +void DriverGL::ClearBindings() { + memset(this, 0, sizeof(*this)); +} + +void GLApiBase::glActiveTextureFn(GLenum texture) { + driver_->fn.glActiveTextureFn(texture); +} + +void GLApiBase::glAttachShaderFn(GLuint program, GLuint shader) { + driver_->fn.glAttachShaderFn(program, shader); +} + +void GLApiBase::glBeginQueryFn(GLenum target, GLuint id) { + driver_->fn.glBeginQueryFn(target, id); +} + +void GLApiBase::glBeginQueryARBFn(GLenum target, GLuint id) { + driver_->fn.glBeginQueryARBFn(target, id); +} + +void GLApiBase::glBeginTransformFeedbackFn(GLenum primitiveMode) { + driver_->fn.glBeginTransformFeedbackFn(primitiveMode); +} + +void GLApiBase::glBindAttribLocationFn(GLuint program, + GLuint index, + const char* name) { + driver_->fn.glBindAttribLocationFn(program, index, name); +} + +void GLApiBase::glBindBufferFn(GLenum target, GLuint buffer) { + driver_->fn.glBindBufferFn(target, buffer); +} + +void GLApiBase::glBindBufferBaseFn(GLenum target, GLuint index, GLuint buffer) { + driver_->fn.glBindBufferBaseFn(target, index, buffer); +} + +void GLApiBase::glBindBufferRangeFn(GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size) { + driver_->fn.glBindBufferRangeFn(target, index, buffer, offset, size); +} + +void GLApiBase::glBindFragDataLocationFn(GLuint program, + GLuint colorNumber, + const char* name) { + driver_->fn.glBindFragDataLocationFn(program, colorNumber, name); +} + +void GLApiBase::glBindFragDataLocationIndexedFn(GLuint program, + GLuint colorNumber, + GLuint index, + const char* name) { + driver_->fn.glBindFragDataLocationIndexedFn(program, colorNumber, index, + name); +} + +void GLApiBase::glBindFramebufferEXTFn(GLenum target, GLuint framebuffer) { + driver_->fn.glBindFramebufferEXTFn(target, framebuffer); +} + +void GLApiBase::glBindRenderbufferEXTFn(GLenum target, GLuint renderbuffer) { + driver_->fn.glBindRenderbufferEXTFn(target, renderbuffer); +} + +void GLApiBase::glBindSamplerFn(GLuint unit, GLuint sampler) { + driver_->fn.glBindSamplerFn(unit, sampler); +} + +void GLApiBase::glBindTextureFn(GLenum target, GLuint texture) { + driver_->fn.glBindTextureFn(target, texture); +} + +void GLApiBase::glBindTransformFeedbackFn(GLenum target, GLuint id) { + driver_->fn.glBindTransformFeedbackFn(target, id); +} + +void GLApiBase::glBindVertexArrayOESFn(GLuint array) { + driver_->fn.glBindVertexArrayOESFn(array); +} + +void GLApiBase::glBlendBarrierKHRFn(void) { + driver_->fn.glBlendBarrierKHRFn(); +} + +void GLApiBase::glBlendColorFn(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) { + driver_->fn.glBlendColorFn(red, green, blue, alpha); +} + +void GLApiBase::glBlendEquationFn(GLenum mode) { + driver_->fn.glBlendEquationFn(mode); +} + +void GLApiBase::glBlendEquationSeparateFn(GLenum modeRGB, GLenum modeAlpha) { + driver_->fn.glBlendEquationSeparateFn(modeRGB, modeAlpha); +} + +void GLApiBase::glBlendFuncFn(GLenum sfactor, GLenum dfactor) { + driver_->fn.glBlendFuncFn(sfactor, dfactor); +} + +void GLApiBase::glBlendFuncSeparateFn(GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha) { + driver_->fn.glBlendFuncSeparateFn(srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +void GLApiBase::glBlitFramebufferFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + driver_->fn.glBlitFramebufferFn(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, + dstX1, dstY1, mask, filter); +} + +void GLApiBase::glBlitFramebufferANGLEFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + driver_->fn.glBlitFramebufferANGLEFn(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, + dstX1, dstY1, mask, filter); +} + +void GLApiBase::glBlitFramebufferEXTFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + driver_->fn.glBlitFramebufferEXTFn(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, + dstX1, dstY1, mask, filter); +} + +void GLApiBase::glBufferDataFn(GLenum target, + GLsizeiptr size, + const void* data, + GLenum usage) { + driver_->fn.glBufferDataFn(target, size, data, usage); +} + +void GLApiBase::glBufferSubDataFn(GLenum target, + GLintptr offset, + GLsizeiptr size, + const void* data) { + driver_->fn.glBufferSubDataFn(target, offset, size, data); +} + +GLenum GLApiBase::glCheckFramebufferStatusEXTFn(GLenum target) { + return driver_->fn.glCheckFramebufferStatusEXTFn(target); +} + +void GLApiBase::glClearFn(GLbitfield mask) { + driver_->fn.glClearFn(mask); +} + +void GLApiBase::glClearBufferfiFn(GLenum buffer, + GLint drawbuffer, + const GLfloat depth, + GLint stencil) { + driver_->fn.glClearBufferfiFn(buffer, drawbuffer, depth, stencil); +} + +void GLApiBase::glClearBufferfvFn(GLenum buffer, + GLint drawbuffer, + const GLfloat* value) { + driver_->fn.glClearBufferfvFn(buffer, drawbuffer, value); +} + +void GLApiBase::glClearBufferivFn(GLenum buffer, + GLint drawbuffer, + const GLint* value) { + driver_->fn.glClearBufferivFn(buffer, drawbuffer, value); +} + +void GLApiBase::glClearBufferuivFn(GLenum buffer, + GLint drawbuffer, + const GLuint* value) { + driver_->fn.glClearBufferuivFn(buffer, drawbuffer, value); +} + +void GLApiBase::glClearColorFn(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) { + driver_->fn.glClearColorFn(red, green, blue, alpha); +} + +void GLApiBase::glClearDepthFn(GLclampd depth) { + driver_->fn.glClearDepthFn(depth); +} + +void GLApiBase::glClearDepthfFn(GLclampf depth) { + driver_->fn.glClearDepthfFn(depth); +} + +void GLApiBase::glClearStencilFn(GLint s) { + driver_->fn.glClearStencilFn(s); +} + +GLenum GLApiBase::glClientWaitSyncFn(GLsync sync, + GLbitfield flags, + GLuint64 timeout) { + return driver_->fn.glClientWaitSyncFn(sync, flags, timeout); +} + +void GLApiBase::glColorMaskFn(GLboolean red, + GLboolean green, + GLboolean blue, + GLboolean alpha) { + driver_->fn.glColorMaskFn(red, green, blue, alpha); +} + +void GLApiBase::glCompileShaderFn(GLuint shader) { + driver_->fn.glCompileShaderFn(shader); +} + +void GLApiBase::glCompressedTexImage2DFn(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data) { + driver_->fn.glCompressedTexImage2DFn(target, level, internalformat, width, + height, border, imageSize, data); +} + +void GLApiBase::glCompressedTexImage3DFn(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data) { + driver_->fn.glCompressedTexImage3DFn(target, level, internalformat, width, + height, depth, border, imageSize, data); +} + +void GLApiBase::glCompressedTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data) { + driver_->fn.glCompressedTexSubImage2DFn( + target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +void GLApiBase::glCopyBufferSubDataFn(GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size) { + driver_->fn.glCopyBufferSubDataFn(readTarget, writeTarget, readOffset, + writeOffset, size); +} + +void GLApiBase::glCopyTexImage2DFn(GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border) { + driver_->fn.glCopyTexImage2DFn(target, level, internalformat, x, y, width, + height, border); +} + +void GLApiBase::glCopyTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) { + driver_->fn.glCopyTexSubImage2DFn(target, level, xoffset, yoffset, x, y, + width, height); +} + +void GLApiBase::glCopyTexSubImage3DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) { + driver_->fn.glCopyTexSubImage3DFn(target, level, xoffset, yoffset, zoffset, x, + y, width, height); +} + +GLuint GLApiBase::glCreateProgramFn(void) { + return driver_->fn.glCreateProgramFn(); +} + +GLuint GLApiBase::glCreateShaderFn(GLenum type) { + return driver_->fn.glCreateShaderFn(type); +} + +void GLApiBase::glCullFaceFn(GLenum mode) { + driver_->fn.glCullFaceFn(mode); +} + +void GLApiBase::glDeleteBuffersARBFn(GLsizei n, const GLuint* buffers) { + driver_->fn.glDeleteBuffersARBFn(n, buffers); +} + +void GLApiBase::glDeleteFencesAPPLEFn(GLsizei n, const GLuint* fences) { + driver_->fn.glDeleteFencesAPPLEFn(n, fences); +} + +void GLApiBase::glDeleteFencesNVFn(GLsizei n, const GLuint* fences) { + driver_->fn.glDeleteFencesNVFn(n, fences); +} + +void GLApiBase::glDeleteFramebuffersEXTFn(GLsizei n, + const GLuint* framebuffers) { + driver_->fn.glDeleteFramebuffersEXTFn(n, framebuffers); +} + +void GLApiBase::glDeleteProgramFn(GLuint program) { + driver_->fn.glDeleteProgramFn(program); +} + +void GLApiBase::glDeleteQueriesFn(GLsizei n, const GLuint* ids) { + driver_->fn.glDeleteQueriesFn(n, ids); +} + +void GLApiBase::glDeleteQueriesARBFn(GLsizei n, const GLuint* ids) { + driver_->fn.glDeleteQueriesARBFn(n, ids); +} + +void GLApiBase::glDeleteRenderbuffersEXTFn(GLsizei n, + const GLuint* renderbuffers) { + driver_->fn.glDeleteRenderbuffersEXTFn(n, renderbuffers); +} + +void GLApiBase::glDeleteSamplersFn(GLsizei n, const GLuint* samplers) { + driver_->fn.glDeleteSamplersFn(n, samplers); +} + +void GLApiBase::glDeleteShaderFn(GLuint shader) { + driver_->fn.glDeleteShaderFn(shader); +} + +void GLApiBase::glDeleteSyncFn(GLsync sync) { + driver_->fn.glDeleteSyncFn(sync); +} + +void GLApiBase::glDeleteTexturesFn(GLsizei n, const GLuint* textures) { + driver_->fn.glDeleteTexturesFn(n, textures); +} + +void GLApiBase::glDeleteTransformFeedbacksFn(GLsizei n, const GLuint* ids) { + driver_->fn.glDeleteTransformFeedbacksFn(n, ids); +} + +void GLApiBase::glDeleteVertexArraysOESFn(GLsizei n, const GLuint* arrays) { + driver_->fn.glDeleteVertexArraysOESFn(n, arrays); +} + +void GLApiBase::glDepthFuncFn(GLenum func) { + driver_->fn.glDepthFuncFn(func); +} + +void GLApiBase::glDepthMaskFn(GLboolean flag) { + driver_->fn.glDepthMaskFn(flag); +} + +void GLApiBase::glDepthRangeFn(GLclampd zNear, GLclampd zFar) { + driver_->fn.glDepthRangeFn(zNear, zFar); +} + +void GLApiBase::glDepthRangefFn(GLclampf zNear, GLclampf zFar) { + driver_->fn.glDepthRangefFn(zNear, zFar); +} + +void GLApiBase::glDetachShaderFn(GLuint program, GLuint shader) { + driver_->fn.glDetachShaderFn(program, shader); +} + +void GLApiBase::glDisableFn(GLenum cap) { + driver_->fn.glDisableFn(cap); +} + +void GLApiBase::glDisableVertexAttribArrayFn(GLuint index) { + driver_->fn.glDisableVertexAttribArrayFn(index); +} + +void GLApiBase::glDiscardFramebufferEXTFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) { + driver_->fn.glDiscardFramebufferEXTFn(target, numAttachments, attachments); +} + +void GLApiBase::glDrawArraysFn(GLenum mode, GLint first, GLsizei count) { + driver_->fn.glDrawArraysFn(mode, first, count); +} + +void GLApiBase::glDrawArraysInstancedANGLEFn(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) { + driver_->fn.glDrawArraysInstancedANGLEFn(mode, first, count, primcount); +} + +void GLApiBase::glDrawBufferFn(GLenum mode) { + driver_->fn.glDrawBufferFn(mode); +} + +void GLApiBase::glDrawBuffersARBFn(GLsizei n, const GLenum* bufs) { + driver_->fn.glDrawBuffersARBFn(n, bufs); +} + +void GLApiBase::glDrawElementsFn(GLenum mode, + GLsizei count, + GLenum type, + const void* indices) { + driver_->fn.glDrawElementsFn(mode, count, type, indices); +} + +void GLApiBase::glDrawElementsInstancedANGLEFn(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) { + driver_->fn.glDrawElementsInstancedANGLEFn(mode, count, type, indices, + primcount); +} + +void GLApiBase::glDrawRangeElementsFn(GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices) { + driver_->fn.glDrawRangeElementsFn(mode, start, end, count, type, indices); +} + +void GLApiBase::glEGLImageTargetRenderbufferStorageOESFn(GLenum target, + GLeglImageOES image) { + driver_->fn.glEGLImageTargetRenderbufferStorageOESFn(target, image); +} + +void GLApiBase::glEGLImageTargetTexture2DOESFn(GLenum target, + GLeglImageOES image) { + driver_->fn.glEGLImageTargetTexture2DOESFn(target, image); +} + +void GLApiBase::glEnableFn(GLenum cap) { + driver_->fn.glEnableFn(cap); +} + +void GLApiBase::glEnableVertexAttribArrayFn(GLuint index) { + driver_->fn.glEnableVertexAttribArrayFn(index); +} + +void GLApiBase::glEndQueryFn(GLenum target) { + driver_->fn.glEndQueryFn(target); +} + +void GLApiBase::glEndQueryARBFn(GLenum target) { + driver_->fn.glEndQueryARBFn(target); +} + +void GLApiBase::glEndTransformFeedbackFn(void) { + driver_->fn.glEndTransformFeedbackFn(); +} + +GLsync GLApiBase::glFenceSyncFn(GLenum condition, GLbitfield flags) { + return driver_->fn.glFenceSyncFn(condition, flags); +} + +void GLApiBase::glFinishFn(void) { + driver_->fn.glFinishFn(); +} + +void GLApiBase::glFinishFenceAPPLEFn(GLuint fence) { + driver_->fn.glFinishFenceAPPLEFn(fence); +} + +void GLApiBase::glFinishFenceNVFn(GLuint fence) { + driver_->fn.glFinishFenceNVFn(fence); +} + +void GLApiBase::glFlushFn(void) { + driver_->fn.glFlushFn(); +} + +void GLApiBase::glFlushMappedBufferRangeFn(GLenum target, + GLintptr offset, + GLsizeiptr length) { + driver_->fn.glFlushMappedBufferRangeFn(target, offset, length); +} + +void GLApiBase::glFramebufferRenderbufferEXTFn(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer) { + driver_->fn.glFramebufferRenderbufferEXTFn(target, attachment, + renderbuffertarget, renderbuffer); +} + +void GLApiBase::glFramebufferTexture2DEXTFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level) { + driver_->fn.glFramebufferTexture2DEXTFn(target, attachment, textarget, + texture, level); +} + +void GLApiBase::glFramebufferTexture2DMultisampleEXTFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) { + driver_->fn.glFramebufferTexture2DMultisampleEXTFn( + target, attachment, textarget, texture, level, samples); +} + +void GLApiBase::glFramebufferTexture2DMultisampleIMGFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) { + driver_->fn.glFramebufferTexture2DMultisampleIMGFn( + target, attachment, textarget, texture, level, samples); +} + +void GLApiBase::glFramebufferTextureLayerFn(GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer) { + driver_->fn.glFramebufferTextureLayerFn(target, attachment, texture, level, + layer); +} + +void GLApiBase::glFrontFaceFn(GLenum mode) { + driver_->fn.glFrontFaceFn(mode); +} + +void GLApiBase::glGenBuffersARBFn(GLsizei n, GLuint* buffers) { + driver_->fn.glGenBuffersARBFn(n, buffers); +} + +void GLApiBase::glGenerateMipmapEXTFn(GLenum target) { + driver_->fn.glGenerateMipmapEXTFn(target); +} + +void GLApiBase::glGenFencesAPPLEFn(GLsizei n, GLuint* fences) { + driver_->fn.glGenFencesAPPLEFn(n, fences); +} + +void GLApiBase::glGenFencesNVFn(GLsizei n, GLuint* fences) { + driver_->fn.glGenFencesNVFn(n, fences); +} + +void GLApiBase::glGenFramebuffersEXTFn(GLsizei n, GLuint* framebuffers) { + driver_->fn.glGenFramebuffersEXTFn(n, framebuffers); +} + +void GLApiBase::glGenQueriesFn(GLsizei n, GLuint* ids) { + driver_->fn.glGenQueriesFn(n, ids); +} + +void GLApiBase::glGenQueriesARBFn(GLsizei n, GLuint* ids) { + driver_->fn.glGenQueriesARBFn(n, ids); +} + +void GLApiBase::glGenRenderbuffersEXTFn(GLsizei n, GLuint* renderbuffers) { + driver_->fn.glGenRenderbuffersEXTFn(n, renderbuffers); +} + +void GLApiBase::glGenSamplersFn(GLsizei n, GLuint* samplers) { + driver_->fn.glGenSamplersFn(n, samplers); +} + +void GLApiBase::glGenTexturesFn(GLsizei n, GLuint* textures) { + driver_->fn.glGenTexturesFn(n, textures); +} + +void GLApiBase::glGenTransformFeedbacksFn(GLsizei n, GLuint* ids) { + driver_->fn.glGenTransformFeedbacksFn(n, ids); +} + +void GLApiBase::glGenVertexArraysOESFn(GLsizei n, GLuint* arrays) { + driver_->fn.glGenVertexArraysOESFn(n, arrays); +} + +void GLApiBase::glGetActiveAttribFn(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) { + driver_->fn.glGetActiveAttribFn(program, index, bufsize, length, size, type, + name); +} + +void GLApiBase::glGetActiveUniformFn(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) { + driver_->fn.glGetActiveUniformFn(program, index, bufsize, length, size, type, + name); +} + +void GLApiBase::glGetActiveUniformBlockivFn(GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params) { + driver_->fn.glGetActiveUniformBlockivFn(program, uniformBlockIndex, pname, + params); +} + +void GLApiBase::glGetActiveUniformBlockNameFn(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + char* uniformBlockName) { + driver_->fn.glGetActiveUniformBlockNameFn(program, uniformBlockIndex, bufSize, + length, uniformBlockName); +} + +void GLApiBase::glGetActiveUniformsivFn(GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params) { + driver_->fn.glGetActiveUniformsivFn(program, uniformCount, uniformIndices, + pname, params); +} + +void GLApiBase::glGetAttachedShadersFn(GLuint program, + GLsizei maxcount, + GLsizei* count, + GLuint* shaders) { + driver_->fn.glGetAttachedShadersFn(program, maxcount, count, shaders); +} + +GLint GLApiBase::glGetAttribLocationFn(GLuint program, const char* name) { + return driver_->fn.glGetAttribLocationFn(program, name); +} + +void GLApiBase::glGetBooleanvFn(GLenum pname, GLboolean* params) { + driver_->fn.glGetBooleanvFn(pname, params); +} + +void GLApiBase::glGetBufferParameterivFn(GLenum target, + GLenum pname, + GLint* params) { + driver_->fn.glGetBufferParameterivFn(target, pname, params); +} + +GLenum GLApiBase::glGetErrorFn(void) { + return driver_->fn.glGetErrorFn(); +} + +void GLApiBase::glGetFenceivNVFn(GLuint fence, GLenum pname, GLint* params) { + driver_->fn.glGetFenceivNVFn(fence, pname, params); +} + +void GLApiBase::glGetFloatvFn(GLenum pname, GLfloat* params) { + driver_->fn.glGetFloatvFn(pname, params); +} + +GLint GLApiBase::glGetFragDataLocationFn(GLuint program, const char* name) { + return driver_->fn.glGetFragDataLocationFn(program, name); +} + +void GLApiBase::glGetFramebufferAttachmentParameterivEXTFn(GLenum target, + GLenum attachment, + GLenum pname, + GLint* params) { + driver_->fn.glGetFramebufferAttachmentParameterivEXTFn(target, attachment, + pname, params); +} + +GLenum GLApiBase::glGetGraphicsResetStatusARBFn(void) { + return driver_->fn.glGetGraphicsResetStatusARBFn(); +} + +void GLApiBase::glGetInteger64i_vFn(GLenum target, + GLuint index, + GLint64* data) { + driver_->fn.glGetInteger64i_vFn(target, index, data); +} + +void GLApiBase::glGetInteger64vFn(GLenum pname, GLint64* params) { + driver_->fn.glGetInteger64vFn(pname, params); +} + +void GLApiBase::glGetIntegeri_vFn(GLenum target, GLuint index, GLint* data) { + driver_->fn.glGetIntegeri_vFn(target, index, data); +} + +void GLApiBase::glGetIntegervFn(GLenum pname, GLint* params) { + driver_->fn.glGetIntegervFn(pname, params); +} + +void GLApiBase::glGetInternalformativFn(GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei bufSize, + GLint* params) { + driver_->fn.glGetInternalformativFn(target, internalformat, pname, bufSize, + params); +} + +void GLApiBase::glGetProgramBinaryFn(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary) { + driver_->fn.glGetProgramBinaryFn(program, bufSize, length, binaryFormat, + binary); +} + +void GLApiBase::glGetProgramInfoLogFn(GLuint program, + GLsizei bufsize, + GLsizei* length, + char* infolog) { + driver_->fn.glGetProgramInfoLogFn(program, bufsize, length, infolog); +} + +void GLApiBase::glGetProgramivFn(GLuint program, GLenum pname, GLint* params) { + driver_->fn.glGetProgramivFn(program, pname, params); +} + +void GLApiBase::glGetQueryivFn(GLenum target, GLenum pname, GLint* params) { + driver_->fn.glGetQueryivFn(target, pname, params); +} + +void GLApiBase::glGetQueryivARBFn(GLenum target, GLenum pname, GLint* params) { + driver_->fn.glGetQueryivARBFn(target, pname, params); +} + +void GLApiBase::glGetQueryObjecti64vFn(GLuint id, + GLenum pname, + GLint64* params) { + driver_->fn.glGetQueryObjecti64vFn(id, pname, params); +} + +void GLApiBase::glGetQueryObjectivFn(GLuint id, GLenum pname, GLint* params) { + driver_->fn.glGetQueryObjectivFn(id, pname, params); +} + +void GLApiBase::glGetQueryObjectivARBFn(GLuint id, + GLenum pname, + GLint* params) { + driver_->fn.glGetQueryObjectivARBFn(id, pname, params); +} + +void GLApiBase::glGetQueryObjectui64vFn(GLuint id, + GLenum pname, + GLuint64* params) { + driver_->fn.glGetQueryObjectui64vFn(id, pname, params); +} + +void GLApiBase::glGetQueryObjectuivFn(GLuint id, GLenum pname, GLuint* params) { + driver_->fn.glGetQueryObjectuivFn(id, pname, params); +} + +void GLApiBase::glGetQueryObjectuivARBFn(GLuint id, + GLenum pname, + GLuint* params) { + driver_->fn.glGetQueryObjectuivARBFn(id, pname, params); +} + +void GLApiBase::glGetRenderbufferParameterivEXTFn(GLenum target, + GLenum pname, + GLint* params) { + driver_->fn.glGetRenderbufferParameterivEXTFn(target, pname, params); +} + +void GLApiBase::glGetSamplerParameterfvFn(GLuint sampler, + GLenum pname, + GLfloat* params) { + driver_->fn.glGetSamplerParameterfvFn(sampler, pname, params); +} + +void GLApiBase::glGetSamplerParameterivFn(GLuint sampler, + GLenum pname, + GLint* params) { + driver_->fn.glGetSamplerParameterivFn(sampler, pname, params); +} + +void GLApiBase::glGetShaderInfoLogFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* infolog) { + driver_->fn.glGetShaderInfoLogFn(shader, bufsize, length, infolog); +} + +void GLApiBase::glGetShaderivFn(GLuint shader, GLenum pname, GLint* params) { + driver_->fn.glGetShaderivFn(shader, pname, params); +} + +void GLApiBase::glGetShaderPrecisionFormatFn(GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision) { + driver_->fn.glGetShaderPrecisionFormatFn(shadertype, precisiontype, range, + precision); +} + +void GLApiBase::glGetShaderSourceFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) { + driver_->fn.glGetShaderSourceFn(shader, bufsize, length, source); +} + +const GLubyte* GLApiBase::glGetStringFn(GLenum name) { + return driver_->fn.glGetStringFn(name); +} + +void GLApiBase::glGetSyncivFn(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values) { + driver_->fn.glGetSyncivFn(sync, pname, bufSize, length, values); +} + +void GLApiBase::glGetTexLevelParameterfvFn(GLenum target, + GLint level, + GLenum pname, + GLfloat* params) { + driver_->fn.glGetTexLevelParameterfvFn(target, level, pname, params); +} + +void GLApiBase::glGetTexLevelParameterivFn(GLenum target, + GLint level, + GLenum pname, + GLint* params) { + driver_->fn.glGetTexLevelParameterivFn(target, level, pname, params); +} + +void GLApiBase::glGetTexParameterfvFn(GLenum target, + GLenum pname, + GLfloat* params) { + driver_->fn.glGetTexParameterfvFn(target, pname, params); +} + +void GLApiBase::glGetTexParameterivFn(GLenum target, + GLenum pname, + GLint* params) { + driver_->fn.glGetTexParameterivFn(target, pname, params); +} + +void GLApiBase::glGetTransformFeedbackVaryingFn(GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLenum* type, + char* name) { + driver_->fn.glGetTransformFeedbackVaryingFn(program, index, bufSize, length, + type, name); +} + +void GLApiBase::glGetTranslatedShaderSourceANGLEFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) { + driver_->fn.glGetTranslatedShaderSourceANGLEFn(shader, bufsize, length, + source); +} + +GLuint GLApiBase::glGetUniformBlockIndexFn(GLuint program, + const char* uniformBlockName) { + return driver_->fn.glGetUniformBlockIndexFn(program, uniformBlockName); +} + +void GLApiBase::glGetUniformfvFn(GLuint program, + GLint location, + GLfloat* params) { + driver_->fn.glGetUniformfvFn(program, location, params); +} + +void GLApiBase::glGetUniformIndicesFn(GLuint program, + GLsizei uniformCount, + const char* const* uniformNames, + GLuint* uniformIndices) { + driver_->fn.glGetUniformIndicesFn(program, uniformCount, uniformNames, + uniformIndices); +} + +void GLApiBase::glGetUniformivFn(GLuint program, + GLint location, + GLint* params) { + driver_->fn.glGetUniformivFn(program, location, params); +} + +GLint GLApiBase::glGetUniformLocationFn(GLuint program, const char* name) { + return driver_->fn.glGetUniformLocationFn(program, name); +} + +void GLApiBase::glGetVertexAttribfvFn(GLuint index, + GLenum pname, + GLfloat* params) { + driver_->fn.glGetVertexAttribfvFn(index, pname, params); +} + +void GLApiBase::glGetVertexAttribivFn(GLuint index, + GLenum pname, + GLint* params) { + driver_->fn.glGetVertexAttribivFn(index, pname, params); +} + +void GLApiBase::glGetVertexAttribPointervFn(GLuint index, + GLenum pname, + void** pointer) { + driver_->fn.glGetVertexAttribPointervFn(index, pname, pointer); +} + +void GLApiBase::glHintFn(GLenum target, GLenum mode) { + driver_->fn.glHintFn(target, mode); +} + +void GLApiBase::glInsertEventMarkerEXTFn(GLsizei length, const char* marker) { + driver_->fn.glInsertEventMarkerEXTFn(length, marker); +} + +void GLApiBase::glInvalidateFramebufferFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) { + driver_->fn.glInvalidateFramebufferFn(target, numAttachments, attachments); +} + +void GLApiBase::glInvalidateSubFramebufferFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLint width, + GLint height) { + driver_->fn.glInvalidateSubFramebufferFn(target, numAttachments, attachments, + x, y, width, height); +} + +GLboolean GLApiBase::glIsBufferFn(GLuint buffer) { + return driver_->fn.glIsBufferFn(buffer); +} + +GLboolean GLApiBase::glIsEnabledFn(GLenum cap) { + return driver_->fn.glIsEnabledFn(cap); +} + +GLboolean GLApiBase::glIsFenceAPPLEFn(GLuint fence) { + return driver_->fn.glIsFenceAPPLEFn(fence); +} + +GLboolean GLApiBase::glIsFenceNVFn(GLuint fence) { + return driver_->fn.glIsFenceNVFn(fence); +} + +GLboolean GLApiBase::glIsFramebufferEXTFn(GLuint framebuffer) { + return driver_->fn.glIsFramebufferEXTFn(framebuffer); +} + +GLboolean GLApiBase::glIsProgramFn(GLuint program) { + return driver_->fn.glIsProgramFn(program); +} + +GLboolean GLApiBase::glIsQueryFn(GLuint query) { + return driver_->fn.glIsQueryFn(query); +} + +GLboolean GLApiBase::glIsQueryARBFn(GLuint query) { + return driver_->fn.glIsQueryARBFn(query); +} + +GLboolean GLApiBase::glIsRenderbufferEXTFn(GLuint renderbuffer) { + return driver_->fn.glIsRenderbufferEXTFn(renderbuffer); +} + +GLboolean GLApiBase::glIsSamplerFn(GLuint sampler) { + return driver_->fn.glIsSamplerFn(sampler); +} + +GLboolean GLApiBase::glIsShaderFn(GLuint shader) { + return driver_->fn.glIsShaderFn(shader); +} + +GLboolean GLApiBase::glIsSyncFn(GLsync sync) { + return driver_->fn.glIsSyncFn(sync); +} + +GLboolean GLApiBase::glIsTextureFn(GLuint texture) { + return driver_->fn.glIsTextureFn(texture); +} + +GLboolean GLApiBase::glIsTransformFeedbackFn(GLuint id) { + return driver_->fn.glIsTransformFeedbackFn(id); +} + +GLboolean GLApiBase::glIsVertexArrayOESFn(GLuint array) { + return driver_->fn.glIsVertexArrayOESFn(array); +} + +void GLApiBase::glLineWidthFn(GLfloat width) { + driver_->fn.glLineWidthFn(width); +} + +void GLApiBase::glLinkProgramFn(GLuint program) { + driver_->fn.glLinkProgramFn(program); +} + +void* GLApiBase::glMapBufferFn(GLenum target, GLenum access) { + return driver_->fn.glMapBufferFn(target, access); +} + +void* GLApiBase::glMapBufferRangeFn(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access) { + return driver_->fn.glMapBufferRangeFn(target, offset, length, access); +} + +void GLApiBase::glMatrixLoadfEXTFn(GLenum matrixMode, const GLfloat* m) { + driver_->fn.glMatrixLoadfEXTFn(matrixMode, m); +} + +void GLApiBase::glMatrixLoadIdentityEXTFn(GLenum matrixMode) { + driver_->fn.glMatrixLoadIdentityEXTFn(matrixMode); +} + +void GLApiBase::glPauseTransformFeedbackFn(void) { + driver_->fn.glPauseTransformFeedbackFn(); +} + +void GLApiBase::glPixelStoreiFn(GLenum pname, GLint param) { + driver_->fn.glPixelStoreiFn(pname, param); +} + +void GLApiBase::glPointParameteriFn(GLenum pname, GLint param) { + driver_->fn.glPointParameteriFn(pname, param); +} + +void GLApiBase::glPolygonOffsetFn(GLfloat factor, GLfloat units) { + driver_->fn.glPolygonOffsetFn(factor, units); +} + +void GLApiBase::glPopGroupMarkerEXTFn(void) { + driver_->fn.glPopGroupMarkerEXTFn(); +} + +void GLApiBase::glProgramBinaryFn(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length) { + driver_->fn.glProgramBinaryFn(program, binaryFormat, binary, length); +} + +void GLApiBase::glProgramParameteriFn(GLuint program, + GLenum pname, + GLint value) { + driver_->fn.glProgramParameteriFn(program, pname, value); +} + +void GLApiBase::glPushGroupMarkerEXTFn(GLsizei length, const char* marker) { + driver_->fn.glPushGroupMarkerEXTFn(length, marker); +} + +void GLApiBase::glQueryCounterFn(GLuint id, GLenum target) { + driver_->fn.glQueryCounterFn(id, target); +} + +void GLApiBase::glReadBufferFn(GLenum src) { + driver_->fn.glReadBufferFn(src); +} + +void GLApiBase::glReadPixelsFn(GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels) { + driver_->fn.glReadPixelsFn(x, y, width, height, format, type, pixels); +} + +void GLApiBase::glReleaseShaderCompilerFn(void) { + driver_->fn.glReleaseShaderCompilerFn(); +} + +void GLApiBase::glRenderbufferStorageEXTFn(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height) { + driver_->fn.glRenderbufferStorageEXTFn(target, internalformat, width, height); +} + +void GLApiBase::glRenderbufferStorageMultisampleFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + driver_->fn.glRenderbufferStorageMultisampleFn(target, samples, + internalformat, width, height); +} + +void GLApiBase::glRenderbufferStorageMultisampleANGLEFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + driver_->fn.glRenderbufferStorageMultisampleANGLEFn( + target, samples, internalformat, width, height); +} + +void GLApiBase::glRenderbufferStorageMultisampleEXTFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + driver_->fn.glRenderbufferStorageMultisampleEXTFn( + target, samples, internalformat, width, height); +} + +void GLApiBase::glRenderbufferStorageMultisampleIMGFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + driver_->fn.glRenderbufferStorageMultisampleIMGFn( + target, samples, internalformat, width, height); +} + +void GLApiBase::glResumeTransformFeedbackFn(void) { + driver_->fn.glResumeTransformFeedbackFn(); +} + +void GLApiBase::glSampleCoverageFn(GLclampf value, GLboolean invert) { + driver_->fn.glSampleCoverageFn(value, invert); +} + +void GLApiBase::glSamplerParameterfFn(GLuint sampler, + GLenum pname, + GLfloat param) { + driver_->fn.glSamplerParameterfFn(sampler, pname, param); +} + +void GLApiBase::glSamplerParameterfvFn(GLuint sampler, + GLenum pname, + const GLfloat* params) { + driver_->fn.glSamplerParameterfvFn(sampler, pname, params); +} + +void GLApiBase::glSamplerParameteriFn(GLuint sampler, + GLenum pname, + GLint param) { + driver_->fn.glSamplerParameteriFn(sampler, pname, param); +} + +void GLApiBase::glSamplerParameterivFn(GLuint sampler, + GLenum pname, + const GLint* params) { + driver_->fn.glSamplerParameterivFn(sampler, pname, params); +} + +void GLApiBase::glScissorFn(GLint x, GLint y, GLsizei width, GLsizei height) { + driver_->fn.glScissorFn(x, y, width, height); +} + +void GLApiBase::glSetFenceAPPLEFn(GLuint fence) { + driver_->fn.glSetFenceAPPLEFn(fence); +} + +void GLApiBase::glSetFenceNVFn(GLuint fence, GLenum condition) { + driver_->fn.glSetFenceNVFn(fence, condition); +} + +void GLApiBase::glShaderBinaryFn(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length) { + driver_->fn.glShaderBinaryFn(n, shaders, binaryformat, binary, length); +} + +void GLApiBase::glShaderSourceFn(GLuint shader, + GLsizei count, + const char* const* str, + const GLint* length) { + driver_->fn.glShaderSourceFn(shader, count, str, length); +} + +void GLApiBase::glStencilFuncFn(GLenum func, GLint ref, GLuint mask) { + driver_->fn.glStencilFuncFn(func, ref, mask); +} + +void GLApiBase::glStencilFuncSeparateFn(GLenum face, + GLenum func, + GLint ref, + GLuint mask) { + driver_->fn.glStencilFuncSeparateFn(face, func, ref, mask); +} + +void GLApiBase::glStencilMaskFn(GLuint mask) { + driver_->fn.glStencilMaskFn(mask); +} + +void GLApiBase::glStencilMaskSeparateFn(GLenum face, GLuint mask) { + driver_->fn.glStencilMaskSeparateFn(face, mask); +} + +void GLApiBase::glStencilOpFn(GLenum fail, GLenum zfail, GLenum zpass) { + driver_->fn.glStencilOpFn(fail, zfail, zpass); +} + +void GLApiBase::glStencilOpSeparateFn(GLenum face, + GLenum fail, + GLenum zfail, + GLenum zpass) { + driver_->fn.glStencilOpSeparateFn(face, fail, zfail, zpass); +} + +GLboolean GLApiBase::glTestFenceAPPLEFn(GLuint fence) { + return driver_->fn.glTestFenceAPPLEFn(fence); +} + +GLboolean GLApiBase::glTestFenceNVFn(GLuint fence) { + return driver_->fn.glTestFenceNVFn(fence); +} + +void GLApiBase::glTexImage2DFn(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels) { + driver_->fn.glTexImage2DFn(target, level, internalformat, width, height, + border, format, type, pixels); +} + +void GLApiBase::glTexImage3DFn(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels) { + driver_->fn.glTexImage3DFn(target, level, internalformat, width, height, + depth, border, format, type, pixels); +} + +void GLApiBase::glTexParameterfFn(GLenum target, GLenum pname, GLfloat param) { + driver_->fn.glTexParameterfFn(target, pname, param); +} + +void GLApiBase::glTexParameterfvFn(GLenum target, + GLenum pname, + const GLfloat* params) { + driver_->fn.glTexParameterfvFn(target, pname, params); +} + +void GLApiBase::glTexParameteriFn(GLenum target, GLenum pname, GLint param) { + driver_->fn.glTexParameteriFn(target, pname, param); +} + +void GLApiBase::glTexParameterivFn(GLenum target, + GLenum pname, + const GLint* params) { + driver_->fn.glTexParameterivFn(target, pname, params); +} + +void GLApiBase::glTexStorage2DEXTFn(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height) { + driver_->fn.glTexStorage2DEXTFn(target, levels, internalformat, width, + height); +} + +void GLApiBase::glTexStorage3DFn(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth) { + driver_->fn.glTexStorage3DFn(target, levels, internalformat, width, height, + depth); +} + +void GLApiBase::glTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels) { + driver_->fn.glTexSubImage2DFn(target, level, xoffset, yoffset, width, height, + format, type, pixels); +} + +void GLApiBase::glTransformFeedbackVaryingsFn(GLuint program, + GLsizei count, + const char* const* varyings, + GLenum bufferMode) { + driver_->fn.glTransformFeedbackVaryingsFn(program, count, varyings, + bufferMode); +} + +void GLApiBase::glUniform1fFn(GLint location, GLfloat x) { + driver_->fn.glUniform1fFn(location, x); +} + +void GLApiBase::glUniform1fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + driver_->fn.glUniform1fvFn(location, count, v); +} + +void GLApiBase::glUniform1iFn(GLint location, GLint x) { + driver_->fn.glUniform1iFn(location, x); +} + +void GLApiBase::glUniform1ivFn(GLint location, GLsizei count, const GLint* v) { + driver_->fn.glUniform1ivFn(location, count, v); +} + +void GLApiBase::glUniform1uiFn(GLint location, GLuint v0) { + driver_->fn.glUniform1uiFn(location, v0); +} + +void GLApiBase::glUniform1uivFn(GLint location, + GLsizei count, + const GLuint* v) { + driver_->fn.glUniform1uivFn(location, count, v); +} + +void GLApiBase::glUniform2fFn(GLint location, GLfloat x, GLfloat y) { + driver_->fn.glUniform2fFn(location, x, y); +} + +void GLApiBase::glUniform2fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + driver_->fn.glUniform2fvFn(location, count, v); +} + +void GLApiBase::glUniform2iFn(GLint location, GLint x, GLint y) { + driver_->fn.glUniform2iFn(location, x, y); +} + +void GLApiBase::glUniform2ivFn(GLint location, GLsizei count, const GLint* v) { + driver_->fn.glUniform2ivFn(location, count, v); +} + +void GLApiBase::glUniform2uiFn(GLint location, GLuint v0, GLuint v1) { + driver_->fn.glUniform2uiFn(location, v0, v1); +} + +void GLApiBase::glUniform2uivFn(GLint location, + GLsizei count, + const GLuint* v) { + driver_->fn.glUniform2uivFn(location, count, v); +} + +void GLApiBase::glUniform3fFn(GLint location, GLfloat x, GLfloat y, GLfloat z) { + driver_->fn.glUniform3fFn(location, x, y, z); +} + +void GLApiBase::glUniform3fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + driver_->fn.glUniform3fvFn(location, count, v); +} + +void GLApiBase::glUniform3iFn(GLint location, GLint x, GLint y, GLint z) { + driver_->fn.glUniform3iFn(location, x, y, z); +} + +void GLApiBase::glUniform3ivFn(GLint location, GLsizei count, const GLint* v) { + driver_->fn.glUniform3ivFn(location, count, v); +} + +void GLApiBase::glUniform3uiFn(GLint location, + GLuint v0, + GLuint v1, + GLuint v2) { + driver_->fn.glUniform3uiFn(location, v0, v1, v2); +} + +void GLApiBase::glUniform3uivFn(GLint location, + GLsizei count, + const GLuint* v) { + driver_->fn.glUniform3uivFn(location, count, v); +} + +void GLApiBase::glUniform4fFn(GLint location, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) { + driver_->fn.glUniform4fFn(location, x, y, z, w); +} + +void GLApiBase::glUniform4fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + driver_->fn.glUniform4fvFn(location, count, v); +} + +void GLApiBase::glUniform4iFn(GLint location, + GLint x, + GLint y, + GLint z, + GLint w) { + driver_->fn.glUniform4iFn(location, x, y, z, w); +} + +void GLApiBase::glUniform4ivFn(GLint location, GLsizei count, const GLint* v) { + driver_->fn.glUniform4ivFn(location, count, v); +} + +void GLApiBase::glUniform4uiFn(GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3) { + driver_->fn.glUniform4uiFn(location, v0, v1, v2, v3); +} + +void GLApiBase::glUniform4uivFn(GLint location, + GLsizei count, + const GLuint* v) { + driver_->fn.glUniform4uivFn(location, count, v); +} + +void GLApiBase::glUniformBlockBindingFn(GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding) { + driver_->fn.glUniformBlockBindingFn(program, uniformBlockIndex, + uniformBlockBinding); +} + +void GLApiBase::glUniformMatrix2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + driver_->fn.glUniformMatrix2fvFn(location, count, transpose, value); +} + +void GLApiBase::glUniformMatrix2x3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + driver_->fn.glUniformMatrix2x3fvFn(location, count, transpose, value); +} + +void GLApiBase::glUniformMatrix2x4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + driver_->fn.glUniformMatrix2x4fvFn(location, count, transpose, value); +} + +void GLApiBase::glUniformMatrix3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + driver_->fn.glUniformMatrix3fvFn(location, count, transpose, value); +} + +void GLApiBase::glUniformMatrix3x2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + driver_->fn.glUniformMatrix3x2fvFn(location, count, transpose, value); +} + +void GLApiBase::glUniformMatrix3x4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + driver_->fn.glUniformMatrix3x4fvFn(location, count, transpose, value); +} + +void GLApiBase::glUniformMatrix4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + driver_->fn.glUniformMatrix4fvFn(location, count, transpose, value); +} + +void GLApiBase::glUniformMatrix4x2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + driver_->fn.glUniformMatrix4x2fvFn(location, count, transpose, value); +} + +void GLApiBase::glUniformMatrix4x3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + driver_->fn.glUniformMatrix4x3fvFn(location, count, transpose, value); +} + +GLboolean GLApiBase::glUnmapBufferFn(GLenum target) { + return driver_->fn.glUnmapBufferFn(target); +} + +void GLApiBase::glUseProgramFn(GLuint program) { + driver_->fn.glUseProgramFn(program); +} + +void GLApiBase::glValidateProgramFn(GLuint program) { + driver_->fn.glValidateProgramFn(program); +} + +void GLApiBase::glVertexAttrib1fFn(GLuint indx, GLfloat x) { + driver_->fn.glVertexAttrib1fFn(indx, x); +} + +void GLApiBase::glVertexAttrib1fvFn(GLuint indx, const GLfloat* values) { + driver_->fn.glVertexAttrib1fvFn(indx, values); +} + +void GLApiBase::glVertexAttrib2fFn(GLuint indx, GLfloat x, GLfloat y) { + driver_->fn.glVertexAttrib2fFn(indx, x, y); +} + +void GLApiBase::glVertexAttrib2fvFn(GLuint indx, const GLfloat* values) { + driver_->fn.glVertexAttrib2fvFn(indx, values); +} + +void GLApiBase::glVertexAttrib3fFn(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z) { + driver_->fn.glVertexAttrib3fFn(indx, x, y, z); +} + +void GLApiBase::glVertexAttrib3fvFn(GLuint indx, const GLfloat* values) { + driver_->fn.glVertexAttrib3fvFn(indx, values); +} + +void GLApiBase::glVertexAttrib4fFn(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) { + driver_->fn.glVertexAttrib4fFn(indx, x, y, z, w); +} + +void GLApiBase::glVertexAttrib4fvFn(GLuint indx, const GLfloat* values) { + driver_->fn.glVertexAttrib4fvFn(indx, values); +} + +void GLApiBase::glVertexAttribDivisorANGLEFn(GLuint index, GLuint divisor) { + driver_->fn.glVertexAttribDivisorANGLEFn(index, divisor); +} + +void GLApiBase::glVertexAttribI4iFn(GLuint indx, + GLint x, + GLint y, + GLint z, + GLint w) { + driver_->fn.glVertexAttribI4iFn(indx, x, y, z, w); +} + +void GLApiBase::glVertexAttribI4ivFn(GLuint indx, const GLint* values) { + driver_->fn.glVertexAttribI4ivFn(indx, values); +} + +void GLApiBase::glVertexAttribI4uiFn(GLuint indx, + GLuint x, + GLuint y, + GLuint z, + GLuint w) { + driver_->fn.glVertexAttribI4uiFn(indx, x, y, z, w); +} + +void GLApiBase::glVertexAttribI4uivFn(GLuint indx, const GLuint* values) { + driver_->fn.glVertexAttribI4uivFn(indx, values); +} + +void GLApiBase::glVertexAttribIPointerFn(GLuint indx, + GLint size, + GLenum type, + GLsizei stride, + const void* ptr) { + driver_->fn.glVertexAttribIPointerFn(indx, size, type, stride, ptr); +} + +void GLApiBase::glVertexAttribPointerFn(GLuint indx, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* ptr) { + driver_->fn.glVertexAttribPointerFn(indx, size, type, normalized, stride, + ptr); +} + +void GLApiBase::glViewportFn(GLint x, GLint y, GLsizei width, GLsizei height) { + driver_->fn.glViewportFn(x, y, width, height); +} + +GLenum GLApiBase::glWaitSyncFn(GLsync sync, + GLbitfield flags, + GLuint64 timeout) { + return driver_->fn.glWaitSyncFn(sync, flags, timeout); +} + +void TraceGLApi::glActiveTextureFn(GLenum texture) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glActiveTexture") + gl_api_->glActiveTextureFn(texture); +} + +void TraceGLApi::glAttachShaderFn(GLuint program, GLuint shader) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glAttachShader") + gl_api_->glAttachShaderFn(program, shader); +} + +void TraceGLApi::glBeginQueryFn(GLenum target, GLuint id) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBeginQuery") + gl_api_->glBeginQueryFn(target, id); +} + +void TraceGLApi::glBeginQueryARBFn(GLenum target, GLuint id) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBeginQueryARB") + gl_api_->glBeginQueryARBFn(target, id); +} + +void TraceGLApi::glBeginTransformFeedbackFn(GLenum primitiveMode) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBeginTransformFeedback") + gl_api_->glBeginTransformFeedbackFn(primitiveMode); +} + +void TraceGLApi::glBindAttribLocationFn(GLuint program, + GLuint index, + const char* name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindAttribLocation") + gl_api_->glBindAttribLocationFn(program, index, name); +} + +void TraceGLApi::glBindBufferFn(GLenum target, GLuint buffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindBuffer") + gl_api_->glBindBufferFn(target, buffer); +} + +void TraceGLApi::glBindBufferBaseFn(GLenum target, + GLuint index, + GLuint buffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindBufferBase") + gl_api_->glBindBufferBaseFn(target, index, buffer); +} + +void TraceGLApi::glBindBufferRangeFn(GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindBufferRange") + gl_api_->glBindBufferRangeFn(target, index, buffer, offset, size); +} + +void TraceGLApi::glBindFragDataLocationFn(GLuint program, + GLuint colorNumber, + const char* name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindFragDataLocation") + gl_api_->glBindFragDataLocationFn(program, colorNumber, name); +} + +void TraceGLApi::glBindFragDataLocationIndexedFn(GLuint program, + GLuint colorNumber, + GLuint index, + const char* name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glBindFragDataLocationIndexed") + gl_api_->glBindFragDataLocationIndexedFn(program, colorNumber, index, name); +} + +void TraceGLApi::glBindFramebufferEXTFn(GLenum target, GLuint framebuffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindFramebufferEXT") + gl_api_->glBindFramebufferEXTFn(target, framebuffer); +} + +void TraceGLApi::glBindRenderbufferEXTFn(GLenum target, GLuint renderbuffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindRenderbufferEXT") + gl_api_->glBindRenderbufferEXTFn(target, renderbuffer); +} + +void TraceGLApi::glBindSamplerFn(GLuint unit, GLuint sampler) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindSampler") + gl_api_->glBindSamplerFn(unit, sampler); +} + +void TraceGLApi::glBindTextureFn(GLenum target, GLuint texture) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindTexture") + gl_api_->glBindTextureFn(target, texture); +} + +void TraceGLApi::glBindTransformFeedbackFn(GLenum target, GLuint id) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindTransformFeedback") + gl_api_->glBindTransformFeedbackFn(target, id); +} + +void TraceGLApi::glBindVertexArrayOESFn(GLuint array) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBindVertexArrayOES") + gl_api_->glBindVertexArrayOESFn(array); +} + +void TraceGLApi::glBlendBarrierKHRFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBlendBarrierKHR") + gl_api_->glBlendBarrierKHRFn(); +} + +void TraceGLApi::glBlendColorFn(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBlendColor") + gl_api_->glBlendColorFn(red, green, blue, alpha); +} + +void TraceGLApi::glBlendEquationFn(GLenum mode) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBlendEquation") + gl_api_->glBlendEquationFn(mode); +} + +void TraceGLApi::glBlendEquationSeparateFn(GLenum modeRGB, GLenum modeAlpha) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBlendEquationSeparate") + gl_api_->glBlendEquationSeparateFn(modeRGB, modeAlpha); +} + +void TraceGLApi::glBlendFuncFn(GLenum sfactor, GLenum dfactor) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBlendFunc") + gl_api_->glBlendFuncFn(sfactor, dfactor); +} + +void TraceGLApi::glBlendFuncSeparateFn(GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBlendFuncSeparate") + gl_api_->glBlendFuncSeparateFn(srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +void TraceGLApi::glBlitFramebufferFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBlitFramebuffer") + gl_api_->glBlitFramebufferFn(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, + dstY1, mask, filter); +} + +void TraceGLApi::glBlitFramebufferANGLEFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBlitFramebufferANGLE") + gl_api_->glBlitFramebufferANGLEFn(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, + dstX1, dstY1, mask, filter); +} + +void TraceGLApi::glBlitFramebufferEXTFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBlitFramebufferEXT") + gl_api_->glBlitFramebufferEXTFn(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, + dstX1, dstY1, mask, filter); +} + +void TraceGLApi::glBufferDataFn(GLenum target, + GLsizeiptr size, + const void* data, + GLenum usage) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBufferData") + gl_api_->glBufferDataFn(target, size, data, usage); +} + +void TraceGLApi::glBufferSubDataFn(GLenum target, + GLintptr offset, + GLsizeiptr size, + const void* data) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glBufferSubData") + gl_api_->glBufferSubDataFn(target, offset, size, data); +} + +GLenum TraceGLApi::glCheckFramebufferStatusEXTFn(GLenum target) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glCheckFramebufferStatusEXT") + return gl_api_->glCheckFramebufferStatusEXTFn(target); +} + +void TraceGLApi::glClearFn(GLbitfield mask) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glClear") + gl_api_->glClearFn(mask); +} + +void TraceGLApi::glClearBufferfiFn(GLenum buffer, + GLint drawbuffer, + const GLfloat depth, + GLint stencil) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glClearBufferfi") + gl_api_->glClearBufferfiFn(buffer, drawbuffer, depth, stencil); +} + +void TraceGLApi::glClearBufferfvFn(GLenum buffer, + GLint drawbuffer, + const GLfloat* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glClearBufferfv") + gl_api_->glClearBufferfvFn(buffer, drawbuffer, value); +} + +void TraceGLApi::glClearBufferivFn(GLenum buffer, + GLint drawbuffer, + const GLint* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glClearBufferiv") + gl_api_->glClearBufferivFn(buffer, drawbuffer, value); +} + +void TraceGLApi::glClearBufferuivFn(GLenum buffer, + GLint drawbuffer, + const GLuint* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glClearBufferuiv") + gl_api_->glClearBufferuivFn(buffer, drawbuffer, value); +} + +void TraceGLApi::glClearColorFn(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glClearColor") + gl_api_->glClearColorFn(red, green, blue, alpha); +} + +void TraceGLApi::glClearDepthFn(GLclampd depth) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glClearDepth") + gl_api_->glClearDepthFn(depth); +} + +void TraceGLApi::glClearDepthfFn(GLclampf depth) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glClearDepthf") + gl_api_->glClearDepthfFn(depth); +} + +void TraceGLApi::glClearStencilFn(GLint s) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glClearStencil") + gl_api_->glClearStencilFn(s); +} + +GLenum TraceGLApi::glClientWaitSyncFn(GLsync sync, + GLbitfield flags, + GLuint64 timeout) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glClientWaitSync") + return gl_api_->glClientWaitSyncFn(sync, flags, timeout); +} + +void TraceGLApi::glColorMaskFn(GLboolean red, + GLboolean green, + GLboolean blue, + GLboolean alpha) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glColorMask") + gl_api_->glColorMaskFn(red, green, blue, alpha); +} + +void TraceGLApi::glCompileShaderFn(GLuint shader) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCompileShader") + gl_api_->glCompileShaderFn(shader); +} + +void TraceGLApi::glCompressedTexImage2DFn(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCompressedTexImage2D") + gl_api_->glCompressedTexImage2DFn(target, level, internalformat, width, + height, border, imageSize, data); +} + +void TraceGLApi::glCompressedTexImage3DFn(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCompressedTexImage3D") + gl_api_->glCompressedTexImage3DFn(target, level, internalformat, width, + height, depth, border, imageSize, data); +} + +void TraceGLApi::glCompressedTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCompressedTexSubImage2D") + gl_api_->glCompressedTexSubImage2DFn(target, level, xoffset, yoffset, width, + height, format, imageSize, data); +} + +void TraceGLApi::glCopyBufferSubDataFn(GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCopyBufferSubData") + gl_api_->glCopyBufferSubDataFn(readTarget, writeTarget, readOffset, + writeOffset, size); +} + +void TraceGLApi::glCopyTexImage2DFn(GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCopyTexImage2D") + gl_api_->glCopyTexImage2DFn(target, level, internalformat, x, y, width, + height, border); +} + +void TraceGLApi::glCopyTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCopyTexSubImage2D") + gl_api_->glCopyTexSubImage2DFn(target, level, xoffset, yoffset, x, y, width, + height); +} + +void TraceGLApi::glCopyTexSubImage3DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCopyTexSubImage3D") + gl_api_->glCopyTexSubImage3DFn(target, level, xoffset, yoffset, zoffset, x, y, + width, height); +} + +GLuint TraceGLApi::glCreateProgramFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCreateProgram") + return gl_api_->glCreateProgramFn(); +} + +GLuint TraceGLApi::glCreateShaderFn(GLenum type) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCreateShader") + return gl_api_->glCreateShaderFn(type); +} + +void TraceGLApi::glCullFaceFn(GLenum mode) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glCullFace") + gl_api_->glCullFaceFn(mode); +} + +void TraceGLApi::glDeleteBuffersARBFn(GLsizei n, const GLuint* buffers) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteBuffersARB") + gl_api_->glDeleteBuffersARBFn(n, buffers); +} + +void TraceGLApi::glDeleteFencesAPPLEFn(GLsizei n, const GLuint* fences) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteFencesAPPLE") + gl_api_->glDeleteFencesAPPLEFn(n, fences); +} + +void TraceGLApi::glDeleteFencesNVFn(GLsizei n, const GLuint* fences) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteFencesNV") + gl_api_->glDeleteFencesNVFn(n, fences); +} + +void TraceGLApi::glDeleteFramebuffersEXTFn(GLsizei n, + const GLuint* framebuffers) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteFramebuffersEXT") + gl_api_->glDeleteFramebuffersEXTFn(n, framebuffers); +} + +void TraceGLApi::glDeleteProgramFn(GLuint program) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteProgram") + gl_api_->glDeleteProgramFn(program); +} + +void TraceGLApi::glDeleteQueriesFn(GLsizei n, const GLuint* ids) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteQueries") + gl_api_->glDeleteQueriesFn(n, ids); +} + +void TraceGLApi::glDeleteQueriesARBFn(GLsizei n, const GLuint* ids) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteQueriesARB") + gl_api_->glDeleteQueriesARBFn(n, ids); +} + +void TraceGLApi::glDeleteRenderbuffersEXTFn(GLsizei n, + const GLuint* renderbuffers) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteRenderbuffersEXT") + gl_api_->glDeleteRenderbuffersEXTFn(n, renderbuffers); +} + +void TraceGLApi::glDeleteSamplersFn(GLsizei n, const GLuint* samplers) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteSamplers") + gl_api_->glDeleteSamplersFn(n, samplers); +} + +void TraceGLApi::glDeleteShaderFn(GLuint shader) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteShader") + gl_api_->glDeleteShaderFn(shader); +} + +void TraceGLApi::glDeleteSyncFn(GLsync sync) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteSync") + gl_api_->glDeleteSyncFn(sync); +} + +void TraceGLApi::glDeleteTexturesFn(GLsizei n, const GLuint* textures) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteTextures") + gl_api_->glDeleteTexturesFn(n, textures); +} + +void TraceGLApi::glDeleteTransformFeedbacksFn(GLsizei n, const GLuint* ids) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteTransformFeedbacks") + gl_api_->glDeleteTransformFeedbacksFn(n, ids); +} + +void TraceGLApi::glDeleteVertexArraysOESFn(GLsizei n, const GLuint* arrays) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDeleteVertexArraysOES") + gl_api_->glDeleteVertexArraysOESFn(n, arrays); +} + +void TraceGLApi::glDepthFuncFn(GLenum func) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDepthFunc") + gl_api_->glDepthFuncFn(func); +} + +void TraceGLApi::glDepthMaskFn(GLboolean flag) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDepthMask") + gl_api_->glDepthMaskFn(flag); +} + +void TraceGLApi::glDepthRangeFn(GLclampd zNear, GLclampd zFar) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDepthRange") + gl_api_->glDepthRangeFn(zNear, zFar); +} + +void TraceGLApi::glDepthRangefFn(GLclampf zNear, GLclampf zFar) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDepthRangef") + gl_api_->glDepthRangefFn(zNear, zFar); +} + +void TraceGLApi::glDetachShaderFn(GLuint program, GLuint shader) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDetachShader") + gl_api_->glDetachShaderFn(program, shader); +} + +void TraceGLApi::glDisableFn(GLenum cap) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDisable") + gl_api_->glDisableFn(cap); +} + +void TraceGLApi::glDisableVertexAttribArrayFn(GLuint index) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDisableVertexAttribArray") + gl_api_->glDisableVertexAttribArrayFn(index); +} + +void TraceGLApi::glDiscardFramebufferEXTFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDiscardFramebufferEXT") + gl_api_->glDiscardFramebufferEXTFn(target, numAttachments, attachments); +} + +void TraceGLApi::glDrawArraysFn(GLenum mode, GLint first, GLsizei count) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDrawArrays") + gl_api_->glDrawArraysFn(mode, first, count); +} + +void TraceGLApi::glDrawArraysInstancedANGLEFn(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDrawArraysInstancedANGLE") + gl_api_->glDrawArraysInstancedANGLEFn(mode, first, count, primcount); +} + +void TraceGLApi::glDrawBufferFn(GLenum mode) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDrawBuffer") + gl_api_->glDrawBufferFn(mode); +} + +void TraceGLApi::glDrawBuffersARBFn(GLsizei n, const GLenum* bufs) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDrawBuffersARB") + gl_api_->glDrawBuffersARBFn(n, bufs); +} + +void TraceGLApi::glDrawElementsFn(GLenum mode, + GLsizei count, + GLenum type, + const void* indices) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDrawElements") + gl_api_->glDrawElementsFn(mode, count, type, indices); +} + +void TraceGLApi::glDrawElementsInstancedANGLEFn(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glDrawElementsInstancedANGLE") + gl_api_->glDrawElementsInstancedANGLEFn(mode, count, type, indices, + primcount); +} + +void TraceGLApi::glDrawRangeElementsFn(GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glDrawRangeElements") + gl_api_->glDrawRangeElementsFn(mode, start, end, count, type, indices); +} + +void TraceGLApi::glEGLImageTargetRenderbufferStorageOESFn(GLenum target, + GLeglImageOES image) { + TRACE_EVENT_BINARY_EFFICIENT0( + "gpu", "TraceGLAPI::glEGLImageTargetRenderbufferStorageOES") + gl_api_->glEGLImageTargetRenderbufferStorageOESFn(target, image); +} + +void TraceGLApi::glEGLImageTargetTexture2DOESFn(GLenum target, + GLeglImageOES image) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glEGLImageTargetTexture2DOES") + gl_api_->glEGLImageTargetTexture2DOESFn(target, image); +} + +void TraceGLApi::glEnableFn(GLenum cap) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glEnable") + gl_api_->glEnableFn(cap); +} + +void TraceGLApi::glEnableVertexAttribArrayFn(GLuint index) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glEnableVertexAttribArray") + gl_api_->glEnableVertexAttribArrayFn(index); +} + +void TraceGLApi::glEndQueryFn(GLenum target) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glEndQuery") + gl_api_->glEndQueryFn(target); +} + +void TraceGLApi::glEndQueryARBFn(GLenum target) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glEndQueryARB") + gl_api_->glEndQueryARBFn(target); +} + +void TraceGLApi::glEndTransformFeedbackFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glEndTransformFeedback") + gl_api_->glEndTransformFeedbackFn(); +} + +GLsync TraceGLApi::glFenceSyncFn(GLenum condition, GLbitfield flags) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glFenceSync") + return gl_api_->glFenceSyncFn(condition, flags); +} + +void TraceGLApi::glFinishFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glFinish") + gl_api_->glFinishFn(); +} + +void TraceGLApi::glFinishFenceAPPLEFn(GLuint fence) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glFinishFenceAPPLE") + gl_api_->glFinishFenceAPPLEFn(fence); +} + +void TraceGLApi::glFinishFenceNVFn(GLuint fence) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glFinishFenceNV") + gl_api_->glFinishFenceNVFn(fence); +} + +void TraceGLApi::glFlushFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glFlush") + gl_api_->glFlushFn(); +} + +void TraceGLApi::glFlushMappedBufferRangeFn(GLenum target, + GLintptr offset, + GLsizeiptr length) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glFlushMappedBufferRange") + gl_api_->glFlushMappedBufferRangeFn(target, offset, length); +} + +void TraceGLApi::glFramebufferRenderbufferEXTFn(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glFramebufferRenderbufferEXT") + gl_api_->glFramebufferRenderbufferEXTFn(target, attachment, + renderbuffertarget, renderbuffer); +} + +void TraceGLApi::glFramebufferTexture2DEXTFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glFramebufferTexture2DEXT") + gl_api_->glFramebufferTexture2DEXTFn(target, attachment, textarget, texture, + level); +} + +void TraceGLApi::glFramebufferTexture2DMultisampleEXTFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) { + TRACE_EVENT_BINARY_EFFICIENT0( + "gpu", "TraceGLAPI::glFramebufferTexture2DMultisampleEXT") + gl_api_->glFramebufferTexture2DMultisampleEXTFn(target, attachment, textarget, + texture, level, samples); +} + +void TraceGLApi::glFramebufferTexture2DMultisampleIMGFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) { + TRACE_EVENT_BINARY_EFFICIENT0( + "gpu", "TraceGLAPI::glFramebufferTexture2DMultisampleIMG") + gl_api_->glFramebufferTexture2DMultisampleIMGFn(target, attachment, textarget, + texture, level, samples); +} + +void TraceGLApi::glFramebufferTextureLayerFn(GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glFramebufferTextureLayer") + gl_api_->glFramebufferTextureLayerFn(target, attachment, texture, level, + layer); +} + +void TraceGLApi::glFrontFaceFn(GLenum mode) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glFrontFace") + gl_api_->glFrontFaceFn(mode); +} + +void TraceGLApi::glGenBuffersARBFn(GLsizei n, GLuint* buffers) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenBuffersARB") + gl_api_->glGenBuffersARBFn(n, buffers); +} + +void TraceGLApi::glGenerateMipmapEXTFn(GLenum target) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenerateMipmapEXT") + gl_api_->glGenerateMipmapEXTFn(target); +} + +void TraceGLApi::glGenFencesAPPLEFn(GLsizei n, GLuint* fences) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenFencesAPPLE") + gl_api_->glGenFencesAPPLEFn(n, fences); +} + +void TraceGLApi::glGenFencesNVFn(GLsizei n, GLuint* fences) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenFencesNV") + gl_api_->glGenFencesNVFn(n, fences); +} + +void TraceGLApi::glGenFramebuffersEXTFn(GLsizei n, GLuint* framebuffers) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenFramebuffersEXT") + gl_api_->glGenFramebuffersEXTFn(n, framebuffers); +} + +void TraceGLApi::glGenQueriesFn(GLsizei n, GLuint* ids) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenQueries") + gl_api_->glGenQueriesFn(n, ids); +} + +void TraceGLApi::glGenQueriesARBFn(GLsizei n, GLuint* ids) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenQueriesARB") + gl_api_->glGenQueriesARBFn(n, ids); +} + +void TraceGLApi::glGenRenderbuffersEXTFn(GLsizei n, GLuint* renderbuffers) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenRenderbuffersEXT") + gl_api_->glGenRenderbuffersEXTFn(n, renderbuffers); +} + +void TraceGLApi::glGenSamplersFn(GLsizei n, GLuint* samplers) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenSamplers") + gl_api_->glGenSamplersFn(n, samplers); +} + +void TraceGLApi::glGenTexturesFn(GLsizei n, GLuint* textures) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenTextures") + gl_api_->glGenTexturesFn(n, textures); +} + +void TraceGLApi::glGenTransformFeedbacksFn(GLsizei n, GLuint* ids) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenTransformFeedbacks") + gl_api_->glGenTransformFeedbacksFn(n, ids); +} + +void TraceGLApi::glGenVertexArraysOESFn(GLsizei n, GLuint* arrays) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGenVertexArraysOES") + gl_api_->glGenVertexArraysOESFn(n, arrays); +} + +void TraceGLApi::glGetActiveAttribFn(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetActiveAttrib") + gl_api_->glGetActiveAttribFn(program, index, bufsize, length, size, type, + name); +} + +void TraceGLApi::glGetActiveUniformFn(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetActiveUniform") + gl_api_->glGetActiveUniformFn(program, index, bufsize, length, size, type, + name); +} + +void TraceGLApi::glGetActiveUniformBlockivFn(GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetActiveUniformBlockiv") + gl_api_->glGetActiveUniformBlockivFn(program, uniformBlockIndex, pname, + params); +} + +void TraceGLApi::glGetActiveUniformBlockNameFn(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + char* uniformBlockName) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glGetActiveUniformBlockName") + gl_api_->glGetActiveUniformBlockNameFn(program, uniformBlockIndex, bufSize, + length, uniformBlockName); +} + +void TraceGLApi::glGetActiveUniformsivFn(GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetActiveUniformsiv") + gl_api_->glGetActiveUniformsivFn(program, uniformCount, uniformIndices, pname, + params); +} + +void TraceGLApi::glGetAttachedShadersFn(GLuint program, + GLsizei maxcount, + GLsizei* count, + GLuint* shaders) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetAttachedShaders") + gl_api_->glGetAttachedShadersFn(program, maxcount, count, shaders); +} + +GLint TraceGLApi::glGetAttribLocationFn(GLuint program, const char* name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetAttribLocation") + return gl_api_->glGetAttribLocationFn(program, name); +} + +void TraceGLApi::glGetBooleanvFn(GLenum pname, GLboolean* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetBooleanv") + gl_api_->glGetBooleanvFn(pname, params); +} + +void TraceGLApi::glGetBufferParameterivFn(GLenum target, + GLenum pname, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetBufferParameteriv") + gl_api_->glGetBufferParameterivFn(target, pname, params); +} + +GLenum TraceGLApi::glGetErrorFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetError") + return gl_api_->glGetErrorFn(); +} + +void TraceGLApi::glGetFenceivNVFn(GLuint fence, GLenum pname, GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetFenceivNV") + gl_api_->glGetFenceivNVFn(fence, pname, params); +} + +void TraceGLApi::glGetFloatvFn(GLenum pname, GLfloat* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetFloatv") + gl_api_->glGetFloatvFn(pname, params); +} + +GLint TraceGLApi::glGetFragDataLocationFn(GLuint program, const char* name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetFragDataLocation") + return gl_api_->glGetFragDataLocationFn(program, name); +} + +void TraceGLApi::glGetFramebufferAttachmentParameterivEXTFn(GLenum target, + GLenum attachment, + GLenum pname, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0( + "gpu", "TraceGLAPI::glGetFramebufferAttachmentParameterivEXT") + gl_api_->glGetFramebufferAttachmentParameterivEXTFn(target, attachment, pname, + params); +} + +GLenum TraceGLApi::glGetGraphicsResetStatusARBFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glGetGraphicsResetStatusARB") + return gl_api_->glGetGraphicsResetStatusARBFn(); +} + +void TraceGLApi::glGetInteger64i_vFn(GLenum target, + GLuint index, + GLint64* data) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetInteger64i_v") + gl_api_->glGetInteger64i_vFn(target, index, data); +} + +void TraceGLApi::glGetInteger64vFn(GLenum pname, GLint64* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetInteger64v") + gl_api_->glGetInteger64vFn(pname, params); +} + +void TraceGLApi::glGetIntegeri_vFn(GLenum target, GLuint index, GLint* data) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetIntegeri_v") + gl_api_->glGetIntegeri_vFn(target, index, data); +} + +void TraceGLApi::glGetIntegervFn(GLenum pname, GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetIntegerv") + gl_api_->glGetIntegervFn(pname, params); +} + +void TraceGLApi::glGetInternalformativFn(GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei bufSize, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetInternalformativ") + gl_api_->glGetInternalformativFn(target, internalformat, pname, bufSize, + params); +} + +void TraceGLApi::glGetProgramBinaryFn(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetProgramBinary") + gl_api_->glGetProgramBinaryFn(program, bufSize, length, binaryFormat, binary); +} + +void TraceGLApi::glGetProgramInfoLogFn(GLuint program, + GLsizei bufsize, + GLsizei* length, + char* infolog) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetProgramInfoLog") + gl_api_->glGetProgramInfoLogFn(program, bufsize, length, infolog); +} + +void TraceGLApi::glGetProgramivFn(GLuint program, GLenum pname, GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetProgramiv") + gl_api_->glGetProgramivFn(program, pname, params); +} + +void TraceGLApi::glGetQueryivFn(GLenum target, GLenum pname, GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetQueryiv") + gl_api_->glGetQueryivFn(target, pname, params); +} + +void TraceGLApi::glGetQueryivARBFn(GLenum target, GLenum pname, GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetQueryivARB") + gl_api_->glGetQueryivARBFn(target, pname, params); +} + +void TraceGLApi::glGetQueryObjecti64vFn(GLuint id, + GLenum pname, + GLint64* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetQueryObjecti64v") + gl_api_->glGetQueryObjecti64vFn(id, pname, params); +} + +void TraceGLApi::glGetQueryObjectivFn(GLuint id, GLenum pname, GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetQueryObjectiv") + gl_api_->glGetQueryObjectivFn(id, pname, params); +} + +void TraceGLApi::glGetQueryObjectivARBFn(GLuint id, + GLenum pname, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetQueryObjectivARB") + gl_api_->glGetQueryObjectivARBFn(id, pname, params); +} + +void TraceGLApi::glGetQueryObjectui64vFn(GLuint id, + GLenum pname, + GLuint64* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetQueryObjectui64v") + gl_api_->glGetQueryObjectui64vFn(id, pname, params); +} + +void TraceGLApi::glGetQueryObjectuivFn(GLuint id, + GLenum pname, + GLuint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetQueryObjectuiv") + gl_api_->glGetQueryObjectuivFn(id, pname, params); +} + +void TraceGLApi::glGetQueryObjectuivARBFn(GLuint id, + GLenum pname, + GLuint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetQueryObjectuivARB") + gl_api_->glGetQueryObjectuivARBFn(id, pname, params); +} + +void TraceGLApi::glGetRenderbufferParameterivEXTFn(GLenum target, + GLenum pname, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glGetRenderbufferParameterivEXT") + gl_api_->glGetRenderbufferParameterivEXTFn(target, pname, params); +} + +void TraceGLApi::glGetSamplerParameterfvFn(GLuint sampler, + GLenum pname, + GLfloat* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetSamplerParameterfv") + gl_api_->glGetSamplerParameterfvFn(sampler, pname, params); +} + +void TraceGLApi::glGetSamplerParameterivFn(GLuint sampler, + GLenum pname, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetSamplerParameteriv") + gl_api_->glGetSamplerParameterivFn(sampler, pname, params); +} + +void TraceGLApi::glGetShaderInfoLogFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* infolog) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetShaderInfoLog") + gl_api_->glGetShaderInfoLogFn(shader, bufsize, length, infolog); +} + +void TraceGLApi::glGetShaderivFn(GLuint shader, GLenum pname, GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetShaderiv") + gl_api_->glGetShaderivFn(shader, pname, params); +} + +void TraceGLApi::glGetShaderPrecisionFormatFn(GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetShaderPrecisionFormat") + gl_api_->glGetShaderPrecisionFormatFn(shadertype, precisiontype, range, + precision); +} + +void TraceGLApi::glGetShaderSourceFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetShaderSource") + gl_api_->glGetShaderSourceFn(shader, bufsize, length, source); +} + +const GLubyte* TraceGLApi::glGetStringFn(GLenum name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetString") + return gl_api_->glGetStringFn(name); +} + +void TraceGLApi::glGetSyncivFn(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetSynciv") + gl_api_->glGetSyncivFn(sync, pname, bufSize, length, values); +} + +void TraceGLApi::glGetTexLevelParameterfvFn(GLenum target, + GLint level, + GLenum pname, + GLfloat* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetTexLevelParameterfv") + gl_api_->glGetTexLevelParameterfvFn(target, level, pname, params); +} + +void TraceGLApi::glGetTexLevelParameterivFn(GLenum target, + GLint level, + GLenum pname, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetTexLevelParameteriv") + gl_api_->glGetTexLevelParameterivFn(target, level, pname, params); +} + +void TraceGLApi::glGetTexParameterfvFn(GLenum target, + GLenum pname, + GLfloat* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetTexParameterfv") + gl_api_->glGetTexParameterfvFn(target, pname, params); +} + +void TraceGLApi::glGetTexParameterivFn(GLenum target, + GLenum pname, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetTexParameteriv") + gl_api_->glGetTexParameterivFn(target, pname, params); +} + +void TraceGLApi::glGetTransformFeedbackVaryingFn(GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLenum* type, + char* name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glGetTransformFeedbackVarying") + gl_api_->glGetTransformFeedbackVaryingFn(program, index, bufSize, length, + type, name); +} + +void TraceGLApi::glGetTranslatedShaderSourceANGLEFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glGetTranslatedShaderSourceANGLE") + gl_api_->glGetTranslatedShaderSourceANGLEFn(shader, bufsize, length, source); +} + +GLuint TraceGLApi::glGetUniformBlockIndexFn(GLuint program, + const char* uniformBlockName) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetUniformBlockIndex") + return gl_api_->glGetUniformBlockIndexFn(program, uniformBlockName); +} + +void TraceGLApi::glGetUniformfvFn(GLuint program, + GLint location, + GLfloat* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetUniformfv") + gl_api_->glGetUniformfvFn(program, location, params); +} + +void TraceGLApi::glGetUniformIndicesFn(GLuint program, + GLsizei uniformCount, + const char* const* uniformNames, + GLuint* uniformIndices) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetUniformIndices") + gl_api_->glGetUniformIndicesFn(program, uniformCount, uniformNames, + uniformIndices); +} + +void TraceGLApi::glGetUniformivFn(GLuint program, + GLint location, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetUniformiv") + gl_api_->glGetUniformivFn(program, location, params); +} + +GLint TraceGLApi::glGetUniformLocationFn(GLuint program, const char* name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetUniformLocation") + return gl_api_->glGetUniformLocationFn(program, name); +} + +void TraceGLApi::glGetVertexAttribfvFn(GLuint index, + GLenum pname, + GLfloat* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetVertexAttribfv") + gl_api_->glGetVertexAttribfvFn(index, pname, params); +} + +void TraceGLApi::glGetVertexAttribivFn(GLuint index, + GLenum pname, + GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetVertexAttribiv") + gl_api_->glGetVertexAttribivFn(index, pname, params); +} + +void TraceGLApi::glGetVertexAttribPointervFn(GLuint index, + GLenum pname, + void** pointer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glGetVertexAttribPointerv") + gl_api_->glGetVertexAttribPointervFn(index, pname, pointer); +} + +void TraceGLApi::glHintFn(GLenum target, GLenum mode) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glHint") + gl_api_->glHintFn(target, mode); +} + +void TraceGLApi::glInsertEventMarkerEXTFn(GLsizei length, const char* marker) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glInsertEventMarkerEXT") + gl_api_->glInsertEventMarkerEXTFn(length, marker); +} + +void TraceGLApi::glInvalidateFramebufferFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glInvalidateFramebuffer") + gl_api_->glInvalidateFramebufferFn(target, numAttachments, attachments); +} + +void TraceGLApi::glInvalidateSubFramebufferFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLint width, + GLint height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glInvalidateSubFramebuffer") + gl_api_->glInvalidateSubFramebufferFn(target, numAttachments, attachments, x, + y, width, height); +} + +GLboolean TraceGLApi::glIsBufferFn(GLuint buffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsBuffer") + return gl_api_->glIsBufferFn(buffer); +} + +GLboolean TraceGLApi::glIsEnabledFn(GLenum cap) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsEnabled") + return gl_api_->glIsEnabledFn(cap); +} + +GLboolean TraceGLApi::glIsFenceAPPLEFn(GLuint fence) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsFenceAPPLE") + return gl_api_->glIsFenceAPPLEFn(fence); +} + +GLboolean TraceGLApi::glIsFenceNVFn(GLuint fence) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsFenceNV") + return gl_api_->glIsFenceNVFn(fence); +} + +GLboolean TraceGLApi::glIsFramebufferEXTFn(GLuint framebuffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsFramebufferEXT") + return gl_api_->glIsFramebufferEXTFn(framebuffer); +} + +GLboolean TraceGLApi::glIsProgramFn(GLuint program) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsProgram") + return gl_api_->glIsProgramFn(program); +} + +GLboolean TraceGLApi::glIsQueryFn(GLuint query) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsQuery") + return gl_api_->glIsQueryFn(query); +} + +GLboolean TraceGLApi::glIsQueryARBFn(GLuint query) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsQueryARB") + return gl_api_->glIsQueryARBFn(query); +} + +GLboolean TraceGLApi::glIsRenderbufferEXTFn(GLuint renderbuffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsRenderbufferEXT") + return gl_api_->glIsRenderbufferEXTFn(renderbuffer); +} + +GLboolean TraceGLApi::glIsSamplerFn(GLuint sampler) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsSampler") + return gl_api_->glIsSamplerFn(sampler); +} + +GLboolean TraceGLApi::glIsShaderFn(GLuint shader) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsShader") + return gl_api_->glIsShaderFn(shader); +} + +GLboolean TraceGLApi::glIsSyncFn(GLsync sync) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsSync") + return gl_api_->glIsSyncFn(sync); +} + +GLboolean TraceGLApi::glIsTextureFn(GLuint texture) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsTexture") + return gl_api_->glIsTextureFn(texture); +} + +GLboolean TraceGLApi::glIsTransformFeedbackFn(GLuint id) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsTransformFeedback") + return gl_api_->glIsTransformFeedbackFn(id); +} + +GLboolean TraceGLApi::glIsVertexArrayOESFn(GLuint array) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsVertexArrayOES") + return gl_api_->glIsVertexArrayOESFn(array); +} + +void TraceGLApi::glLineWidthFn(GLfloat width) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glLineWidth") + gl_api_->glLineWidthFn(width); +} + +void TraceGLApi::glLinkProgramFn(GLuint program) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glLinkProgram") + gl_api_->glLinkProgramFn(program); +} + +void* TraceGLApi::glMapBufferFn(GLenum target, GLenum access) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glMapBuffer") + return gl_api_->glMapBufferFn(target, access); +} + +void* TraceGLApi::glMapBufferRangeFn(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glMapBufferRange") + return gl_api_->glMapBufferRangeFn(target, offset, length, access); +} + +void TraceGLApi::glMatrixLoadfEXTFn(GLenum matrixMode, const GLfloat* m) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glMatrixLoadfEXT") + gl_api_->glMatrixLoadfEXTFn(matrixMode, m); +} + +void TraceGLApi::glMatrixLoadIdentityEXTFn(GLenum matrixMode) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glMatrixLoadIdentityEXT") + gl_api_->glMatrixLoadIdentityEXTFn(matrixMode); +} + +void TraceGLApi::glPauseTransformFeedbackFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glPauseTransformFeedback") + gl_api_->glPauseTransformFeedbackFn(); +} + +void TraceGLApi::glPixelStoreiFn(GLenum pname, GLint param) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glPixelStorei") + gl_api_->glPixelStoreiFn(pname, param); +} + +void TraceGLApi::glPointParameteriFn(GLenum pname, GLint param) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glPointParameteri") + gl_api_->glPointParameteriFn(pname, param); +} + +void TraceGLApi::glPolygonOffsetFn(GLfloat factor, GLfloat units) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glPolygonOffset") + gl_api_->glPolygonOffsetFn(factor, units); +} + +void TraceGLApi::glPopGroupMarkerEXTFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glPopGroupMarkerEXT") + gl_api_->glPopGroupMarkerEXTFn(); +} + +void TraceGLApi::glProgramBinaryFn(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glProgramBinary") + gl_api_->glProgramBinaryFn(program, binaryFormat, binary, length); +} + +void TraceGLApi::glProgramParameteriFn(GLuint program, + GLenum pname, + GLint value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glProgramParameteri") + gl_api_->glProgramParameteriFn(program, pname, value); +} + +void TraceGLApi::glPushGroupMarkerEXTFn(GLsizei length, const char* marker) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glPushGroupMarkerEXT") + gl_api_->glPushGroupMarkerEXTFn(length, marker); +} + +void TraceGLApi::glQueryCounterFn(GLuint id, GLenum target) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glQueryCounter") + gl_api_->glQueryCounterFn(id, target); +} + +void TraceGLApi::glReadBufferFn(GLenum src) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glReadBuffer") + gl_api_->glReadBufferFn(src); +} + +void TraceGLApi::glReadPixelsFn(GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glReadPixels") + gl_api_->glReadPixelsFn(x, y, width, height, format, type, pixels); +} + +void TraceGLApi::glReleaseShaderCompilerFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glReleaseShaderCompiler") + gl_api_->glReleaseShaderCompilerFn(); +} + +void TraceGLApi::glRenderbufferStorageEXTFn(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glRenderbufferStorageEXT") + gl_api_->glRenderbufferStorageEXTFn(target, internalformat, width, height); +} + +void TraceGLApi::glRenderbufferStorageMultisampleFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glRenderbufferStorageMultisample") + gl_api_->glRenderbufferStorageMultisampleFn(target, samples, internalformat, + width, height); +} + +void TraceGLApi::glRenderbufferStorageMultisampleANGLEFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0( + "gpu", "TraceGLAPI::glRenderbufferStorageMultisampleANGLE") + gl_api_->glRenderbufferStorageMultisampleANGLEFn( + target, samples, internalformat, width, height); +} + +void TraceGLApi::glRenderbufferStorageMultisampleEXTFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0( + "gpu", "TraceGLAPI::glRenderbufferStorageMultisampleEXT") + gl_api_->glRenderbufferStorageMultisampleEXTFn(target, samples, + internalformat, width, height); +} + +void TraceGLApi::glRenderbufferStorageMultisampleIMGFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0( + "gpu", "TraceGLAPI::glRenderbufferStorageMultisampleIMG") + gl_api_->glRenderbufferStorageMultisampleIMGFn(target, samples, + internalformat, width, height); +} + +void TraceGLApi::glResumeTransformFeedbackFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glResumeTransformFeedback") + gl_api_->glResumeTransformFeedbackFn(); +} + +void TraceGLApi::glSampleCoverageFn(GLclampf value, GLboolean invert) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glSampleCoverage") + gl_api_->glSampleCoverageFn(value, invert); +} + +void TraceGLApi::glSamplerParameterfFn(GLuint sampler, + GLenum pname, + GLfloat param) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glSamplerParameterf") + gl_api_->glSamplerParameterfFn(sampler, pname, param); +} + +void TraceGLApi::glSamplerParameterfvFn(GLuint sampler, + GLenum pname, + const GLfloat* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glSamplerParameterfv") + gl_api_->glSamplerParameterfvFn(sampler, pname, params); +} + +void TraceGLApi::glSamplerParameteriFn(GLuint sampler, + GLenum pname, + GLint param) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glSamplerParameteri") + gl_api_->glSamplerParameteriFn(sampler, pname, param); +} + +void TraceGLApi::glSamplerParameterivFn(GLuint sampler, + GLenum pname, + const GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glSamplerParameteriv") + gl_api_->glSamplerParameterivFn(sampler, pname, params); +} + +void TraceGLApi::glScissorFn(GLint x, GLint y, GLsizei width, GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glScissor") + gl_api_->glScissorFn(x, y, width, height); +} + +void TraceGLApi::glSetFenceAPPLEFn(GLuint fence) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glSetFenceAPPLE") + gl_api_->glSetFenceAPPLEFn(fence); +} + +void TraceGLApi::glSetFenceNVFn(GLuint fence, GLenum condition) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glSetFenceNV") + gl_api_->glSetFenceNVFn(fence, condition); +} + +void TraceGLApi::glShaderBinaryFn(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glShaderBinary") + gl_api_->glShaderBinaryFn(n, shaders, binaryformat, binary, length); +} + +void TraceGLApi::glShaderSourceFn(GLuint shader, + GLsizei count, + const char* const* str, + const GLint* length) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glShaderSource") + gl_api_->glShaderSourceFn(shader, count, str, length); +} + +void TraceGLApi::glStencilFuncFn(GLenum func, GLint ref, GLuint mask) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glStencilFunc") + gl_api_->glStencilFuncFn(func, ref, mask); +} + +void TraceGLApi::glStencilFuncSeparateFn(GLenum face, + GLenum func, + GLint ref, + GLuint mask) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glStencilFuncSeparate") + gl_api_->glStencilFuncSeparateFn(face, func, ref, mask); +} + +void TraceGLApi::glStencilMaskFn(GLuint mask) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glStencilMask") + gl_api_->glStencilMaskFn(mask); +} + +void TraceGLApi::glStencilMaskSeparateFn(GLenum face, GLuint mask) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glStencilMaskSeparate") + gl_api_->glStencilMaskSeparateFn(face, mask); +} + +void TraceGLApi::glStencilOpFn(GLenum fail, GLenum zfail, GLenum zpass) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glStencilOp") + gl_api_->glStencilOpFn(fail, zfail, zpass); +} + +void TraceGLApi::glStencilOpSeparateFn(GLenum face, + GLenum fail, + GLenum zfail, + GLenum zpass) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glStencilOpSeparate") + gl_api_->glStencilOpSeparateFn(face, fail, zfail, zpass); +} + +GLboolean TraceGLApi::glTestFenceAPPLEFn(GLuint fence) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTestFenceAPPLE") + return gl_api_->glTestFenceAPPLEFn(fence); +} + +GLboolean TraceGLApi::glTestFenceNVFn(GLuint fence) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTestFenceNV") + return gl_api_->glTestFenceNVFn(fence); +} + +void TraceGLApi::glTexImage2DFn(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTexImage2D") + gl_api_->glTexImage2DFn(target, level, internalformat, width, height, border, + format, type, pixels); +} + +void TraceGLApi::glTexImage3DFn(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTexImage3D") + gl_api_->glTexImage3DFn(target, level, internalformat, width, height, depth, + border, format, type, pixels); +} + +void TraceGLApi::glTexParameterfFn(GLenum target, GLenum pname, GLfloat param) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTexParameterf") + gl_api_->glTexParameterfFn(target, pname, param); +} + +void TraceGLApi::glTexParameterfvFn(GLenum target, + GLenum pname, + const GLfloat* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTexParameterfv") + gl_api_->glTexParameterfvFn(target, pname, params); +} + +void TraceGLApi::glTexParameteriFn(GLenum target, GLenum pname, GLint param) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTexParameteri") + gl_api_->glTexParameteriFn(target, pname, param); +} + +void TraceGLApi::glTexParameterivFn(GLenum target, + GLenum pname, + const GLint* params) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTexParameteriv") + gl_api_->glTexParameterivFn(target, pname, params); +} + +void TraceGLApi::glTexStorage2DEXTFn(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTexStorage2DEXT") + gl_api_->glTexStorage2DEXTFn(target, levels, internalformat, width, height); +} + +void TraceGLApi::glTexStorage3DFn(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTexStorage3D") + gl_api_->glTexStorage3DFn(target, levels, internalformat, width, height, + depth); +} + +void TraceGLApi::glTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTexSubImage2D") + gl_api_->glTexSubImage2DFn(target, level, xoffset, yoffset, width, height, + format, type, pixels); +} + +void TraceGLApi::glTransformFeedbackVaryingsFn(GLuint program, + GLsizei count, + const char* const* varyings, + GLenum bufferMode) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glTransformFeedbackVaryings") + gl_api_->glTransformFeedbackVaryingsFn(program, count, varyings, bufferMode); +} + +void TraceGLApi::glUniform1fFn(GLint location, GLfloat x) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform1f") + gl_api_->glUniform1fFn(location, x); +} + +void TraceGLApi::glUniform1fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform1fv") + gl_api_->glUniform1fvFn(location, count, v); +} + +void TraceGLApi::glUniform1iFn(GLint location, GLint x) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform1i") + gl_api_->glUniform1iFn(location, x); +} + +void TraceGLApi::glUniform1ivFn(GLint location, GLsizei count, const GLint* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform1iv") + gl_api_->glUniform1ivFn(location, count, v); +} + +void TraceGLApi::glUniform1uiFn(GLint location, GLuint v0) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform1ui") + gl_api_->glUniform1uiFn(location, v0); +} + +void TraceGLApi::glUniform1uivFn(GLint location, + GLsizei count, + const GLuint* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform1uiv") + gl_api_->glUniform1uivFn(location, count, v); +} + +void TraceGLApi::glUniform2fFn(GLint location, GLfloat x, GLfloat y) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform2f") + gl_api_->glUniform2fFn(location, x, y); +} + +void TraceGLApi::glUniform2fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform2fv") + gl_api_->glUniform2fvFn(location, count, v); +} + +void TraceGLApi::glUniform2iFn(GLint location, GLint x, GLint y) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform2i") + gl_api_->glUniform2iFn(location, x, y); +} + +void TraceGLApi::glUniform2ivFn(GLint location, GLsizei count, const GLint* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform2iv") + gl_api_->glUniform2ivFn(location, count, v); +} + +void TraceGLApi::glUniform2uiFn(GLint location, GLuint v0, GLuint v1) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform2ui") + gl_api_->glUniform2uiFn(location, v0, v1); +} + +void TraceGLApi::glUniform2uivFn(GLint location, + GLsizei count, + const GLuint* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform2uiv") + gl_api_->glUniform2uivFn(location, count, v); +} + +void TraceGLApi::glUniform3fFn(GLint location, + GLfloat x, + GLfloat y, + GLfloat z) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform3f") + gl_api_->glUniform3fFn(location, x, y, z); +} + +void TraceGLApi::glUniform3fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform3fv") + gl_api_->glUniform3fvFn(location, count, v); +} + +void TraceGLApi::glUniform3iFn(GLint location, GLint x, GLint y, GLint z) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform3i") + gl_api_->glUniform3iFn(location, x, y, z); +} + +void TraceGLApi::glUniform3ivFn(GLint location, GLsizei count, const GLint* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform3iv") + gl_api_->glUniform3ivFn(location, count, v); +} + +void TraceGLApi::glUniform3uiFn(GLint location, + GLuint v0, + GLuint v1, + GLuint v2) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform3ui") + gl_api_->glUniform3uiFn(location, v0, v1, v2); +} + +void TraceGLApi::glUniform3uivFn(GLint location, + GLsizei count, + const GLuint* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform3uiv") + gl_api_->glUniform3uivFn(location, count, v); +} + +void TraceGLApi::glUniform4fFn(GLint location, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform4f") + gl_api_->glUniform4fFn(location, x, y, z, w); +} + +void TraceGLApi::glUniform4fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform4fv") + gl_api_->glUniform4fvFn(location, count, v); +} + +void TraceGLApi::glUniform4iFn(GLint location, + GLint x, + GLint y, + GLint z, + GLint w) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform4i") + gl_api_->glUniform4iFn(location, x, y, z, w); +} + +void TraceGLApi::glUniform4ivFn(GLint location, GLsizei count, const GLint* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform4iv") + gl_api_->glUniform4ivFn(location, count, v); +} + +void TraceGLApi::glUniform4uiFn(GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform4ui") + gl_api_->glUniform4uiFn(location, v0, v1, v2, v3); +} + +void TraceGLApi::glUniform4uivFn(GLint location, + GLsizei count, + const GLuint* v) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniform4uiv") + gl_api_->glUniform4uivFn(location, count, v); +} + +void TraceGLApi::glUniformBlockBindingFn(GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniformBlockBinding") + gl_api_->glUniformBlockBindingFn(program, uniformBlockIndex, + uniformBlockBinding); +} + +void TraceGLApi::glUniformMatrix2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniformMatrix2fv") + gl_api_->glUniformMatrix2fvFn(location, count, transpose, value); +} + +void TraceGLApi::glUniformMatrix2x3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniformMatrix2x3fv") + gl_api_->glUniformMatrix2x3fvFn(location, count, transpose, value); +} + +void TraceGLApi::glUniformMatrix2x4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniformMatrix2x4fv") + gl_api_->glUniformMatrix2x4fvFn(location, count, transpose, value); +} + +void TraceGLApi::glUniformMatrix3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniformMatrix3fv") + gl_api_->glUniformMatrix3fvFn(location, count, transpose, value); +} + +void TraceGLApi::glUniformMatrix3x2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniformMatrix3x2fv") + gl_api_->glUniformMatrix3x2fvFn(location, count, transpose, value); +} + +void TraceGLApi::glUniformMatrix3x4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniformMatrix3x4fv") + gl_api_->glUniformMatrix3x4fvFn(location, count, transpose, value); +} + +void TraceGLApi::glUniformMatrix4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniformMatrix4fv") + gl_api_->glUniformMatrix4fvFn(location, count, transpose, value); +} + +void TraceGLApi::glUniformMatrix4x2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniformMatrix4x2fv") + gl_api_->glUniformMatrix4x2fvFn(location, count, transpose, value); +} + +void TraceGLApi::glUniformMatrix4x3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUniformMatrix4x3fv") + gl_api_->glUniformMatrix4x3fvFn(location, count, transpose, value); +} + +GLboolean TraceGLApi::glUnmapBufferFn(GLenum target) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUnmapBuffer") + return gl_api_->glUnmapBufferFn(target); +} + +void TraceGLApi::glUseProgramFn(GLuint program) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glUseProgram") + gl_api_->glUseProgramFn(program); +} + +void TraceGLApi::glValidateProgramFn(GLuint program) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glValidateProgram") + gl_api_->glValidateProgramFn(program); +} + +void TraceGLApi::glVertexAttrib1fFn(GLuint indx, GLfloat x) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttrib1f") + gl_api_->glVertexAttrib1fFn(indx, x); +} + +void TraceGLApi::glVertexAttrib1fvFn(GLuint indx, const GLfloat* values) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttrib1fv") + gl_api_->glVertexAttrib1fvFn(indx, values); +} + +void TraceGLApi::glVertexAttrib2fFn(GLuint indx, GLfloat x, GLfloat y) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttrib2f") + gl_api_->glVertexAttrib2fFn(indx, x, y); +} + +void TraceGLApi::glVertexAttrib2fvFn(GLuint indx, const GLfloat* values) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttrib2fv") + gl_api_->glVertexAttrib2fvFn(indx, values); +} + +void TraceGLApi::glVertexAttrib3fFn(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttrib3f") + gl_api_->glVertexAttrib3fFn(indx, x, y, z); +} + +void TraceGLApi::glVertexAttrib3fvFn(GLuint indx, const GLfloat* values) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttrib3fv") + gl_api_->glVertexAttrib3fvFn(indx, values); +} + +void TraceGLApi::glVertexAttrib4fFn(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttrib4f") + gl_api_->glVertexAttrib4fFn(indx, x, y, z, w); +} + +void TraceGLApi::glVertexAttrib4fvFn(GLuint indx, const GLfloat* values) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttrib4fv") + gl_api_->glVertexAttrib4fvFn(indx, values); +} + +void TraceGLApi::glVertexAttribDivisorANGLEFn(GLuint index, GLuint divisor) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttribDivisorANGLE") + gl_api_->glVertexAttribDivisorANGLEFn(index, divisor); +} + +void TraceGLApi::glVertexAttribI4iFn(GLuint indx, + GLint x, + GLint y, + GLint z, + GLint w) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttribI4i") + gl_api_->glVertexAttribI4iFn(indx, x, y, z, w); +} + +void TraceGLApi::glVertexAttribI4ivFn(GLuint indx, const GLint* values) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttribI4iv") + gl_api_->glVertexAttribI4ivFn(indx, values); +} + +void TraceGLApi::glVertexAttribI4uiFn(GLuint indx, + GLuint x, + GLuint y, + GLuint z, + GLuint w) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttribI4ui") + gl_api_->glVertexAttribI4uiFn(indx, x, y, z, w); +} + +void TraceGLApi::glVertexAttribI4uivFn(GLuint indx, const GLuint* values) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttribI4uiv") + gl_api_->glVertexAttribI4uivFn(indx, values); +} + +void TraceGLApi::glVertexAttribIPointerFn(GLuint indx, + GLint size, + GLenum type, + GLsizei stride, + const void* ptr) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttribIPointer") + gl_api_->glVertexAttribIPointerFn(indx, size, type, stride, ptr); +} + +void TraceGLApi::glVertexAttribPointerFn(GLuint indx, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* ptr) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glVertexAttribPointer") + gl_api_->glVertexAttribPointerFn(indx, size, type, normalized, stride, ptr); +} + +void TraceGLApi::glViewportFn(GLint x, GLint y, GLsizei width, GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glViewport") + gl_api_->glViewportFn(x, y, width, height); +} + +GLenum TraceGLApi::glWaitSyncFn(GLsync sync, + GLbitfield flags, + GLuint64 timeout) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glWaitSync") + return gl_api_->glWaitSyncFn(sync, flags, timeout); +} + +void NoContextGLApi::glActiveTextureFn(GLenum texture) { + NOTREACHED() << "Trying to call glActiveTexture() without current GL context"; + LOG(ERROR) << "Trying to call glActiveTexture() without current GL context"; +} + +void NoContextGLApi::glAttachShaderFn(GLuint program, GLuint shader) { + NOTREACHED() << "Trying to call glAttachShader() without current GL context"; + LOG(ERROR) << "Trying to call glAttachShader() without current GL context"; +} + +void NoContextGLApi::glBeginQueryFn(GLenum target, GLuint id) { + NOTREACHED() << "Trying to call glBeginQuery() without current GL context"; + LOG(ERROR) << "Trying to call glBeginQuery() without current GL context"; +} + +void NoContextGLApi::glBeginQueryARBFn(GLenum target, GLuint id) { + NOTREACHED() << "Trying to call glBeginQueryARB() without current GL context"; + LOG(ERROR) << "Trying to call glBeginQueryARB() without current GL context"; +} + +void NoContextGLApi::glBeginTransformFeedbackFn(GLenum primitiveMode) { + NOTREACHED() + << "Trying to call glBeginTransformFeedback() without current GL context"; + LOG(ERROR) + << "Trying to call glBeginTransformFeedback() without current GL context"; +} + +void NoContextGLApi::glBindAttribLocationFn(GLuint program, + GLuint index, + const char* name) { + NOTREACHED() + << "Trying to call glBindAttribLocation() without current GL context"; + LOG(ERROR) + << "Trying to call glBindAttribLocation() without current GL context"; +} + +void NoContextGLApi::glBindBufferFn(GLenum target, GLuint buffer) { + NOTREACHED() << "Trying to call glBindBuffer() without current GL context"; + LOG(ERROR) << "Trying to call glBindBuffer() without current GL context"; +} + +void NoContextGLApi::glBindBufferBaseFn(GLenum target, + GLuint index, + GLuint buffer) { + NOTREACHED() + << "Trying to call glBindBufferBase() without current GL context"; + LOG(ERROR) << "Trying to call glBindBufferBase() without current GL context"; +} + +void NoContextGLApi::glBindBufferRangeFn(GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size) { + NOTREACHED() + << "Trying to call glBindBufferRange() without current GL context"; + LOG(ERROR) << "Trying to call glBindBufferRange() without current GL context"; +} + +void NoContextGLApi::glBindFragDataLocationFn(GLuint program, + GLuint colorNumber, + const char* name) { + NOTREACHED() + << "Trying to call glBindFragDataLocation() without current GL context"; + LOG(ERROR) + << "Trying to call glBindFragDataLocation() without current GL context"; +} + +void NoContextGLApi::glBindFragDataLocationIndexedFn(GLuint program, + GLuint colorNumber, + GLuint index, + const char* name) { + NOTREACHED() << "Trying to call glBindFragDataLocationIndexed() without " + "current GL context"; + LOG(ERROR) << "Trying to call glBindFragDataLocationIndexed() without " + "current GL context"; +} + +void NoContextGLApi::glBindFramebufferEXTFn(GLenum target, GLuint framebuffer) { + NOTREACHED() + << "Trying to call glBindFramebufferEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glBindFramebufferEXT() without current GL context"; +} + +void NoContextGLApi::glBindRenderbufferEXTFn(GLenum target, + GLuint renderbuffer) { + NOTREACHED() + << "Trying to call glBindRenderbufferEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glBindRenderbufferEXT() without current GL context"; +} + +void NoContextGLApi::glBindSamplerFn(GLuint unit, GLuint sampler) { + NOTREACHED() << "Trying to call glBindSampler() without current GL context"; + LOG(ERROR) << "Trying to call glBindSampler() without current GL context"; +} + +void NoContextGLApi::glBindTextureFn(GLenum target, GLuint texture) { + NOTREACHED() << "Trying to call glBindTexture() without current GL context"; + LOG(ERROR) << "Trying to call glBindTexture() without current GL context"; +} + +void NoContextGLApi::glBindTransformFeedbackFn(GLenum target, GLuint id) { + NOTREACHED() + << "Trying to call glBindTransformFeedback() without current GL context"; + LOG(ERROR) + << "Trying to call glBindTransformFeedback() without current GL context"; +} + +void NoContextGLApi::glBindVertexArrayOESFn(GLuint array) { + NOTREACHED() + << "Trying to call glBindVertexArrayOES() without current GL context"; + LOG(ERROR) + << "Trying to call glBindVertexArrayOES() without current GL context"; +} + +void NoContextGLApi::glBlendBarrierKHRFn(void) { + NOTREACHED() + << "Trying to call glBlendBarrierKHR() without current GL context"; + LOG(ERROR) << "Trying to call glBlendBarrierKHR() without current GL context"; +} + +void NoContextGLApi::glBlendColorFn(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) { + NOTREACHED() << "Trying to call glBlendColor() without current GL context"; + LOG(ERROR) << "Trying to call glBlendColor() without current GL context"; +} + +void NoContextGLApi::glBlendEquationFn(GLenum mode) { + NOTREACHED() << "Trying to call glBlendEquation() without current GL context"; + LOG(ERROR) << "Trying to call glBlendEquation() without current GL context"; +} + +void NoContextGLApi::glBlendEquationSeparateFn(GLenum modeRGB, + GLenum modeAlpha) { + NOTREACHED() + << "Trying to call glBlendEquationSeparate() without current GL context"; + LOG(ERROR) + << "Trying to call glBlendEquationSeparate() without current GL context"; +} + +void NoContextGLApi::glBlendFuncFn(GLenum sfactor, GLenum dfactor) { + NOTREACHED() << "Trying to call glBlendFunc() without current GL context"; + LOG(ERROR) << "Trying to call glBlendFunc() without current GL context"; +} + +void NoContextGLApi::glBlendFuncSeparateFn(GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha) { + NOTREACHED() + << "Trying to call glBlendFuncSeparate() without current GL context"; + LOG(ERROR) + << "Trying to call glBlendFuncSeparate() without current GL context"; +} + +void NoContextGLApi::glBlitFramebufferFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + NOTREACHED() + << "Trying to call glBlitFramebuffer() without current GL context"; + LOG(ERROR) << "Trying to call glBlitFramebuffer() without current GL context"; +} + +void NoContextGLApi::glBlitFramebufferANGLEFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + NOTREACHED() + << "Trying to call glBlitFramebufferANGLE() without current GL context"; + LOG(ERROR) + << "Trying to call glBlitFramebufferANGLE() without current GL context"; +} + +void NoContextGLApi::glBlitFramebufferEXTFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + NOTREACHED() + << "Trying to call glBlitFramebufferEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glBlitFramebufferEXT() without current GL context"; +} + +void NoContextGLApi::glBufferDataFn(GLenum target, + GLsizeiptr size, + const void* data, + GLenum usage) { + NOTREACHED() << "Trying to call glBufferData() without current GL context"; + LOG(ERROR) << "Trying to call glBufferData() without current GL context"; +} + +void NoContextGLApi::glBufferSubDataFn(GLenum target, + GLintptr offset, + GLsizeiptr size, + const void* data) { + NOTREACHED() << "Trying to call glBufferSubData() without current GL context"; + LOG(ERROR) << "Trying to call glBufferSubData() without current GL context"; +} + +GLenum NoContextGLApi::glCheckFramebufferStatusEXTFn(GLenum target) { + NOTREACHED() << "Trying to call glCheckFramebufferStatusEXT() without " + "current GL context"; + LOG(ERROR) << "Trying to call glCheckFramebufferStatusEXT() without current " + "GL context"; + return static_cast<GLenum>(0); +} + +void NoContextGLApi::glClearFn(GLbitfield mask) { + NOTREACHED() << "Trying to call glClear() without current GL context"; + LOG(ERROR) << "Trying to call glClear() without current GL context"; +} + +void NoContextGLApi::glClearBufferfiFn(GLenum buffer, + GLint drawbuffer, + const GLfloat depth, + GLint stencil) { + NOTREACHED() << "Trying to call glClearBufferfi() without current GL context"; + LOG(ERROR) << "Trying to call glClearBufferfi() without current GL context"; +} + +void NoContextGLApi::glClearBufferfvFn(GLenum buffer, + GLint drawbuffer, + const GLfloat* value) { + NOTREACHED() << "Trying to call glClearBufferfv() without current GL context"; + LOG(ERROR) << "Trying to call glClearBufferfv() without current GL context"; +} + +void NoContextGLApi::glClearBufferivFn(GLenum buffer, + GLint drawbuffer, + const GLint* value) { + NOTREACHED() << "Trying to call glClearBufferiv() without current GL context"; + LOG(ERROR) << "Trying to call glClearBufferiv() without current GL context"; +} + +void NoContextGLApi::glClearBufferuivFn(GLenum buffer, + GLint drawbuffer, + const GLuint* value) { + NOTREACHED() + << "Trying to call glClearBufferuiv() without current GL context"; + LOG(ERROR) << "Trying to call glClearBufferuiv() without current GL context"; +} + +void NoContextGLApi::glClearColorFn(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) { + NOTREACHED() << "Trying to call glClearColor() without current GL context"; + LOG(ERROR) << "Trying to call glClearColor() without current GL context"; +} + +void NoContextGLApi::glClearDepthFn(GLclampd depth) { + NOTREACHED() << "Trying to call glClearDepth() without current GL context"; + LOG(ERROR) << "Trying to call glClearDepth() without current GL context"; +} + +void NoContextGLApi::glClearDepthfFn(GLclampf depth) { + NOTREACHED() << "Trying to call glClearDepthf() without current GL context"; + LOG(ERROR) << "Trying to call glClearDepthf() without current GL context"; +} + +void NoContextGLApi::glClearStencilFn(GLint s) { + NOTREACHED() << "Trying to call glClearStencil() without current GL context"; + LOG(ERROR) << "Trying to call glClearStencil() without current GL context"; +} + +GLenum NoContextGLApi::glClientWaitSyncFn(GLsync sync, + GLbitfield flags, + GLuint64 timeout) { + NOTREACHED() + << "Trying to call glClientWaitSync() without current GL context"; + LOG(ERROR) << "Trying to call glClientWaitSync() without current GL context"; + return static_cast<GLenum>(0); +} + +void NoContextGLApi::glColorMaskFn(GLboolean red, + GLboolean green, + GLboolean blue, + GLboolean alpha) { + NOTREACHED() << "Trying to call glColorMask() without current GL context"; + LOG(ERROR) << "Trying to call glColorMask() without current GL context"; +} + +void NoContextGLApi::glCompileShaderFn(GLuint shader) { + NOTREACHED() << "Trying to call glCompileShader() without current GL context"; + LOG(ERROR) << "Trying to call glCompileShader() without current GL context"; +} + +void NoContextGLApi::glCompressedTexImage2DFn(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data) { + NOTREACHED() + << "Trying to call glCompressedTexImage2D() without current GL context"; + LOG(ERROR) + << "Trying to call glCompressedTexImage2D() without current GL context"; +} + +void NoContextGLApi::glCompressedTexImage3DFn(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data) { + NOTREACHED() + << "Trying to call glCompressedTexImage3D() without current GL context"; + LOG(ERROR) + << "Trying to call glCompressedTexImage3D() without current GL context"; +} + +void NoContextGLApi::glCompressedTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data) { + NOTREACHED() << "Trying to call glCompressedTexSubImage2D() without current " + "GL context"; + LOG(ERROR) << "Trying to call glCompressedTexSubImage2D() without current GL " + "context"; +} + +void NoContextGLApi::glCopyBufferSubDataFn(GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size) { + NOTREACHED() + << "Trying to call glCopyBufferSubData() without current GL context"; + LOG(ERROR) + << "Trying to call glCopyBufferSubData() without current GL context"; +} + +void NoContextGLApi::glCopyTexImage2DFn(GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border) { + NOTREACHED() + << "Trying to call glCopyTexImage2D() without current GL context"; + LOG(ERROR) << "Trying to call glCopyTexImage2D() without current GL context"; +} + +void NoContextGLApi::glCopyTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) { + NOTREACHED() + << "Trying to call glCopyTexSubImage2D() without current GL context"; + LOG(ERROR) + << "Trying to call glCopyTexSubImage2D() without current GL context"; +} + +void NoContextGLApi::glCopyTexSubImage3DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) { + NOTREACHED() + << "Trying to call glCopyTexSubImage3D() without current GL context"; + LOG(ERROR) + << "Trying to call glCopyTexSubImage3D() without current GL context"; +} + +GLuint NoContextGLApi::glCreateProgramFn(void) { + NOTREACHED() << "Trying to call glCreateProgram() without current GL context"; + LOG(ERROR) << "Trying to call glCreateProgram() without current GL context"; + return 0U; +} + +GLuint NoContextGLApi::glCreateShaderFn(GLenum type) { + NOTREACHED() << "Trying to call glCreateShader() without current GL context"; + LOG(ERROR) << "Trying to call glCreateShader() without current GL context"; + return 0U; +} + +void NoContextGLApi::glCullFaceFn(GLenum mode) { + NOTREACHED() << "Trying to call glCullFace() without current GL context"; + LOG(ERROR) << "Trying to call glCullFace() without current GL context"; +} + +void NoContextGLApi::glDeleteBuffersARBFn(GLsizei n, const GLuint* buffers) { + NOTREACHED() + << "Trying to call glDeleteBuffersARB() without current GL context"; + LOG(ERROR) + << "Trying to call glDeleteBuffersARB() without current GL context"; +} + +void NoContextGLApi::glDeleteFencesAPPLEFn(GLsizei n, const GLuint* fences) { + NOTREACHED() + << "Trying to call glDeleteFencesAPPLE() without current GL context"; + LOG(ERROR) + << "Trying to call glDeleteFencesAPPLE() without current GL context"; +} + +void NoContextGLApi::glDeleteFencesNVFn(GLsizei n, const GLuint* fences) { + NOTREACHED() + << "Trying to call glDeleteFencesNV() without current GL context"; + LOG(ERROR) << "Trying to call glDeleteFencesNV() without current GL context"; +} + +void NoContextGLApi::glDeleteFramebuffersEXTFn(GLsizei n, + const GLuint* framebuffers) { + NOTREACHED() + << "Trying to call glDeleteFramebuffersEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glDeleteFramebuffersEXT() without current GL context"; +} + +void NoContextGLApi::glDeleteProgramFn(GLuint program) { + NOTREACHED() << "Trying to call glDeleteProgram() without current GL context"; + LOG(ERROR) << "Trying to call glDeleteProgram() without current GL context"; +} + +void NoContextGLApi::glDeleteQueriesFn(GLsizei n, const GLuint* ids) { + NOTREACHED() << "Trying to call glDeleteQueries() without current GL context"; + LOG(ERROR) << "Trying to call glDeleteQueries() without current GL context"; +} + +void NoContextGLApi::glDeleteQueriesARBFn(GLsizei n, const GLuint* ids) { + NOTREACHED() + << "Trying to call glDeleteQueriesARB() without current GL context"; + LOG(ERROR) + << "Trying to call glDeleteQueriesARB() without current GL context"; +} + +void NoContextGLApi::glDeleteRenderbuffersEXTFn(GLsizei n, + const GLuint* renderbuffers) { + NOTREACHED() + << "Trying to call glDeleteRenderbuffersEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glDeleteRenderbuffersEXT() without current GL context"; +} + +void NoContextGLApi::glDeleteSamplersFn(GLsizei n, const GLuint* samplers) { + NOTREACHED() + << "Trying to call glDeleteSamplers() without current GL context"; + LOG(ERROR) << "Trying to call glDeleteSamplers() without current GL context"; +} + +void NoContextGLApi::glDeleteShaderFn(GLuint shader) { + NOTREACHED() << "Trying to call glDeleteShader() without current GL context"; + LOG(ERROR) << "Trying to call glDeleteShader() without current GL context"; +} + +void NoContextGLApi::glDeleteSyncFn(GLsync sync) { + NOTREACHED() << "Trying to call glDeleteSync() without current GL context"; + LOG(ERROR) << "Trying to call glDeleteSync() without current GL context"; +} + +void NoContextGLApi::glDeleteTexturesFn(GLsizei n, const GLuint* textures) { + NOTREACHED() + << "Trying to call glDeleteTextures() without current GL context"; + LOG(ERROR) << "Trying to call glDeleteTextures() without current GL context"; +} + +void NoContextGLApi::glDeleteTransformFeedbacksFn(GLsizei n, + const GLuint* ids) { + NOTREACHED() << "Trying to call glDeleteTransformFeedbacks() without current " + "GL context"; + LOG(ERROR) << "Trying to call glDeleteTransformFeedbacks() without current " + "GL context"; +} + +void NoContextGLApi::glDeleteVertexArraysOESFn(GLsizei n, + const GLuint* arrays) { + NOTREACHED() + << "Trying to call glDeleteVertexArraysOES() without current GL context"; + LOG(ERROR) + << "Trying to call glDeleteVertexArraysOES() without current GL context"; +} + +void NoContextGLApi::glDepthFuncFn(GLenum func) { + NOTREACHED() << "Trying to call glDepthFunc() without current GL context"; + LOG(ERROR) << "Trying to call glDepthFunc() without current GL context"; +} + +void NoContextGLApi::glDepthMaskFn(GLboolean flag) { + NOTREACHED() << "Trying to call glDepthMask() without current GL context"; + LOG(ERROR) << "Trying to call glDepthMask() without current GL context"; +} + +void NoContextGLApi::glDepthRangeFn(GLclampd zNear, GLclampd zFar) { + NOTREACHED() << "Trying to call glDepthRange() without current GL context"; + LOG(ERROR) << "Trying to call glDepthRange() without current GL context"; +} + +void NoContextGLApi::glDepthRangefFn(GLclampf zNear, GLclampf zFar) { + NOTREACHED() << "Trying to call glDepthRangef() without current GL context"; + LOG(ERROR) << "Trying to call glDepthRangef() without current GL context"; +} + +void NoContextGLApi::glDetachShaderFn(GLuint program, GLuint shader) { + NOTREACHED() << "Trying to call glDetachShader() without current GL context"; + LOG(ERROR) << "Trying to call glDetachShader() without current GL context"; +} + +void NoContextGLApi::glDisableFn(GLenum cap) { + NOTREACHED() << "Trying to call glDisable() without current GL context"; + LOG(ERROR) << "Trying to call glDisable() without current GL context"; +} + +void NoContextGLApi::glDisableVertexAttribArrayFn(GLuint index) { + NOTREACHED() << "Trying to call glDisableVertexAttribArray() without current " + "GL context"; + LOG(ERROR) << "Trying to call glDisableVertexAttribArray() without current " + "GL context"; +} + +void NoContextGLApi::glDiscardFramebufferEXTFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) { + NOTREACHED() + << "Trying to call glDiscardFramebufferEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glDiscardFramebufferEXT() without current GL context"; +} + +void NoContextGLApi::glDrawArraysFn(GLenum mode, GLint first, GLsizei count) { + NOTREACHED() << "Trying to call glDrawArrays() without current GL context"; + LOG(ERROR) << "Trying to call glDrawArrays() without current GL context"; +} + +void NoContextGLApi::glDrawArraysInstancedANGLEFn(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) { + NOTREACHED() << "Trying to call glDrawArraysInstancedANGLE() without current " + "GL context"; + LOG(ERROR) << "Trying to call glDrawArraysInstancedANGLE() without current " + "GL context"; +} + +void NoContextGLApi::glDrawBufferFn(GLenum mode) { + NOTREACHED() << "Trying to call glDrawBuffer() without current GL context"; + LOG(ERROR) << "Trying to call glDrawBuffer() without current GL context"; +} + +void NoContextGLApi::glDrawBuffersARBFn(GLsizei n, const GLenum* bufs) { + NOTREACHED() + << "Trying to call glDrawBuffersARB() without current GL context"; + LOG(ERROR) << "Trying to call glDrawBuffersARB() without current GL context"; +} + +void NoContextGLApi::glDrawElementsFn(GLenum mode, + GLsizei count, + GLenum type, + const void* indices) { + NOTREACHED() << "Trying to call glDrawElements() without current GL context"; + LOG(ERROR) << "Trying to call glDrawElements() without current GL context"; +} + +void NoContextGLApi::glDrawElementsInstancedANGLEFn(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) { + NOTREACHED() << "Trying to call glDrawElementsInstancedANGLE() without " + "current GL context"; + LOG(ERROR) << "Trying to call glDrawElementsInstancedANGLE() without current " + "GL context"; +} + +void NoContextGLApi::glDrawRangeElementsFn(GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices) { + NOTREACHED() + << "Trying to call glDrawRangeElements() without current GL context"; + LOG(ERROR) + << "Trying to call glDrawRangeElements() without current GL context"; +} + +void NoContextGLApi::glEGLImageTargetRenderbufferStorageOESFn( + GLenum target, + GLeglImageOES image) { + NOTREACHED() << "Trying to call glEGLImageTargetRenderbufferStorageOES() " + "without current GL context"; + LOG(ERROR) << "Trying to call glEGLImageTargetRenderbufferStorageOES() " + "without current GL context"; +} + +void NoContextGLApi::glEGLImageTargetTexture2DOESFn(GLenum target, + GLeglImageOES image) { + NOTREACHED() << "Trying to call glEGLImageTargetTexture2DOES() without " + "current GL context"; + LOG(ERROR) << "Trying to call glEGLImageTargetTexture2DOES() without current " + "GL context"; +} + +void NoContextGLApi::glEnableFn(GLenum cap) { + NOTREACHED() << "Trying to call glEnable() without current GL context"; + LOG(ERROR) << "Trying to call glEnable() without current GL context"; +} + +void NoContextGLApi::glEnableVertexAttribArrayFn(GLuint index) { + NOTREACHED() << "Trying to call glEnableVertexAttribArray() without current " + "GL context"; + LOG(ERROR) << "Trying to call glEnableVertexAttribArray() without current GL " + "context"; +} + +void NoContextGLApi::glEndQueryFn(GLenum target) { + NOTREACHED() << "Trying to call glEndQuery() without current GL context"; + LOG(ERROR) << "Trying to call glEndQuery() without current GL context"; +} + +void NoContextGLApi::glEndQueryARBFn(GLenum target) { + NOTREACHED() << "Trying to call glEndQueryARB() without current GL context"; + LOG(ERROR) << "Trying to call glEndQueryARB() without current GL context"; +} + +void NoContextGLApi::glEndTransformFeedbackFn(void) { + NOTREACHED() + << "Trying to call glEndTransformFeedback() without current GL context"; + LOG(ERROR) + << "Trying to call glEndTransformFeedback() without current GL context"; +} + +GLsync NoContextGLApi::glFenceSyncFn(GLenum condition, GLbitfield flags) { + NOTREACHED() << "Trying to call glFenceSync() without current GL context"; + LOG(ERROR) << "Trying to call glFenceSync() without current GL context"; + return NULL; +} + +void NoContextGLApi::glFinishFn(void) { + NOTREACHED() << "Trying to call glFinish() without current GL context"; + LOG(ERROR) << "Trying to call glFinish() without current GL context"; +} + +void NoContextGLApi::glFinishFenceAPPLEFn(GLuint fence) { + NOTREACHED() + << "Trying to call glFinishFenceAPPLE() without current GL context"; + LOG(ERROR) + << "Trying to call glFinishFenceAPPLE() without current GL context"; +} + +void NoContextGLApi::glFinishFenceNVFn(GLuint fence) { + NOTREACHED() << "Trying to call glFinishFenceNV() without current GL context"; + LOG(ERROR) << "Trying to call glFinishFenceNV() without current GL context"; +} + +void NoContextGLApi::glFlushFn(void) { + NOTREACHED() << "Trying to call glFlush() without current GL context"; + LOG(ERROR) << "Trying to call glFlush() without current GL context"; +} + +void NoContextGLApi::glFlushMappedBufferRangeFn(GLenum target, + GLintptr offset, + GLsizeiptr length) { + NOTREACHED() + << "Trying to call glFlushMappedBufferRange() without current GL context"; + LOG(ERROR) + << "Trying to call glFlushMappedBufferRange() without current GL context"; +} + +void NoContextGLApi::glFramebufferRenderbufferEXTFn(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer) { + NOTREACHED() << "Trying to call glFramebufferRenderbufferEXT() without " + "current GL context"; + LOG(ERROR) << "Trying to call glFramebufferRenderbufferEXT() without current " + "GL context"; +} + +void NoContextGLApi::glFramebufferTexture2DEXTFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level) { + NOTREACHED() << "Trying to call glFramebufferTexture2DEXT() without current " + "GL context"; + LOG(ERROR) << "Trying to call glFramebufferTexture2DEXT() without current GL " + "context"; +} + +void NoContextGLApi::glFramebufferTexture2DMultisampleEXTFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) { + NOTREACHED() << "Trying to call glFramebufferTexture2DMultisampleEXT() " + "without current GL context"; + LOG(ERROR) << "Trying to call glFramebufferTexture2DMultisampleEXT() without " + "current GL context"; +} + +void NoContextGLApi::glFramebufferTexture2DMultisampleIMGFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) { + NOTREACHED() << "Trying to call glFramebufferTexture2DMultisampleIMG() " + "without current GL context"; + LOG(ERROR) << "Trying to call glFramebufferTexture2DMultisampleIMG() without " + "current GL context"; +} + +void NoContextGLApi::glFramebufferTextureLayerFn(GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer) { + NOTREACHED() << "Trying to call glFramebufferTextureLayer() without current " + "GL context"; + LOG(ERROR) << "Trying to call glFramebufferTextureLayer() without current GL " + "context"; +} + +void NoContextGLApi::glFrontFaceFn(GLenum mode) { + NOTREACHED() << "Trying to call glFrontFace() without current GL context"; + LOG(ERROR) << "Trying to call glFrontFace() without current GL context"; +} + +void NoContextGLApi::glGenBuffersARBFn(GLsizei n, GLuint* buffers) { + NOTREACHED() << "Trying to call glGenBuffersARB() without current GL context"; + LOG(ERROR) << "Trying to call glGenBuffersARB() without current GL context"; +} + +void NoContextGLApi::glGenerateMipmapEXTFn(GLenum target) { + NOTREACHED() + << "Trying to call glGenerateMipmapEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glGenerateMipmapEXT() without current GL context"; +} + +void NoContextGLApi::glGenFencesAPPLEFn(GLsizei n, GLuint* fences) { + NOTREACHED() + << "Trying to call glGenFencesAPPLE() without current GL context"; + LOG(ERROR) << "Trying to call glGenFencesAPPLE() without current GL context"; +} + +void NoContextGLApi::glGenFencesNVFn(GLsizei n, GLuint* fences) { + NOTREACHED() << "Trying to call glGenFencesNV() without current GL context"; + LOG(ERROR) << "Trying to call glGenFencesNV() without current GL context"; +} + +void NoContextGLApi::glGenFramebuffersEXTFn(GLsizei n, GLuint* framebuffers) { + NOTREACHED() + << "Trying to call glGenFramebuffersEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glGenFramebuffersEXT() without current GL context"; +} + +void NoContextGLApi::glGenQueriesFn(GLsizei n, GLuint* ids) { + NOTREACHED() << "Trying to call glGenQueries() without current GL context"; + LOG(ERROR) << "Trying to call glGenQueries() without current GL context"; +} + +void NoContextGLApi::glGenQueriesARBFn(GLsizei n, GLuint* ids) { + NOTREACHED() << "Trying to call glGenQueriesARB() without current GL context"; + LOG(ERROR) << "Trying to call glGenQueriesARB() without current GL context"; +} + +void NoContextGLApi::glGenRenderbuffersEXTFn(GLsizei n, GLuint* renderbuffers) { + NOTREACHED() + << "Trying to call glGenRenderbuffersEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glGenRenderbuffersEXT() without current GL context"; +} + +void NoContextGLApi::glGenSamplersFn(GLsizei n, GLuint* samplers) { + NOTREACHED() << "Trying to call glGenSamplers() without current GL context"; + LOG(ERROR) << "Trying to call glGenSamplers() without current GL context"; +} + +void NoContextGLApi::glGenTexturesFn(GLsizei n, GLuint* textures) { + NOTREACHED() << "Trying to call glGenTextures() without current GL context"; + LOG(ERROR) << "Trying to call glGenTextures() without current GL context"; +} + +void NoContextGLApi::glGenTransformFeedbacksFn(GLsizei n, GLuint* ids) { + NOTREACHED() + << "Trying to call glGenTransformFeedbacks() without current GL context"; + LOG(ERROR) + << "Trying to call glGenTransformFeedbacks() without current GL context"; +} + +void NoContextGLApi::glGenVertexArraysOESFn(GLsizei n, GLuint* arrays) { + NOTREACHED() + << "Trying to call glGenVertexArraysOES() without current GL context"; + LOG(ERROR) + << "Trying to call glGenVertexArraysOES() without current GL context"; +} + +void NoContextGLApi::glGetActiveAttribFn(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) { + NOTREACHED() + << "Trying to call glGetActiveAttrib() without current GL context"; + LOG(ERROR) << "Trying to call glGetActiveAttrib() without current GL context"; +} + +void NoContextGLApi::glGetActiveUniformFn(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) { + NOTREACHED() + << "Trying to call glGetActiveUniform() without current GL context"; + LOG(ERROR) + << "Trying to call glGetActiveUniform() without current GL context"; +} + +void NoContextGLApi::glGetActiveUniformBlockivFn(GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params) { + NOTREACHED() << "Trying to call glGetActiveUniformBlockiv() without current " + "GL context"; + LOG(ERROR) << "Trying to call glGetActiveUniformBlockiv() without current GL " + "context"; +} + +void NoContextGLApi::glGetActiveUniformBlockNameFn(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + char* uniformBlockName) { + NOTREACHED() << "Trying to call glGetActiveUniformBlockName() without " + "current GL context"; + LOG(ERROR) << "Trying to call glGetActiveUniformBlockName() without current " + "GL context"; +} + +void NoContextGLApi::glGetActiveUniformsivFn(GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params) { + NOTREACHED() + << "Trying to call glGetActiveUniformsiv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetActiveUniformsiv() without current GL context"; +} + +void NoContextGLApi::glGetAttachedShadersFn(GLuint program, + GLsizei maxcount, + GLsizei* count, + GLuint* shaders) { + NOTREACHED() + << "Trying to call glGetAttachedShaders() without current GL context"; + LOG(ERROR) + << "Trying to call glGetAttachedShaders() without current GL context"; +} + +GLint NoContextGLApi::glGetAttribLocationFn(GLuint program, const char* name) { + NOTREACHED() + << "Trying to call glGetAttribLocation() without current GL context"; + LOG(ERROR) + << "Trying to call glGetAttribLocation() without current GL context"; + return 0; +} + +void NoContextGLApi::glGetBooleanvFn(GLenum pname, GLboolean* params) { + NOTREACHED() << "Trying to call glGetBooleanv() without current GL context"; + LOG(ERROR) << "Trying to call glGetBooleanv() without current GL context"; +} + +void NoContextGLApi::glGetBufferParameterivFn(GLenum target, + GLenum pname, + GLint* params) { + NOTREACHED() + << "Trying to call glGetBufferParameteriv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetBufferParameteriv() without current GL context"; +} + +GLenum NoContextGLApi::glGetErrorFn(void) { + NOTREACHED() << "Trying to call glGetError() without current GL context"; + LOG(ERROR) << "Trying to call glGetError() without current GL context"; + return static_cast<GLenum>(0); +} + +void NoContextGLApi::glGetFenceivNVFn(GLuint fence, + GLenum pname, + GLint* params) { + NOTREACHED() << "Trying to call glGetFenceivNV() without current GL context"; + LOG(ERROR) << "Trying to call glGetFenceivNV() without current GL context"; +} + +void NoContextGLApi::glGetFloatvFn(GLenum pname, GLfloat* params) { + NOTREACHED() << "Trying to call glGetFloatv() without current GL context"; + LOG(ERROR) << "Trying to call glGetFloatv() without current GL context"; +} + +GLint NoContextGLApi::glGetFragDataLocationFn(GLuint program, + const char* name) { + NOTREACHED() + << "Trying to call glGetFragDataLocation() without current GL context"; + LOG(ERROR) + << "Trying to call glGetFragDataLocation() without current GL context"; + return 0; +} + +void NoContextGLApi::glGetFramebufferAttachmentParameterivEXTFn( + GLenum target, + GLenum attachment, + GLenum pname, + GLint* params) { + NOTREACHED() << "Trying to call glGetFramebufferAttachmentParameterivEXT() " + "without current GL context"; + LOG(ERROR) << "Trying to call glGetFramebufferAttachmentParameterivEXT() " + "without current GL context"; +} + +GLenum NoContextGLApi::glGetGraphicsResetStatusARBFn(void) { + NOTREACHED() << "Trying to call glGetGraphicsResetStatusARB() without " + "current GL context"; + LOG(ERROR) << "Trying to call glGetGraphicsResetStatusARB() without current " + "GL context"; + return static_cast<GLenum>(0); +} + +void NoContextGLApi::glGetInteger64i_vFn(GLenum target, + GLuint index, + GLint64* data) { + NOTREACHED() + << "Trying to call glGetInteger64i_v() without current GL context"; + LOG(ERROR) << "Trying to call glGetInteger64i_v() without current GL context"; +} + +void NoContextGLApi::glGetInteger64vFn(GLenum pname, GLint64* params) { + NOTREACHED() << "Trying to call glGetInteger64v() without current GL context"; + LOG(ERROR) << "Trying to call glGetInteger64v() without current GL context"; +} + +void NoContextGLApi::glGetIntegeri_vFn(GLenum target, + GLuint index, + GLint* data) { + NOTREACHED() << "Trying to call glGetIntegeri_v() without current GL context"; + LOG(ERROR) << "Trying to call glGetIntegeri_v() without current GL context"; +} + +void NoContextGLApi::glGetIntegervFn(GLenum pname, GLint* params) { + NOTREACHED() << "Trying to call glGetIntegerv() without current GL context"; + LOG(ERROR) << "Trying to call glGetIntegerv() without current GL context"; +} + +void NoContextGLApi::glGetInternalformativFn(GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei bufSize, + GLint* params) { + NOTREACHED() + << "Trying to call glGetInternalformativ() without current GL context"; + LOG(ERROR) + << "Trying to call glGetInternalformativ() without current GL context"; +} + +void NoContextGLApi::glGetProgramBinaryFn(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary) { + NOTREACHED() + << "Trying to call glGetProgramBinary() without current GL context"; + LOG(ERROR) + << "Trying to call glGetProgramBinary() without current GL context"; +} + +void NoContextGLApi::glGetProgramInfoLogFn(GLuint program, + GLsizei bufsize, + GLsizei* length, + char* infolog) { + NOTREACHED() + << "Trying to call glGetProgramInfoLog() without current GL context"; + LOG(ERROR) + << "Trying to call glGetProgramInfoLog() without current GL context"; +} + +void NoContextGLApi::glGetProgramivFn(GLuint program, + GLenum pname, + GLint* params) { + NOTREACHED() << "Trying to call glGetProgramiv() without current GL context"; + LOG(ERROR) << "Trying to call glGetProgramiv() without current GL context"; +} + +void NoContextGLApi::glGetQueryivFn(GLenum target, + GLenum pname, + GLint* params) { + NOTREACHED() << "Trying to call glGetQueryiv() without current GL context"; + LOG(ERROR) << "Trying to call glGetQueryiv() without current GL context"; +} + +void NoContextGLApi::glGetQueryivARBFn(GLenum target, + GLenum pname, + GLint* params) { + NOTREACHED() << "Trying to call glGetQueryivARB() without current GL context"; + LOG(ERROR) << "Trying to call glGetQueryivARB() without current GL context"; +} + +void NoContextGLApi::glGetQueryObjecti64vFn(GLuint id, + GLenum pname, + GLint64* params) { + NOTREACHED() + << "Trying to call glGetQueryObjecti64v() without current GL context"; + LOG(ERROR) + << "Trying to call glGetQueryObjecti64v() without current GL context"; +} + +void NoContextGLApi::glGetQueryObjectivFn(GLuint id, + GLenum pname, + GLint* params) { + NOTREACHED() + << "Trying to call glGetQueryObjectiv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetQueryObjectiv() without current GL context"; +} + +void NoContextGLApi::glGetQueryObjectivARBFn(GLuint id, + GLenum pname, + GLint* params) { + NOTREACHED() + << "Trying to call glGetQueryObjectivARB() without current GL context"; + LOG(ERROR) + << "Trying to call glGetQueryObjectivARB() without current GL context"; +} + +void NoContextGLApi::glGetQueryObjectui64vFn(GLuint id, + GLenum pname, + GLuint64* params) { + NOTREACHED() + << "Trying to call glGetQueryObjectui64v() without current GL context"; + LOG(ERROR) + << "Trying to call glGetQueryObjectui64v() without current GL context"; +} + +void NoContextGLApi::glGetQueryObjectuivFn(GLuint id, + GLenum pname, + GLuint* params) { + NOTREACHED() + << "Trying to call glGetQueryObjectuiv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetQueryObjectuiv() without current GL context"; +} + +void NoContextGLApi::glGetQueryObjectuivARBFn(GLuint id, + GLenum pname, + GLuint* params) { + NOTREACHED() + << "Trying to call glGetQueryObjectuivARB() without current GL context"; + LOG(ERROR) + << "Trying to call glGetQueryObjectuivARB() without current GL context"; +} + +void NoContextGLApi::glGetRenderbufferParameterivEXTFn(GLenum target, + GLenum pname, + GLint* params) { + NOTREACHED() << "Trying to call glGetRenderbufferParameterivEXT() without " + "current GL context"; + LOG(ERROR) << "Trying to call glGetRenderbufferParameterivEXT() without " + "current GL context"; +} + +void NoContextGLApi::glGetSamplerParameterfvFn(GLuint sampler, + GLenum pname, + GLfloat* params) { + NOTREACHED() + << "Trying to call glGetSamplerParameterfv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetSamplerParameterfv() without current GL context"; +} + +void NoContextGLApi::glGetSamplerParameterivFn(GLuint sampler, + GLenum pname, + GLint* params) { + NOTREACHED() + << "Trying to call glGetSamplerParameteriv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetSamplerParameteriv() without current GL context"; +} + +void NoContextGLApi::glGetShaderInfoLogFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* infolog) { + NOTREACHED() + << "Trying to call glGetShaderInfoLog() without current GL context"; + LOG(ERROR) + << "Trying to call glGetShaderInfoLog() without current GL context"; +} + +void NoContextGLApi::glGetShaderivFn(GLuint shader, + GLenum pname, + GLint* params) { + NOTREACHED() << "Trying to call glGetShaderiv() without current GL context"; + LOG(ERROR) << "Trying to call glGetShaderiv() without current GL context"; +} + +void NoContextGLApi::glGetShaderPrecisionFormatFn(GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision) { + NOTREACHED() << "Trying to call glGetShaderPrecisionFormat() without current " + "GL context"; + LOG(ERROR) << "Trying to call glGetShaderPrecisionFormat() without current " + "GL context"; +} + +void NoContextGLApi::glGetShaderSourceFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) { + NOTREACHED() + << "Trying to call glGetShaderSource() without current GL context"; + LOG(ERROR) << "Trying to call glGetShaderSource() without current GL context"; +} + +const GLubyte* NoContextGLApi::glGetStringFn(GLenum name) { + NOTREACHED() << "Trying to call glGetString() without current GL context"; + LOG(ERROR) << "Trying to call glGetString() without current GL context"; + return NULL; +} + +void NoContextGLApi::glGetSyncivFn(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values) { + NOTREACHED() << "Trying to call glGetSynciv() without current GL context"; + LOG(ERROR) << "Trying to call glGetSynciv() without current GL context"; +} + +void NoContextGLApi::glGetTexLevelParameterfvFn(GLenum target, + GLint level, + GLenum pname, + GLfloat* params) { + NOTREACHED() + << "Trying to call glGetTexLevelParameterfv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetTexLevelParameterfv() without current GL context"; +} + +void NoContextGLApi::glGetTexLevelParameterivFn(GLenum target, + GLint level, + GLenum pname, + GLint* params) { + NOTREACHED() + << "Trying to call glGetTexLevelParameteriv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetTexLevelParameteriv() without current GL context"; +} + +void NoContextGLApi::glGetTexParameterfvFn(GLenum target, + GLenum pname, + GLfloat* params) { + NOTREACHED() + << "Trying to call glGetTexParameterfv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetTexParameterfv() without current GL context"; +} + +void NoContextGLApi::glGetTexParameterivFn(GLenum target, + GLenum pname, + GLint* params) { + NOTREACHED() + << "Trying to call glGetTexParameteriv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetTexParameteriv() without current GL context"; +} + +void NoContextGLApi::glGetTransformFeedbackVaryingFn(GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLenum* type, + char* name) { + NOTREACHED() << "Trying to call glGetTransformFeedbackVarying() without " + "current GL context"; + LOG(ERROR) << "Trying to call glGetTransformFeedbackVarying() without " + "current GL context"; +} + +void NoContextGLApi::glGetTranslatedShaderSourceANGLEFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) { + NOTREACHED() << "Trying to call glGetTranslatedShaderSourceANGLE() without " + "current GL context"; + LOG(ERROR) << "Trying to call glGetTranslatedShaderSourceANGLE() without " + "current GL context"; +} + +GLuint NoContextGLApi::glGetUniformBlockIndexFn(GLuint program, + const char* uniformBlockName) { + NOTREACHED() + << "Trying to call glGetUniformBlockIndex() without current GL context"; + LOG(ERROR) + << "Trying to call glGetUniformBlockIndex() without current GL context"; + return 0U; +} + +void NoContextGLApi::glGetUniformfvFn(GLuint program, + GLint location, + GLfloat* params) { + NOTREACHED() << "Trying to call glGetUniformfv() without current GL context"; + LOG(ERROR) << "Trying to call glGetUniformfv() without current GL context"; +} + +void NoContextGLApi::glGetUniformIndicesFn(GLuint program, + GLsizei uniformCount, + const char* const* uniformNames, + GLuint* uniformIndices) { + NOTREACHED() + << "Trying to call glGetUniformIndices() without current GL context"; + LOG(ERROR) + << "Trying to call glGetUniformIndices() without current GL context"; +} + +void NoContextGLApi::glGetUniformivFn(GLuint program, + GLint location, + GLint* params) { + NOTREACHED() << "Trying to call glGetUniformiv() without current GL context"; + LOG(ERROR) << "Trying to call glGetUniformiv() without current GL context"; +} + +GLint NoContextGLApi::glGetUniformLocationFn(GLuint program, const char* name) { + NOTREACHED() + << "Trying to call glGetUniformLocation() without current GL context"; + LOG(ERROR) + << "Trying to call glGetUniformLocation() without current GL context"; + return 0; +} + +void NoContextGLApi::glGetVertexAttribfvFn(GLuint index, + GLenum pname, + GLfloat* params) { + NOTREACHED() + << "Trying to call glGetVertexAttribfv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetVertexAttribfv() without current GL context"; +} + +void NoContextGLApi::glGetVertexAttribivFn(GLuint index, + GLenum pname, + GLint* params) { + NOTREACHED() + << "Trying to call glGetVertexAttribiv() without current GL context"; + LOG(ERROR) + << "Trying to call glGetVertexAttribiv() without current GL context"; +} + +void NoContextGLApi::glGetVertexAttribPointervFn(GLuint index, + GLenum pname, + void** pointer) { + NOTREACHED() << "Trying to call glGetVertexAttribPointerv() without current " + "GL context"; + LOG(ERROR) << "Trying to call glGetVertexAttribPointerv() without current GL " + "context"; +} + +void NoContextGLApi::glHintFn(GLenum target, GLenum mode) { + NOTREACHED() << "Trying to call glHint() without current GL context"; + LOG(ERROR) << "Trying to call glHint() without current GL context"; +} + +void NoContextGLApi::glInsertEventMarkerEXTFn(GLsizei length, + const char* marker) { + NOTREACHED() + << "Trying to call glInsertEventMarkerEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glInsertEventMarkerEXT() without current GL context"; +} + +void NoContextGLApi::glInvalidateFramebufferFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) { + NOTREACHED() + << "Trying to call glInvalidateFramebuffer() without current GL context"; + LOG(ERROR) + << "Trying to call glInvalidateFramebuffer() without current GL context"; +} + +void NoContextGLApi::glInvalidateSubFramebufferFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLint width, + GLint height) { + NOTREACHED() << "Trying to call glInvalidateSubFramebuffer() without current " + "GL context"; + LOG(ERROR) << "Trying to call glInvalidateSubFramebuffer() without current " + "GL context"; +} + +GLboolean NoContextGLApi::glIsBufferFn(GLuint buffer) { + NOTREACHED() << "Trying to call glIsBuffer() without current GL context"; + LOG(ERROR) << "Trying to call glIsBuffer() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsEnabledFn(GLenum cap) { + NOTREACHED() << "Trying to call glIsEnabled() without current GL context"; + LOG(ERROR) << "Trying to call glIsEnabled() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsFenceAPPLEFn(GLuint fence) { + NOTREACHED() << "Trying to call glIsFenceAPPLE() without current GL context"; + LOG(ERROR) << "Trying to call glIsFenceAPPLE() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsFenceNVFn(GLuint fence) { + NOTREACHED() << "Trying to call glIsFenceNV() without current GL context"; + LOG(ERROR) << "Trying to call glIsFenceNV() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsFramebufferEXTFn(GLuint framebuffer) { + NOTREACHED() + << "Trying to call glIsFramebufferEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glIsFramebufferEXT() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsProgramFn(GLuint program) { + NOTREACHED() << "Trying to call glIsProgram() without current GL context"; + LOG(ERROR) << "Trying to call glIsProgram() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsQueryFn(GLuint query) { + NOTREACHED() << "Trying to call glIsQuery() without current GL context"; + LOG(ERROR) << "Trying to call glIsQuery() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsQueryARBFn(GLuint query) { + NOTREACHED() << "Trying to call glIsQueryARB() without current GL context"; + LOG(ERROR) << "Trying to call glIsQueryARB() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsRenderbufferEXTFn(GLuint renderbuffer) { + NOTREACHED() + << "Trying to call glIsRenderbufferEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glIsRenderbufferEXT() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsSamplerFn(GLuint sampler) { + NOTREACHED() << "Trying to call glIsSampler() without current GL context"; + LOG(ERROR) << "Trying to call glIsSampler() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsShaderFn(GLuint shader) { + NOTREACHED() << "Trying to call glIsShader() without current GL context"; + LOG(ERROR) << "Trying to call glIsShader() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsSyncFn(GLsync sync) { + NOTREACHED() << "Trying to call glIsSync() without current GL context"; + LOG(ERROR) << "Trying to call glIsSync() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsTextureFn(GLuint texture) { + NOTREACHED() << "Trying to call glIsTexture() without current GL context"; + LOG(ERROR) << "Trying to call glIsTexture() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsTransformFeedbackFn(GLuint id) { + NOTREACHED() + << "Trying to call glIsTransformFeedback() without current GL context"; + LOG(ERROR) + << "Trying to call glIsTransformFeedback() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glIsVertexArrayOESFn(GLuint array) { + NOTREACHED() + << "Trying to call glIsVertexArrayOES() without current GL context"; + LOG(ERROR) + << "Trying to call glIsVertexArrayOES() without current GL context"; + return GL_FALSE; +} + +void NoContextGLApi::glLineWidthFn(GLfloat width) { + NOTREACHED() << "Trying to call glLineWidth() without current GL context"; + LOG(ERROR) << "Trying to call glLineWidth() without current GL context"; +} + +void NoContextGLApi::glLinkProgramFn(GLuint program) { + NOTREACHED() << "Trying to call glLinkProgram() without current GL context"; + LOG(ERROR) << "Trying to call glLinkProgram() without current GL context"; +} + +void* NoContextGLApi::glMapBufferFn(GLenum target, GLenum access) { + NOTREACHED() << "Trying to call glMapBuffer() without current GL context"; + LOG(ERROR) << "Trying to call glMapBuffer() without current GL context"; + return NULL; +} + +void* NoContextGLApi::glMapBufferRangeFn(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access) { + NOTREACHED() + << "Trying to call glMapBufferRange() without current GL context"; + LOG(ERROR) << "Trying to call glMapBufferRange() without current GL context"; + return NULL; +} + +void NoContextGLApi::glMatrixLoadfEXTFn(GLenum matrixMode, const GLfloat* m) { + NOTREACHED() + << "Trying to call glMatrixLoadfEXT() without current GL context"; + LOG(ERROR) << "Trying to call glMatrixLoadfEXT() without current GL context"; +} + +void NoContextGLApi::glMatrixLoadIdentityEXTFn(GLenum matrixMode) { + NOTREACHED() + << "Trying to call glMatrixLoadIdentityEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glMatrixLoadIdentityEXT() without current GL context"; +} + +void NoContextGLApi::glPauseTransformFeedbackFn(void) { + NOTREACHED() + << "Trying to call glPauseTransformFeedback() without current GL context"; + LOG(ERROR) + << "Trying to call glPauseTransformFeedback() without current GL context"; +} + +void NoContextGLApi::glPixelStoreiFn(GLenum pname, GLint param) { + NOTREACHED() << "Trying to call glPixelStorei() without current GL context"; + LOG(ERROR) << "Trying to call glPixelStorei() without current GL context"; +} + +void NoContextGLApi::glPointParameteriFn(GLenum pname, GLint param) { + NOTREACHED() + << "Trying to call glPointParameteri() without current GL context"; + LOG(ERROR) << "Trying to call glPointParameteri() without current GL context"; +} + +void NoContextGLApi::glPolygonOffsetFn(GLfloat factor, GLfloat units) { + NOTREACHED() << "Trying to call glPolygonOffset() without current GL context"; + LOG(ERROR) << "Trying to call glPolygonOffset() without current GL context"; +} + +void NoContextGLApi::glPopGroupMarkerEXTFn(void) { + NOTREACHED() + << "Trying to call glPopGroupMarkerEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glPopGroupMarkerEXT() without current GL context"; +} + +void NoContextGLApi::glProgramBinaryFn(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length) { + NOTREACHED() << "Trying to call glProgramBinary() without current GL context"; + LOG(ERROR) << "Trying to call glProgramBinary() without current GL context"; +} + +void NoContextGLApi::glProgramParameteriFn(GLuint program, + GLenum pname, + GLint value) { + NOTREACHED() + << "Trying to call glProgramParameteri() without current GL context"; + LOG(ERROR) + << "Trying to call glProgramParameteri() without current GL context"; +} + +void NoContextGLApi::glPushGroupMarkerEXTFn(GLsizei length, + const char* marker) { + NOTREACHED() + << "Trying to call glPushGroupMarkerEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glPushGroupMarkerEXT() without current GL context"; +} + +void NoContextGLApi::glQueryCounterFn(GLuint id, GLenum target) { + NOTREACHED() << "Trying to call glQueryCounter() without current GL context"; + LOG(ERROR) << "Trying to call glQueryCounter() without current GL context"; +} + +void NoContextGLApi::glReadBufferFn(GLenum src) { + NOTREACHED() << "Trying to call glReadBuffer() without current GL context"; + LOG(ERROR) << "Trying to call glReadBuffer() without current GL context"; +} + +void NoContextGLApi::glReadPixelsFn(GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels) { + NOTREACHED() << "Trying to call glReadPixels() without current GL context"; + LOG(ERROR) << "Trying to call glReadPixels() without current GL context"; +} + +void NoContextGLApi::glReleaseShaderCompilerFn(void) { + NOTREACHED() + << "Trying to call glReleaseShaderCompiler() without current GL context"; + LOG(ERROR) + << "Trying to call glReleaseShaderCompiler() without current GL context"; +} + +void NoContextGLApi::glRenderbufferStorageEXTFn(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height) { + NOTREACHED() + << "Trying to call glRenderbufferStorageEXT() without current GL context"; + LOG(ERROR) + << "Trying to call glRenderbufferStorageEXT() without current GL context"; +} + +void NoContextGLApi::glRenderbufferStorageMultisampleFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + NOTREACHED() << "Trying to call glRenderbufferStorageMultisample() without " + "current GL context"; + LOG(ERROR) << "Trying to call glRenderbufferStorageMultisample() without " + "current GL context"; +} + +void NoContextGLApi::glRenderbufferStorageMultisampleANGLEFn( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + NOTREACHED() << "Trying to call glRenderbufferStorageMultisampleANGLE() " + "without current GL context"; + LOG(ERROR) << "Trying to call glRenderbufferStorageMultisampleANGLE() " + "without current GL context"; +} + +void NoContextGLApi::glRenderbufferStorageMultisampleEXTFn( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + NOTREACHED() << "Trying to call glRenderbufferStorageMultisampleEXT() " + "without current GL context"; + LOG(ERROR) << "Trying to call glRenderbufferStorageMultisampleEXT() without " + "current GL context"; +} + +void NoContextGLApi::glRenderbufferStorageMultisampleIMGFn( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + NOTREACHED() << "Trying to call glRenderbufferStorageMultisampleIMG() " + "without current GL context"; + LOG(ERROR) << "Trying to call glRenderbufferStorageMultisampleIMG() without " + "current GL context"; +} + +void NoContextGLApi::glResumeTransformFeedbackFn(void) { + NOTREACHED() << "Trying to call glResumeTransformFeedback() without current " + "GL context"; + LOG(ERROR) << "Trying to call glResumeTransformFeedback() without current GL " + "context"; +} + +void NoContextGLApi::glSampleCoverageFn(GLclampf value, GLboolean invert) { + NOTREACHED() + << "Trying to call glSampleCoverage() without current GL context"; + LOG(ERROR) << "Trying to call glSampleCoverage() without current GL context"; +} + +void NoContextGLApi::glSamplerParameterfFn(GLuint sampler, + GLenum pname, + GLfloat param) { + NOTREACHED() + << "Trying to call glSamplerParameterf() without current GL context"; + LOG(ERROR) + << "Trying to call glSamplerParameterf() without current GL context"; +} + +void NoContextGLApi::glSamplerParameterfvFn(GLuint sampler, + GLenum pname, + const GLfloat* params) { + NOTREACHED() + << "Trying to call glSamplerParameterfv() without current GL context"; + LOG(ERROR) + << "Trying to call glSamplerParameterfv() without current GL context"; +} + +void NoContextGLApi::glSamplerParameteriFn(GLuint sampler, + GLenum pname, + GLint param) { + NOTREACHED() + << "Trying to call glSamplerParameteri() without current GL context"; + LOG(ERROR) + << "Trying to call glSamplerParameteri() without current GL context"; +} + +void NoContextGLApi::glSamplerParameterivFn(GLuint sampler, + GLenum pname, + const GLint* params) { + NOTREACHED() + << "Trying to call glSamplerParameteriv() without current GL context"; + LOG(ERROR) + << "Trying to call glSamplerParameteriv() without current GL context"; +} + +void NoContextGLApi::glScissorFn(GLint x, + GLint y, + GLsizei width, + GLsizei height) { + NOTREACHED() << "Trying to call glScissor() without current GL context"; + LOG(ERROR) << "Trying to call glScissor() without current GL context"; +} + +void NoContextGLApi::glSetFenceAPPLEFn(GLuint fence) { + NOTREACHED() << "Trying to call glSetFenceAPPLE() without current GL context"; + LOG(ERROR) << "Trying to call glSetFenceAPPLE() without current GL context"; +} + +void NoContextGLApi::glSetFenceNVFn(GLuint fence, GLenum condition) { + NOTREACHED() << "Trying to call glSetFenceNV() without current GL context"; + LOG(ERROR) << "Trying to call glSetFenceNV() without current GL context"; +} + +void NoContextGLApi::glShaderBinaryFn(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length) { + NOTREACHED() << "Trying to call glShaderBinary() without current GL context"; + LOG(ERROR) << "Trying to call glShaderBinary() without current GL context"; +} + +void NoContextGLApi::glShaderSourceFn(GLuint shader, + GLsizei count, + const char* const* str, + const GLint* length) { + NOTREACHED() << "Trying to call glShaderSource() without current GL context"; + LOG(ERROR) << "Trying to call glShaderSource() without current GL context"; +} + +void NoContextGLApi::glStencilFuncFn(GLenum func, GLint ref, GLuint mask) { + NOTREACHED() << "Trying to call glStencilFunc() without current GL context"; + LOG(ERROR) << "Trying to call glStencilFunc() without current GL context"; +} + +void NoContextGLApi::glStencilFuncSeparateFn(GLenum face, + GLenum func, + GLint ref, + GLuint mask) { + NOTREACHED() + << "Trying to call glStencilFuncSeparate() without current GL context"; + LOG(ERROR) + << "Trying to call glStencilFuncSeparate() without current GL context"; +} + +void NoContextGLApi::glStencilMaskFn(GLuint mask) { + NOTREACHED() << "Trying to call glStencilMask() without current GL context"; + LOG(ERROR) << "Trying to call glStencilMask() without current GL context"; +} + +void NoContextGLApi::glStencilMaskSeparateFn(GLenum face, GLuint mask) { + NOTREACHED() + << "Trying to call glStencilMaskSeparate() without current GL context"; + LOG(ERROR) + << "Trying to call glStencilMaskSeparate() without current GL context"; +} + +void NoContextGLApi::glStencilOpFn(GLenum fail, GLenum zfail, GLenum zpass) { + NOTREACHED() << "Trying to call glStencilOp() without current GL context"; + LOG(ERROR) << "Trying to call glStencilOp() without current GL context"; +} + +void NoContextGLApi::glStencilOpSeparateFn(GLenum face, + GLenum fail, + GLenum zfail, + GLenum zpass) { + NOTREACHED() + << "Trying to call glStencilOpSeparate() without current GL context"; + LOG(ERROR) + << "Trying to call glStencilOpSeparate() without current GL context"; +} + +GLboolean NoContextGLApi::glTestFenceAPPLEFn(GLuint fence) { + NOTREACHED() + << "Trying to call glTestFenceAPPLE() without current GL context"; + LOG(ERROR) << "Trying to call glTestFenceAPPLE() without current GL context"; + return GL_FALSE; +} + +GLboolean NoContextGLApi::glTestFenceNVFn(GLuint fence) { + NOTREACHED() << "Trying to call glTestFenceNV() without current GL context"; + LOG(ERROR) << "Trying to call glTestFenceNV() without current GL context"; + return GL_FALSE; +} + +void NoContextGLApi::glTexImage2DFn(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels) { + NOTREACHED() << "Trying to call glTexImage2D() without current GL context"; + LOG(ERROR) << "Trying to call glTexImage2D() without current GL context"; +} + +void NoContextGLApi::glTexImage3DFn(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels) { + NOTREACHED() << "Trying to call glTexImage3D() without current GL context"; + LOG(ERROR) << "Trying to call glTexImage3D() without current GL context"; +} + +void NoContextGLApi::glTexParameterfFn(GLenum target, + GLenum pname, + GLfloat param) { + NOTREACHED() << "Trying to call glTexParameterf() without current GL context"; + LOG(ERROR) << "Trying to call glTexParameterf() without current GL context"; +} + +void NoContextGLApi::glTexParameterfvFn(GLenum target, + GLenum pname, + const GLfloat* params) { + NOTREACHED() + << "Trying to call glTexParameterfv() without current GL context"; + LOG(ERROR) << "Trying to call glTexParameterfv() without current GL context"; +} + +void NoContextGLApi::glTexParameteriFn(GLenum target, + GLenum pname, + GLint param) { + NOTREACHED() << "Trying to call glTexParameteri() without current GL context"; + LOG(ERROR) << "Trying to call glTexParameteri() without current GL context"; +} + +void NoContextGLApi::glTexParameterivFn(GLenum target, + GLenum pname, + const GLint* params) { + NOTREACHED() + << "Trying to call glTexParameteriv() without current GL context"; + LOG(ERROR) << "Trying to call glTexParameteriv() without current GL context"; +} + +void NoContextGLApi::glTexStorage2DEXTFn(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height) { + NOTREACHED() + << "Trying to call glTexStorage2DEXT() without current GL context"; + LOG(ERROR) << "Trying to call glTexStorage2DEXT() without current GL context"; +} + +void NoContextGLApi::glTexStorage3DFn(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth) { + NOTREACHED() << "Trying to call glTexStorage3D() without current GL context"; + LOG(ERROR) << "Trying to call glTexStorage3D() without current GL context"; +} + +void NoContextGLApi::glTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels) { + NOTREACHED() << "Trying to call glTexSubImage2D() without current GL context"; + LOG(ERROR) << "Trying to call glTexSubImage2D() without current GL context"; +} + +void NoContextGLApi::glTransformFeedbackVaryingsFn(GLuint program, + GLsizei count, + const char* const* varyings, + GLenum bufferMode) { + NOTREACHED() << "Trying to call glTransformFeedbackVaryings() without " + "current GL context"; + LOG(ERROR) << "Trying to call glTransformFeedbackVaryings() without current " + "GL context"; +} + +void NoContextGLApi::glUniform1fFn(GLint location, GLfloat x) { + NOTREACHED() << "Trying to call glUniform1f() without current GL context"; + LOG(ERROR) << "Trying to call glUniform1f() without current GL context"; +} + +void NoContextGLApi::glUniform1fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + NOTREACHED() << "Trying to call glUniform1fv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform1fv() without current GL context"; +} + +void NoContextGLApi::glUniform1iFn(GLint location, GLint x) { + NOTREACHED() << "Trying to call glUniform1i() without current GL context"; + LOG(ERROR) << "Trying to call glUniform1i() without current GL context"; +} + +void NoContextGLApi::glUniform1ivFn(GLint location, + GLsizei count, + const GLint* v) { + NOTREACHED() << "Trying to call glUniform1iv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform1iv() without current GL context"; +} + +void NoContextGLApi::glUniform1uiFn(GLint location, GLuint v0) { + NOTREACHED() << "Trying to call glUniform1ui() without current GL context"; + LOG(ERROR) << "Trying to call glUniform1ui() without current GL context"; +} + +void NoContextGLApi::glUniform1uivFn(GLint location, + GLsizei count, + const GLuint* v) { + NOTREACHED() << "Trying to call glUniform1uiv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform1uiv() without current GL context"; +} + +void NoContextGLApi::glUniform2fFn(GLint location, GLfloat x, GLfloat y) { + NOTREACHED() << "Trying to call glUniform2f() without current GL context"; + LOG(ERROR) << "Trying to call glUniform2f() without current GL context"; +} + +void NoContextGLApi::glUniform2fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + NOTREACHED() << "Trying to call glUniform2fv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform2fv() without current GL context"; +} + +void NoContextGLApi::glUniform2iFn(GLint location, GLint x, GLint y) { + NOTREACHED() << "Trying to call glUniform2i() without current GL context"; + LOG(ERROR) << "Trying to call glUniform2i() without current GL context"; +} + +void NoContextGLApi::glUniform2ivFn(GLint location, + GLsizei count, + const GLint* v) { + NOTREACHED() << "Trying to call glUniform2iv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform2iv() without current GL context"; +} + +void NoContextGLApi::glUniform2uiFn(GLint location, GLuint v0, GLuint v1) { + NOTREACHED() << "Trying to call glUniform2ui() without current GL context"; + LOG(ERROR) << "Trying to call glUniform2ui() without current GL context"; +} + +void NoContextGLApi::glUniform2uivFn(GLint location, + GLsizei count, + const GLuint* v) { + NOTREACHED() << "Trying to call glUniform2uiv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform2uiv() without current GL context"; +} + +void NoContextGLApi::glUniform3fFn(GLint location, + GLfloat x, + GLfloat y, + GLfloat z) { + NOTREACHED() << "Trying to call glUniform3f() without current GL context"; + LOG(ERROR) << "Trying to call glUniform3f() without current GL context"; +} + +void NoContextGLApi::glUniform3fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + NOTREACHED() << "Trying to call glUniform3fv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform3fv() without current GL context"; +} + +void NoContextGLApi::glUniform3iFn(GLint location, GLint x, GLint y, GLint z) { + NOTREACHED() << "Trying to call glUniform3i() without current GL context"; + LOG(ERROR) << "Trying to call glUniform3i() without current GL context"; +} + +void NoContextGLApi::glUniform3ivFn(GLint location, + GLsizei count, + const GLint* v) { + NOTREACHED() << "Trying to call glUniform3iv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform3iv() without current GL context"; +} + +void NoContextGLApi::glUniform3uiFn(GLint location, + GLuint v0, + GLuint v1, + GLuint v2) { + NOTREACHED() << "Trying to call glUniform3ui() without current GL context"; + LOG(ERROR) << "Trying to call glUniform3ui() without current GL context"; +} + +void NoContextGLApi::glUniform3uivFn(GLint location, + GLsizei count, + const GLuint* v) { + NOTREACHED() << "Trying to call glUniform3uiv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform3uiv() without current GL context"; +} + +void NoContextGLApi::glUniform4fFn(GLint location, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) { + NOTREACHED() << "Trying to call glUniform4f() without current GL context"; + LOG(ERROR) << "Trying to call glUniform4f() without current GL context"; +} + +void NoContextGLApi::glUniform4fvFn(GLint location, + GLsizei count, + const GLfloat* v) { + NOTREACHED() << "Trying to call glUniform4fv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform4fv() without current GL context"; +} + +void NoContextGLApi::glUniform4iFn(GLint location, + GLint x, + GLint y, + GLint z, + GLint w) { + NOTREACHED() << "Trying to call glUniform4i() without current GL context"; + LOG(ERROR) << "Trying to call glUniform4i() without current GL context"; +} + +void NoContextGLApi::glUniform4ivFn(GLint location, + GLsizei count, + const GLint* v) { + NOTREACHED() << "Trying to call glUniform4iv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform4iv() without current GL context"; +} + +void NoContextGLApi::glUniform4uiFn(GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3) { + NOTREACHED() << "Trying to call glUniform4ui() without current GL context"; + LOG(ERROR) << "Trying to call glUniform4ui() without current GL context"; +} + +void NoContextGLApi::glUniform4uivFn(GLint location, + GLsizei count, + const GLuint* v) { + NOTREACHED() << "Trying to call glUniform4uiv() without current GL context"; + LOG(ERROR) << "Trying to call glUniform4uiv() without current GL context"; +} + +void NoContextGLApi::glUniformBlockBindingFn(GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding) { + NOTREACHED() + << "Trying to call glUniformBlockBinding() without current GL context"; + LOG(ERROR) + << "Trying to call glUniformBlockBinding() without current GL context"; +} + +void NoContextGLApi::glUniformMatrix2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + NOTREACHED() + << "Trying to call glUniformMatrix2fv() without current GL context"; + LOG(ERROR) + << "Trying to call glUniformMatrix2fv() without current GL context"; +} + +void NoContextGLApi::glUniformMatrix2x3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + NOTREACHED() + << "Trying to call glUniformMatrix2x3fv() without current GL context"; + LOG(ERROR) + << "Trying to call glUniformMatrix2x3fv() without current GL context"; +} + +void NoContextGLApi::glUniformMatrix2x4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + NOTREACHED() + << "Trying to call glUniformMatrix2x4fv() without current GL context"; + LOG(ERROR) + << "Trying to call glUniformMatrix2x4fv() without current GL context"; +} + +void NoContextGLApi::glUniformMatrix3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + NOTREACHED() + << "Trying to call glUniformMatrix3fv() without current GL context"; + LOG(ERROR) + << "Trying to call glUniformMatrix3fv() without current GL context"; +} + +void NoContextGLApi::glUniformMatrix3x2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + NOTREACHED() + << "Trying to call glUniformMatrix3x2fv() without current GL context"; + LOG(ERROR) + << "Trying to call glUniformMatrix3x2fv() without current GL context"; +} + +void NoContextGLApi::glUniformMatrix3x4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + NOTREACHED() + << "Trying to call glUniformMatrix3x4fv() without current GL context"; + LOG(ERROR) + << "Trying to call glUniformMatrix3x4fv() without current GL context"; +} + +void NoContextGLApi::glUniformMatrix4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + NOTREACHED() + << "Trying to call glUniformMatrix4fv() without current GL context"; + LOG(ERROR) + << "Trying to call glUniformMatrix4fv() without current GL context"; +} + +void NoContextGLApi::glUniformMatrix4x2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + NOTREACHED() + << "Trying to call glUniformMatrix4x2fv() without current GL context"; + LOG(ERROR) + << "Trying to call glUniformMatrix4x2fv() without current GL context"; +} + +void NoContextGLApi::glUniformMatrix4x3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + NOTREACHED() + << "Trying to call glUniformMatrix4x3fv() without current GL context"; + LOG(ERROR) + << "Trying to call glUniformMatrix4x3fv() without current GL context"; +} + +GLboolean NoContextGLApi::glUnmapBufferFn(GLenum target) { + NOTREACHED() << "Trying to call glUnmapBuffer() without current GL context"; + LOG(ERROR) << "Trying to call glUnmapBuffer() without current GL context"; + return GL_FALSE; +} + +void NoContextGLApi::glUseProgramFn(GLuint program) { + NOTREACHED() << "Trying to call glUseProgram() without current GL context"; + LOG(ERROR) << "Trying to call glUseProgram() without current GL context"; +} + +void NoContextGLApi::glValidateProgramFn(GLuint program) { + NOTREACHED() + << "Trying to call glValidateProgram() without current GL context"; + LOG(ERROR) << "Trying to call glValidateProgram() without current GL context"; +} + +void NoContextGLApi::glVertexAttrib1fFn(GLuint indx, GLfloat x) { + NOTREACHED() + << "Trying to call glVertexAttrib1f() without current GL context"; + LOG(ERROR) << "Trying to call glVertexAttrib1f() without current GL context"; +} + +void NoContextGLApi::glVertexAttrib1fvFn(GLuint indx, const GLfloat* values) { + NOTREACHED() + << "Trying to call glVertexAttrib1fv() without current GL context"; + LOG(ERROR) << "Trying to call glVertexAttrib1fv() without current GL context"; +} + +void NoContextGLApi::glVertexAttrib2fFn(GLuint indx, GLfloat x, GLfloat y) { + NOTREACHED() + << "Trying to call glVertexAttrib2f() without current GL context"; + LOG(ERROR) << "Trying to call glVertexAttrib2f() without current GL context"; +} + +void NoContextGLApi::glVertexAttrib2fvFn(GLuint indx, const GLfloat* values) { + NOTREACHED() + << "Trying to call glVertexAttrib2fv() without current GL context"; + LOG(ERROR) << "Trying to call glVertexAttrib2fv() without current GL context"; +} + +void NoContextGLApi::glVertexAttrib3fFn(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z) { + NOTREACHED() + << "Trying to call glVertexAttrib3f() without current GL context"; + LOG(ERROR) << "Trying to call glVertexAttrib3f() without current GL context"; +} + +void NoContextGLApi::glVertexAttrib3fvFn(GLuint indx, const GLfloat* values) { + NOTREACHED() + << "Trying to call glVertexAttrib3fv() without current GL context"; + LOG(ERROR) << "Trying to call glVertexAttrib3fv() without current GL context"; +} + +void NoContextGLApi::glVertexAttrib4fFn(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) { + NOTREACHED() + << "Trying to call glVertexAttrib4f() without current GL context"; + LOG(ERROR) << "Trying to call glVertexAttrib4f() without current GL context"; +} + +void NoContextGLApi::glVertexAttrib4fvFn(GLuint indx, const GLfloat* values) { + NOTREACHED() + << "Trying to call glVertexAttrib4fv() without current GL context"; + LOG(ERROR) << "Trying to call glVertexAttrib4fv() without current GL context"; +} + +void NoContextGLApi::glVertexAttribDivisorANGLEFn(GLuint index, + GLuint divisor) { + NOTREACHED() << "Trying to call glVertexAttribDivisorANGLE() without current " + "GL context"; + LOG(ERROR) << "Trying to call glVertexAttribDivisorANGLE() without current " + "GL context"; +} + +void NoContextGLApi::glVertexAttribI4iFn(GLuint indx, + GLint x, + GLint y, + GLint z, + GLint w) { + NOTREACHED() + << "Trying to call glVertexAttribI4i() without current GL context"; + LOG(ERROR) << "Trying to call glVertexAttribI4i() without current GL context"; +} + +void NoContextGLApi::glVertexAttribI4ivFn(GLuint indx, const GLint* values) { + NOTREACHED() + << "Trying to call glVertexAttribI4iv() without current GL context"; + LOG(ERROR) + << "Trying to call glVertexAttribI4iv() without current GL context"; +} + +void NoContextGLApi::glVertexAttribI4uiFn(GLuint indx, + GLuint x, + GLuint y, + GLuint z, + GLuint w) { + NOTREACHED() + << "Trying to call glVertexAttribI4ui() without current GL context"; + LOG(ERROR) + << "Trying to call glVertexAttribI4ui() without current GL context"; +} + +void NoContextGLApi::glVertexAttribI4uivFn(GLuint indx, const GLuint* values) { + NOTREACHED() + << "Trying to call glVertexAttribI4uiv() without current GL context"; + LOG(ERROR) + << "Trying to call glVertexAttribI4uiv() without current GL context"; +} + +void NoContextGLApi::glVertexAttribIPointerFn(GLuint indx, + GLint size, + GLenum type, + GLsizei stride, + const void* ptr) { + NOTREACHED() + << "Trying to call glVertexAttribIPointer() without current GL context"; + LOG(ERROR) + << "Trying to call glVertexAttribIPointer() without current GL context"; +} + +void NoContextGLApi::glVertexAttribPointerFn(GLuint indx, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* ptr) { + NOTREACHED() + << "Trying to call glVertexAttribPointer() without current GL context"; + LOG(ERROR) + << "Trying to call glVertexAttribPointer() without current GL context"; +} + +void NoContextGLApi::glViewportFn(GLint x, + GLint y, + GLsizei width, + GLsizei height) { + NOTREACHED() << "Trying to call glViewport() without current GL context"; + LOG(ERROR) << "Trying to call glViewport() without current GL context"; +} + +GLenum NoContextGLApi::glWaitSyncFn(GLsync sync, + GLbitfield flags, + GLuint64 timeout) { + NOTREACHED() << "Trying to call glWaitSync() without current GL context"; + LOG(ERROR) << "Trying to call glWaitSync() without current GL context"; + return static_cast<GLenum>(0); +} + +} // namespace gfx
diff --git a/ui/gl/gl_bindings_autogen_gl.h b/ui/gl/gl_bindings_autogen_gl.h new file mode 100644 index 0000000..eb66b4a --- /dev/null +++ b/ui/gl/gl_bindings_autogen_gl.h
@@ -0,0 +1,2380 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_GL_H_ +#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_GL_H_ + +namespace gfx { + +class GLContext; + +typedef void(GL_BINDING_CALL* glActiveTextureProc)(GLenum texture); +typedef void(GL_BINDING_CALL* glAttachShaderProc)(GLuint program, + GLuint shader); +typedef void(GL_BINDING_CALL* glBeginQueryProc)(GLenum target, GLuint id); +typedef void(GL_BINDING_CALL* glBeginQueryARBProc)(GLenum target, GLuint id); +typedef void(GL_BINDING_CALL* glBeginTransformFeedbackProc)( + GLenum primitiveMode); +typedef void(GL_BINDING_CALL* glBindAttribLocationProc)(GLuint program, + GLuint index, + const char* name); +typedef void(GL_BINDING_CALL* glBindBufferProc)(GLenum target, GLuint buffer); +typedef void(GL_BINDING_CALL* glBindBufferBaseProc)(GLenum target, + GLuint index, + GLuint buffer); +typedef void(GL_BINDING_CALL* glBindBufferRangeProc)(GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size); +typedef void(GL_BINDING_CALL* glBindFragDataLocationProc)(GLuint program, + GLuint colorNumber, + const char* name); +typedef void(GL_BINDING_CALL* glBindFragDataLocationIndexedProc)( + GLuint program, + GLuint colorNumber, + GLuint index, + const char* name); +typedef void(GL_BINDING_CALL* glBindFramebufferEXTProc)(GLenum target, + GLuint framebuffer); +typedef void(GL_BINDING_CALL* glBindRenderbufferEXTProc)(GLenum target, + GLuint renderbuffer); +typedef void(GL_BINDING_CALL* glBindSamplerProc)(GLuint unit, GLuint sampler); +typedef void(GL_BINDING_CALL* glBindTextureProc)(GLenum target, GLuint texture); +typedef void(GL_BINDING_CALL* glBindTransformFeedbackProc)(GLenum target, + GLuint id); +typedef void(GL_BINDING_CALL* glBindVertexArrayOESProc)(GLuint array); +typedef void(GL_BINDING_CALL* glBlendBarrierKHRProc)(void); +typedef void(GL_BINDING_CALL* glBlendColorProc)(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha); +typedef void(GL_BINDING_CALL* glBlendEquationProc)(GLenum mode); +typedef void(GL_BINDING_CALL* glBlendEquationSeparateProc)(GLenum modeRGB, + GLenum modeAlpha); +typedef void(GL_BINDING_CALL* glBlendFuncProc)(GLenum sfactor, GLenum dfactor); +typedef void(GL_BINDING_CALL* glBlendFuncSeparateProc)(GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha); +typedef void(GL_BINDING_CALL* glBlitFramebufferProc)(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter); +typedef void(GL_BINDING_CALL* glBlitFramebufferANGLEProc)(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter); +typedef void(GL_BINDING_CALL* glBlitFramebufferEXTProc)(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter); +typedef void(GL_BINDING_CALL* glBufferDataProc)(GLenum target, + GLsizeiptr size, + const void* data, + GLenum usage); +typedef void(GL_BINDING_CALL* glBufferSubDataProc)(GLenum target, + GLintptr offset, + GLsizeiptr size, + const void* data); +typedef GLenum(GL_BINDING_CALL* glCheckFramebufferStatusEXTProc)(GLenum target); +typedef void(GL_BINDING_CALL* glClearProc)(GLbitfield mask); +typedef void(GL_BINDING_CALL* glClearBufferfiProc)(GLenum buffer, + GLint drawbuffer, + const GLfloat depth, + GLint stencil); +typedef void(GL_BINDING_CALL* glClearBufferfvProc)(GLenum buffer, + GLint drawbuffer, + const GLfloat* value); +typedef void(GL_BINDING_CALL* glClearBufferivProc)(GLenum buffer, + GLint drawbuffer, + const GLint* value); +typedef void(GL_BINDING_CALL* glClearBufferuivProc)(GLenum buffer, + GLint drawbuffer, + const GLuint* value); +typedef void(GL_BINDING_CALL* glClearColorProc)(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha); +typedef void(GL_BINDING_CALL* glClearDepthProc)(GLclampd depth); +typedef void(GL_BINDING_CALL* glClearDepthfProc)(GLclampf depth); +typedef void(GL_BINDING_CALL* glClearStencilProc)(GLint s); +typedef GLenum(GL_BINDING_CALL* glClientWaitSyncProc)(GLsync sync, + GLbitfield flags, + GLuint64 timeout); +typedef void(GL_BINDING_CALL* glColorMaskProc)(GLboolean red, + GLboolean green, + GLboolean blue, + GLboolean alpha); +typedef void(GL_BINDING_CALL* glCompileShaderProc)(GLuint shader); +typedef void(GL_BINDING_CALL* glCompressedTexImage2DProc)(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data); +typedef void(GL_BINDING_CALL* glCompressedTexImage3DProc)(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data); +typedef void(GL_BINDING_CALL* glCompressedTexSubImage2DProc)(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data); +typedef void(GL_BINDING_CALL* glCopyBufferSubDataProc)(GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size); +typedef void(GL_BINDING_CALL* glCopyTexImage2DProc)(GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border); +typedef void(GL_BINDING_CALL* glCopyTexSubImage2DProc)(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height); +typedef void(GL_BINDING_CALL* glCopyTexSubImage3DProc)(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height); +typedef GLuint(GL_BINDING_CALL* glCreateProgramProc)(void); +typedef GLuint(GL_BINDING_CALL* glCreateShaderProc)(GLenum type); +typedef void(GL_BINDING_CALL* glCullFaceProc)(GLenum mode); +typedef void(GL_BINDING_CALL* glDeleteBuffersARBProc)(GLsizei n, + const GLuint* buffers); +typedef void(GL_BINDING_CALL* glDeleteFencesAPPLEProc)(GLsizei n, + const GLuint* fences); +typedef void(GL_BINDING_CALL* glDeleteFencesNVProc)(GLsizei n, + const GLuint* fences); +typedef void(GL_BINDING_CALL* glDeleteFramebuffersEXTProc)( + GLsizei n, + const GLuint* framebuffers); +typedef void(GL_BINDING_CALL* glDeleteProgramProc)(GLuint program); +typedef void(GL_BINDING_CALL* glDeleteQueriesProc)(GLsizei n, + const GLuint* ids); +typedef void(GL_BINDING_CALL* glDeleteQueriesARBProc)(GLsizei n, + const GLuint* ids); +typedef void(GL_BINDING_CALL* glDeleteRenderbuffersEXTProc)( + GLsizei n, + const GLuint* renderbuffers); +typedef void(GL_BINDING_CALL* glDeleteSamplersProc)(GLsizei n, + const GLuint* samplers); +typedef void(GL_BINDING_CALL* glDeleteShaderProc)(GLuint shader); +typedef void(GL_BINDING_CALL* glDeleteSyncProc)(GLsync sync); +typedef void(GL_BINDING_CALL* glDeleteTexturesProc)(GLsizei n, + const GLuint* textures); +typedef void(GL_BINDING_CALL* glDeleteTransformFeedbacksProc)( + GLsizei n, + const GLuint* ids); +typedef void(GL_BINDING_CALL* glDeleteVertexArraysOESProc)( + GLsizei n, + const GLuint* arrays); +typedef void(GL_BINDING_CALL* glDepthFuncProc)(GLenum func); +typedef void(GL_BINDING_CALL* glDepthMaskProc)(GLboolean flag); +typedef void(GL_BINDING_CALL* glDepthRangeProc)(GLclampd zNear, GLclampd zFar); +typedef void(GL_BINDING_CALL* glDepthRangefProc)(GLclampf zNear, GLclampf zFar); +typedef void(GL_BINDING_CALL* glDetachShaderProc)(GLuint program, + GLuint shader); +typedef void(GL_BINDING_CALL* glDisableProc)(GLenum cap); +typedef void(GL_BINDING_CALL* glDisableVertexAttribArrayProc)(GLuint index); +typedef void(GL_BINDING_CALL* glDiscardFramebufferEXTProc)( + GLenum target, + GLsizei numAttachments, + const GLenum* attachments); +typedef void(GL_BINDING_CALL* glDrawArraysProc)(GLenum mode, + GLint first, + GLsizei count); +typedef void(GL_BINDING_CALL* glDrawArraysInstancedANGLEProc)( + GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount); +typedef void(GL_BINDING_CALL* glDrawBufferProc)(GLenum mode); +typedef void(GL_BINDING_CALL* glDrawBuffersARBProc)(GLsizei n, + const GLenum* bufs); +typedef void(GL_BINDING_CALL* glDrawElementsProc)(GLenum mode, + GLsizei count, + GLenum type, + const void* indices); +typedef void(GL_BINDING_CALL* glDrawElementsInstancedANGLEProc)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount); +typedef void(GL_BINDING_CALL* glDrawRangeElementsProc)(GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices); +typedef void(GL_BINDING_CALL* glEGLImageTargetRenderbufferStorageOESProc)( + GLenum target, + GLeglImageOES image); +typedef void(GL_BINDING_CALL* glEGLImageTargetTexture2DOESProc)( + GLenum target, + GLeglImageOES image); +typedef void(GL_BINDING_CALL* glEnableProc)(GLenum cap); +typedef void(GL_BINDING_CALL* glEnableVertexAttribArrayProc)(GLuint index); +typedef void(GL_BINDING_CALL* glEndQueryProc)(GLenum target); +typedef void(GL_BINDING_CALL* glEndQueryARBProc)(GLenum target); +typedef void(GL_BINDING_CALL* glEndTransformFeedbackProc)(void); +typedef GLsync(GL_BINDING_CALL* glFenceSyncProc)(GLenum condition, + GLbitfield flags); +typedef void(GL_BINDING_CALL* glFinishProc)(void); +typedef void(GL_BINDING_CALL* glFinishFenceAPPLEProc)(GLuint fence); +typedef void(GL_BINDING_CALL* glFinishFenceNVProc)(GLuint fence); +typedef void(GL_BINDING_CALL* glFlushProc)(void); +typedef void(GL_BINDING_CALL* glFlushMappedBufferRangeProc)(GLenum target, + GLintptr offset, + GLsizeiptr length); +typedef void(GL_BINDING_CALL* glFramebufferRenderbufferEXTProc)( + GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(GL_BINDING_CALL* glFramebufferTexture2DEXTProc)(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level); +typedef void(GL_BINDING_CALL* glFramebufferTexture2DMultisampleEXTProc)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples); +typedef void(GL_BINDING_CALL* glFramebufferTexture2DMultisampleIMGProc)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples); +typedef void(GL_BINDING_CALL* glFramebufferTextureLayerProc)(GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer); +typedef void(GL_BINDING_CALL* glFrontFaceProc)(GLenum mode); +typedef void(GL_BINDING_CALL* glGenBuffersARBProc)(GLsizei n, GLuint* buffers); +typedef void(GL_BINDING_CALL* glGenerateMipmapEXTProc)(GLenum target); +typedef void(GL_BINDING_CALL* glGenFencesAPPLEProc)(GLsizei n, GLuint* fences); +typedef void(GL_BINDING_CALL* glGenFencesNVProc)(GLsizei n, GLuint* fences); +typedef void(GL_BINDING_CALL* glGenFramebuffersEXTProc)(GLsizei n, + GLuint* framebuffers); +typedef void(GL_BINDING_CALL* glGenQueriesProc)(GLsizei n, GLuint* ids); +typedef void(GL_BINDING_CALL* glGenQueriesARBProc)(GLsizei n, GLuint* ids); +typedef void(GL_BINDING_CALL* glGenRenderbuffersEXTProc)(GLsizei n, + GLuint* renderbuffers); +typedef void(GL_BINDING_CALL* glGenSamplersProc)(GLsizei n, GLuint* samplers); +typedef void(GL_BINDING_CALL* glGenTexturesProc)(GLsizei n, GLuint* textures); +typedef void(GL_BINDING_CALL* glGenTransformFeedbacksProc)(GLsizei n, + GLuint* ids); +typedef void(GL_BINDING_CALL* glGenVertexArraysOESProc)(GLsizei n, + GLuint* arrays); +typedef void(GL_BINDING_CALL* glGetActiveAttribProc)(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name); +typedef void(GL_BINDING_CALL* glGetActiveUniformProc)(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name); +typedef void(GL_BINDING_CALL* glGetActiveUniformBlockivProc)( + GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetActiveUniformBlockNameProc)( + GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + char* uniformBlockName); +typedef void(GL_BINDING_CALL* glGetActiveUniformsivProc)( + GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetAttachedShadersProc)(GLuint program, + GLsizei maxcount, + GLsizei* count, + GLuint* shaders); +typedef GLint(GL_BINDING_CALL* glGetAttribLocationProc)(GLuint program, + const char* name); +typedef void(GL_BINDING_CALL* glGetBooleanvProc)(GLenum pname, + GLboolean* params); +typedef void(GL_BINDING_CALL* glGetBufferParameterivProc)(GLenum target, + GLenum pname, + GLint* params); +typedef GLenum(GL_BINDING_CALL* glGetErrorProc)(void); +typedef void(GL_BINDING_CALL* glGetFenceivNVProc)(GLuint fence, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetFloatvProc)(GLenum pname, GLfloat* params); +typedef GLint(GL_BINDING_CALL* glGetFragDataLocationProc)(GLuint program, + const char* name); +typedef void(GL_BINDING_CALL* glGetFramebufferAttachmentParameterivEXTProc)( + GLenum target, + GLenum attachment, + GLenum pname, + GLint* params); +typedef GLenum(GL_BINDING_CALL* glGetGraphicsResetStatusARBProc)(void); +typedef void(GL_BINDING_CALL* glGetInteger64i_vProc)(GLenum target, + GLuint index, + GLint64* data); +typedef void(GL_BINDING_CALL* glGetInteger64vProc)(GLenum pname, + GLint64* params); +typedef void(GL_BINDING_CALL* glGetIntegeri_vProc)(GLenum target, + GLuint index, + GLint* data); +typedef void(GL_BINDING_CALL* glGetIntegervProc)(GLenum pname, GLint* params); +typedef void(GL_BINDING_CALL* glGetInternalformativProc)(GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei bufSize, + GLint* params); +typedef void(GL_BINDING_CALL* glGetProgramBinaryProc)(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary); +typedef void(GL_BINDING_CALL* glGetProgramInfoLogProc)(GLuint program, + GLsizei bufsize, + GLsizei* length, + char* infolog); +typedef void(GL_BINDING_CALL* glGetProgramivProc)(GLuint program, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetQueryivProc)(GLenum target, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetQueryivARBProc)(GLenum target, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetQueryObjecti64vProc)(GLuint id, + GLenum pname, + GLint64* params); +typedef void(GL_BINDING_CALL* glGetQueryObjectivProc)(GLuint id, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetQueryObjectivARBProc)(GLuint id, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetQueryObjectui64vProc)(GLuint id, + GLenum pname, + GLuint64* params); +typedef void(GL_BINDING_CALL* glGetQueryObjectuivProc)(GLuint id, + GLenum pname, + GLuint* params); +typedef void(GL_BINDING_CALL* glGetQueryObjectuivARBProc)(GLuint id, + GLenum pname, + GLuint* params); +typedef void(GL_BINDING_CALL* glGetRenderbufferParameterivEXTProc)( + GLenum target, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetSamplerParameterfvProc)(GLuint sampler, + GLenum pname, + GLfloat* params); +typedef void(GL_BINDING_CALL* glGetSamplerParameterivProc)(GLuint sampler, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetShaderInfoLogProc)(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* infolog); +typedef void(GL_BINDING_CALL* glGetShaderivProc)(GLuint shader, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetShaderPrecisionFormatProc)( + GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision); +typedef void(GL_BINDING_CALL* glGetShaderSourceProc)(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source); +typedef const GLubyte*(GL_BINDING_CALL* glGetStringProc)(GLenum name); +typedef void(GL_BINDING_CALL* glGetSyncivProc)(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values); +typedef void(GL_BINDING_CALL* glGetTexLevelParameterfvProc)(GLenum target, + GLint level, + GLenum pname, + GLfloat* params); +typedef void(GL_BINDING_CALL* glGetTexLevelParameterivProc)(GLenum target, + GLint level, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetTexParameterfvProc)(GLenum target, + GLenum pname, + GLfloat* params); +typedef void(GL_BINDING_CALL* glGetTexParameterivProc)(GLenum target, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetTransformFeedbackVaryingProc)( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLenum* type, + char* name); +typedef void(GL_BINDING_CALL* glGetTranslatedShaderSourceANGLEProc)( + GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source); +typedef GLuint(GL_BINDING_CALL* glGetUniformBlockIndexProc)( + GLuint program, + const char* uniformBlockName); +typedef void(GL_BINDING_CALL* glGetUniformfvProc)(GLuint program, + GLint location, + GLfloat* params); +typedef void(GL_BINDING_CALL* glGetUniformIndicesProc)( + GLuint program, + GLsizei uniformCount, + const char* const* uniformNames, + GLuint* uniformIndices); +typedef void(GL_BINDING_CALL* glGetUniformivProc)(GLuint program, + GLint location, + GLint* params); +typedef GLint(GL_BINDING_CALL* glGetUniformLocationProc)(GLuint program, + const char* name); +typedef void(GL_BINDING_CALL* glGetVertexAttribfvProc)(GLuint index, + GLenum pname, + GLfloat* params); +typedef void(GL_BINDING_CALL* glGetVertexAttribivProc)(GLuint index, + GLenum pname, + GLint* params); +typedef void(GL_BINDING_CALL* glGetVertexAttribPointervProc)(GLuint index, + GLenum pname, + void** pointer); +typedef void(GL_BINDING_CALL* glHintProc)(GLenum target, GLenum mode); +typedef void(GL_BINDING_CALL* glInsertEventMarkerEXTProc)(GLsizei length, + const char* marker); +typedef void(GL_BINDING_CALL* glInvalidateFramebufferProc)( + GLenum target, + GLsizei numAttachments, + const GLenum* attachments); +typedef void(GL_BINDING_CALL* glInvalidateSubFramebufferProc)( + GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLint width, + GLint height); +typedef GLboolean(GL_BINDING_CALL* glIsBufferProc)(GLuint buffer); +typedef GLboolean(GL_BINDING_CALL* glIsEnabledProc)(GLenum cap); +typedef GLboolean(GL_BINDING_CALL* glIsFenceAPPLEProc)(GLuint fence); +typedef GLboolean(GL_BINDING_CALL* glIsFenceNVProc)(GLuint fence); +typedef GLboolean(GL_BINDING_CALL* glIsFramebufferEXTProc)(GLuint framebuffer); +typedef GLboolean(GL_BINDING_CALL* glIsProgramProc)(GLuint program); +typedef GLboolean(GL_BINDING_CALL* glIsQueryProc)(GLuint query); +typedef GLboolean(GL_BINDING_CALL* glIsQueryARBProc)(GLuint query); +typedef GLboolean(GL_BINDING_CALL* glIsRenderbufferEXTProc)( + GLuint renderbuffer); +typedef GLboolean(GL_BINDING_CALL* glIsSamplerProc)(GLuint sampler); +typedef GLboolean(GL_BINDING_CALL* glIsShaderProc)(GLuint shader); +typedef GLboolean(GL_BINDING_CALL* glIsSyncProc)(GLsync sync); +typedef GLboolean(GL_BINDING_CALL* glIsTextureProc)(GLuint texture); +typedef GLboolean(GL_BINDING_CALL* glIsTransformFeedbackProc)(GLuint id); +typedef GLboolean(GL_BINDING_CALL* glIsVertexArrayOESProc)(GLuint array); +typedef void(GL_BINDING_CALL* glLineWidthProc)(GLfloat width); +typedef void(GL_BINDING_CALL* glLinkProgramProc)(GLuint program); +typedef void*(GL_BINDING_CALL* glMapBufferProc)(GLenum target, GLenum access); +typedef void*(GL_BINDING_CALL* glMapBufferRangeProc)(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access); +typedef void(GL_BINDING_CALL* glMatrixLoadfEXTProc)(GLenum matrixMode, + const GLfloat* m); +typedef void(GL_BINDING_CALL* glMatrixLoadIdentityEXTProc)(GLenum matrixMode); +typedef void(GL_BINDING_CALL* glPauseTransformFeedbackProc)(void); +typedef void(GL_BINDING_CALL* glPixelStoreiProc)(GLenum pname, GLint param); +typedef void(GL_BINDING_CALL* glPointParameteriProc)(GLenum pname, GLint param); +typedef void(GL_BINDING_CALL* glPolygonOffsetProc)(GLfloat factor, + GLfloat units); +typedef void(GL_BINDING_CALL* glPopGroupMarkerEXTProc)(void); +typedef void(GL_BINDING_CALL* glProgramBinaryProc)(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length); +typedef void(GL_BINDING_CALL* glProgramParameteriProc)(GLuint program, + GLenum pname, + GLint value); +typedef void(GL_BINDING_CALL* glPushGroupMarkerEXTProc)(GLsizei length, + const char* marker); +typedef void(GL_BINDING_CALL* glQueryCounterProc)(GLuint id, GLenum target); +typedef void(GL_BINDING_CALL* glReadBufferProc)(GLenum src); +typedef void(GL_BINDING_CALL* glReadPixelsProc)(GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels); +typedef void(GL_BINDING_CALL* glReleaseShaderCompilerProc)(void); +typedef void(GL_BINDING_CALL* glRenderbufferStorageEXTProc)( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height); +typedef void(GL_BINDING_CALL* glRenderbufferStorageMultisampleProc)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height); +typedef void(GL_BINDING_CALL* glRenderbufferStorageMultisampleANGLEProc)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height); +typedef void(GL_BINDING_CALL* glRenderbufferStorageMultisampleEXTProc)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height); +typedef void(GL_BINDING_CALL* glRenderbufferStorageMultisampleIMGProc)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height); +typedef void(GL_BINDING_CALL* glResumeTransformFeedbackProc)(void); +typedef void(GL_BINDING_CALL* glSampleCoverageProc)(GLclampf value, + GLboolean invert); +typedef void(GL_BINDING_CALL* glSamplerParameterfProc)(GLuint sampler, + GLenum pname, + GLfloat param); +typedef void(GL_BINDING_CALL* glSamplerParameterfvProc)(GLuint sampler, + GLenum pname, + const GLfloat* params); +typedef void(GL_BINDING_CALL* glSamplerParameteriProc)(GLuint sampler, + GLenum pname, + GLint param); +typedef void(GL_BINDING_CALL* glSamplerParameterivProc)(GLuint sampler, + GLenum pname, + const GLint* params); +typedef void(GL_BINDING_CALL* glScissorProc)(GLint x, + GLint y, + GLsizei width, + GLsizei height); +typedef void(GL_BINDING_CALL* glSetFenceAPPLEProc)(GLuint fence); +typedef void(GL_BINDING_CALL* glSetFenceNVProc)(GLuint fence, GLenum condition); +typedef void(GL_BINDING_CALL* glShaderBinaryProc)(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length); +typedef void(GL_BINDING_CALL* glShaderSourceProc)(GLuint shader, + GLsizei count, + const char* const* str, + const GLint* length); +typedef void(GL_BINDING_CALL* glStencilFuncProc)(GLenum func, + GLint ref, + GLuint mask); +typedef void(GL_BINDING_CALL* glStencilFuncSeparateProc)(GLenum face, + GLenum func, + GLint ref, + GLuint mask); +typedef void(GL_BINDING_CALL* glStencilMaskProc)(GLuint mask); +typedef void(GL_BINDING_CALL* glStencilMaskSeparateProc)(GLenum face, + GLuint mask); +typedef void(GL_BINDING_CALL* glStencilOpProc)(GLenum fail, + GLenum zfail, + GLenum zpass); +typedef void(GL_BINDING_CALL* glStencilOpSeparateProc)(GLenum face, + GLenum fail, + GLenum zfail, + GLenum zpass); +typedef GLboolean(GL_BINDING_CALL* glTestFenceAPPLEProc)(GLuint fence); +typedef GLboolean(GL_BINDING_CALL* glTestFenceNVProc)(GLuint fence); +typedef void(GL_BINDING_CALL* glTexImage2DProc)(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels); +typedef void(GL_BINDING_CALL* glTexImage3DProc)(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels); +typedef void(GL_BINDING_CALL* glTexParameterfProc)(GLenum target, + GLenum pname, + GLfloat param); +typedef void(GL_BINDING_CALL* glTexParameterfvProc)(GLenum target, + GLenum pname, + const GLfloat* params); +typedef void(GL_BINDING_CALL* glTexParameteriProc)(GLenum target, + GLenum pname, + GLint param); +typedef void(GL_BINDING_CALL* glTexParameterivProc)(GLenum target, + GLenum pname, + const GLint* params); +typedef void(GL_BINDING_CALL* glTexStorage2DEXTProc)(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height); +typedef void(GL_BINDING_CALL* glTexStorage3DProc)(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth); +typedef void(GL_BINDING_CALL* glTexSubImage2DProc)(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels); +typedef void(GL_BINDING_CALL* glTransformFeedbackVaryingsProc)( + GLuint program, + GLsizei count, + const char* const* varyings, + GLenum bufferMode); +typedef void(GL_BINDING_CALL* glUniform1fProc)(GLint location, GLfloat x); +typedef void(GL_BINDING_CALL* glUniform1fvProc)(GLint location, + GLsizei count, + const GLfloat* v); +typedef void(GL_BINDING_CALL* glUniform1iProc)(GLint location, GLint x); +typedef void(GL_BINDING_CALL* glUniform1ivProc)(GLint location, + GLsizei count, + const GLint* v); +typedef void(GL_BINDING_CALL* glUniform1uiProc)(GLint location, GLuint v0); +typedef void(GL_BINDING_CALL* glUniform1uivProc)(GLint location, + GLsizei count, + const GLuint* v); +typedef void(GL_BINDING_CALL* glUniform2fProc)(GLint location, + GLfloat x, + GLfloat y); +typedef void(GL_BINDING_CALL* glUniform2fvProc)(GLint location, + GLsizei count, + const GLfloat* v); +typedef void(GL_BINDING_CALL* glUniform2iProc)(GLint location, + GLint x, + GLint y); +typedef void(GL_BINDING_CALL* glUniform2ivProc)(GLint location, + GLsizei count, + const GLint* v); +typedef void(GL_BINDING_CALL* glUniform2uiProc)(GLint location, + GLuint v0, + GLuint v1); +typedef void(GL_BINDING_CALL* glUniform2uivProc)(GLint location, + GLsizei count, + const GLuint* v); +typedef void(GL_BINDING_CALL* glUniform3fProc)(GLint location, + GLfloat x, + GLfloat y, + GLfloat z); +typedef void(GL_BINDING_CALL* glUniform3fvProc)(GLint location, + GLsizei count, + const GLfloat* v); +typedef void(GL_BINDING_CALL* glUniform3iProc)(GLint location, + GLint x, + GLint y, + GLint z); +typedef void(GL_BINDING_CALL* glUniform3ivProc)(GLint location, + GLsizei count, + const GLint* v); +typedef void(GL_BINDING_CALL* glUniform3uiProc)(GLint location, + GLuint v0, + GLuint v1, + GLuint v2); +typedef void(GL_BINDING_CALL* glUniform3uivProc)(GLint location, + GLsizei count, + const GLuint* v); +typedef void(GL_BINDING_CALL* glUniform4fProc)(GLint location, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w); +typedef void(GL_BINDING_CALL* glUniform4fvProc)(GLint location, + GLsizei count, + const GLfloat* v); +typedef void(GL_BINDING_CALL* glUniform4iProc)(GLint location, + GLint x, + GLint y, + GLint z, + GLint w); +typedef void(GL_BINDING_CALL* glUniform4ivProc)(GLint location, + GLsizei count, + const GLint* v); +typedef void(GL_BINDING_CALL* glUniform4uiProc)(GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3); +typedef void(GL_BINDING_CALL* glUniform4uivProc)(GLint location, + GLsizei count, + const GLuint* v); +typedef void(GL_BINDING_CALL* glUniformBlockBindingProc)( + GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding); +typedef void(GL_BINDING_CALL* glUniformMatrix2fvProc)(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +typedef void(GL_BINDING_CALL* glUniformMatrix2x3fvProc)(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +typedef void(GL_BINDING_CALL* glUniformMatrix2x4fvProc)(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +typedef void(GL_BINDING_CALL* glUniformMatrix3fvProc)(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +typedef void(GL_BINDING_CALL* glUniformMatrix3x2fvProc)(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +typedef void(GL_BINDING_CALL* glUniformMatrix3x4fvProc)(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +typedef void(GL_BINDING_CALL* glUniformMatrix4fvProc)(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +typedef void(GL_BINDING_CALL* glUniformMatrix4x2fvProc)(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +typedef void(GL_BINDING_CALL* glUniformMatrix4x3fvProc)(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +typedef GLboolean(GL_BINDING_CALL* glUnmapBufferProc)(GLenum target); +typedef void(GL_BINDING_CALL* glUseProgramProc)(GLuint program); +typedef void(GL_BINDING_CALL* glValidateProgramProc)(GLuint program); +typedef void(GL_BINDING_CALL* glVertexAttrib1fProc)(GLuint indx, GLfloat x); +typedef void(GL_BINDING_CALL* glVertexAttrib1fvProc)(GLuint indx, + const GLfloat* values); +typedef void(GL_BINDING_CALL* glVertexAttrib2fProc)(GLuint indx, + GLfloat x, + GLfloat y); +typedef void(GL_BINDING_CALL* glVertexAttrib2fvProc)(GLuint indx, + const GLfloat* values); +typedef void(GL_BINDING_CALL* glVertexAttrib3fProc)(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z); +typedef void(GL_BINDING_CALL* glVertexAttrib3fvProc)(GLuint indx, + const GLfloat* values); +typedef void(GL_BINDING_CALL* glVertexAttrib4fProc)(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w); +typedef void(GL_BINDING_CALL* glVertexAttrib4fvProc)(GLuint indx, + const GLfloat* values); +typedef void(GL_BINDING_CALL* glVertexAttribDivisorANGLEProc)(GLuint index, + GLuint divisor); +typedef void(GL_BINDING_CALL* glVertexAttribI4iProc)(GLuint indx, + GLint x, + GLint y, + GLint z, + GLint w); +typedef void(GL_BINDING_CALL* glVertexAttribI4ivProc)(GLuint indx, + const GLint* values); +typedef void(GL_BINDING_CALL* glVertexAttribI4uiProc)(GLuint indx, + GLuint x, + GLuint y, + GLuint z, + GLuint w); +typedef void(GL_BINDING_CALL* glVertexAttribI4uivProc)(GLuint indx, + const GLuint* values); +typedef void(GL_BINDING_CALL* glVertexAttribIPointerProc)(GLuint indx, + GLint size, + GLenum type, + GLsizei stride, + const void* ptr); +typedef void(GL_BINDING_CALL* glVertexAttribPointerProc)(GLuint indx, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* ptr); +typedef void(GL_BINDING_CALL* glViewportProc)(GLint x, + GLint y, + GLsizei width, + GLsizei height); +typedef GLenum(GL_BINDING_CALL* glWaitSyncProc)(GLsync sync, + GLbitfield flags, + GLuint64 timeout); + +struct ExtensionsGL { + bool b_GL_ANGLE_framebuffer_blit; + bool b_GL_ANGLE_framebuffer_multisample; + bool b_GL_ANGLE_instanced_arrays; + bool b_GL_ANGLE_translated_shader_source; + bool b_GL_APPLE_fence; + bool b_GL_APPLE_vertex_array_object; + bool b_GL_ARB_ES2_compatibility; + bool b_GL_ARB_blend_func_extended; + bool b_GL_ARB_copy_buffer; + bool b_GL_ARB_draw_buffers; + bool b_GL_ARB_draw_instanced; + bool b_GL_ARB_framebuffer_object; + bool b_GL_ARB_get_program_binary; + bool b_GL_ARB_instanced_arrays; + bool b_GL_ARB_internalformat_query; + bool b_GL_ARB_invalidate_subdata; + bool b_GL_ARB_map_buffer_range; + bool b_GL_ARB_occlusion_query; + bool b_GL_ARB_robustness; + bool b_GL_ARB_sampler_objects; + bool b_GL_ARB_sync; + bool b_GL_ARB_texture_storage; + bool b_GL_ARB_timer_query; + bool b_GL_ARB_transform_feedback2; + bool b_GL_ARB_uniform_buffer_object; + bool b_GL_ARB_vertex_array_object; + bool b_GL_ARB_vertex_buffer_object; + bool b_GL_EXT_debug_marker; + bool b_GL_EXT_direct_state_access; + bool b_GL_EXT_discard_framebuffer; + bool b_GL_EXT_disjoint_timer_query; + bool b_GL_EXT_draw_buffers; + bool b_GL_EXT_framebuffer_blit; + bool b_GL_EXT_framebuffer_multisample; + bool b_GL_EXT_framebuffer_object; + bool b_GL_EXT_map_buffer_range; + bool b_GL_EXT_multisampled_render_to_texture; + bool b_GL_EXT_robustness; + bool b_GL_EXT_texture_storage; + bool b_GL_EXT_timer_query; + bool b_GL_IMG_multisampled_render_to_texture; + bool b_GL_KHR_blend_equation_advanced; + bool b_GL_KHR_robustness; + bool b_GL_NV_blend_equation_advanced; + bool b_GL_NV_fence; + bool b_GL_NV_path_rendering; + bool b_GL_OES_EGL_image; + bool b_GL_OES_get_program_binary; + bool b_GL_OES_mapbuffer; + bool b_GL_OES_vertex_array_object; +}; + +struct ProcsGL { + glActiveTextureProc glActiveTextureFn; + glAttachShaderProc glAttachShaderFn; + glBeginQueryProc glBeginQueryFn; + glBeginQueryARBProc glBeginQueryARBFn; + glBeginTransformFeedbackProc glBeginTransformFeedbackFn; + glBindAttribLocationProc glBindAttribLocationFn; + glBindBufferProc glBindBufferFn; + glBindBufferBaseProc glBindBufferBaseFn; + glBindBufferRangeProc glBindBufferRangeFn; + glBindFragDataLocationProc glBindFragDataLocationFn; + glBindFragDataLocationIndexedProc glBindFragDataLocationIndexedFn; + glBindFramebufferEXTProc glBindFramebufferEXTFn; + glBindRenderbufferEXTProc glBindRenderbufferEXTFn; + glBindSamplerProc glBindSamplerFn; + glBindTextureProc glBindTextureFn; + glBindTransformFeedbackProc glBindTransformFeedbackFn; + glBindVertexArrayOESProc glBindVertexArrayOESFn; + glBlendBarrierKHRProc glBlendBarrierKHRFn; + glBlendColorProc glBlendColorFn; + glBlendEquationProc glBlendEquationFn; + glBlendEquationSeparateProc glBlendEquationSeparateFn; + glBlendFuncProc glBlendFuncFn; + glBlendFuncSeparateProc glBlendFuncSeparateFn; + glBlitFramebufferProc glBlitFramebufferFn; + glBlitFramebufferANGLEProc glBlitFramebufferANGLEFn; + glBlitFramebufferEXTProc glBlitFramebufferEXTFn; + glBufferDataProc glBufferDataFn; + glBufferSubDataProc glBufferSubDataFn; + glCheckFramebufferStatusEXTProc glCheckFramebufferStatusEXTFn; + glClearProc glClearFn; + glClearBufferfiProc glClearBufferfiFn; + glClearBufferfvProc glClearBufferfvFn; + glClearBufferivProc glClearBufferivFn; + glClearBufferuivProc glClearBufferuivFn; + glClearColorProc glClearColorFn; + glClearDepthProc glClearDepthFn; + glClearDepthfProc glClearDepthfFn; + glClearStencilProc glClearStencilFn; + glClientWaitSyncProc glClientWaitSyncFn; + glColorMaskProc glColorMaskFn; + glCompileShaderProc glCompileShaderFn; + glCompressedTexImage2DProc glCompressedTexImage2DFn; + glCompressedTexImage3DProc glCompressedTexImage3DFn; + glCompressedTexSubImage2DProc glCompressedTexSubImage2DFn; + glCopyBufferSubDataProc glCopyBufferSubDataFn; + glCopyTexImage2DProc glCopyTexImage2DFn; + glCopyTexSubImage2DProc glCopyTexSubImage2DFn; + glCopyTexSubImage3DProc glCopyTexSubImage3DFn; + glCreateProgramProc glCreateProgramFn; + glCreateShaderProc glCreateShaderFn; + glCullFaceProc glCullFaceFn; + glDeleteBuffersARBProc glDeleteBuffersARBFn; + glDeleteFencesAPPLEProc glDeleteFencesAPPLEFn; + glDeleteFencesNVProc glDeleteFencesNVFn; + glDeleteFramebuffersEXTProc glDeleteFramebuffersEXTFn; + glDeleteProgramProc glDeleteProgramFn; + glDeleteQueriesProc glDeleteQueriesFn; + glDeleteQueriesARBProc glDeleteQueriesARBFn; + glDeleteRenderbuffersEXTProc glDeleteRenderbuffersEXTFn; + glDeleteSamplersProc glDeleteSamplersFn; + glDeleteShaderProc glDeleteShaderFn; + glDeleteSyncProc glDeleteSyncFn; + glDeleteTexturesProc glDeleteTexturesFn; + glDeleteTransformFeedbacksProc glDeleteTransformFeedbacksFn; + glDeleteVertexArraysOESProc glDeleteVertexArraysOESFn; + glDepthFuncProc glDepthFuncFn; + glDepthMaskProc glDepthMaskFn; + glDepthRangeProc glDepthRangeFn; + glDepthRangefProc glDepthRangefFn; + glDetachShaderProc glDetachShaderFn; + glDisableProc glDisableFn; + glDisableVertexAttribArrayProc glDisableVertexAttribArrayFn; + glDiscardFramebufferEXTProc glDiscardFramebufferEXTFn; + glDrawArraysProc glDrawArraysFn; + glDrawArraysInstancedANGLEProc glDrawArraysInstancedANGLEFn; + glDrawBufferProc glDrawBufferFn; + glDrawBuffersARBProc glDrawBuffersARBFn; + glDrawElementsProc glDrawElementsFn; + glDrawElementsInstancedANGLEProc glDrawElementsInstancedANGLEFn; + glDrawRangeElementsProc glDrawRangeElementsFn; + glEGLImageTargetRenderbufferStorageOESProc + glEGLImageTargetRenderbufferStorageOESFn; + glEGLImageTargetTexture2DOESProc glEGLImageTargetTexture2DOESFn; + glEnableProc glEnableFn; + glEnableVertexAttribArrayProc glEnableVertexAttribArrayFn; + glEndQueryProc glEndQueryFn; + glEndQueryARBProc glEndQueryARBFn; + glEndTransformFeedbackProc glEndTransformFeedbackFn; + glFenceSyncProc glFenceSyncFn; + glFinishProc glFinishFn; + glFinishFenceAPPLEProc glFinishFenceAPPLEFn; + glFinishFenceNVProc glFinishFenceNVFn; + glFlushProc glFlushFn; + glFlushMappedBufferRangeProc glFlushMappedBufferRangeFn; + glFramebufferRenderbufferEXTProc glFramebufferRenderbufferEXTFn; + glFramebufferTexture2DEXTProc glFramebufferTexture2DEXTFn; + glFramebufferTexture2DMultisampleEXTProc + glFramebufferTexture2DMultisampleEXTFn; + glFramebufferTexture2DMultisampleIMGProc + glFramebufferTexture2DMultisampleIMGFn; + glFramebufferTextureLayerProc glFramebufferTextureLayerFn; + glFrontFaceProc glFrontFaceFn; + glGenBuffersARBProc glGenBuffersARBFn; + glGenerateMipmapEXTProc glGenerateMipmapEXTFn; + glGenFencesAPPLEProc glGenFencesAPPLEFn; + glGenFencesNVProc glGenFencesNVFn; + glGenFramebuffersEXTProc glGenFramebuffersEXTFn; + glGenQueriesProc glGenQueriesFn; + glGenQueriesARBProc glGenQueriesARBFn; + glGenRenderbuffersEXTProc glGenRenderbuffersEXTFn; + glGenSamplersProc glGenSamplersFn; + glGenTexturesProc glGenTexturesFn; + glGenTransformFeedbacksProc glGenTransformFeedbacksFn; + glGenVertexArraysOESProc glGenVertexArraysOESFn; + glGetActiveAttribProc glGetActiveAttribFn; + glGetActiveUniformProc glGetActiveUniformFn; + glGetActiveUniformBlockivProc glGetActiveUniformBlockivFn; + glGetActiveUniformBlockNameProc glGetActiveUniformBlockNameFn; + glGetActiveUniformsivProc glGetActiveUniformsivFn; + glGetAttachedShadersProc glGetAttachedShadersFn; + glGetAttribLocationProc glGetAttribLocationFn; + glGetBooleanvProc glGetBooleanvFn; + glGetBufferParameterivProc glGetBufferParameterivFn; + glGetErrorProc glGetErrorFn; + glGetFenceivNVProc glGetFenceivNVFn; + glGetFloatvProc glGetFloatvFn; + glGetFragDataLocationProc glGetFragDataLocationFn; + glGetFramebufferAttachmentParameterivEXTProc + glGetFramebufferAttachmentParameterivEXTFn; + glGetGraphicsResetStatusARBProc glGetGraphicsResetStatusARBFn; + glGetInteger64i_vProc glGetInteger64i_vFn; + glGetInteger64vProc glGetInteger64vFn; + glGetIntegeri_vProc glGetIntegeri_vFn; + glGetIntegervProc glGetIntegervFn; + glGetInternalformativProc glGetInternalformativFn; + glGetProgramBinaryProc glGetProgramBinaryFn; + glGetProgramInfoLogProc glGetProgramInfoLogFn; + glGetProgramivProc glGetProgramivFn; + glGetQueryivProc glGetQueryivFn; + glGetQueryivARBProc glGetQueryivARBFn; + glGetQueryObjecti64vProc glGetQueryObjecti64vFn; + glGetQueryObjectivProc glGetQueryObjectivFn; + glGetQueryObjectivARBProc glGetQueryObjectivARBFn; + glGetQueryObjectui64vProc glGetQueryObjectui64vFn; + glGetQueryObjectuivProc glGetQueryObjectuivFn; + glGetQueryObjectuivARBProc glGetQueryObjectuivARBFn; + glGetRenderbufferParameterivEXTProc glGetRenderbufferParameterivEXTFn; + glGetSamplerParameterfvProc glGetSamplerParameterfvFn; + glGetSamplerParameterivProc glGetSamplerParameterivFn; + glGetShaderInfoLogProc glGetShaderInfoLogFn; + glGetShaderivProc glGetShaderivFn; + glGetShaderPrecisionFormatProc glGetShaderPrecisionFormatFn; + glGetShaderSourceProc glGetShaderSourceFn; + glGetStringProc glGetStringFn; + glGetSyncivProc glGetSyncivFn; + glGetTexLevelParameterfvProc glGetTexLevelParameterfvFn; + glGetTexLevelParameterivProc glGetTexLevelParameterivFn; + glGetTexParameterfvProc glGetTexParameterfvFn; + glGetTexParameterivProc glGetTexParameterivFn; + glGetTransformFeedbackVaryingProc glGetTransformFeedbackVaryingFn; + glGetTranslatedShaderSourceANGLEProc glGetTranslatedShaderSourceANGLEFn; + glGetUniformBlockIndexProc glGetUniformBlockIndexFn; + glGetUniformfvProc glGetUniformfvFn; + glGetUniformIndicesProc glGetUniformIndicesFn; + glGetUniformivProc glGetUniformivFn; + glGetUniformLocationProc glGetUniformLocationFn; + glGetVertexAttribfvProc glGetVertexAttribfvFn; + glGetVertexAttribivProc glGetVertexAttribivFn; + glGetVertexAttribPointervProc glGetVertexAttribPointervFn; + glHintProc glHintFn; + glInsertEventMarkerEXTProc glInsertEventMarkerEXTFn; + glInvalidateFramebufferProc glInvalidateFramebufferFn; + glInvalidateSubFramebufferProc glInvalidateSubFramebufferFn; + glIsBufferProc glIsBufferFn; + glIsEnabledProc glIsEnabledFn; + glIsFenceAPPLEProc glIsFenceAPPLEFn; + glIsFenceNVProc glIsFenceNVFn; + glIsFramebufferEXTProc glIsFramebufferEXTFn; + glIsProgramProc glIsProgramFn; + glIsQueryProc glIsQueryFn; + glIsQueryARBProc glIsQueryARBFn; + glIsRenderbufferEXTProc glIsRenderbufferEXTFn; + glIsSamplerProc glIsSamplerFn; + glIsShaderProc glIsShaderFn; + glIsSyncProc glIsSyncFn; + glIsTextureProc glIsTextureFn; + glIsTransformFeedbackProc glIsTransformFeedbackFn; + glIsVertexArrayOESProc glIsVertexArrayOESFn; + glLineWidthProc glLineWidthFn; + glLinkProgramProc glLinkProgramFn; + glMapBufferProc glMapBufferFn; + glMapBufferRangeProc glMapBufferRangeFn; + glMatrixLoadfEXTProc glMatrixLoadfEXTFn; + glMatrixLoadIdentityEXTProc glMatrixLoadIdentityEXTFn; + glPauseTransformFeedbackProc glPauseTransformFeedbackFn; + glPixelStoreiProc glPixelStoreiFn; + glPointParameteriProc glPointParameteriFn; + glPolygonOffsetProc glPolygonOffsetFn; + glPopGroupMarkerEXTProc glPopGroupMarkerEXTFn; + glProgramBinaryProc glProgramBinaryFn; + glProgramParameteriProc glProgramParameteriFn; + glPushGroupMarkerEXTProc glPushGroupMarkerEXTFn; + glQueryCounterProc glQueryCounterFn; + glReadBufferProc glReadBufferFn; + glReadPixelsProc glReadPixelsFn; + glReleaseShaderCompilerProc glReleaseShaderCompilerFn; + glRenderbufferStorageEXTProc glRenderbufferStorageEXTFn; + glRenderbufferStorageMultisampleProc glRenderbufferStorageMultisampleFn; + glRenderbufferStorageMultisampleANGLEProc + glRenderbufferStorageMultisampleANGLEFn; + glRenderbufferStorageMultisampleEXTProc glRenderbufferStorageMultisampleEXTFn; + glRenderbufferStorageMultisampleIMGProc glRenderbufferStorageMultisampleIMGFn; + glResumeTransformFeedbackProc glResumeTransformFeedbackFn; + glSampleCoverageProc glSampleCoverageFn; + glSamplerParameterfProc glSamplerParameterfFn; + glSamplerParameterfvProc glSamplerParameterfvFn; + glSamplerParameteriProc glSamplerParameteriFn; + glSamplerParameterivProc glSamplerParameterivFn; + glScissorProc glScissorFn; + glSetFenceAPPLEProc glSetFenceAPPLEFn; + glSetFenceNVProc glSetFenceNVFn; + glShaderBinaryProc glShaderBinaryFn; + glShaderSourceProc glShaderSourceFn; + glStencilFuncProc glStencilFuncFn; + glStencilFuncSeparateProc glStencilFuncSeparateFn; + glStencilMaskProc glStencilMaskFn; + glStencilMaskSeparateProc glStencilMaskSeparateFn; + glStencilOpProc glStencilOpFn; + glStencilOpSeparateProc glStencilOpSeparateFn; + glTestFenceAPPLEProc glTestFenceAPPLEFn; + glTestFenceNVProc glTestFenceNVFn; + glTexImage2DProc glTexImage2DFn; + glTexImage3DProc glTexImage3DFn; + glTexParameterfProc glTexParameterfFn; + glTexParameterfvProc glTexParameterfvFn; + glTexParameteriProc glTexParameteriFn; + glTexParameterivProc glTexParameterivFn; + glTexStorage2DEXTProc glTexStorage2DEXTFn; + glTexStorage3DProc glTexStorage3DFn; + glTexSubImage2DProc glTexSubImage2DFn; + glTransformFeedbackVaryingsProc glTransformFeedbackVaryingsFn; + glUniform1fProc glUniform1fFn; + glUniform1fvProc glUniform1fvFn; + glUniform1iProc glUniform1iFn; + glUniform1ivProc glUniform1ivFn; + glUniform1uiProc glUniform1uiFn; + glUniform1uivProc glUniform1uivFn; + glUniform2fProc glUniform2fFn; + glUniform2fvProc glUniform2fvFn; + glUniform2iProc glUniform2iFn; + glUniform2ivProc glUniform2ivFn; + glUniform2uiProc glUniform2uiFn; + glUniform2uivProc glUniform2uivFn; + glUniform3fProc glUniform3fFn; + glUniform3fvProc glUniform3fvFn; + glUniform3iProc glUniform3iFn; + glUniform3ivProc glUniform3ivFn; + glUniform3uiProc glUniform3uiFn; + glUniform3uivProc glUniform3uivFn; + glUniform4fProc glUniform4fFn; + glUniform4fvProc glUniform4fvFn; + glUniform4iProc glUniform4iFn; + glUniform4ivProc glUniform4ivFn; + glUniform4uiProc glUniform4uiFn; + glUniform4uivProc glUniform4uivFn; + glUniformBlockBindingProc glUniformBlockBindingFn; + glUniformMatrix2fvProc glUniformMatrix2fvFn; + glUniformMatrix2x3fvProc glUniformMatrix2x3fvFn; + glUniformMatrix2x4fvProc glUniformMatrix2x4fvFn; + glUniformMatrix3fvProc glUniformMatrix3fvFn; + glUniformMatrix3x2fvProc glUniformMatrix3x2fvFn; + glUniformMatrix3x4fvProc glUniformMatrix3x4fvFn; + glUniformMatrix4fvProc glUniformMatrix4fvFn; + glUniformMatrix4x2fvProc glUniformMatrix4x2fvFn; + glUniformMatrix4x3fvProc glUniformMatrix4x3fvFn; + glUnmapBufferProc glUnmapBufferFn; + glUseProgramProc glUseProgramFn; + glValidateProgramProc glValidateProgramFn; + glVertexAttrib1fProc glVertexAttrib1fFn; + glVertexAttrib1fvProc glVertexAttrib1fvFn; + glVertexAttrib2fProc glVertexAttrib2fFn; + glVertexAttrib2fvProc glVertexAttrib2fvFn; + glVertexAttrib3fProc glVertexAttrib3fFn; + glVertexAttrib3fvProc glVertexAttrib3fvFn; + glVertexAttrib4fProc glVertexAttrib4fFn; + glVertexAttrib4fvProc glVertexAttrib4fvFn; + glVertexAttribDivisorANGLEProc glVertexAttribDivisorANGLEFn; + glVertexAttribI4iProc glVertexAttribI4iFn; + glVertexAttribI4ivProc glVertexAttribI4ivFn; + glVertexAttribI4uiProc glVertexAttribI4uiFn; + glVertexAttribI4uivProc glVertexAttribI4uivFn; + glVertexAttribIPointerProc glVertexAttribIPointerFn; + glVertexAttribPointerProc glVertexAttribPointerFn; + glViewportProc glViewportFn; + glWaitSyncProc glWaitSyncFn; +}; + +class GL_EXPORT GLApi { + public: + GLApi(); + virtual ~GLApi(); + + virtual void glActiveTextureFn(GLenum texture) = 0; + virtual void glAttachShaderFn(GLuint program, GLuint shader) = 0; + virtual void glBeginQueryFn(GLenum target, GLuint id) = 0; + virtual void glBeginQueryARBFn(GLenum target, GLuint id) = 0; + virtual void glBeginTransformFeedbackFn(GLenum primitiveMode) = 0; + virtual void glBindAttribLocationFn(GLuint program, + GLuint index, + const char* name) = 0; + virtual void glBindBufferFn(GLenum target, GLuint buffer) = 0; + virtual void glBindBufferBaseFn(GLenum target, + GLuint index, + GLuint buffer) = 0; + virtual void glBindBufferRangeFn(GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size) = 0; + virtual void glBindFragDataLocationFn(GLuint program, + GLuint colorNumber, + const char* name) = 0; + virtual void glBindFragDataLocationIndexedFn(GLuint program, + GLuint colorNumber, + GLuint index, + const char* name) = 0; + virtual void glBindFramebufferEXTFn(GLenum target, GLuint framebuffer) = 0; + virtual void glBindRenderbufferEXTFn(GLenum target, GLuint renderbuffer) = 0; + virtual void glBindSamplerFn(GLuint unit, GLuint sampler) = 0; + virtual void glBindTextureFn(GLenum target, GLuint texture) = 0; + virtual void glBindTransformFeedbackFn(GLenum target, GLuint id) = 0; + virtual void glBindVertexArrayOESFn(GLuint array) = 0; + virtual void glBlendBarrierKHRFn(void) = 0; + virtual void glBlendColorFn(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) = 0; + virtual void glBlendEquationFn(GLenum mode) = 0; + virtual void glBlendEquationSeparateFn(GLenum modeRGB, GLenum modeAlpha) = 0; + virtual void glBlendFuncFn(GLenum sfactor, GLenum dfactor) = 0; + virtual void glBlendFuncSeparateFn(GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha) = 0; + virtual void glBlitFramebufferFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) = 0; + virtual void glBlitFramebufferANGLEFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) = 0; + virtual void glBlitFramebufferEXTFn(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) = 0; + virtual void glBufferDataFn(GLenum target, + GLsizeiptr size, + const void* data, + GLenum usage) = 0; + virtual void glBufferSubDataFn(GLenum target, + GLintptr offset, + GLsizeiptr size, + const void* data) = 0; + virtual GLenum glCheckFramebufferStatusEXTFn(GLenum target) = 0; + virtual void glClearFn(GLbitfield mask) = 0; + virtual void glClearBufferfiFn(GLenum buffer, + GLint drawbuffer, + const GLfloat depth, + GLint stencil) = 0; + virtual void glClearBufferfvFn(GLenum buffer, + GLint drawbuffer, + const GLfloat* value) = 0; + virtual void glClearBufferivFn(GLenum buffer, + GLint drawbuffer, + const GLint* value) = 0; + virtual void glClearBufferuivFn(GLenum buffer, + GLint drawbuffer, + const GLuint* value) = 0; + virtual void glClearColorFn(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) = 0; + virtual void glClearDepthFn(GLclampd depth) = 0; + virtual void glClearDepthfFn(GLclampf depth) = 0; + virtual void glClearStencilFn(GLint s) = 0; + virtual GLenum glClientWaitSyncFn(GLsync sync, + GLbitfield flags, + GLuint64 timeout) = 0; + virtual void glColorMaskFn(GLboolean red, + GLboolean green, + GLboolean blue, + GLboolean alpha) = 0; + virtual void glCompileShaderFn(GLuint shader) = 0; + virtual void glCompressedTexImage2DFn(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data) = 0; + virtual void glCompressedTexImage3DFn(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data) = 0; + virtual void glCompressedTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data) = 0; + virtual void glCopyBufferSubDataFn(GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size) = 0; + virtual void glCopyTexImage2DFn(GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border) = 0; + virtual void glCopyTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) = 0; + virtual void glCopyTexSubImage3DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) = 0; + virtual GLuint glCreateProgramFn(void) = 0; + virtual GLuint glCreateShaderFn(GLenum type) = 0; + virtual void glCullFaceFn(GLenum mode) = 0; + virtual void glDeleteBuffersARBFn(GLsizei n, const GLuint* buffers) = 0; + virtual void glDeleteFencesAPPLEFn(GLsizei n, const GLuint* fences) = 0; + virtual void glDeleteFencesNVFn(GLsizei n, const GLuint* fences) = 0; + virtual void glDeleteFramebuffersEXTFn(GLsizei n, + const GLuint* framebuffers) = 0; + virtual void glDeleteProgramFn(GLuint program) = 0; + virtual void glDeleteQueriesFn(GLsizei n, const GLuint* ids) = 0; + virtual void glDeleteQueriesARBFn(GLsizei n, const GLuint* ids) = 0; + virtual void glDeleteRenderbuffersEXTFn(GLsizei n, + const GLuint* renderbuffers) = 0; + virtual void glDeleteSamplersFn(GLsizei n, const GLuint* samplers) = 0; + virtual void glDeleteShaderFn(GLuint shader) = 0; + virtual void glDeleteSyncFn(GLsync sync) = 0; + virtual void glDeleteTexturesFn(GLsizei n, const GLuint* textures) = 0; + virtual void glDeleteTransformFeedbacksFn(GLsizei n, const GLuint* ids) = 0; + virtual void glDeleteVertexArraysOESFn(GLsizei n, const GLuint* arrays) = 0; + virtual void glDepthFuncFn(GLenum func) = 0; + virtual void glDepthMaskFn(GLboolean flag) = 0; + virtual void glDepthRangeFn(GLclampd zNear, GLclampd zFar) = 0; + virtual void glDepthRangefFn(GLclampf zNear, GLclampf zFar) = 0; + virtual void glDetachShaderFn(GLuint program, GLuint shader) = 0; + virtual void glDisableFn(GLenum cap) = 0; + virtual void glDisableVertexAttribArrayFn(GLuint index) = 0; + virtual void glDiscardFramebufferEXTFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) = 0; + virtual void glDrawArraysFn(GLenum mode, GLint first, GLsizei count) = 0; + virtual void glDrawArraysInstancedANGLEFn(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) = 0; + virtual void glDrawBufferFn(GLenum mode) = 0; + virtual void glDrawBuffersARBFn(GLsizei n, const GLenum* bufs) = 0; + virtual void glDrawElementsFn(GLenum mode, + GLsizei count, + GLenum type, + const void* indices) = 0; + virtual void glDrawElementsInstancedANGLEFn(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) = 0; + virtual void glDrawRangeElementsFn(GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices) = 0; + virtual void glEGLImageTargetRenderbufferStorageOESFn( + GLenum target, + GLeglImageOES image) = 0; + virtual void glEGLImageTargetTexture2DOESFn(GLenum target, + GLeglImageOES image) = 0; + virtual void glEnableFn(GLenum cap) = 0; + virtual void glEnableVertexAttribArrayFn(GLuint index) = 0; + virtual void glEndQueryFn(GLenum target) = 0; + virtual void glEndQueryARBFn(GLenum target) = 0; + virtual void glEndTransformFeedbackFn(void) = 0; + virtual GLsync glFenceSyncFn(GLenum condition, GLbitfield flags) = 0; + virtual void glFinishFn(void) = 0; + virtual void glFinishFenceAPPLEFn(GLuint fence) = 0; + virtual void glFinishFenceNVFn(GLuint fence) = 0; + virtual void glFlushFn(void) = 0; + virtual void glFlushMappedBufferRangeFn(GLenum target, + GLintptr offset, + GLsizeiptr length) = 0; + virtual void glFramebufferRenderbufferEXTFn(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer) = 0; + virtual void glFramebufferTexture2DEXTFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level) = 0; + virtual void glFramebufferTexture2DMultisampleEXTFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) = 0; + virtual void glFramebufferTexture2DMultisampleIMGFn(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) = 0; + virtual void glFramebufferTextureLayerFn(GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer) = 0; + virtual void glFrontFaceFn(GLenum mode) = 0; + virtual void glGenBuffersARBFn(GLsizei n, GLuint* buffers) = 0; + virtual void glGenerateMipmapEXTFn(GLenum target) = 0; + virtual void glGenFencesAPPLEFn(GLsizei n, GLuint* fences) = 0; + virtual void glGenFencesNVFn(GLsizei n, GLuint* fences) = 0; + virtual void glGenFramebuffersEXTFn(GLsizei n, GLuint* framebuffers) = 0; + virtual void glGenQueriesFn(GLsizei n, GLuint* ids) = 0; + virtual void glGenQueriesARBFn(GLsizei n, GLuint* ids) = 0; + virtual void glGenRenderbuffersEXTFn(GLsizei n, GLuint* renderbuffers) = 0; + virtual void glGenSamplersFn(GLsizei n, GLuint* samplers) = 0; + virtual void glGenTexturesFn(GLsizei n, GLuint* textures) = 0; + virtual void glGenTransformFeedbacksFn(GLsizei n, GLuint* ids) = 0; + virtual void glGenVertexArraysOESFn(GLsizei n, GLuint* arrays) = 0; + virtual void glGetActiveAttribFn(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) = 0; + virtual void glGetActiveUniformFn(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) = 0; + virtual void glGetActiveUniformBlockivFn(GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params) = 0; + virtual void glGetActiveUniformBlockNameFn(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + char* uniformBlockName) = 0; + virtual void glGetActiveUniformsivFn(GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params) = 0; + virtual void glGetAttachedShadersFn(GLuint program, + GLsizei maxcount, + GLsizei* count, + GLuint* shaders) = 0; + virtual GLint glGetAttribLocationFn(GLuint program, const char* name) = 0; + virtual void glGetBooleanvFn(GLenum pname, GLboolean* params) = 0; + virtual void glGetBufferParameterivFn(GLenum target, + GLenum pname, + GLint* params) = 0; + virtual GLenum glGetErrorFn(void) = 0; + virtual void glGetFenceivNVFn(GLuint fence, GLenum pname, GLint* params) = 0; + virtual void glGetFloatvFn(GLenum pname, GLfloat* params) = 0; + virtual GLint glGetFragDataLocationFn(GLuint program, const char* name) = 0; + virtual void glGetFramebufferAttachmentParameterivEXTFn(GLenum target, + GLenum attachment, + GLenum pname, + GLint* params) = 0; + virtual GLenum glGetGraphicsResetStatusARBFn(void) = 0; + virtual void glGetInteger64i_vFn(GLenum target, + GLuint index, + GLint64* data) = 0; + virtual void glGetInteger64vFn(GLenum pname, GLint64* params) = 0; + virtual void glGetIntegeri_vFn(GLenum target, GLuint index, GLint* data) = 0; + virtual void glGetIntegervFn(GLenum pname, GLint* params) = 0; + virtual void glGetInternalformativFn(GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei bufSize, + GLint* params) = 0; + virtual void glGetProgramBinaryFn(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary) = 0; + virtual void glGetProgramInfoLogFn(GLuint program, + GLsizei bufsize, + GLsizei* length, + char* infolog) = 0; + virtual void glGetProgramivFn(GLuint program, + GLenum pname, + GLint* params) = 0; + virtual void glGetQueryivFn(GLenum target, GLenum pname, GLint* params) = 0; + virtual void glGetQueryivARBFn(GLenum target, + GLenum pname, + GLint* params) = 0; + virtual void glGetQueryObjecti64vFn(GLuint id, + GLenum pname, + GLint64* params) = 0; + virtual void glGetQueryObjectivFn(GLuint id, GLenum pname, GLint* params) = 0; + virtual void glGetQueryObjectivARBFn(GLuint id, + GLenum pname, + GLint* params) = 0; + virtual void glGetQueryObjectui64vFn(GLuint id, + GLenum pname, + GLuint64* params) = 0; + virtual void glGetQueryObjectuivFn(GLuint id, + GLenum pname, + GLuint* params) = 0; + virtual void glGetQueryObjectuivARBFn(GLuint id, + GLenum pname, + GLuint* params) = 0; + virtual void glGetRenderbufferParameterivEXTFn(GLenum target, + GLenum pname, + GLint* params) = 0; + virtual void glGetSamplerParameterfvFn(GLuint sampler, + GLenum pname, + GLfloat* params) = 0; + virtual void glGetSamplerParameterivFn(GLuint sampler, + GLenum pname, + GLint* params) = 0; + virtual void glGetShaderInfoLogFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* infolog) = 0; + virtual void glGetShaderivFn(GLuint shader, GLenum pname, GLint* params) = 0; + virtual void glGetShaderPrecisionFormatFn(GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision) = 0; + virtual void glGetShaderSourceFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) = 0; + virtual const GLubyte* glGetStringFn(GLenum name) = 0; + virtual void glGetSyncivFn(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values) = 0; + virtual void glGetTexLevelParameterfvFn(GLenum target, + GLint level, + GLenum pname, + GLfloat* params) = 0; + virtual void glGetTexLevelParameterivFn(GLenum target, + GLint level, + GLenum pname, + GLint* params) = 0; + virtual void glGetTexParameterfvFn(GLenum target, + GLenum pname, + GLfloat* params) = 0; + virtual void glGetTexParameterivFn(GLenum target, + GLenum pname, + GLint* params) = 0; + virtual void glGetTransformFeedbackVaryingFn(GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLenum* type, + char* name) = 0; + virtual void glGetTranslatedShaderSourceANGLEFn(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) = 0; + virtual GLuint glGetUniformBlockIndexFn(GLuint program, + const char* uniformBlockName) = 0; + virtual void glGetUniformfvFn(GLuint program, + GLint location, + GLfloat* params) = 0; + virtual void glGetUniformIndicesFn(GLuint program, + GLsizei uniformCount, + const char* const* uniformNames, + GLuint* uniformIndices) = 0; + virtual void glGetUniformivFn(GLuint program, + GLint location, + GLint* params) = 0; + virtual GLint glGetUniformLocationFn(GLuint program, const char* name) = 0; + virtual void glGetVertexAttribfvFn(GLuint index, + GLenum pname, + GLfloat* params) = 0; + virtual void glGetVertexAttribivFn(GLuint index, + GLenum pname, + GLint* params) = 0; + virtual void glGetVertexAttribPointervFn(GLuint index, + GLenum pname, + void** pointer) = 0; + virtual void glHintFn(GLenum target, GLenum mode) = 0; + virtual void glInsertEventMarkerEXTFn(GLsizei length, const char* marker) = 0; + virtual void glInvalidateFramebufferFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) = 0; + virtual void glInvalidateSubFramebufferFn(GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLint width, + GLint height) = 0; + virtual GLboolean glIsBufferFn(GLuint buffer) = 0; + virtual GLboolean glIsEnabledFn(GLenum cap) = 0; + virtual GLboolean glIsFenceAPPLEFn(GLuint fence) = 0; + virtual GLboolean glIsFenceNVFn(GLuint fence) = 0; + virtual GLboolean glIsFramebufferEXTFn(GLuint framebuffer) = 0; + virtual GLboolean glIsProgramFn(GLuint program) = 0; + virtual GLboolean glIsQueryFn(GLuint query) = 0; + virtual GLboolean glIsQueryARBFn(GLuint query) = 0; + virtual GLboolean glIsRenderbufferEXTFn(GLuint renderbuffer) = 0; + virtual GLboolean glIsSamplerFn(GLuint sampler) = 0; + virtual GLboolean glIsShaderFn(GLuint shader) = 0; + virtual GLboolean glIsSyncFn(GLsync sync) = 0; + virtual GLboolean glIsTextureFn(GLuint texture) = 0; + virtual GLboolean glIsTransformFeedbackFn(GLuint id) = 0; + virtual GLboolean glIsVertexArrayOESFn(GLuint array) = 0; + virtual void glLineWidthFn(GLfloat width) = 0; + virtual void glLinkProgramFn(GLuint program) = 0; + virtual void* glMapBufferFn(GLenum target, GLenum access) = 0; + virtual void* glMapBufferRangeFn(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access) = 0; + virtual void glMatrixLoadfEXTFn(GLenum matrixMode, const GLfloat* m) = 0; + virtual void glMatrixLoadIdentityEXTFn(GLenum matrixMode) = 0; + virtual void glPauseTransformFeedbackFn(void) = 0; + virtual void glPixelStoreiFn(GLenum pname, GLint param) = 0; + virtual void glPointParameteriFn(GLenum pname, GLint param) = 0; + virtual void glPolygonOffsetFn(GLfloat factor, GLfloat units) = 0; + virtual void glPopGroupMarkerEXTFn(void) = 0; + virtual void glProgramBinaryFn(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length) = 0; + virtual void glProgramParameteriFn(GLuint program, + GLenum pname, + GLint value) = 0; + virtual void glPushGroupMarkerEXTFn(GLsizei length, const char* marker) = 0; + virtual void glQueryCounterFn(GLuint id, GLenum target) = 0; + virtual void glReadBufferFn(GLenum src) = 0; + virtual void glReadPixelsFn(GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels) = 0; + virtual void glReleaseShaderCompilerFn(void) = 0; + virtual void glRenderbufferStorageEXTFn(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height) = 0; + virtual void glRenderbufferStorageMultisampleFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) = 0; + virtual void glRenderbufferStorageMultisampleANGLEFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) = 0; + virtual void glRenderbufferStorageMultisampleEXTFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) = 0; + virtual void glRenderbufferStorageMultisampleIMGFn(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) = 0; + virtual void glResumeTransformFeedbackFn(void) = 0; + virtual void glSampleCoverageFn(GLclampf value, GLboolean invert) = 0; + virtual void glSamplerParameterfFn(GLuint sampler, + GLenum pname, + GLfloat param) = 0; + virtual void glSamplerParameterfvFn(GLuint sampler, + GLenum pname, + const GLfloat* params) = 0; + virtual void glSamplerParameteriFn(GLuint sampler, + GLenum pname, + GLint param) = 0; + virtual void glSamplerParameterivFn(GLuint sampler, + GLenum pname, + const GLint* params) = 0; + virtual void glScissorFn(GLint x, GLint y, GLsizei width, GLsizei height) = 0; + virtual void glSetFenceAPPLEFn(GLuint fence) = 0; + virtual void glSetFenceNVFn(GLuint fence, GLenum condition) = 0; + virtual void glShaderBinaryFn(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length) = 0; + virtual void glShaderSourceFn(GLuint shader, + GLsizei count, + const char* const* str, + const GLint* length) = 0; + virtual void glStencilFuncFn(GLenum func, GLint ref, GLuint mask) = 0; + virtual void glStencilFuncSeparateFn(GLenum face, + GLenum func, + GLint ref, + GLuint mask) = 0; + virtual void glStencilMaskFn(GLuint mask) = 0; + virtual void glStencilMaskSeparateFn(GLenum face, GLuint mask) = 0; + virtual void glStencilOpFn(GLenum fail, GLenum zfail, GLenum zpass) = 0; + virtual void glStencilOpSeparateFn(GLenum face, + GLenum fail, + GLenum zfail, + GLenum zpass) = 0; + virtual GLboolean glTestFenceAPPLEFn(GLuint fence) = 0; + virtual GLboolean glTestFenceNVFn(GLuint fence) = 0; + virtual void glTexImage2DFn(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels) = 0; + virtual void glTexImage3DFn(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels) = 0; + virtual void glTexParameterfFn(GLenum target, + GLenum pname, + GLfloat param) = 0; + virtual void glTexParameterfvFn(GLenum target, + GLenum pname, + const GLfloat* params) = 0; + virtual void glTexParameteriFn(GLenum target, GLenum pname, GLint param) = 0; + virtual void glTexParameterivFn(GLenum target, + GLenum pname, + const GLint* params) = 0; + virtual void glTexStorage2DEXTFn(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height) = 0; + virtual void glTexStorage3DFn(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth) = 0; + virtual void glTexSubImage2DFn(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels) = 0; + virtual void glTransformFeedbackVaryingsFn(GLuint program, + GLsizei count, + const char* const* varyings, + GLenum bufferMode) = 0; + virtual void glUniform1fFn(GLint location, GLfloat x) = 0; + virtual void glUniform1fvFn(GLint location, + GLsizei count, + const GLfloat* v) = 0; + virtual void glUniform1iFn(GLint location, GLint x) = 0; + virtual void glUniform1ivFn(GLint location, + GLsizei count, + const GLint* v) = 0; + virtual void glUniform1uiFn(GLint location, GLuint v0) = 0; + virtual void glUniform1uivFn(GLint location, + GLsizei count, + const GLuint* v) = 0; + virtual void glUniform2fFn(GLint location, GLfloat x, GLfloat y) = 0; + virtual void glUniform2fvFn(GLint location, + GLsizei count, + const GLfloat* v) = 0; + virtual void glUniform2iFn(GLint location, GLint x, GLint y) = 0; + virtual void glUniform2ivFn(GLint location, + GLsizei count, + const GLint* v) = 0; + virtual void glUniform2uiFn(GLint location, GLuint v0, GLuint v1) = 0; + virtual void glUniform2uivFn(GLint location, + GLsizei count, + const GLuint* v) = 0; + virtual void glUniform3fFn(GLint location, + GLfloat x, + GLfloat y, + GLfloat z) = 0; + virtual void glUniform3fvFn(GLint location, + GLsizei count, + const GLfloat* v) = 0; + virtual void glUniform3iFn(GLint location, GLint x, GLint y, GLint z) = 0; + virtual void glUniform3ivFn(GLint location, + GLsizei count, + const GLint* v) = 0; + virtual void glUniform3uiFn(GLint location, + GLuint v0, + GLuint v1, + GLuint v2) = 0; + virtual void glUniform3uivFn(GLint location, + GLsizei count, + const GLuint* v) = 0; + virtual void glUniform4fFn(GLint location, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) = 0; + virtual void glUniform4fvFn(GLint location, + GLsizei count, + const GLfloat* v) = 0; + virtual void glUniform4iFn(GLint location, + GLint x, + GLint y, + GLint z, + GLint w) = 0; + virtual void glUniform4ivFn(GLint location, + GLsizei count, + const GLint* v) = 0; + virtual void glUniform4uiFn(GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3) = 0; + virtual void glUniform4uivFn(GLint location, + GLsizei count, + const GLuint* v) = 0; + virtual void glUniformBlockBindingFn(GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding) = 0; + virtual void glUniformMatrix2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) = 0; + virtual void glUniformMatrix2x3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) = 0; + virtual void glUniformMatrix2x4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) = 0; + virtual void glUniformMatrix3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) = 0; + virtual void glUniformMatrix3x2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) = 0; + virtual void glUniformMatrix3x4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) = 0; + virtual void glUniformMatrix4fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) = 0; + virtual void glUniformMatrix4x2fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) = 0; + virtual void glUniformMatrix4x3fvFn(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) = 0; + virtual GLboolean glUnmapBufferFn(GLenum target) = 0; + virtual void glUseProgramFn(GLuint program) = 0; + virtual void glValidateProgramFn(GLuint program) = 0; + virtual void glVertexAttrib1fFn(GLuint indx, GLfloat x) = 0; + virtual void glVertexAttrib1fvFn(GLuint indx, const GLfloat* values) = 0; + virtual void glVertexAttrib2fFn(GLuint indx, GLfloat x, GLfloat y) = 0; + virtual void glVertexAttrib2fvFn(GLuint indx, const GLfloat* values) = 0; + virtual void glVertexAttrib3fFn(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z) = 0; + virtual void glVertexAttrib3fvFn(GLuint indx, const GLfloat* values) = 0; + virtual void glVertexAttrib4fFn(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) = 0; + virtual void glVertexAttrib4fvFn(GLuint indx, const GLfloat* values) = 0; + virtual void glVertexAttribDivisorANGLEFn(GLuint index, GLuint divisor) = 0; + virtual void glVertexAttribI4iFn(GLuint indx, + GLint x, + GLint y, + GLint z, + GLint w) = 0; + virtual void glVertexAttribI4ivFn(GLuint indx, const GLint* values) = 0; + virtual void glVertexAttribI4uiFn(GLuint indx, + GLuint x, + GLuint y, + GLuint z, + GLuint w) = 0; + virtual void glVertexAttribI4uivFn(GLuint indx, const GLuint* values) = 0; + virtual void glVertexAttribIPointerFn(GLuint indx, + GLint size, + GLenum type, + GLsizei stride, + const void* ptr) = 0; + virtual void glVertexAttribPointerFn(GLuint indx, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* ptr) = 0; + virtual void glViewportFn(GLint x, + GLint y, + GLsizei width, + GLsizei height) = 0; + virtual GLenum glWaitSyncFn(GLsync sync, + GLbitfield flags, + GLuint64 timeout) = 0; +}; + +} // namespace gfx + +#define glActiveTexture ::gfx::g_current_gl_context->glActiveTextureFn +#define glAttachShader ::gfx::g_current_gl_context->glAttachShaderFn +#define glBeginQuery ::gfx::g_current_gl_context->glBeginQueryFn +#define glBeginQueryARB ::gfx::g_current_gl_context->glBeginQueryARBFn +#define glBeginTransformFeedback \ + ::gfx::g_current_gl_context->glBeginTransformFeedbackFn +#define glBindAttribLocation ::gfx::g_current_gl_context->glBindAttribLocationFn +#define glBindBuffer ::gfx::g_current_gl_context->glBindBufferFn +#define glBindBufferBase ::gfx::g_current_gl_context->glBindBufferBaseFn +#define glBindBufferRange ::gfx::g_current_gl_context->glBindBufferRangeFn +#define glBindFragDataLocation \ + ::gfx::g_current_gl_context->glBindFragDataLocationFn +#define glBindFragDataLocationIndexed \ + ::gfx::g_current_gl_context->glBindFragDataLocationIndexedFn +#define glBindFramebufferEXT ::gfx::g_current_gl_context->glBindFramebufferEXTFn +#define glBindRenderbufferEXT \ + ::gfx::g_current_gl_context->glBindRenderbufferEXTFn +#define glBindSampler ::gfx::g_current_gl_context->glBindSamplerFn +#define glBindTexture ::gfx::g_current_gl_context->glBindTextureFn +#define glBindTransformFeedback \ + ::gfx::g_current_gl_context->glBindTransformFeedbackFn +#define glBindVertexArrayOES ::gfx::g_current_gl_context->glBindVertexArrayOESFn +#define glBlendBarrierKHR ::gfx::g_current_gl_context->glBlendBarrierKHRFn +#define glBlendColor ::gfx::g_current_gl_context->glBlendColorFn +#define glBlendEquation ::gfx::g_current_gl_context->glBlendEquationFn +#define glBlendEquationSeparate \ + ::gfx::g_current_gl_context->glBlendEquationSeparateFn +#define glBlendFunc ::gfx::g_current_gl_context->glBlendFuncFn +#define glBlendFuncSeparate ::gfx::g_current_gl_context->glBlendFuncSeparateFn +#define glBlitFramebuffer ::gfx::g_current_gl_context->glBlitFramebufferFn +#define glBlitFramebufferANGLE \ + ::gfx::g_current_gl_context->glBlitFramebufferANGLEFn +#define glBlitFramebufferEXT ::gfx::g_current_gl_context->glBlitFramebufferEXTFn +#define glBufferData ::gfx::g_current_gl_context->glBufferDataFn +#define glBufferSubData ::gfx::g_current_gl_context->glBufferSubDataFn +#define glCheckFramebufferStatusEXT \ + ::gfx::g_current_gl_context->glCheckFramebufferStatusEXTFn +#define glClear ::gfx::g_current_gl_context->glClearFn +#define glClearBufferfi ::gfx::g_current_gl_context->glClearBufferfiFn +#define glClearBufferfv ::gfx::g_current_gl_context->glClearBufferfvFn +#define glClearBufferiv ::gfx::g_current_gl_context->glClearBufferivFn +#define glClearBufferuiv ::gfx::g_current_gl_context->glClearBufferuivFn +#define glClearColor ::gfx::g_current_gl_context->glClearColorFn +#define glClearDepth ::gfx::g_current_gl_context->glClearDepthFn +#define glClearDepthf ::gfx::g_current_gl_context->glClearDepthfFn +#define glClearStencil ::gfx::g_current_gl_context->glClearStencilFn +#define glClientWaitSync ::gfx::g_current_gl_context->glClientWaitSyncFn +#define glColorMask ::gfx::g_current_gl_context->glColorMaskFn +#define glCompileShader ::gfx::g_current_gl_context->glCompileShaderFn +#define glCompressedTexImage2D \ + ::gfx::g_current_gl_context->glCompressedTexImage2DFn +#define glCompressedTexImage3D \ + ::gfx::g_current_gl_context->glCompressedTexImage3DFn +#define glCompressedTexSubImage2D \ + ::gfx::g_current_gl_context->glCompressedTexSubImage2DFn +#define glCopyBufferSubData ::gfx::g_current_gl_context->glCopyBufferSubDataFn +#define glCopyTexImage2D ::gfx::g_current_gl_context->glCopyTexImage2DFn +#define glCopyTexSubImage2D ::gfx::g_current_gl_context->glCopyTexSubImage2DFn +#define glCopyTexSubImage3D ::gfx::g_current_gl_context->glCopyTexSubImage3DFn +#define glCreateProgram ::gfx::g_current_gl_context->glCreateProgramFn +#define glCreateShader ::gfx::g_current_gl_context->glCreateShaderFn +#define glCullFace ::gfx::g_current_gl_context->glCullFaceFn +#define glDeleteBuffersARB ::gfx::g_current_gl_context->glDeleteBuffersARBFn +#define glDeleteFencesAPPLE ::gfx::g_current_gl_context->glDeleteFencesAPPLEFn +#define glDeleteFencesNV ::gfx::g_current_gl_context->glDeleteFencesNVFn +#define glDeleteFramebuffersEXT \ + ::gfx::g_current_gl_context->glDeleteFramebuffersEXTFn +#define glDeleteProgram ::gfx::g_current_gl_context->glDeleteProgramFn +#define glDeleteQueries ::gfx::g_current_gl_context->glDeleteQueriesFn +#define glDeleteQueriesARB ::gfx::g_current_gl_context->glDeleteQueriesARBFn +#define glDeleteRenderbuffersEXT \ + ::gfx::g_current_gl_context->glDeleteRenderbuffersEXTFn +#define glDeleteSamplers ::gfx::g_current_gl_context->glDeleteSamplersFn +#define glDeleteShader ::gfx::g_current_gl_context->glDeleteShaderFn +#define glDeleteSync ::gfx::g_current_gl_context->glDeleteSyncFn +#define glDeleteTextures ::gfx::g_current_gl_context->glDeleteTexturesFn +#define glDeleteTransformFeedbacks \ + ::gfx::g_current_gl_context->glDeleteTransformFeedbacksFn +#define glDeleteVertexArraysOES \ + ::gfx::g_current_gl_context->glDeleteVertexArraysOESFn +#define glDepthFunc ::gfx::g_current_gl_context->glDepthFuncFn +#define glDepthMask ::gfx::g_current_gl_context->glDepthMaskFn +#define glDepthRange ::gfx::g_current_gl_context->glDepthRangeFn +#define glDepthRangef ::gfx::g_current_gl_context->glDepthRangefFn +#define glDetachShader ::gfx::g_current_gl_context->glDetachShaderFn +#define glDisable ::gfx::g_current_gl_context->glDisableFn +#define glDisableVertexAttribArray \ + ::gfx::g_current_gl_context->glDisableVertexAttribArrayFn +#define glDiscardFramebufferEXT \ + ::gfx::g_current_gl_context->glDiscardFramebufferEXTFn +#define glDrawArrays ::gfx::g_current_gl_context->glDrawArraysFn +#define glDrawArraysInstancedANGLE \ + ::gfx::g_current_gl_context->glDrawArraysInstancedANGLEFn +#define glDrawBuffer ::gfx::g_current_gl_context->glDrawBufferFn +#define glDrawBuffersARB ::gfx::g_current_gl_context->glDrawBuffersARBFn +#define glDrawElements ::gfx::g_current_gl_context->glDrawElementsFn +#define glDrawElementsInstancedANGLE \ + ::gfx::g_current_gl_context->glDrawElementsInstancedANGLEFn +#define glDrawRangeElements ::gfx::g_current_gl_context->glDrawRangeElementsFn +#define glEGLImageTargetRenderbufferStorageOES \ + ::gfx::g_current_gl_context->glEGLImageTargetRenderbufferStorageOESFn +#define glEGLImageTargetTexture2DOES \ + ::gfx::g_current_gl_context->glEGLImageTargetTexture2DOESFn +#define glEnable ::gfx::g_current_gl_context->glEnableFn +#define glEnableVertexAttribArray \ + ::gfx::g_current_gl_context->glEnableVertexAttribArrayFn +#define glEndQuery ::gfx::g_current_gl_context->glEndQueryFn +#define glEndQueryARB ::gfx::g_current_gl_context->glEndQueryARBFn +#define glEndTransformFeedback \ + ::gfx::g_current_gl_context->glEndTransformFeedbackFn +#define glFenceSync ::gfx::g_current_gl_context->glFenceSyncFn +#define glFinish ::gfx::g_current_gl_context->glFinishFn +#define glFinishFenceAPPLE ::gfx::g_current_gl_context->glFinishFenceAPPLEFn +#define glFinishFenceNV ::gfx::g_current_gl_context->glFinishFenceNVFn +#define glFlush ::gfx::g_current_gl_context->glFlushFn +#define glFlushMappedBufferRange \ + ::gfx::g_current_gl_context->glFlushMappedBufferRangeFn +#define glFramebufferRenderbufferEXT \ + ::gfx::g_current_gl_context->glFramebufferRenderbufferEXTFn +#define glFramebufferTexture2DEXT \ + ::gfx::g_current_gl_context->glFramebufferTexture2DEXTFn +#define glFramebufferTexture2DMultisampleEXT \ + ::gfx::g_current_gl_context->glFramebufferTexture2DMultisampleEXTFn +#define glFramebufferTexture2DMultisampleIMG \ + ::gfx::g_current_gl_context->glFramebufferTexture2DMultisampleIMGFn +#define glFramebufferTextureLayer \ + ::gfx::g_current_gl_context->glFramebufferTextureLayerFn +#define glFrontFace ::gfx::g_current_gl_context->glFrontFaceFn +#define glGenBuffersARB ::gfx::g_current_gl_context->glGenBuffersARBFn +#define glGenerateMipmapEXT ::gfx::g_current_gl_context->glGenerateMipmapEXTFn +#define glGenFencesAPPLE ::gfx::g_current_gl_context->glGenFencesAPPLEFn +#define glGenFencesNV ::gfx::g_current_gl_context->glGenFencesNVFn +#define glGenFramebuffersEXT ::gfx::g_current_gl_context->glGenFramebuffersEXTFn +#define glGenQueries ::gfx::g_current_gl_context->glGenQueriesFn +#define glGenQueriesARB ::gfx::g_current_gl_context->glGenQueriesARBFn +#define glGenRenderbuffersEXT \ + ::gfx::g_current_gl_context->glGenRenderbuffersEXTFn +#define glGenSamplers ::gfx::g_current_gl_context->glGenSamplersFn +#define glGenTextures ::gfx::g_current_gl_context->glGenTexturesFn +#define glGenTransformFeedbacks \ + ::gfx::g_current_gl_context->glGenTransformFeedbacksFn +#define glGenVertexArraysOES ::gfx::g_current_gl_context->glGenVertexArraysOESFn +#define glGetActiveAttrib ::gfx::g_current_gl_context->glGetActiveAttribFn +#define glGetActiveUniform ::gfx::g_current_gl_context->glGetActiveUniformFn +#define glGetActiveUniformBlockiv \ + ::gfx::g_current_gl_context->glGetActiveUniformBlockivFn +#define glGetActiveUniformBlockName \ + ::gfx::g_current_gl_context->glGetActiveUniformBlockNameFn +#define glGetActiveUniformsiv \ + ::gfx::g_current_gl_context->glGetActiveUniformsivFn +#define glGetAttachedShaders ::gfx::g_current_gl_context->glGetAttachedShadersFn +#define glGetAttribLocation ::gfx::g_current_gl_context->glGetAttribLocationFn +#define glGetBooleanv ::gfx::g_current_gl_context->glGetBooleanvFn +#define glGetBufferParameteriv \ + ::gfx::g_current_gl_context->glGetBufferParameterivFn +#define glGetError ::gfx::g_current_gl_context->glGetErrorFn +#define glGetFenceivNV ::gfx::g_current_gl_context->glGetFenceivNVFn +#define glGetFloatv ::gfx::g_current_gl_context->glGetFloatvFn +#define glGetFragDataLocation \ + ::gfx::g_current_gl_context->glGetFragDataLocationFn +#define glGetFramebufferAttachmentParameterivEXT \ + ::gfx::g_current_gl_context->glGetFramebufferAttachmentParameterivEXTFn +#define glGetGraphicsResetStatusARB \ + ::gfx::g_current_gl_context->glGetGraphicsResetStatusARBFn +#define glGetInteger64i_v ::gfx::g_current_gl_context->glGetInteger64i_vFn +#define glGetInteger64v ::gfx::g_current_gl_context->glGetInteger64vFn +#define glGetIntegeri_v ::gfx::g_current_gl_context->glGetIntegeri_vFn +#define glGetIntegerv ::gfx::g_current_gl_context->glGetIntegervFn +#define glGetInternalformativ \ + ::gfx::g_current_gl_context->glGetInternalformativFn +#define glGetProgramBinary ::gfx::g_current_gl_context->glGetProgramBinaryFn +#define glGetProgramInfoLog ::gfx::g_current_gl_context->glGetProgramInfoLogFn +#define glGetProgramiv ::gfx::g_current_gl_context->glGetProgramivFn +#define glGetQueryiv ::gfx::g_current_gl_context->glGetQueryivFn +#define glGetQueryivARB ::gfx::g_current_gl_context->glGetQueryivARBFn +#define glGetQueryObjecti64v ::gfx::g_current_gl_context->glGetQueryObjecti64vFn +#define glGetQueryObjectiv ::gfx::g_current_gl_context->glGetQueryObjectivFn +#define glGetQueryObjectivARB \ + ::gfx::g_current_gl_context->glGetQueryObjectivARBFn +#define glGetQueryObjectui64v \ + ::gfx::g_current_gl_context->glGetQueryObjectui64vFn +#define glGetQueryObjectuiv ::gfx::g_current_gl_context->glGetQueryObjectuivFn +#define glGetQueryObjectuivARB \ + ::gfx::g_current_gl_context->glGetQueryObjectuivARBFn +#define glGetRenderbufferParameterivEXT \ + ::gfx::g_current_gl_context->glGetRenderbufferParameterivEXTFn +#define glGetSamplerParameterfv \ + ::gfx::g_current_gl_context->glGetSamplerParameterfvFn +#define glGetSamplerParameteriv \ + ::gfx::g_current_gl_context->glGetSamplerParameterivFn +#define glGetShaderInfoLog ::gfx::g_current_gl_context->glGetShaderInfoLogFn +#define glGetShaderiv ::gfx::g_current_gl_context->glGetShaderivFn +#define glGetShaderPrecisionFormat \ + ::gfx::g_current_gl_context->glGetShaderPrecisionFormatFn +#define glGetShaderSource ::gfx::g_current_gl_context->glGetShaderSourceFn +#define glGetString ::gfx::g_current_gl_context->glGetStringFn +#define glGetSynciv ::gfx::g_current_gl_context->glGetSyncivFn +#define glGetTexLevelParameterfv \ + ::gfx::g_current_gl_context->glGetTexLevelParameterfvFn +#define glGetTexLevelParameteriv \ + ::gfx::g_current_gl_context->glGetTexLevelParameterivFn +#define glGetTexParameterfv ::gfx::g_current_gl_context->glGetTexParameterfvFn +#define glGetTexParameteriv ::gfx::g_current_gl_context->glGetTexParameterivFn +#define glGetTransformFeedbackVarying \ + ::gfx::g_current_gl_context->glGetTransformFeedbackVaryingFn +#define glGetTranslatedShaderSourceANGLE \ + ::gfx::g_current_gl_context->glGetTranslatedShaderSourceANGLEFn +#define glGetUniformBlockIndex \ + ::gfx::g_current_gl_context->glGetUniformBlockIndexFn +#define glGetUniformfv ::gfx::g_current_gl_context->glGetUniformfvFn +#define glGetUniformIndices ::gfx::g_current_gl_context->glGetUniformIndicesFn +#define glGetUniformiv ::gfx::g_current_gl_context->glGetUniformivFn +#define glGetUniformLocation ::gfx::g_current_gl_context->glGetUniformLocationFn +#define glGetVertexAttribfv ::gfx::g_current_gl_context->glGetVertexAttribfvFn +#define glGetVertexAttribiv ::gfx::g_current_gl_context->glGetVertexAttribivFn +#define glGetVertexAttribPointerv \ + ::gfx::g_current_gl_context->glGetVertexAttribPointervFn +#define glHint ::gfx::g_current_gl_context->glHintFn +#define glInsertEventMarkerEXT \ + ::gfx::g_current_gl_context->glInsertEventMarkerEXTFn +#define glInvalidateFramebuffer \ + ::gfx::g_current_gl_context->glInvalidateFramebufferFn +#define glInvalidateSubFramebuffer \ + ::gfx::g_current_gl_context->glInvalidateSubFramebufferFn +#define glIsBuffer ::gfx::g_current_gl_context->glIsBufferFn +#define glIsEnabled ::gfx::g_current_gl_context->glIsEnabledFn +#define glIsFenceAPPLE ::gfx::g_current_gl_context->glIsFenceAPPLEFn +#define glIsFenceNV ::gfx::g_current_gl_context->glIsFenceNVFn +#define glIsFramebufferEXT ::gfx::g_current_gl_context->glIsFramebufferEXTFn +#define glIsProgram ::gfx::g_current_gl_context->glIsProgramFn +#define glIsQuery ::gfx::g_current_gl_context->glIsQueryFn +#define glIsQueryARB ::gfx::g_current_gl_context->glIsQueryARBFn +#define glIsRenderbufferEXT ::gfx::g_current_gl_context->glIsRenderbufferEXTFn +#define glIsSampler ::gfx::g_current_gl_context->glIsSamplerFn +#define glIsShader ::gfx::g_current_gl_context->glIsShaderFn +#define glIsSync ::gfx::g_current_gl_context->glIsSyncFn +#define glIsTexture ::gfx::g_current_gl_context->glIsTextureFn +#define glIsTransformFeedback \ + ::gfx::g_current_gl_context->glIsTransformFeedbackFn +#define glIsVertexArrayOES ::gfx::g_current_gl_context->glIsVertexArrayOESFn +#define glLineWidth ::gfx::g_current_gl_context->glLineWidthFn +#define glLinkProgram ::gfx::g_current_gl_context->glLinkProgramFn +#define glMapBuffer ::gfx::g_current_gl_context->glMapBufferFn +#define glMapBufferRange ::gfx::g_current_gl_context->glMapBufferRangeFn +#define glMatrixLoadfEXT ::gfx::g_current_gl_context->glMatrixLoadfEXTFn +#define glMatrixLoadIdentityEXT \ + ::gfx::g_current_gl_context->glMatrixLoadIdentityEXTFn +#define glPauseTransformFeedback \ + ::gfx::g_current_gl_context->glPauseTransformFeedbackFn +#define glPixelStorei ::gfx::g_current_gl_context->glPixelStoreiFn +#define glPointParameteri ::gfx::g_current_gl_context->glPointParameteriFn +#define glPolygonOffset ::gfx::g_current_gl_context->glPolygonOffsetFn +#define glPopGroupMarkerEXT ::gfx::g_current_gl_context->glPopGroupMarkerEXTFn +#define glProgramBinary ::gfx::g_current_gl_context->glProgramBinaryFn +#define glProgramParameteri ::gfx::g_current_gl_context->glProgramParameteriFn +#define glPushGroupMarkerEXT ::gfx::g_current_gl_context->glPushGroupMarkerEXTFn +#define glQueryCounter ::gfx::g_current_gl_context->glQueryCounterFn +#define glReadBuffer ::gfx::g_current_gl_context->glReadBufferFn +#define glReadPixels ::gfx::g_current_gl_context->glReadPixelsFn +#define glReleaseShaderCompiler \ + ::gfx::g_current_gl_context->glReleaseShaderCompilerFn +#define glRenderbufferStorageEXT \ + ::gfx::g_current_gl_context->glRenderbufferStorageEXTFn +#define glRenderbufferStorageMultisample \ + ::gfx::g_current_gl_context->glRenderbufferStorageMultisampleFn +#define glRenderbufferStorageMultisampleANGLE \ + ::gfx::g_current_gl_context->glRenderbufferStorageMultisampleANGLEFn +#define glRenderbufferStorageMultisampleEXT \ + ::gfx::g_current_gl_context->glRenderbufferStorageMultisampleEXTFn +#define glRenderbufferStorageMultisampleIMG \ + ::gfx::g_current_gl_context->glRenderbufferStorageMultisampleIMGFn +#define glResumeTransformFeedback \ + ::gfx::g_current_gl_context->glResumeTransformFeedbackFn +#define glSampleCoverage ::gfx::g_current_gl_context->glSampleCoverageFn +#define glSamplerParameterf ::gfx::g_current_gl_context->glSamplerParameterfFn +#define glSamplerParameterfv ::gfx::g_current_gl_context->glSamplerParameterfvFn +#define glSamplerParameteri ::gfx::g_current_gl_context->glSamplerParameteriFn +#define glSamplerParameteriv ::gfx::g_current_gl_context->glSamplerParameterivFn +#define glScissor ::gfx::g_current_gl_context->glScissorFn +#define glSetFenceAPPLE ::gfx::g_current_gl_context->glSetFenceAPPLEFn +#define glSetFenceNV ::gfx::g_current_gl_context->glSetFenceNVFn +#define glShaderBinary ::gfx::g_current_gl_context->glShaderBinaryFn +#define glShaderSource ::gfx::g_current_gl_context->glShaderSourceFn +#define glStencilFunc ::gfx::g_current_gl_context->glStencilFuncFn +#define glStencilFuncSeparate \ + ::gfx::g_current_gl_context->glStencilFuncSeparateFn +#define glStencilMask ::gfx::g_current_gl_context->glStencilMaskFn +#define glStencilMaskSeparate \ + ::gfx::g_current_gl_context->glStencilMaskSeparateFn +#define glStencilOp ::gfx::g_current_gl_context->glStencilOpFn +#define glStencilOpSeparate ::gfx::g_current_gl_context->glStencilOpSeparateFn +#define glTestFenceAPPLE ::gfx::g_current_gl_context->glTestFenceAPPLEFn +#define glTestFenceNV ::gfx::g_current_gl_context->glTestFenceNVFn +#define glTexImage2D ::gfx::g_current_gl_context->glTexImage2DFn +#define glTexImage3D ::gfx::g_current_gl_context->glTexImage3DFn +#define glTexParameterf ::gfx::g_current_gl_context->glTexParameterfFn +#define glTexParameterfv ::gfx::g_current_gl_context->glTexParameterfvFn +#define glTexParameteri ::gfx::g_current_gl_context->glTexParameteriFn +#define glTexParameteriv ::gfx::g_current_gl_context->glTexParameterivFn +#define glTexStorage2DEXT ::gfx::g_current_gl_context->glTexStorage2DEXTFn +#define glTexStorage3D ::gfx::g_current_gl_context->glTexStorage3DFn +#define glTexSubImage2D ::gfx::g_current_gl_context->glTexSubImage2DFn +#define glTransformFeedbackVaryings \ + ::gfx::g_current_gl_context->glTransformFeedbackVaryingsFn +#define glUniform1f ::gfx::g_current_gl_context->glUniform1fFn +#define glUniform1fv ::gfx::g_current_gl_context->glUniform1fvFn +#define glUniform1i ::gfx::g_current_gl_context->glUniform1iFn +#define glUniform1iv ::gfx::g_current_gl_context->glUniform1ivFn +#define glUniform1ui ::gfx::g_current_gl_context->glUniform1uiFn +#define glUniform1uiv ::gfx::g_current_gl_context->glUniform1uivFn +#define glUniform2f ::gfx::g_current_gl_context->glUniform2fFn +#define glUniform2fv ::gfx::g_current_gl_context->glUniform2fvFn +#define glUniform2i ::gfx::g_current_gl_context->glUniform2iFn +#define glUniform2iv ::gfx::g_current_gl_context->glUniform2ivFn +#define glUniform2ui ::gfx::g_current_gl_context->glUniform2uiFn +#define glUniform2uiv ::gfx::g_current_gl_context->glUniform2uivFn +#define glUniform3f ::gfx::g_current_gl_context->glUniform3fFn +#define glUniform3fv ::gfx::g_current_gl_context->glUniform3fvFn +#define glUniform3i ::gfx::g_current_gl_context->glUniform3iFn +#define glUniform3iv ::gfx::g_current_gl_context->glUniform3ivFn +#define glUniform3ui ::gfx::g_current_gl_context->glUniform3uiFn +#define glUniform3uiv ::gfx::g_current_gl_context->glUniform3uivFn +#define glUniform4f ::gfx::g_current_gl_context->glUniform4fFn +#define glUniform4fv ::gfx::g_current_gl_context->glUniform4fvFn +#define glUniform4i ::gfx::g_current_gl_context->glUniform4iFn +#define glUniform4iv ::gfx::g_current_gl_context->glUniform4ivFn +#define glUniform4ui ::gfx::g_current_gl_context->glUniform4uiFn +#define glUniform4uiv ::gfx::g_current_gl_context->glUniform4uivFn +#define glUniformBlockBinding \ + ::gfx::g_current_gl_context->glUniformBlockBindingFn +#define glUniformMatrix2fv ::gfx::g_current_gl_context->glUniformMatrix2fvFn +#define glUniformMatrix2x3fv ::gfx::g_current_gl_context->glUniformMatrix2x3fvFn +#define glUniformMatrix2x4fv ::gfx::g_current_gl_context->glUniformMatrix2x4fvFn +#define glUniformMatrix3fv ::gfx::g_current_gl_context->glUniformMatrix3fvFn +#define glUniformMatrix3x2fv ::gfx::g_current_gl_context->glUniformMatrix3x2fvFn +#define glUniformMatrix3x4fv ::gfx::g_current_gl_context->glUniformMatrix3x4fvFn +#define glUniformMatrix4fv ::gfx::g_current_gl_context->glUniformMatrix4fvFn +#define glUniformMatrix4x2fv ::gfx::g_current_gl_context->glUniformMatrix4x2fvFn +#define glUniformMatrix4x3fv ::gfx::g_current_gl_context->glUniformMatrix4x3fvFn +#define glUnmapBuffer ::gfx::g_current_gl_context->glUnmapBufferFn +#define glUseProgram ::gfx::g_current_gl_context->glUseProgramFn +#define glValidateProgram ::gfx::g_current_gl_context->glValidateProgramFn +#define glVertexAttrib1f ::gfx::g_current_gl_context->glVertexAttrib1fFn +#define glVertexAttrib1fv ::gfx::g_current_gl_context->glVertexAttrib1fvFn +#define glVertexAttrib2f ::gfx::g_current_gl_context->glVertexAttrib2fFn +#define glVertexAttrib2fv ::gfx::g_current_gl_context->glVertexAttrib2fvFn +#define glVertexAttrib3f ::gfx::g_current_gl_context->glVertexAttrib3fFn +#define glVertexAttrib3fv ::gfx::g_current_gl_context->glVertexAttrib3fvFn +#define glVertexAttrib4f ::gfx::g_current_gl_context->glVertexAttrib4fFn +#define glVertexAttrib4fv ::gfx::g_current_gl_context->glVertexAttrib4fvFn +#define glVertexAttribDivisorANGLE \ + ::gfx::g_current_gl_context->glVertexAttribDivisorANGLEFn +#define glVertexAttribI4i ::gfx::g_current_gl_context->glVertexAttribI4iFn +#define glVertexAttribI4iv ::gfx::g_current_gl_context->glVertexAttribI4ivFn +#define glVertexAttribI4ui ::gfx::g_current_gl_context->glVertexAttribI4uiFn +#define glVertexAttribI4uiv ::gfx::g_current_gl_context->glVertexAttribI4uivFn +#define glVertexAttribIPointer \ + ::gfx::g_current_gl_context->glVertexAttribIPointerFn +#define glVertexAttribPointer \ + ::gfx::g_current_gl_context->glVertexAttribPointerFn +#define glViewport ::gfx::g_current_gl_context->glViewportFn +#define glWaitSync ::gfx::g_current_gl_context->glWaitSyncFn + +#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_GL_H_
diff --git a/ui/gl/gl_bindings_autogen_glx.cc b/ui/gl/gl_bindings_autogen_glx.cc new file mode 100644 index 0000000..617ff5f --- /dev/null +++ b/ui/gl/gl_bindings_autogen_glx.cc
@@ -0,0 +1,1463 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#include <string> + +#include "base/debug/trace_event.h" +#include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_context.h" +#include "ui/gl/gl_enums.h" +#include "ui/gl/gl_glx_api_implementation.h" +#include "ui/gl/gl_implementation.h" +#include "ui/gl/gl_version_info.h" + +namespace gfx { + +static bool g_debugBindingsInitialized; +DriverGLX g_driver_glx; + +void DriverGLX::InitializeStaticBindings() { + fn.glXBindTexImageEXTFn = reinterpret_cast<glXBindTexImageEXTProc>( + GetGLProcAddress("glXBindTexImageEXT")); + fn.glXChooseFBConfigFn = reinterpret_cast<glXChooseFBConfigProc>( + GetGLProcAddress("glXChooseFBConfig")); + fn.glXChooseVisualFn = reinterpret_cast<glXChooseVisualProc>( + GetGLProcAddress("glXChooseVisual")); + fn.glXCopyContextFn = + reinterpret_cast<glXCopyContextProc>(GetGLProcAddress("glXCopyContext")); + fn.glXCopySubBufferMESAFn = reinterpret_cast<glXCopySubBufferMESAProc>( + GetGLProcAddress("glXCopySubBufferMESA")); + fn.glXCreateContextFn = reinterpret_cast<glXCreateContextProc>( + GetGLProcAddress("glXCreateContext")); + fn.glXCreateContextAttribsARBFn = + reinterpret_cast<glXCreateContextAttribsARBProc>( + GetGLProcAddress("glXCreateContextAttribsARB")); + fn.glXCreateGLXPixmapFn = reinterpret_cast<glXCreateGLXPixmapProc>( + GetGLProcAddress("glXCreateGLXPixmap")); + fn.glXCreateNewContextFn = reinterpret_cast<glXCreateNewContextProc>( + GetGLProcAddress("glXCreateNewContext")); + fn.glXCreatePbufferFn = reinterpret_cast<glXCreatePbufferProc>( + GetGLProcAddress("glXCreatePbuffer")); + fn.glXCreatePixmapFn = reinterpret_cast<glXCreatePixmapProc>( + GetGLProcAddress("glXCreatePixmap")); + fn.glXCreateWindowFn = reinterpret_cast<glXCreateWindowProc>( + GetGLProcAddress("glXCreateWindow")); + fn.glXDestroyContextFn = reinterpret_cast<glXDestroyContextProc>( + GetGLProcAddress("glXDestroyContext")); + fn.glXDestroyGLXPixmapFn = reinterpret_cast<glXDestroyGLXPixmapProc>( + GetGLProcAddress("glXDestroyGLXPixmap")); + fn.glXDestroyPbufferFn = reinterpret_cast<glXDestroyPbufferProc>( + GetGLProcAddress("glXDestroyPbuffer")); + fn.glXDestroyPixmapFn = reinterpret_cast<glXDestroyPixmapProc>( + GetGLProcAddress("glXDestroyPixmap")); + fn.glXDestroyWindowFn = reinterpret_cast<glXDestroyWindowProc>( + GetGLProcAddress("glXDestroyWindow")); + fn.glXGetClientStringFn = reinterpret_cast<glXGetClientStringProc>( + GetGLProcAddress("glXGetClientString")); + fn.glXGetConfigFn = + reinterpret_cast<glXGetConfigProc>(GetGLProcAddress("glXGetConfig")); + fn.glXGetCurrentContextFn = reinterpret_cast<glXGetCurrentContextProc>( + GetGLProcAddress("glXGetCurrentContext")); + fn.glXGetCurrentDisplayFn = reinterpret_cast<glXGetCurrentDisplayProc>( + GetGLProcAddress("glXGetCurrentDisplay")); + fn.glXGetCurrentDrawableFn = reinterpret_cast<glXGetCurrentDrawableProc>( + GetGLProcAddress("glXGetCurrentDrawable")); + fn.glXGetCurrentReadDrawableFn = + reinterpret_cast<glXGetCurrentReadDrawableProc>( + GetGLProcAddress("glXGetCurrentReadDrawable")); + fn.glXGetFBConfigAttribFn = reinterpret_cast<glXGetFBConfigAttribProc>( + GetGLProcAddress("glXGetFBConfigAttrib")); + fn.glXGetFBConfigFromVisualSGIXFn = + reinterpret_cast<glXGetFBConfigFromVisualSGIXProc>( + GetGLProcAddress("glXGetFBConfigFromVisualSGIX")); + fn.glXGetFBConfigsFn = reinterpret_cast<glXGetFBConfigsProc>( + GetGLProcAddress("glXGetFBConfigs")); + fn.glXGetMscRateOMLFn = reinterpret_cast<glXGetMscRateOMLProc>( + GetGLProcAddress("glXGetMscRateOML")); + fn.glXGetSelectedEventFn = reinterpret_cast<glXGetSelectedEventProc>( + GetGLProcAddress("glXGetSelectedEvent")); + fn.glXGetSyncValuesOMLFn = reinterpret_cast<glXGetSyncValuesOMLProc>( + GetGLProcAddress("glXGetSyncValuesOML")); + fn.glXGetVisualFromFBConfigFn = + reinterpret_cast<glXGetVisualFromFBConfigProc>( + GetGLProcAddress("glXGetVisualFromFBConfig")); + fn.glXIsDirectFn = + reinterpret_cast<glXIsDirectProc>(GetGLProcAddress("glXIsDirect")); + fn.glXMakeContextCurrentFn = reinterpret_cast<glXMakeContextCurrentProc>( + GetGLProcAddress("glXMakeContextCurrent")); + fn.glXMakeCurrentFn = + reinterpret_cast<glXMakeCurrentProc>(GetGLProcAddress("glXMakeCurrent")); + fn.glXQueryContextFn = reinterpret_cast<glXQueryContextProc>( + GetGLProcAddress("glXQueryContext")); + fn.glXQueryDrawableFn = reinterpret_cast<glXQueryDrawableProc>( + GetGLProcAddress("glXQueryDrawable")); + fn.glXQueryExtensionFn = reinterpret_cast<glXQueryExtensionProc>( + GetGLProcAddress("glXQueryExtension")); + fn.glXQueryExtensionsStringFn = + reinterpret_cast<glXQueryExtensionsStringProc>( + GetGLProcAddress("glXQueryExtensionsString")); + fn.glXQueryServerStringFn = reinterpret_cast<glXQueryServerStringProc>( + GetGLProcAddress("glXQueryServerString")); + fn.glXQueryVersionFn = reinterpret_cast<glXQueryVersionProc>( + GetGLProcAddress("glXQueryVersion")); + fn.glXReleaseTexImageEXTFn = reinterpret_cast<glXReleaseTexImageEXTProc>( + GetGLProcAddress("glXReleaseTexImageEXT")); + fn.glXSelectEventFn = + reinterpret_cast<glXSelectEventProc>(GetGLProcAddress("glXSelectEvent")); + fn.glXSwapBuffersFn = + reinterpret_cast<glXSwapBuffersProc>(GetGLProcAddress("glXSwapBuffers")); + fn.glXSwapIntervalEXTFn = reinterpret_cast<glXSwapIntervalEXTProc>( + GetGLProcAddress("glXSwapIntervalEXT")); + fn.glXSwapIntervalMESAFn = reinterpret_cast<glXSwapIntervalMESAProc>( + GetGLProcAddress("glXSwapIntervalMESA")); + fn.glXUseXFontFn = + reinterpret_cast<glXUseXFontProc>(GetGLProcAddress("glXUseXFont")); + fn.glXWaitGLFn = + reinterpret_cast<glXWaitGLProc>(GetGLProcAddress("glXWaitGL")); + fn.glXWaitVideoSyncSGIFn = reinterpret_cast<glXWaitVideoSyncSGIProc>( + GetGLProcAddress("glXWaitVideoSyncSGI")); + fn.glXWaitXFn = reinterpret_cast<glXWaitXProc>(GetGLProcAddress("glXWaitX")); +} + +void DriverGLX::InitializeDynamicBindings(GLContext* context) { + DCHECK(context && context->IsCurrent(NULL)); + const GLVersionInfo* ver = context->GetVersionInfo(); + ALLOW_UNUSED_LOCAL(ver); + std::string extensions = context->GetExtensions() + " "; + ALLOW_UNUSED_LOCAL(extensions); + + ext.b_GLX_ARB_create_context = + extensions.find("GLX_ARB_create_context ") != std::string::npos; + ext.b_GLX_EXT_swap_control = + extensions.find("GLX_EXT_swap_control ") != std::string::npos; + ext.b_GLX_EXT_texture_from_pixmap = + extensions.find("GLX_EXT_texture_from_pixmap ") != std::string::npos; + ext.b_GLX_MESA_copy_sub_buffer = + extensions.find("GLX_MESA_copy_sub_buffer ") != std::string::npos; + ext.b_GLX_MESA_swap_control = + extensions.find("GLX_MESA_swap_control ") != std::string::npos; + ext.b_GLX_OML_sync_control = + extensions.find("GLX_OML_sync_control ") != std::string::npos; + ext.b_GLX_SGIX_fbconfig = + extensions.find("GLX_SGIX_fbconfig ") != std::string::npos; + ext.b_GLX_SGI_video_sync = + extensions.find("GLX_SGI_video_sync ") != std::string::npos; + + if (g_debugBindingsInitialized) + InitializeDebugBindings(); +} + +extern "C" { + +static void GL_BINDING_CALL Debug_glXBindTexImageEXT(Display* dpy, + GLXDrawable drawable, + int buffer, + int* attribList) { + GL_SERVICE_LOG("glXBindTexImageEXT" + << "(" << static_cast<const void*>(dpy) << ", " << drawable + << ", " << buffer << ", " + << static_cast<const void*>(attribList) << ")"); + g_driver_glx.debug_fn.glXBindTexImageEXTFn(dpy, drawable, buffer, attribList); +} + +static GLXFBConfig* GL_BINDING_CALL +Debug_glXChooseFBConfig(Display* dpy, + int screen, + const int* attribList, + int* nitems) { + GL_SERVICE_LOG("glXChooseFBConfig" + << "(" << static_cast<const void*>(dpy) << ", " << screen + << ", " << static_cast<const void*>(attribList) << ", " + << static_cast<const void*>(nitems) << ")"); + GLXFBConfig* result = g_driver_glx.debug_fn.glXChooseFBConfigFn( + dpy, screen, attribList, nitems); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static XVisualInfo* GL_BINDING_CALL +Debug_glXChooseVisual(Display* dpy, int screen, int* attribList) { + GL_SERVICE_LOG("glXChooseVisual" + << "(" << static_cast<const void*>(dpy) << ", " << screen + << ", " << static_cast<const void*>(attribList) << ")"); + XVisualInfo* result = + g_driver_glx.debug_fn.glXChooseVisualFn(dpy, screen, attribList); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glXCopyContext(Display* dpy, + GLXContext src, + GLXContext dst, + unsigned long mask) { + GL_SERVICE_LOG("glXCopyContext" + << "(" << static_cast<const void*>(dpy) << ", " << src << ", " + << dst << ", " << mask << ")"); + g_driver_glx.debug_fn.glXCopyContextFn(dpy, src, dst, mask); +} + +static void GL_BINDING_CALL Debug_glXCopySubBufferMESA(Display* dpy, + GLXDrawable drawable, + int x, + int y, + int width, + int height) { + GL_SERVICE_LOG("glXCopySubBufferMESA" + << "(" << static_cast<const void*>(dpy) << ", " << drawable + << ", " << x << ", " << y << ", " << width << ", " << height + << ")"); + g_driver_glx.debug_fn.glXCopySubBufferMESAFn(dpy, drawable, x, y, width, + height); +} + +static GLXContext GL_BINDING_CALL Debug_glXCreateContext(Display* dpy, + XVisualInfo* vis, + GLXContext shareList, + int direct) { + GL_SERVICE_LOG("glXCreateContext" + << "(" << static_cast<const void*>(dpy) << ", " + << static_cast<const void*>(vis) << ", " << shareList << ", " + << direct << ")"); + GLXContext result = + g_driver_glx.debug_fn.glXCreateContextFn(dpy, vis, shareList, direct); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXContext GL_BINDING_CALL +Debug_glXCreateContextAttribsARB(Display* dpy, + GLXFBConfig config, + GLXContext share_context, + int direct, + const int* attrib_list) { + GL_SERVICE_LOG("glXCreateContextAttribsARB" + << "(" << static_cast<const void*>(dpy) << ", " << config + << ", " << share_context << ", " << direct << ", " + << static_cast<const void*>(attrib_list) << ")"); + GLXContext result = g_driver_glx.debug_fn.glXCreateContextAttribsARBFn( + dpy, config, share_context, direct, attrib_list); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXPixmap GL_BINDING_CALL +Debug_glXCreateGLXPixmap(Display* dpy, XVisualInfo* visual, Pixmap pixmap) { + GL_SERVICE_LOG("glXCreateGLXPixmap" + << "(" << static_cast<const void*>(dpy) << ", " + << static_cast<const void*>(visual) << ", " << pixmap << ")"); + GLXPixmap result = + g_driver_glx.debug_fn.glXCreateGLXPixmapFn(dpy, visual, pixmap); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXContext GL_BINDING_CALL +Debug_glXCreateNewContext(Display* dpy, + GLXFBConfig config, + int renderType, + GLXContext shareList, + int direct) { + GL_SERVICE_LOG("glXCreateNewContext" + << "(" << static_cast<const void*>(dpy) << ", " << config + << ", " << renderType << ", " << shareList << ", " << direct + << ")"); + GLXContext result = g_driver_glx.debug_fn.glXCreateNewContextFn( + dpy, config, renderType, shareList, direct); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXPbuffer GL_BINDING_CALL +Debug_glXCreatePbuffer(Display* dpy, + GLXFBConfig config, + const int* attribList) { + GL_SERVICE_LOG("glXCreatePbuffer" + << "(" << static_cast<const void*>(dpy) << ", " << config + << ", " << static_cast<const void*>(attribList) << ")"); + GLXPbuffer result = + g_driver_glx.debug_fn.glXCreatePbufferFn(dpy, config, attribList); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXPixmap GL_BINDING_CALL Debug_glXCreatePixmap(Display* dpy, + GLXFBConfig config, + Pixmap pixmap, + const int* attribList) { + GL_SERVICE_LOG("glXCreatePixmap" + << "(" << static_cast<const void*>(dpy) << ", " << config + << ", " << pixmap << ", " + << static_cast<const void*>(attribList) << ")"); + GLXPixmap result = + g_driver_glx.debug_fn.glXCreatePixmapFn(dpy, config, pixmap, attribList); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXWindow GL_BINDING_CALL Debug_glXCreateWindow(Display* dpy, + GLXFBConfig config, + Window win, + const int* attribList) { + GL_SERVICE_LOG("glXCreateWindow" + << "(" << static_cast<const void*>(dpy) << ", " << config + << ", " << win << ", " << static_cast<const void*>(attribList) + << ")"); + GLXWindow result = + g_driver_glx.debug_fn.glXCreateWindowFn(dpy, config, win, attribList); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL +Debug_glXDestroyContext(Display* dpy, GLXContext ctx) { + GL_SERVICE_LOG("glXDestroyContext" + << "(" << static_cast<const void*>(dpy) << ", " << ctx << ")"); + g_driver_glx.debug_fn.glXDestroyContextFn(dpy, ctx); +} + +static void GL_BINDING_CALL +Debug_glXDestroyGLXPixmap(Display* dpy, GLXPixmap pixmap) { + GL_SERVICE_LOG("glXDestroyGLXPixmap" + << "(" << static_cast<const void*>(dpy) << ", " << pixmap + << ")"); + g_driver_glx.debug_fn.glXDestroyGLXPixmapFn(dpy, pixmap); +} + +static void GL_BINDING_CALL +Debug_glXDestroyPbuffer(Display* dpy, GLXPbuffer pbuf) { + GL_SERVICE_LOG("glXDestroyPbuffer" + << "(" << static_cast<const void*>(dpy) << ", " << pbuf + << ")"); + g_driver_glx.debug_fn.glXDestroyPbufferFn(dpy, pbuf); +} + +static void GL_BINDING_CALL +Debug_glXDestroyPixmap(Display* dpy, GLXPixmap pixmap) { + GL_SERVICE_LOG("glXDestroyPixmap" + << "(" << static_cast<const void*>(dpy) << ", " << pixmap + << ")"); + g_driver_glx.debug_fn.glXDestroyPixmapFn(dpy, pixmap); +} + +static void GL_BINDING_CALL +Debug_glXDestroyWindow(Display* dpy, GLXWindow window) { + GL_SERVICE_LOG("glXDestroyWindow" + << "(" << static_cast<const void*>(dpy) << ", " << window + << ")"); + g_driver_glx.debug_fn.glXDestroyWindowFn(dpy, window); +} + +static const char* GL_BINDING_CALL +Debug_glXGetClientString(Display* dpy, int name) { + GL_SERVICE_LOG("glXGetClientString" + << "(" << static_cast<const void*>(dpy) << ", " << name + << ")"); + const char* result = g_driver_glx.debug_fn.glXGetClientStringFn(dpy, name); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static int GL_BINDING_CALL +Debug_glXGetConfig(Display* dpy, XVisualInfo* visual, int attrib, int* value) { + GL_SERVICE_LOG("glXGetConfig" + << "(" << static_cast<const void*>(dpy) << ", " + << static_cast<const void*>(visual) << ", " << attrib << ", " + << static_cast<const void*>(value) << ")"); + int result = g_driver_glx.debug_fn.glXGetConfigFn(dpy, visual, attrib, value); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXContext GL_BINDING_CALL Debug_glXGetCurrentContext(void) { + GL_SERVICE_LOG("glXGetCurrentContext" + << "(" + << ")"); + GLXContext result = g_driver_glx.debug_fn.glXGetCurrentContextFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static Display* GL_BINDING_CALL Debug_glXGetCurrentDisplay(void) { + GL_SERVICE_LOG("glXGetCurrentDisplay" + << "(" + << ")"); + Display* result = g_driver_glx.debug_fn.glXGetCurrentDisplayFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXDrawable GL_BINDING_CALL Debug_glXGetCurrentDrawable(void) { + GL_SERVICE_LOG("glXGetCurrentDrawable" + << "(" + << ")"); + GLXDrawable result = g_driver_glx.debug_fn.glXGetCurrentDrawableFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXDrawable GL_BINDING_CALL Debug_glXGetCurrentReadDrawable(void) { + GL_SERVICE_LOG("glXGetCurrentReadDrawable" + << "(" + << ")"); + GLXDrawable result = g_driver_glx.debug_fn.glXGetCurrentReadDrawableFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static int GL_BINDING_CALL Debug_glXGetFBConfigAttrib(Display* dpy, + GLXFBConfig config, + int attribute, + int* value) { + GL_SERVICE_LOG("glXGetFBConfigAttrib" + << "(" << static_cast<const void*>(dpy) << ", " << config + << ", " << attribute << ", " << static_cast<const void*>(value) + << ")"); + int result = g_driver_glx.debug_fn.glXGetFBConfigAttribFn(dpy, config, + attribute, value); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXFBConfig GL_BINDING_CALL +Debug_glXGetFBConfigFromVisualSGIX(Display* dpy, XVisualInfo* visualInfo) { + GL_SERVICE_LOG("glXGetFBConfigFromVisualSGIX" + << "(" << static_cast<const void*>(dpy) << ", " + << static_cast<const void*>(visualInfo) << ")"); + GLXFBConfig result = + g_driver_glx.debug_fn.glXGetFBConfigFromVisualSGIXFn(dpy, visualInfo); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLXFBConfig* GL_BINDING_CALL +Debug_glXGetFBConfigs(Display* dpy, int screen, int* nelements) { + GL_SERVICE_LOG("glXGetFBConfigs" + << "(" << static_cast<const void*>(dpy) << ", " << screen + << ", " << static_cast<const void*>(nelements) << ")"); + GLXFBConfig* result = + g_driver_glx.debug_fn.glXGetFBConfigsFn(dpy, screen, nelements); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static bool GL_BINDING_CALL Debug_glXGetMscRateOML(Display* dpy, + GLXDrawable drawable, + int32* numerator, + int32* denominator) { + GL_SERVICE_LOG("glXGetMscRateOML" + << "(" << static_cast<const void*>(dpy) << ", " << drawable + << ", " << static_cast<const void*>(numerator) << ", " + << static_cast<const void*>(denominator) << ")"); + bool result = g_driver_glx.debug_fn.glXGetMscRateOMLFn( + dpy, drawable, numerator, denominator); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glXGetSelectedEvent(Display* dpy, + GLXDrawable drawable, + unsigned long* mask) { + GL_SERVICE_LOG("glXGetSelectedEvent" + << "(" << static_cast<const void*>(dpy) << ", " << drawable + << ", " << static_cast<const void*>(mask) << ")"); + g_driver_glx.debug_fn.glXGetSelectedEventFn(dpy, drawable, mask); +} + +static bool GL_BINDING_CALL Debug_glXGetSyncValuesOML(Display* dpy, + GLXDrawable drawable, + int64* ust, + int64* msc, + int64* sbc) { + GL_SERVICE_LOG("glXGetSyncValuesOML" + << "(" << static_cast<const void*>(dpy) << ", " << drawable + << ", " << static_cast<const void*>(ust) << ", " + << static_cast<const void*>(msc) << ", " + << static_cast<const void*>(sbc) << ")"); + bool result = + g_driver_glx.debug_fn.glXGetSyncValuesOMLFn(dpy, drawable, ust, msc, sbc); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static XVisualInfo* GL_BINDING_CALL +Debug_glXGetVisualFromFBConfig(Display* dpy, GLXFBConfig config) { + GL_SERVICE_LOG("glXGetVisualFromFBConfig" + << "(" << static_cast<const void*>(dpy) << ", " << config + << ")"); + XVisualInfo* result = + g_driver_glx.debug_fn.glXGetVisualFromFBConfigFn(dpy, config); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static int GL_BINDING_CALL Debug_glXIsDirect(Display* dpy, GLXContext ctx) { + GL_SERVICE_LOG("glXIsDirect" + << "(" << static_cast<const void*>(dpy) << ", " << ctx << ")"); + int result = g_driver_glx.debug_fn.glXIsDirectFn(dpy, ctx); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static int GL_BINDING_CALL Debug_glXMakeContextCurrent(Display* dpy, + GLXDrawable draw, + GLXDrawable read, + GLXContext ctx) { + GL_SERVICE_LOG("glXMakeContextCurrent" + << "(" << static_cast<const void*>(dpy) << ", " << draw << ", " + << read << ", " << ctx << ")"); + int result = + g_driver_glx.debug_fn.glXMakeContextCurrentFn(dpy, draw, read, ctx); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static int GL_BINDING_CALL +Debug_glXMakeCurrent(Display* dpy, GLXDrawable drawable, GLXContext ctx) { + GL_SERVICE_LOG("glXMakeCurrent" + << "(" << static_cast<const void*>(dpy) << ", " << drawable + << ", " << ctx << ")"); + int result = g_driver_glx.debug_fn.glXMakeCurrentFn(dpy, drawable, ctx); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static int GL_BINDING_CALL +Debug_glXQueryContext(Display* dpy, GLXContext ctx, int attribute, int* value) { + GL_SERVICE_LOG("glXQueryContext" + << "(" << static_cast<const void*>(dpy) << ", " << ctx << ", " + << attribute << ", " << static_cast<const void*>(value) + << ")"); + int result = + g_driver_glx.debug_fn.glXQueryContextFn(dpy, ctx, attribute, value); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glXQueryDrawable(Display* dpy, + GLXDrawable draw, + int attribute, + unsigned int* value) { + GL_SERVICE_LOG("glXQueryDrawable" + << "(" << static_cast<const void*>(dpy) << ", " << draw << ", " + << attribute << ", " << static_cast<const void*>(value) + << ")"); + g_driver_glx.debug_fn.glXQueryDrawableFn(dpy, draw, attribute, value); +} + +static int GL_BINDING_CALL +Debug_glXQueryExtension(Display* dpy, int* errorb, int* event) { + GL_SERVICE_LOG("glXQueryExtension" + << "(" << static_cast<const void*>(dpy) << ", " + << static_cast<const void*>(errorb) << ", " + << static_cast<const void*>(event) << ")"); + int result = g_driver_glx.debug_fn.glXQueryExtensionFn(dpy, errorb, event); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static const char* GL_BINDING_CALL +Debug_glXQueryExtensionsString(Display* dpy, int screen) { + GL_SERVICE_LOG("glXQueryExtensionsString" + << "(" << static_cast<const void*>(dpy) << ", " << screen + << ")"); + const char* result = + g_driver_glx.debug_fn.glXQueryExtensionsStringFn(dpy, screen); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static const char* GL_BINDING_CALL +Debug_glXQueryServerString(Display* dpy, int screen, int name) { + GL_SERVICE_LOG("glXQueryServerString" + << "(" << static_cast<const void*>(dpy) << ", " << screen + << ", " << name << ")"); + const char* result = + g_driver_glx.debug_fn.glXQueryServerStringFn(dpy, screen, name); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static int GL_BINDING_CALL +Debug_glXQueryVersion(Display* dpy, int* maj, int* min) { + GL_SERVICE_LOG("glXQueryVersion" + << "(" << static_cast<const void*>(dpy) << ", " + << static_cast<const void*>(maj) << ", " + << static_cast<const void*>(min) << ")"); + int result = g_driver_glx.debug_fn.glXQueryVersionFn(dpy, maj, min); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL +Debug_glXReleaseTexImageEXT(Display* dpy, GLXDrawable drawable, int buffer) { + GL_SERVICE_LOG("glXReleaseTexImageEXT" + << "(" << static_cast<const void*>(dpy) << ", " << drawable + << ", " << buffer << ")"); + g_driver_glx.debug_fn.glXReleaseTexImageEXTFn(dpy, drawable, buffer); +} + +static void GL_BINDING_CALL +Debug_glXSelectEvent(Display* dpy, GLXDrawable drawable, unsigned long mask) { + GL_SERVICE_LOG("glXSelectEvent" + << "(" << static_cast<const void*>(dpy) << ", " << drawable + << ", " << mask << ")"); + g_driver_glx.debug_fn.glXSelectEventFn(dpy, drawable, mask); +} + +static void GL_BINDING_CALL +Debug_glXSwapBuffers(Display* dpy, GLXDrawable drawable) { + GL_SERVICE_LOG("glXSwapBuffers" + << "(" << static_cast<const void*>(dpy) << ", " << drawable + << ")"); + g_driver_glx.debug_fn.glXSwapBuffersFn(dpy, drawable); +} + +static void GL_BINDING_CALL +Debug_glXSwapIntervalEXT(Display* dpy, GLXDrawable drawable, int interval) { + GL_SERVICE_LOG("glXSwapIntervalEXT" + << "(" << static_cast<const void*>(dpy) << ", " << drawable + << ", " << interval << ")"); + g_driver_glx.debug_fn.glXSwapIntervalEXTFn(dpy, drawable, interval); +} + +static void GL_BINDING_CALL Debug_glXSwapIntervalMESA(unsigned int interval) { + GL_SERVICE_LOG("glXSwapIntervalMESA" + << "(" << interval << ")"); + g_driver_glx.debug_fn.glXSwapIntervalMESAFn(interval); +} + +static void GL_BINDING_CALL +Debug_glXUseXFont(Font font, int first, int count, int list) { + GL_SERVICE_LOG("glXUseXFont" + << "(" << font << ", " << first << ", " << count << ", " + << list << ")"); + g_driver_glx.debug_fn.glXUseXFontFn(font, first, count, list); +} + +static void GL_BINDING_CALL Debug_glXWaitGL(void) { + GL_SERVICE_LOG("glXWaitGL" + << "(" + << ")"); + g_driver_glx.debug_fn.glXWaitGLFn(); +} + +static int GL_BINDING_CALL +Debug_glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int* count) { + GL_SERVICE_LOG("glXWaitVideoSyncSGI" + << "(" << divisor << ", " << remainder << ", " + << static_cast<const void*>(count) << ")"); + int result = + g_driver_glx.debug_fn.glXWaitVideoSyncSGIFn(divisor, remainder, count); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_glXWaitX(void) { + GL_SERVICE_LOG("glXWaitX" + << "(" + << ")"); + g_driver_glx.debug_fn.glXWaitXFn(); +} +} // extern "C" + +void DriverGLX::InitializeDebugBindings() { + if (!debug_fn.glXBindTexImageEXTFn) { + debug_fn.glXBindTexImageEXTFn = fn.glXBindTexImageEXTFn; + fn.glXBindTexImageEXTFn = Debug_glXBindTexImageEXT; + } + if (!debug_fn.glXChooseFBConfigFn) { + debug_fn.glXChooseFBConfigFn = fn.glXChooseFBConfigFn; + fn.glXChooseFBConfigFn = Debug_glXChooseFBConfig; + } + if (!debug_fn.glXChooseVisualFn) { + debug_fn.glXChooseVisualFn = fn.glXChooseVisualFn; + fn.glXChooseVisualFn = Debug_glXChooseVisual; + } + if (!debug_fn.glXCopyContextFn) { + debug_fn.glXCopyContextFn = fn.glXCopyContextFn; + fn.glXCopyContextFn = Debug_glXCopyContext; + } + if (!debug_fn.glXCopySubBufferMESAFn) { + debug_fn.glXCopySubBufferMESAFn = fn.glXCopySubBufferMESAFn; + fn.glXCopySubBufferMESAFn = Debug_glXCopySubBufferMESA; + } + if (!debug_fn.glXCreateContextFn) { + debug_fn.glXCreateContextFn = fn.glXCreateContextFn; + fn.glXCreateContextFn = Debug_glXCreateContext; + } + if (!debug_fn.glXCreateContextAttribsARBFn) { + debug_fn.glXCreateContextAttribsARBFn = fn.glXCreateContextAttribsARBFn; + fn.glXCreateContextAttribsARBFn = Debug_glXCreateContextAttribsARB; + } + if (!debug_fn.glXCreateGLXPixmapFn) { + debug_fn.glXCreateGLXPixmapFn = fn.glXCreateGLXPixmapFn; + fn.glXCreateGLXPixmapFn = Debug_glXCreateGLXPixmap; + } + if (!debug_fn.glXCreateNewContextFn) { + debug_fn.glXCreateNewContextFn = fn.glXCreateNewContextFn; + fn.glXCreateNewContextFn = Debug_glXCreateNewContext; + } + if (!debug_fn.glXCreatePbufferFn) { + debug_fn.glXCreatePbufferFn = fn.glXCreatePbufferFn; + fn.glXCreatePbufferFn = Debug_glXCreatePbuffer; + } + if (!debug_fn.glXCreatePixmapFn) { + debug_fn.glXCreatePixmapFn = fn.glXCreatePixmapFn; + fn.glXCreatePixmapFn = Debug_glXCreatePixmap; + } + if (!debug_fn.glXCreateWindowFn) { + debug_fn.glXCreateWindowFn = fn.glXCreateWindowFn; + fn.glXCreateWindowFn = Debug_glXCreateWindow; + } + if (!debug_fn.glXDestroyContextFn) { + debug_fn.glXDestroyContextFn = fn.glXDestroyContextFn; + fn.glXDestroyContextFn = Debug_glXDestroyContext; + } + if (!debug_fn.glXDestroyGLXPixmapFn) { + debug_fn.glXDestroyGLXPixmapFn = fn.glXDestroyGLXPixmapFn; + fn.glXDestroyGLXPixmapFn = Debug_glXDestroyGLXPixmap; + } + if (!debug_fn.glXDestroyPbufferFn) { + debug_fn.glXDestroyPbufferFn = fn.glXDestroyPbufferFn; + fn.glXDestroyPbufferFn = Debug_glXDestroyPbuffer; + } + if (!debug_fn.glXDestroyPixmapFn) { + debug_fn.glXDestroyPixmapFn = fn.glXDestroyPixmapFn; + fn.glXDestroyPixmapFn = Debug_glXDestroyPixmap; + } + if (!debug_fn.glXDestroyWindowFn) { + debug_fn.glXDestroyWindowFn = fn.glXDestroyWindowFn; + fn.glXDestroyWindowFn = Debug_glXDestroyWindow; + } + if (!debug_fn.glXGetClientStringFn) { + debug_fn.glXGetClientStringFn = fn.glXGetClientStringFn; + fn.glXGetClientStringFn = Debug_glXGetClientString; + } + if (!debug_fn.glXGetConfigFn) { + debug_fn.glXGetConfigFn = fn.glXGetConfigFn; + fn.glXGetConfigFn = Debug_glXGetConfig; + } + if (!debug_fn.glXGetCurrentContextFn) { + debug_fn.glXGetCurrentContextFn = fn.glXGetCurrentContextFn; + fn.glXGetCurrentContextFn = Debug_glXGetCurrentContext; + } + if (!debug_fn.glXGetCurrentDisplayFn) { + debug_fn.glXGetCurrentDisplayFn = fn.glXGetCurrentDisplayFn; + fn.glXGetCurrentDisplayFn = Debug_glXGetCurrentDisplay; + } + if (!debug_fn.glXGetCurrentDrawableFn) { + debug_fn.glXGetCurrentDrawableFn = fn.glXGetCurrentDrawableFn; + fn.glXGetCurrentDrawableFn = Debug_glXGetCurrentDrawable; + } + if (!debug_fn.glXGetCurrentReadDrawableFn) { + debug_fn.glXGetCurrentReadDrawableFn = fn.glXGetCurrentReadDrawableFn; + fn.glXGetCurrentReadDrawableFn = Debug_glXGetCurrentReadDrawable; + } + if (!debug_fn.glXGetFBConfigAttribFn) { + debug_fn.glXGetFBConfigAttribFn = fn.glXGetFBConfigAttribFn; + fn.glXGetFBConfigAttribFn = Debug_glXGetFBConfigAttrib; + } + if (!debug_fn.glXGetFBConfigFromVisualSGIXFn) { + debug_fn.glXGetFBConfigFromVisualSGIXFn = fn.glXGetFBConfigFromVisualSGIXFn; + fn.glXGetFBConfigFromVisualSGIXFn = Debug_glXGetFBConfigFromVisualSGIX; + } + if (!debug_fn.glXGetFBConfigsFn) { + debug_fn.glXGetFBConfigsFn = fn.glXGetFBConfigsFn; + fn.glXGetFBConfigsFn = Debug_glXGetFBConfigs; + } + if (!debug_fn.glXGetMscRateOMLFn) { + debug_fn.glXGetMscRateOMLFn = fn.glXGetMscRateOMLFn; + fn.glXGetMscRateOMLFn = Debug_glXGetMscRateOML; + } + if (!debug_fn.glXGetSelectedEventFn) { + debug_fn.glXGetSelectedEventFn = fn.glXGetSelectedEventFn; + fn.glXGetSelectedEventFn = Debug_glXGetSelectedEvent; + } + if (!debug_fn.glXGetSyncValuesOMLFn) { + debug_fn.glXGetSyncValuesOMLFn = fn.glXGetSyncValuesOMLFn; + fn.glXGetSyncValuesOMLFn = Debug_glXGetSyncValuesOML; + } + if (!debug_fn.glXGetVisualFromFBConfigFn) { + debug_fn.glXGetVisualFromFBConfigFn = fn.glXGetVisualFromFBConfigFn; + fn.glXGetVisualFromFBConfigFn = Debug_glXGetVisualFromFBConfig; + } + if (!debug_fn.glXIsDirectFn) { + debug_fn.glXIsDirectFn = fn.glXIsDirectFn; + fn.glXIsDirectFn = Debug_glXIsDirect; + } + if (!debug_fn.glXMakeContextCurrentFn) { + debug_fn.glXMakeContextCurrentFn = fn.glXMakeContextCurrentFn; + fn.glXMakeContextCurrentFn = Debug_glXMakeContextCurrent; + } + if (!debug_fn.glXMakeCurrentFn) { + debug_fn.glXMakeCurrentFn = fn.glXMakeCurrentFn; + fn.glXMakeCurrentFn = Debug_glXMakeCurrent; + } + if (!debug_fn.glXQueryContextFn) { + debug_fn.glXQueryContextFn = fn.glXQueryContextFn; + fn.glXQueryContextFn = Debug_glXQueryContext; + } + if (!debug_fn.glXQueryDrawableFn) { + debug_fn.glXQueryDrawableFn = fn.glXQueryDrawableFn; + fn.glXQueryDrawableFn = Debug_glXQueryDrawable; + } + if (!debug_fn.glXQueryExtensionFn) { + debug_fn.glXQueryExtensionFn = fn.glXQueryExtensionFn; + fn.glXQueryExtensionFn = Debug_glXQueryExtension; + } + if (!debug_fn.glXQueryExtensionsStringFn) { + debug_fn.glXQueryExtensionsStringFn = fn.glXQueryExtensionsStringFn; + fn.glXQueryExtensionsStringFn = Debug_glXQueryExtensionsString; + } + if (!debug_fn.glXQueryServerStringFn) { + debug_fn.glXQueryServerStringFn = fn.glXQueryServerStringFn; + fn.glXQueryServerStringFn = Debug_glXQueryServerString; + } + if (!debug_fn.glXQueryVersionFn) { + debug_fn.glXQueryVersionFn = fn.glXQueryVersionFn; + fn.glXQueryVersionFn = Debug_glXQueryVersion; + } + if (!debug_fn.glXReleaseTexImageEXTFn) { + debug_fn.glXReleaseTexImageEXTFn = fn.glXReleaseTexImageEXTFn; + fn.glXReleaseTexImageEXTFn = Debug_glXReleaseTexImageEXT; + } + if (!debug_fn.glXSelectEventFn) { + debug_fn.glXSelectEventFn = fn.glXSelectEventFn; + fn.glXSelectEventFn = Debug_glXSelectEvent; + } + if (!debug_fn.glXSwapBuffersFn) { + debug_fn.glXSwapBuffersFn = fn.glXSwapBuffersFn; + fn.glXSwapBuffersFn = Debug_glXSwapBuffers; + } + if (!debug_fn.glXSwapIntervalEXTFn) { + debug_fn.glXSwapIntervalEXTFn = fn.glXSwapIntervalEXTFn; + fn.glXSwapIntervalEXTFn = Debug_glXSwapIntervalEXT; + } + if (!debug_fn.glXSwapIntervalMESAFn) { + debug_fn.glXSwapIntervalMESAFn = fn.glXSwapIntervalMESAFn; + fn.glXSwapIntervalMESAFn = Debug_glXSwapIntervalMESA; + } + if (!debug_fn.glXUseXFontFn) { + debug_fn.glXUseXFontFn = fn.glXUseXFontFn; + fn.glXUseXFontFn = Debug_glXUseXFont; + } + if (!debug_fn.glXWaitGLFn) { + debug_fn.glXWaitGLFn = fn.glXWaitGLFn; + fn.glXWaitGLFn = Debug_glXWaitGL; + } + if (!debug_fn.glXWaitVideoSyncSGIFn) { + debug_fn.glXWaitVideoSyncSGIFn = fn.glXWaitVideoSyncSGIFn; + fn.glXWaitVideoSyncSGIFn = Debug_glXWaitVideoSyncSGI; + } + if (!debug_fn.glXWaitXFn) { + debug_fn.glXWaitXFn = fn.glXWaitXFn; + fn.glXWaitXFn = Debug_glXWaitX; + } + g_debugBindingsInitialized = true; +} + +void DriverGLX::ClearBindings() { + memset(this, 0, sizeof(*this)); +} + +void GLXApiBase::glXBindTexImageEXTFn(Display* dpy, + GLXDrawable drawable, + int buffer, + int* attribList) { + driver_->fn.glXBindTexImageEXTFn(dpy, drawable, buffer, attribList); +} + +GLXFBConfig* GLXApiBase::glXChooseFBConfigFn(Display* dpy, + int screen, + const int* attribList, + int* nitems) { + return driver_->fn.glXChooseFBConfigFn(dpy, screen, attribList, nitems); +} + +XVisualInfo* GLXApiBase::glXChooseVisualFn(Display* dpy, + int screen, + int* attribList) { + return driver_->fn.glXChooseVisualFn(dpy, screen, attribList); +} + +void GLXApiBase::glXCopyContextFn(Display* dpy, + GLXContext src, + GLXContext dst, + unsigned long mask) { + driver_->fn.glXCopyContextFn(dpy, src, dst, mask); +} + +void GLXApiBase::glXCopySubBufferMESAFn(Display* dpy, + GLXDrawable drawable, + int x, + int y, + int width, + int height) { + driver_->fn.glXCopySubBufferMESAFn(dpy, drawable, x, y, width, height); +} + +GLXContext GLXApiBase::glXCreateContextFn(Display* dpy, + XVisualInfo* vis, + GLXContext shareList, + int direct) { + return driver_->fn.glXCreateContextFn(dpy, vis, shareList, direct); +} + +GLXContext GLXApiBase::glXCreateContextAttribsARBFn(Display* dpy, + GLXFBConfig config, + GLXContext share_context, + int direct, + const int* attrib_list) { + return driver_->fn.glXCreateContextAttribsARBFn(dpy, config, share_context, + direct, attrib_list); +} + +GLXPixmap GLXApiBase::glXCreateGLXPixmapFn(Display* dpy, + XVisualInfo* visual, + Pixmap pixmap) { + return driver_->fn.glXCreateGLXPixmapFn(dpy, visual, pixmap); +} + +GLXContext GLXApiBase::glXCreateNewContextFn(Display* dpy, + GLXFBConfig config, + int renderType, + GLXContext shareList, + int direct) { + return driver_->fn.glXCreateNewContextFn(dpy, config, renderType, shareList, + direct); +} + +GLXPbuffer GLXApiBase::glXCreatePbufferFn(Display* dpy, + GLXFBConfig config, + const int* attribList) { + return driver_->fn.glXCreatePbufferFn(dpy, config, attribList); +} + +GLXPixmap GLXApiBase::glXCreatePixmapFn(Display* dpy, + GLXFBConfig config, + Pixmap pixmap, + const int* attribList) { + return driver_->fn.glXCreatePixmapFn(dpy, config, pixmap, attribList); +} + +GLXWindow GLXApiBase::glXCreateWindowFn(Display* dpy, + GLXFBConfig config, + Window win, + const int* attribList) { + return driver_->fn.glXCreateWindowFn(dpy, config, win, attribList); +} + +void GLXApiBase::glXDestroyContextFn(Display* dpy, GLXContext ctx) { + driver_->fn.glXDestroyContextFn(dpy, ctx); +} + +void GLXApiBase::glXDestroyGLXPixmapFn(Display* dpy, GLXPixmap pixmap) { + driver_->fn.glXDestroyGLXPixmapFn(dpy, pixmap); +} + +void GLXApiBase::glXDestroyPbufferFn(Display* dpy, GLXPbuffer pbuf) { + driver_->fn.glXDestroyPbufferFn(dpy, pbuf); +} + +void GLXApiBase::glXDestroyPixmapFn(Display* dpy, GLXPixmap pixmap) { + driver_->fn.glXDestroyPixmapFn(dpy, pixmap); +} + +void GLXApiBase::glXDestroyWindowFn(Display* dpy, GLXWindow window) { + driver_->fn.glXDestroyWindowFn(dpy, window); +} + +const char* GLXApiBase::glXGetClientStringFn(Display* dpy, int name) { + return driver_->fn.glXGetClientStringFn(dpy, name); +} + +int GLXApiBase::glXGetConfigFn(Display* dpy, + XVisualInfo* visual, + int attrib, + int* value) { + return driver_->fn.glXGetConfigFn(dpy, visual, attrib, value); +} + +GLXContext GLXApiBase::glXGetCurrentContextFn(void) { + return driver_->fn.glXGetCurrentContextFn(); +} + +Display* GLXApiBase::glXGetCurrentDisplayFn(void) { + return driver_->fn.glXGetCurrentDisplayFn(); +} + +GLXDrawable GLXApiBase::glXGetCurrentDrawableFn(void) { + return driver_->fn.glXGetCurrentDrawableFn(); +} + +GLXDrawable GLXApiBase::glXGetCurrentReadDrawableFn(void) { + return driver_->fn.glXGetCurrentReadDrawableFn(); +} + +int GLXApiBase::glXGetFBConfigAttribFn(Display* dpy, + GLXFBConfig config, + int attribute, + int* value) { + return driver_->fn.glXGetFBConfigAttribFn(dpy, config, attribute, value); +} + +GLXFBConfig GLXApiBase::glXGetFBConfigFromVisualSGIXFn( + Display* dpy, + XVisualInfo* visualInfo) { + return driver_->fn.glXGetFBConfigFromVisualSGIXFn(dpy, visualInfo); +} + +GLXFBConfig* GLXApiBase::glXGetFBConfigsFn(Display* dpy, + int screen, + int* nelements) { + return driver_->fn.glXGetFBConfigsFn(dpy, screen, nelements); +} + +bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy, + GLXDrawable drawable, + int32* numerator, + int32* denominator) { + return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator); +} + +void GLXApiBase::glXGetSelectedEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long* mask) { + driver_->fn.glXGetSelectedEventFn(dpy, drawable, mask); +} + +bool GLXApiBase::glXGetSyncValuesOMLFn(Display* dpy, + GLXDrawable drawable, + int64* ust, + int64* msc, + int64* sbc) { + return driver_->fn.glXGetSyncValuesOMLFn(dpy, drawable, ust, msc, sbc); +} + +XVisualInfo* GLXApiBase::glXGetVisualFromFBConfigFn(Display* dpy, + GLXFBConfig config) { + return driver_->fn.glXGetVisualFromFBConfigFn(dpy, config); +} + +int GLXApiBase::glXIsDirectFn(Display* dpy, GLXContext ctx) { + return driver_->fn.glXIsDirectFn(dpy, ctx); +} + +int GLXApiBase::glXMakeContextCurrentFn(Display* dpy, + GLXDrawable draw, + GLXDrawable read, + GLXContext ctx) { + return driver_->fn.glXMakeContextCurrentFn(dpy, draw, read, ctx); +} + +int GLXApiBase::glXMakeCurrentFn(Display* dpy, + GLXDrawable drawable, + GLXContext ctx) { + return driver_->fn.glXMakeCurrentFn(dpy, drawable, ctx); +} + +int GLXApiBase::glXQueryContextFn(Display* dpy, + GLXContext ctx, + int attribute, + int* value) { + return driver_->fn.glXQueryContextFn(dpy, ctx, attribute, value); +} + +void GLXApiBase::glXQueryDrawableFn(Display* dpy, + GLXDrawable draw, + int attribute, + unsigned int* value) { + driver_->fn.glXQueryDrawableFn(dpy, draw, attribute, value); +} + +int GLXApiBase::glXQueryExtensionFn(Display* dpy, int* errorb, int* event) { + return driver_->fn.glXQueryExtensionFn(dpy, errorb, event); +} + +const char* GLXApiBase::glXQueryExtensionsStringFn(Display* dpy, int screen) { + return driver_->fn.glXQueryExtensionsStringFn(dpy, screen); +} + +const char* GLXApiBase::glXQueryServerStringFn(Display* dpy, + int screen, + int name) { + return driver_->fn.glXQueryServerStringFn(dpy, screen, name); +} + +int GLXApiBase::glXQueryVersionFn(Display* dpy, int* maj, int* min) { + return driver_->fn.glXQueryVersionFn(dpy, maj, min); +} + +void GLXApiBase::glXReleaseTexImageEXTFn(Display* dpy, + GLXDrawable drawable, + int buffer) { + driver_->fn.glXReleaseTexImageEXTFn(dpy, drawable, buffer); +} + +void GLXApiBase::glXSelectEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long mask) { + driver_->fn.glXSelectEventFn(dpy, drawable, mask); +} + +void GLXApiBase::glXSwapBuffersFn(Display* dpy, GLXDrawable drawable) { + driver_->fn.glXSwapBuffersFn(dpy, drawable); +} + +void GLXApiBase::glXSwapIntervalEXTFn(Display* dpy, + GLXDrawable drawable, + int interval) { + driver_->fn.glXSwapIntervalEXTFn(dpy, drawable, interval); +} + +void GLXApiBase::glXSwapIntervalMESAFn(unsigned int interval) { + driver_->fn.glXSwapIntervalMESAFn(interval); +} + +void GLXApiBase::glXUseXFontFn(Font font, int first, int count, int list) { + driver_->fn.glXUseXFontFn(font, first, count, list); +} + +void GLXApiBase::glXWaitGLFn(void) { + driver_->fn.glXWaitGLFn(); +} + +int GLXApiBase::glXWaitVideoSyncSGIFn(int divisor, + int remainder, + unsigned int* count) { + return driver_->fn.glXWaitVideoSyncSGIFn(divisor, remainder, count); +} + +void GLXApiBase::glXWaitXFn(void) { + driver_->fn.glXWaitXFn(); +} + +void TraceGLXApi::glXBindTexImageEXTFn(Display* dpy, + GLXDrawable drawable, + int buffer, + int* attribList) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXBindTexImageEXT") + glx_api_->glXBindTexImageEXTFn(dpy, drawable, buffer, attribList); +} + +GLXFBConfig* TraceGLXApi::glXChooseFBConfigFn(Display* dpy, + int screen, + const int* attribList, + int* nitems) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXChooseFBConfig") + return glx_api_->glXChooseFBConfigFn(dpy, screen, attribList, nitems); +} + +XVisualInfo* TraceGLXApi::glXChooseVisualFn(Display* dpy, + int screen, + int* attribList) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXChooseVisual") + return glx_api_->glXChooseVisualFn(dpy, screen, attribList); +} + +void TraceGLXApi::glXCopyContextFn(Display* dpy, + GLXContext src, + GLXContext dst, + unsigned long mask) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCopyContext") + glx_api_->glXCopyContextFn(dpy, src, dst, mask); +} + +void TraceGLXApi::glXCopySubBufferMESAFn(Display* dpy, + GLXDrawable drawable, + int x, + int y, + int width, + int height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCopySubBufferMESA") + glx_api_->glXCopySubBufferMESAFn(dpy, drawable, x, y, width, height); +} + +GLXContext TraceGLXApi::glXCreateContextFn(Display* dpy, + XVisualInfo* vis, + GLXContext shareList, + int direct) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateContext") + return glx_api_->glXCreateContextFn(dpy, vis, shareList, direct); +} + +GLXContext TraceGLXApi::glXCreateContextAttribsARBFn(Display* dpy, + GLXFBConfig config, + GLXContext share_context, + int direct, + const int* attrib_list) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateContextAttribsARB") + return glx_api_->glXCreateContextAttribsARBFn(dpy, config, share_context, + direct, attrib_list); +} + +GLXPixmap TraceGLXApi::glXCreateGLXPixmapFn(Display* dpy, + XVisualInfo* visual, + Pixmap pixmap) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateGLXPixmap") + return glx_api_->glXCreateGLXPixmapFn(dpy, visual, pixmap); +} + +GLXContext TraceGLXApi::glXCreateNewContextFn(Display* dpy, + GLXFBConfig config, + int renderType, + GLXContext shareList, + int direct) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateNewContext") + return glx_api_->glXCreateNewContextFn(dpy, config, renderType, shareList, + direct); +} + +GLXPbuffer TraceGLXApi::glXCreatePbufferFn(Display* dpy, + GLXFBConfig config, + const int* attribList) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreatePbuffer") + return glx_api_->glXCreatePbufferFn(dpy, config, attribList); +} + +GLXPixmap TraceGLXApi::glXCreatePixmapFn(Display* dpy, + GLXFBConfig config, + Pixmap pixmap, + const int* attribList) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreatePixmap") + return glx_api_->glXCreatePixmapFn(dpy, config, pixmap, attribList); +} + +GLXWindow TraceGLXApi::glXCreateWindowFn(Display* dpy, + GLXFBConfig config, + Window win, + const int* attribList) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateWindow") + return glx_api_->glXCreateWindowFn(dpy, config, win, attribList); +} + +void TraceGLXApi::glXDestroyContextFn(Display* dpy, GLXContext ctx) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyContext") + glx_api_->glXDestroyContextFn(dpy, ctx); +} + +void TraceGLXApi::glXDestroyGLXPixmapFn(Display* dpy, GLXPixmap pixmap) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyGLXPixmap") + glx_api_->glXDestroyGLXPixmapFn(dpy, pixmap); +} + +void TraceGLXApi::glXDestroyPbufferFn(Display* dpy, GLXPbuffer pbuf) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyPbuffer") + glx_api_->glXDestroyPbufferFn(dpy, pbuf); +} + +void TraceGLXApi::glXDestroyPixmapFn(Display* dpy, GLXPixmap pixmap) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyPixmap") + glx_api_->glXDestroyPixmapFn(dpy, pixmap); +} + +void TraceGLXApi::glXDestroyWindowFn(Display* dpy, GLXWindow window) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyWindow") + glx_api_->glXDestroyWindowFn(dpy, window); +} + +const char* TraceGLXApi::glXGetClientStringFn(Display* dpy, int name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetClientString") + return glx_api_->glXGetClientStringFn(dpy, name); +} + +int TraceGLXApi::glXGetConfigFn(Display* dpy, + XVisualInfo* visual, + int attrib, + int* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetConfig") + return glx_api_->glXGetConfigFn(dpy, visual, attrib, value); +} + +GLXContext TraceGLXApi::glXGetCurrentContextFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentContext") + return glx_api_->glXGetCurrentContextFn(); +} + +Display* TraceGLXApi::glXGetCurrentDisplayFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentDisplay") + return glx_api_->glXGetCurrentDisplayFn(); +} + +GLXDrawable TraceGLXApi::glXGetCurrentDrawableFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentDrawable") + return glx_api_->glXGetCurrentDrawableFn(); +} + +GLXDrawable TraceGLXApi::glXGetCurrentReadDrawableFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentReadDrawable") + return glx_api_->glXGetCurrentReadDrawableFn(); +} + +int TraceGLXApi::glXGetFBConfigAttribFn(Display* dpy, + GLXFBConfig config, + int attribute, + int* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetFBConfigAttrib") + return glx_api_->glXGetFBConfigAttribFn(dpy, config, attribute, value); +} + +GLXFBConfig TraceGLXApi::glXGetFBConfigFromVisualSGIXFn( + Display* dpy, + XVisualInfo* visualInfo) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", + "TraceGLAPI::glXGetFBConfigFromVisualSGIX") + return glx_api_->glXGetFBConfigFromVisualSGIXFn(dpy, visualInfo); +} + +GLXFBConfig* TraceGLXApi::glXGetFBConfigsFn(Display* dpy, + int screen, + int* nelements) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetFBConfigs") + return glx_api_->glXGetFBConfigsFn(dpy, screen, nelements); +} + +bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy, + GLXDrawable drawable, + int32* numerator, + int32* denominator) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetMscRateOML") + return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator); +} + +void TraceGLXApi::glXGetSelectedEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long* mask) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetSelectedEvent") + glx_api_->glXGetSelectedEventFn(dpy, drawable, mask); +} + +bool TraceGLXApi::glXGetSyncValuesOMLFn(Display* dpy, + GLXDrawable drawable, + int64* ust, + int64* msc, + int64* sbc) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetSyncValuesOML") + return glx_api_->glXGetSyncValuesOMLFn(dpy, drawable, ust, msc, sbc); +} + +XVisualInfo* TraceGLXApi::glXGetVisualFromFBConfigFn(Display* dpy, + GLXFBConfig config) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetVisualFromFBConfig") + return glx_api_->glXGetVisualFromFBConfigFn(dpy, config); +} + +int TraceGLXApi::glXIsDirectFn(Display* dpy, GLXContext ctx) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXIsDirect") + return glx_api_->glXIsDirectFn(dpy, ctx); +} + +int TraceGLXApi::glXMakeContextCurrentFn(Display* dpy, + GLXDrawable draw, + GLXDrawable read, + GLXContext ctx) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXMakeContextCurrent") + return glx_api_->glXMakeContextCurrentFn(dpy, draw, read, ctx); +} + +int TraceGLXApi::glXMakeCurrentFn(Display* dpy, + GLXDrawable drawable, + GLXContext ctx) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXMakeCurrent") + return glx_api_->glXMakeCurrentFn(dpy, drawable, ctx); +} + +int TraceGLXApi::glXQueryContextFn(Display* dpy, + GLXContext ctx, + int attribute, + int* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryContext") + return glx_api_->glXQueryContextFn(dpy, ctx, attribute, value); +} + +void TraceGLXApi::glXQueryDrawableFn(Display* dpy, + GLXDrawable draw, + int attribute, + unsigned int* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryDrawable") + glx_api_->glXQueryDrawableFn(dpy, draw, attribute, value); +} + +int TraceGLXApi::glXQueryExtensionFn(Display* dpy, int* errorb, int* event) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryExtension") + return glx_api_->glXQueryExtensionFn(dpy, errorb, event); +} + +const char* TraceGLXApi::glXQueryExtensionsStringFn(Display* dpy, int screen) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryExtensionsString") + return glx_api_->glXQueryExtensionsStringFn(dpy, screen); +} + +const char* TraceGLXApi::glXQueryServerStringFn(Display* dpy, + int screen, + int name) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryServerString") + return glx_api_->glXQueryServerStringFn(dpy, screen, name); +} + +int TraceGLXApi::glXQueryVersionFn(Display* dpy, int* maj, int* min) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryVersion") + return glx_api_->glXQueryVersionFn(dpy, maj, min); +} + +void TraceGLXApi::glXReleaseTexImageEXTFn(Display* dpy, + GLXDrawable drawable, + int buffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXReleaseTexImageEXT") + glx_api_->glXReleaseTexImageEXTFn(dpy, drawable, buffer); +} + +void TraceGLXApi::glXSelectEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long mask) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSelectEvent") + glx_api_->glXSelectEventFn(dpy, drawable, mask); +} + +void TraceGLXApi::glXSwapBuffersFn(Display* dpy, GLXDrawable drawable) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSwapBuffers") + glx_api_->glXSwapBuffersFn(dpy, drawable); +} + +void TraceGLXApi::glXSwapIntervalEXTFn(Display* dpy, + GLXDrawable drawable, + int interval) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSwapIntervalEXT") + glx_api_->glXSwapIntervalEXTFn(dpy, drawable, interval); +} + +void TraceGLXApi::glXSwapIntervalMESAFn(unsigned int interval) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSwapIntervalMESA") + glx_api_->glXSwapIntervalMESAFn(interval); +} + +void TraceGLXApi::glXUseXFontFn(Font font, int first, int count, int list) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXUseXFont") + glx_api_->glXUseXFontFn(font, first, count, list); +} + +void TraceGLXApi::glXWaitGLFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXWaitGL") + glx_api_->glXWaitGLFn(); +} + +int TraceGLXApi::glXWaitVideoSyncSGIFn(int divisor, + int remainder, + unsigned int* count) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXWaitVideoSyncSGI") + return glx_api_->glXWaitVideoSyncSGIFn(divisor, remainder, count); +} + +void TraceGLXApi::glXWaitXFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXWaitX") + glx_api_->glXWaitXFn(); +} + +} // namespace gfx
diff --git a/ui/gl/gl_bindings_autogen_glx.h b/ui/gl/gl_bindings_autogen_glx.h new file mode 100644 index 0000000..41baf29 --- /dev/null +++ b/ui/gl/gl_bindings_autogen_glx.h
@@ -0,0 +1,424 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_GLX_H_ +#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_GLX_H_ + +namespace gfx { + +class GLContext; + +typedef void(GL_BINDING_CALL* glXBindTexImageEXTProc)(Display* dpy, + GLXDrawable drawable, + int buffer, + int* attribList); +typedef GLXFBConfig*(GL_BINDING_CALL* glXChooseFBConfigProc)( + Display* dpy, + int screen, + const int* attribList, + int* nitems); +typedef XVisualInfo*(GL_BINDING_CALL* glXChooseVisualProc)(Display* dpy, + int screen, + int* attribList); +typedef void(GL_BINDING_CALL* glXCopyContextProc)(Display* dpy, + GLXContext src, + GLXContext dst, + unsigned long mask); +typedef void(GL_BINDING_CALL* glXCopySubBufferMESAProc)(Display* dpy, + GLXDrawable drawable, + int x, + int y, + int width, + int height); +typedef GLXContext(GL_BINDING_CALL* glXCreateContextProc)(Display* dpy, + XVisualInfo* vis, + GLXContext shareList, + int direct); +typedef GLXContext(GL_BINDING_CALL* glXCreateContextAttribsARBProc)( + Display* dpy, + GLXFBConfig config, + GLXContext share_context, + int direct, + const int* attrib_list); +typedef GLXPixmap(GL_BINDING_CALL* glXCreateGLXPixmapProc)(Display* dpy, + XVisualInfo* visual, + Pixmap pixmap); +typedef GLXContext(GL_BINDING_CALL* glXCreateNewContextProc)( + Display* dpy, + GLXFBConfig config, + int renderType, + GLXContext shareList, + int direct); +typedef GLXPbuffer(GL_BINDING_CALL* glXCreatePbufferProc)( + Display* dpy, + GLXFBConfig config, + const int* attribList); +typedef GLXPixmap(GL_BINDING_CALL* glXCreatePixmapProc)(Display* dpy, + GLXFBConfig config, + Pixmap pixmap, + const int* attribList); +typedef GLXWindow(GL_BINDING_CALL* glXCreateWindowProc)(Display* dpy, + GLXFBConfig config, + Window win, + const int* attribList); +typedef void(GL_BINDING_CALL* glXDestroyContextProc)(Display* dpy, + GLXContext ctx); +typedef void(GL_BINDING_CALL* glXDestroyGLXPixmapProc)(Display* dpy, + GLXPixmap pixmap); +typedef void(GL_BINDING_CALL* glXDestroyPbufferProc)(Display* dpy, + GLXPbuffer pbuf); +typedef void(GL_BINDING_CALL* glXDestroyPixmapProc)(Display* dpy, + GLXPixmap pixmap); +typedef void(GL_BINDING_CALL* glXDestroyWindowProc)(Display* dpy, + GLXWindow window); +typedef const char*(GL_BINDING_CALL* glXGetClientStringProc)(Display* dpy, + int name); +typedef int(GL_BINDING_CALL* glXGetConfigProc)(Display* dpy, + XVisualInfo* visual, + int attrib, + int* value); +typedef GLXContext(GL_BINDING_CALL* glXGetCurrentContextProc)(void); +typedef Display*(GL_BINDING_CALL* glXGetCurrentDisplayProc)(void); +typedef GLXDrawable(GL_BINDING_CALL* glXGetCurrentDrawableProc)(void); +typedef GLXDrawable(GL_BINDING_CALL* glXGetCurrentReadDrawableProc)(void); +typedef int(GL_BINDING_CALL* glXGetFBConfigAttribProc)(Display* dpy, + GLXFBConfig config, + int attribute, + int* value); +typedef GLXFBConfig(GL_BINDING_CALL* glXGetFBConfigFromVisualSGIXProc)( + Display* dpy, + XVisualInfo* visualInfo); +typedef GLXFBConfig*(GL_BINDING_CALL* glXGetFBConfigsProc)(Display* dpy, + int screen, + int* nelements); +typedef bool(GL_BINDING_CALL* glXGetMscRateOMLProc)(Display* dpy, + GLXDrawable drawable, + int32* numerator, + int32* denominator); +typedef void(GL_BINDING_CALL* glXGetSelectedEventProc)(Display* dpy, + GLXDrawable drawable, + unsigned long* mask); +typedef bool(GL_BINDING_CALL* glXGetSyncValuesOMLProc)(Display* dpy, + GLXDrawable drawable, + int64* ust, + int64* msc, + int64* sbc); +typedef XVisualInfo*(GL_BINDING_CALL* glXGetVisualFromFBConfigProc)( + Display* dpy, + GLXFBConfig config); +typedef int(GL_BINDING_CALL* glXIsDirectProc)(Display* dpy, GLXContext ctx); +typedef int(GL_BINDING_CALL* glXMakeContextCurrentProc)(Display* dpy, + GLXDrawable draw, + GLXDrawable read, + GLXContext ctx); +typedef int(GL_BINDING_CALL* glXMakeCurrentProc)(Display* dpy, + GLXDrawable drawable, + GLXContext ctx); +typedef int(GL_BINDING_CALL* glXQueryContextProc)(Display* dpy, + GLXContext ctx, + int attribute, + int* value); +typedef void(GL_BINDING_CALL* glXQueryDrawableProc)(Display* dpy, + GLXDrawable draw, + int attribute, + unsigned int* value); +typedef int(GL_BINDING_CALL* glXQueryExtensionProc)(Display* dpy, + int* errorb, + int* event); +typedef const char*(GL_BINDING_CALL* glXQueryExtensionsStringProc)(Display* dpy, + int screen); +typedef const char*(GL_BINDING_CALL* glXQueryServerStringProc)(Display* dpy, + int screen, + int name); +typedef int(GL_BINDING_CALL* glXQueryVersionProc)(Display* dpy, + int* maj, + int* min); +typedef void(GL_BINDING_CALL* glXReleaseTexImageEXTProc)(Display* dpy, + GLXDrawable drawable, + int buffer); +typedef void(GL_BINDING_CALL* glXSelectEventProc)(Display* dpy, + GLXDrawable drawable, + unsigned long mask); +typedef void(GL_BINDING_CALL* glXSwapBuffersProc)(Display* dpy, + GLXDrawable drawable); +typedef void(GL_BINDING_CALL* glXSwapIntervalEXTProc)(Display* dpy, + GLXDrawable drawable, + int interval); +typedef void(GL_BINDING_CALL* glXSwapIntervalMESAProc)(unsigned int interval); +typedef void(GL_BINDING_CALL* glXUseXFontProc)(Font font, + int first, + int count, + int list); +typedef void(GL_BINDING_CALL* glXWaitGLProc)(void); +typedef int(GL_BINDING_CALL* glXWaitVideoSyncSGIProc)(int divisor, + int remainder, + unsigned int* count); +typedef void(GL_BINDING_CALL* glXWaitXProc)(void); + +struct ExtensionsGLX { + bool b_GLX_ARB_create_context; + bool b_GLX_EXT_swap_control; + bool b_GLX_EXT_texture_from_pixmap; + bool b_GLX_MESA_copy_sub_buffer; + bool b_GLX_MESA_swap_control; + bool b_GLX_OML_sync_control; + bool b_GLX_SGIX_fbconfig; + bool b_GLX_SGI_video_sync; +}; + +struct ProcsGLX { + glXBindTexImageEXTProc glXBindTexImageEXTFn; + glXChooseFBConfigProc glXChooseFBConfigFn; + glXChooseVisualProc glXChooseVisualFn; + glXCopyContextProc glXCopyContextFn; + glXCopySubBufferMESAProc glXCopySubBufferMESAFn; + glXCreateContextProc glXCreateContextFn; + glXCreateContextAttribsARBProc glXCreateContextAttribsARBFn; + glXCreateGLXPixmapProc glXCreateGLXPixmapFn; + glXCreateNewContextProc glXCreateNewContextFn; + glXCreatePbufferProc glXCreatePbufferFn; + glXCreatePixmapProc glXCreatePixmapFn; + glXCreateWindowProc glXCreateWindowFn; + glXDestroyContextProc glXDestroyContextFn; + glXDestroyGLXPixmapProc glXDestroyGLXPixmapFn; + glXDestroyPbufferProc glXDestroyPbufferFn; + glXDestroyPixmapProc glXDestroyPixmapFn; + glXDestroyWindowProc glXDestroyWindowFn; + glXGetClientStringProc glXGetClientStringFn; + glXGetConfigProc glXGetConfigFn; + glXGetCurrentContextProc glXGetCurrentContextFn; + glXGetCurrentDisplayProc glXGetCurrentDisplayFn; + glXGetCurrentDrawableProc glXGetCurrentDrawableFn; + glXGetCurrentReadDrawableProc glXGetCurrentReadDrawableFn; + glXGetFBConfigAttribProc glXGetFBConfigAttribFn; + glXGetFBConfigFromVisualSGIXProc glXGetFBConfigFromVisualSGIXFn; + glXGetFBConfigsProc glXGetFBConfigsFn; + glXGetMscRateOMLProc glXGetMscRateOMLFn; + glXGetSelectedEventProc glXGetSelectedEventFn; + glXGetSyncValuesOMLProc glXGetSyncValuesOMLFn; + glXGetVisualFromFBConfigProc glXGetVisualFromFBConfigFn; + glXIsDirectProc glXIsDirectFn; + glXMakeContextCurrentProc glXMakeContextCurrentFn; + glXMakeCurrentProc glXMakeCurrentFn; + glXQueryContextProc glXQueryContextFn; + glXQueryDrawableProc glXQueryDrawableFn; + glXQueryExtensionProc glXQueryExtensionFn; + glXQueryExtensionsStringProc glXQueryExtensionsStringFn; + glXQueryServerStringProc glXQueryServerStringFn; + glXQueryVersionProc glXQueryVersionFn; + glXReleaseTexImageEXTProc glXReleaseTexImageEXTFn; + glXSelectEventProc glXSelectEventFn; + glXSwapBuffersProc glXSwapBuffersFn; + glXSwapIntervalEXTProc glXSwapIntervalEXTFn; + glXSwapIntervalMESAProc glXSwapIntervalMESAFn; + glXUseXFontProc glXUseXFontFn; + glXWaitGLProc glXWaitGLFn; + glXWaitVideoSyncSGIProc glXWaitVideoSyncSGIFn; + glXWaitXProc glXWaitXFn; +}; + +class GL_EXPORT GLXApi { + public: + GLXApi(); + virtual ~GLXApi(); + + virtual void glXBindTexImageEXTFn(Display* dpy, + GLXDrawable drawable, + int buffer, + int* attribList) = 0; + virtual GLXFBConfig* glXChooseFBConfigFn(Display* dpy, + int screen, + const int* attribList, + int* nitems) = 0; + virtual XVisualInfo* glXChooseVisualFn(Display* dpy, + int screen, + int* attribList) = 0; + virtual void glXCopyContextFn(Display* dpy, + GLXContext src, + GLXContext dst, + unsigned long mask) = 0; + virtual void glXCopySubBufferMESAFn(Display* dpy, + GLXDrawable drawable, + int x, + int y, + int width, + int height) = 0; + virtual GLXContext glXCreateContextFn(Display* dpy, + XVisualInfo* vis, + GLXContext shareList, + int direct) = 0; + virtual GLXContext glXCreateContextAttribsARBFn(Display* dpy, + GLXFBConfig config, + GLXContext share_context, + int direct, + const int* attrib_list) = 0; + virtual GLXPixmap glXCreateGLXPixmapFn(Display* dpy, + XVisualInfo* visual, + Pixmap pixmap) = 0; + virtual GLXContext glXCreateNewContextFn(Display* dpy, + GLXFBConfig config, + int renderType, + GLXContext shareList, + int direct) = 0; + virtual GLXPbuffer glXCreatePbufferFn(Display* dpy, + GLXFBConfig config, + const int* attribList) = 0; + virtual GLXPixmap glXCreatePixmapFn(Display* dpy, + GLXFBConfig config, + Pixmap pixmap, + const int* attribList) = 0; + virtual GLXWindow glXCreateWindowFn(Display* dpy, + GLXFBConfig config, + Window win, + const int* attribList) = 0; + virtual void glXDestroyContextFn(Display* dpy, GLXContext ctx) = 0; + virtual void glXDestroyGLXPixmapFn(Display* dpy, GLXPixmap pixmap) = 0; + virtual void glXDestroyPbufferFn(Display* dpy, GLXPbuffer pbuf) = 0; + virtual void glXDestroyPixmapFn(Display* dpy, GLXPixmap pixmap) = 0; + virtual void glXDestroyWindowFn(Display* dpy, GLXWindow window) = 0; + virtual const char* glXGetClientStringFn(Display* dpy, int name) = 0; + virtual int glXGetConfigFn(Display* dpy, + XVisualInfo* visual, + int attrib, + int* value) = 0; + virtual GLXContext glXGetCurrentContextFn(void) = 0; + virtual Display* glXGetCurrentDisplayFn(void) = 0; + virtual GLXDrawable glXGetCurrentDrawableFn(void) = 0; + virtual GLXDrawable glXGetCurrentReadDrawableFn(void) = 0; + virtual int glXGetFBConfigAttribFn(Display* dpy, + GLXFBConfig config, + int attribute, + int* value) = 0; + virtual GLXFBConfig glXGetFBConfigFromVisualSGIXFn( + Display* dpy, + XVisualInfo* visualInfo) = 0; + virtual GLXFBConfig* glXGetFBConfigsFn(Display* dpy, + int screen, + int* nelements) = 0; + virtual bool glXGetMscRateOMLFn(Display* dpy, + GLXDrawable drawable, + int32* numerator, + int32* denominator) = 0; + virtual void glXGetSelectedEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long* mask) = 0; + virtual bool glXGetSyncValuesOMLFn(Display* dpy, + GLXDrawable drawable, + int64* ust, + int64* msc, + int64* sbc) = 0; + virtual XVisualInfo* glXGetVisualFromFBConfigFn(Display* dpy, + GLXFBConfig config) = 0; + virtual int glXIsDirectFn(Display* dpy, GLXContext ctx) = 0; + virtual int glXMakeContextCurrentFn(Display* dpy, + GLXDrawable draw, + GLXDrawable read, + GLXContext ctx) = 0; + virtual int glXMakeCurrentFn(Display* dpy, + GLXDrawable drawable, + GLXContext ctx) = 0; + virtual int glXQueryContextFn(Display* dpy, + GLXContext ctx, + int attribute, + int* value) = 0; + virtual void glXQueryDrawableFn(Display* dpy, + GLXDrawable draw, + int attribute, + unsigned int* value) = 0; + virtual int glXQueryExtensionFn(Display* dpy, int* errorb, int* event) = 0; + virtual const char* glXQueryExtensionsStringFn(Display* dpy, int screen) = 0; + virtual const char* glXQueryServerStringFn(Display* dpy, + int screen, + int name) = 0; + virtual int glXQueryVersionFn(Display* dpy, int* maj, int* min) = 0; + virtual void glXReleaseTexImageEXTFn(Display* dpy, + GLXDrawable drawable, + int buffer) = 0; + virtual void glXSelectEventFn(Display* dpy, + GLXDrawable drawable, + unsigned long mask) = 0; + virtual void glXSwapBuffersFn(Display* dpy, GLXDrawable drawable) = 0; + virtual void glXSwapIntervalEXTFn(Display* dpy, + GLXDrawable drawable, + int interval) = 0; + virtual void glXSwapIntervalMESAFn(unsigned int interval) = 0; + virtual void glXUseXFontFn(Font font, int first, int count, int list) = 0; + virtual void glXWaitGLFn(void) = 0; + virtual int glXWaitVideoSyncSGIFn(int divisor, + int remainder, + unsigned int* count) = 0; + virtual void glXWaitXFn(void) = 0; +}; + +} // namespace gfx + +#define glXBindTexImageEXT ::gfx::g_current_glx_context->glXBindTexImageEXTFn +#define glXChooseFBConfig ::gfx::g_current_glx_context->glXChooseFBConfigFn +#define glXChooseVisual ::gfx::g_current_glx_context->glXChooseVisualFn +#define glXCopyContext ::gfx::g_current_glx_context->glXCopyContextFn +#define glXCopySubBufferMESA \ + ::gfx::g_current_glx_context->glXCopySubBufferMESAFn +#define glXCreateContext ::gfx::g_current_glx_context->glXCreateContextFn +#define glXCreateContextAttribsARB \ + ::gfx::g_current_glx_context->glXCreateContextAttribsARBFn +#define glXCreateGLXPixmap ::gfx::g_current_glx_context->glXCreateGLXPixmapFn +#define glXCreateNewContext ::gfx::g_current_glx_context->glXCreateNewContextFn +#define glXCreatePbuffer ::gfx::g_current_glx_context->glXCreatePbufferFn +#define glXCreatePixmap ::gfx::g_current_glx_context->glXCreatePixmapFn +#define glXCreateWindow ::gfx::g_current_glx_context->glXCreateWindowFn +#define glXDestroyContext ::gfx::g_current_glx_context->glXDestroyContextFn +#define glXDestroyGLXPixmap ::gfx::g_current_glx_context->glXDestroyGLXPixmapFn +#define glXDestroyPbuffer ::gfx::g_current_glx_context->glXDestroyPbufferFn +#define glXDestroyPixmap ::gfx::g_current_glx_context->glXDestroyPixmapFn +#define glXDestroyWindow ::gfx::g_current_glx_context->glXDestroyWindowFn +#define glXGetClientString ::gfx::g_current_glx_context->glXGetClientStringFn +#define glXGetConfig ::gfx::g_current_glx_context->glXGetConfigFn +#define glXGetCurrentContext \ + ::gfx::g_current_glx_context->glXGetCurrentContextFn +#define glXGetCurrentDisplay \ + ::gfx::g_current_glx_context->glXGetCurrentDisplayFn +#define glXGetCurrentDrawable \ + ::gfx::g_current_glx_context->glXGetCurrentDrawableFn +#define glXGetCurrentReadDrawable \ + ::gfx::g_current_glx_context->glXGetCurrentReadDrawableFn +#define glXGetFBConfigAttrib \ + ::gfx::g_current_glx_context->glXGetFBConfigAttribFn +#define glXGetFBConfigFromVisualSGIX \ + ::gfx::g_current_glx_context->glXGetFBConfigFromVisualSGIXFn +#define glXGetFBConfigs ::gfx::g_current_glx_context->glXGetFBConfigsFn +#define glXGetMscRateOML ::gfx::g_current_glx_context->glXGetMscRateOMLFn +#define glXGetSelectedEvent ::gfx::g_current_glx_context->glXGetSelectedEventFn +#define glXGetSyncValuesOML ::gfx::g_current_glx_context->glXGetSyncValuesOMLFn +#define glXGetVisualFromFBConfig \ + ::gfx::g_current_glx_context->glXGetVisualFromFBConfigFn +#define glXIsDirect ::gfx::g_current_glx_context->glXIsDirectFn +#define glXMakeContextCurrent \ + ::gfx::g_current_glx_context->glXMakeContextCurrentFn +#define glXMakeCurrent ::gfx::g_current_glx_context->glXMakeCurrentFn +#define glXQueryContext ::gfx::g_current_glx_context->glXQueryContextFn +#define glXQueryDrawable ::gfx::g_current_glx_context->glXQueryDrawableFn +#define glXQueryExtension ::gfx::g_current_glx_context->glXQueryExtensionFn +#define glXQueryExtensionsString \ + ::gfx::g_current_glx_context->glXQueryExtensionsStringFn +#define glXQueryServerString \ + ::gfx::g_current_glx_context->glXQueryServerStringFn +#define glXQueryVersion ::gfx::g_current_glx_context->glXQueryVersionFn +#define glXReleaseTexImageEXT \ + ::gfx::g_current_glx_context->glXReleaseTexImageEXTFn +#define glXSelectEvent ::gfx::g_current_glx_context->glXSelectEventFn +#define glXSwapBuffers ::gfx::g_current_glx_context->glXSwapBuffersFn +#define glXSwapIntervalEXT ::gfx::g_current_glx_context->glXSwapIntervalEXTFn +#define glXSwapIntervalMESA ::gfx::g_current_glx_context->glXSwapIntervalMESAFn +#define glXUseXFont ::gfx::g_current_glx_context->glXUseXFontFn +#define glXWaitGL ::gfx::g_current_glx_context->glXWaitGLFn +#define glXWaitVideoSyncSGI ::gfx::g_current_glx_context->glXWaitVideoSyncSGIFn +#define glXWaitX ::gfx::g_current_glx_context->glXWaitXFn + +#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_GLX_H_
diff --git a/ui/gl/gl_bindings_autogen_mock.cc b/ui/gl/gl_bindings_autogen_mock.cc new file mode 100644 index 0000000..f424696 --- /dev/null +++ b/ui/gl/gl_bindings_autogen_mock.cc
@@ -0,0 +1,3225 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#include <string.h> + +#include "ui/gl/gl_mock.h" + +namespace gfx { + +// This is called mainly to prevent the compiler combining the code of mock +// functions with identical contents, so that their function pointers will be +// different. +void MakeFunctionUnique(const char* func_name) { + VLOG(2) << "Calling mock " << func_name; +} + +void GL_BINDING_CALL MockGLInterface::Mock_glActiveTexture(GLenum texture) { + MakeFunctionUnique("glActiveTexture"); + interface_->ActiveTexture(texture); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glAttachShader(GLuint program, GLuint shader) { + MakeFunctionUnique("glAttachShader"); + interface_->AttachShader(program, shader); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBeginQuery(GLenum target, GLuint id) { + MakeFunctionUnique("glBeginQuery"); + interface_->BeginQuery(target, id); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBeginQueryARB(GLenum target, GLuint id) { + MakeFunctionUnique("glBeginQueryARB"); + interface_->BeginQueryARB(target, id); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBeginQueryEXT(GLenum target, GLuint id) { + MakeFunctionUnique("glBeginQueryEXT"); + interface_->BeginQueryARB(target, id); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBeginTransformFeedback(GLenum primitiveMode) { + MakeFunctionUnique("glBeginTransformFeedback"); + interface_->BeginTransformFeedback(primitiveMode); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindAttribLocation(GLuint program, + GLuint index, + const char* name) { + MakeFunctionUnique("glBindAttribLocation"); + interface_->BindAttribLocation(program, index, name); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindBuffer(GLenum target, GLuint buffer) { + MakeFunctionUnique("glBindBuffer"); + interface_->BindBuffer(target, buffer); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBindBufferBase(GLenum target, + GLuint index, + GLuint buffer) { + MakeFunctionUnique("glBindBufferBase"); + interface_->BindBufferBase(target, index, buffer); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBindBufferRange(GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size) { + MakeFunctionUnique("glBindBufferRange"); + interface_->BindBufferRange(target, index, buffer, offset, size); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindFragDataLocation(GLuint program, + GLuint colorNumber, + const char* name) { + MakeFunctionUnique("glBindFragDataLocation"); + interface_->BindFragDataLocation(program, colorNumber, name); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindFragDataLocationIndexed(GLuint program, + GLuint colorNumber, + GLuint index, + const char* name) { + MakeFunctionUnique("glBindFragDataLocationIndexed"); + interface_->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindFramebuffer(GLenum target, GLuint framebuffer) { + MakeFunctionUnique("glBindFramebuffer"); + interface_->BindFramebufferEXT(target, framebuffer); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindFramebufferEXT(GLenum target, GLuint framebuffer) { + MakeFunctionUnique("glBindFramebufferEXT"); + interface_->BindFramebufferEXT(target, framebuffer); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindRenderbuffer(GLenum target, GLuint renderbuffer) { + MakeFunctionUnique("glBindRenderbuffer"); + interface_->BindRenderbufferEXT(target, renderbuffer); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindRenderbufferEXT(GLenum target, + GLuint renderbuffer) { + MakeFunctionUnique("glBindRenderbufferEXT"); + interface_->BindRenderbufferEXT(target, renderbuffer); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindSampler(GLuint unit, GLuint sampler) { + MakeFunctionUnique("glBindSampler"); + interface_->BindSampler(unit, sampler); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindTexture(GLenum target, GLuint texture) { + MakeFunctionUnique("glBindTexture"); + interface_->BindTexture(target, texture); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindTransformFeedback(GLenum target, GLuint id) { + MakeFunctionUnique("glBindTransformFeedback"); + interface_->BindTransformFeedback(target, id); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBindVertexArray(GLuint array) { + MakeFunctionUnique("glBindVertexArray"); + interface_->BindVertexArrayOES(array); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBindVertexArrayAPPLE(GLuint array) { + MakeFunctionUnique("glBindVertexArrayAPPLE"); + interface_->BindVertexArrayOES(array); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBindVertexArrayOES(GLuint array) { + MakeFunctionUnique("glBindVertexArrayOES"); + interface_->BindVertexArrayOES(array); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBlendBarrierKHR(void) { + MakeFunctionUnique("glBlendBarrierKHR"); + interface_->BlendBarrierKHR(); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBlendBarrierNV(void) { + MakeFunctionUnique("glBlendBarrierNV"); + interface_->BlendBarrierKHR(); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBlendColor(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) { + MakeFunctionUnique("glBlendColor"); + interface_->BlendColor(red, green, blue, alpha); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBlendEquation(GLenum mode) { + MakeFunctionUnique("glBlendEquation"); + interface_->BlendEquation(mode); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBlendEquationSeparate(GLenum modeRGB, + GLenum modeAlpha) { + MakeFunctionUnique("glBlendEquationSeparate"); + interface_->BlendEquationSeparate(modeRGB, modeAlpha); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBlendFunc(GLenum sfactor, GLenum dfactor) { + MakeFunctionUnique("glBlendFunc"); + interface_->BlendFunc(sfactor, dfactor); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBlendFuncSeparate(GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha) { + MakeFunctionUnique("glBlendFuncSeparate"); + interface_->BlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBlitFramebuffer(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + MakeFunctionUnique("glBlitFramebuffer"); + interface_->BlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, + dstX1, dstY1, mask, filter); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glBlitFramebufferANGLE(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + MakeFunctionUnique("glBlitFramebufferANGLE"); + interface_->BlitFramebufferANGLE(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, + dstX1, dstY1, mask, filter); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBlitFramebufferEXT(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter) { + MakeFunctionUnique("glBlitFramebufferEXT"); + interface_->BlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, + dstX1, dstY1, mask, filter); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBufferData(GLenum target, + GLsizeiptr size, + const void* data, + GLenum usage) { + MakeFunctionUnique("glBufferData"); + interface_->BufferData(target, size, data, usage); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glBufferSubData(GLenum target, + GLintptr offset, + GLsizeiptr size, + const void* data) { + MakeFunctionUnique("glBufferSubData"); + interface_->BufferSubData(target, offset, size, data); +} + +GLenum GL_BINDING_CALL +MockGLInterface::Mock_glCheckFramebufferStatus(GLenum target) { + MakeFunctionUnique("glCheckFramebufferStatus"); + return interface_->CheckFramebufferStatusEXT(target); +} + +GLenum GL_BINDING_CALL +MockGLInterface::Mock_glCheckFramebufferStatusEXT(GLenum target) { + MakeFunctionUnique("glCheckFramebufferStatusEXT"); + return interface_->CheckFramebufferStatusEXT(target); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glClear(GLbitfield mask) { + MakeFunctionUnique("glClear"); + interface_->Clear(mask); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glClearBufferfi(GLenum buffer, + GLint drawbuffer, + const GLfloat depth, + GLint stencil) { + MakeFunctionUnique("glClearBufferfi"); + interface_->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glClearBufferfv(GLenum buffer, + GLint drawbuffer, + const GLfloat* value) { + MakeFunctionUnique("glClearBufferfv"); + interface_->ClearBufferfv(buffer, drawbuffer, value); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glClearBufferiv(GLenum buffer, + GLint drawbuffer, + const GLint* value) { + MakeFunctionUnique("glClearBufferiv"); + interface_->ClearBufferiv(buffer, drawbuffer, value); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glClearBufferuiv(GLenum buffer, + GLint drawbuffer, + const GLuint* value) { + MakeFunctionUnique("glClearBufferuiv"); + interface_->ClearBufferuiv(buffer, drawbuffer, value); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glClearColor(GLclampf red, + GLclampf green, + GLclampf blue, + GLclampf alpha) { + MakeFunctionUnique("glClearColor"); + interface_->ClearColor(red, green, blue, alpha); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glClearDepth(GLclampd depth) { + MakeFunctionUnique("glClearDepth"); + interface_->ClearDepth(depth); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glClearDepthf(GLclampf depth) { + MakeFunctionUnique("glClearDepthf"); + interface_->ClearDepthf(depth); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glClearStencil(GLint s) { + MakeFunctionUnique("glClearStencil"); + interface_->ClearStencil(s); +} + +GLenum GL_BINDING_CALL +MockGLInterface::Mock_glClientWaitSync(GLsync sync, + GLbitfield flags, + GLuint64 timeout) { + MakeFunctionUnique("glClientWaitSync"); + return interface_->ClientWaitSync(sync, flags, timeout); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glColorMask(GLboolean red, + GLboolean green, + GLboolean blue, + GLboolean alpha) { + MakeFunctionUnique("glColorMask"); + interface_->ColorMask(red, green, blue, alpha); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glCompileShader(GLuint shader) { + MakeFunctionUnique("glCompileShader"); + interface_->CompileShader(shader); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glCompressedTexImage2D(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data) { + MakeFunctionUnique("glCompressedTexImage2D"); + interface_->CompressedTexImage2D(target, level, internalformat, width, height, + border, imageSize, data); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glCompressedTexImage3D(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data) { + MakeFunctionUnique("glCompressedTexImage3D"); + interface_->CompressedTexImage3D(target, level, internalformat, width, height, + depth, border, imageSize, data); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glCompressedTexSubImage2D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data) { + MakeFunctionUnique("glCompressedTexSubImage2D"); + interface_->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, + height, format, imageSize, data); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glCopyBufferSubData(GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size) { + MakeFunctionUnique("glCopyBufferSubData"); + interface_->CopyBufferSubData(readTarget, writeTarget, readOffset, + writeOffset, size); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glCopyTexImage2D(GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border) { + MakeFunctionUnique("glCopyTexImage2D"); + interface_->CopyTexImage2D(target, level, internalformat, x, y, width, height, + border); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glCopyTexSubImage2D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glCopyTexSubImage2D"); + interface_->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, + height); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glCopyTexSubImage3D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glCopyTexSubImage3D"); + interface_->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, + width, height); +} + +GLuint GL_BINDING_CALL MockGLInterface::Mock_glCreateProgram(void) { + MakeFunctionUnique("glCreateProgram"); + return interface_->CreateProgram(); +} + +GLuint GL_BINDING_CALL MockGLInterface::Mock_glCreateShader(GLenum type) { + MakeFunctionUnique("glCreateShader"); + return interface_->CreateShader(type); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glCullFace(GLenum mode) { + MakeFunctionUnique("glCullFace"); + interface_->CullFace(mode); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteBuffers(GLsizei n, const GLuint* buffers) { + MakeFunctionUnique("glDeleteBuffers"); + interface_->DeleteBuffersARB(n, buffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteBuffersARB(GLsizei n, const GLuint* buffers) { + MakeFunctionUnique("glDeleteBuffersARB"); + interface_->DeleteBuffersARB(n, buffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteFencesAPPLE(GLsizei n, const GLuint* fences) { + MakeFunctionUnique("glDeleteFencesAPPLE"); + interface_->DeleteFencesAPPLE(n, fences); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteFencesNV(GLsizei n, const GLuint* fences) { + MakeFunctionUnique("glDeleteFencesNV"); + interface_->DeleteFencesNV(n, fences); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteFramebuffers(GLsizei n, + const GLuint* framebuffers) { + MakeFunctionUnique("glDeleteFramebuffers"); + interface_->DeleteFramebuffersEXT(n, framebuffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteFramebuffersEXT(GLsizei n, + const GLuint* framebuffers) { + MakeFunctionUnique("glDeleteFramebuffersEXT"); + interface_->DeleteFramebuffersEXT(n, framebuffers); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glDeleteProgram(GLuint program) { + MakeFunctionUnique("glDeleteProgram"); + interface_->DeleteProgram(program); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteQueries(GLsizei n, const GLuint* ids) { + MakeFunctionUnique("glDeleteQueries"); + interface_->DeleteQueries(n, ids); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteQueriesARB(GLsizei n, const GLuint* ids) { + MakeFunctionUnique("glDeleteQueriesARB"); + interface_->DeleteQueriesARB(n, ids); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteQueriesEXT(GLsizei n, const GLuint* ids) { + MakeFunctionUnique("glDeleteQueriesEXT"); + interface_->DeleteQueriesARB(n, ids); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteRenderbuffers(GLsizei n, + const GLuint* renderbuffers) { + MakeFunctionUnique("glDeleteRenderbuffers"); + interface_->DeleteRenderbuffersEXT(n, renderbuffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteRenderbuffersEXT(GLsizei n, + const GLuint* renderbuffers) { + MakeFunctionUnique("glDeleteRenderbuffersEXT"); + interface_->DeleteRenderbuffersEXT(n, renderbuffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteSamplers(GLsizei n, const GLuint* samplers) { + MakeFunctionUnique("glDeleteSamplers"); + interface_->DeleteSamplers(n, samplers); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glDeleteShader(GLuint shader) { + MakeFunctionUnique("glDeleteShader"); + interface_->DeleteShader(shader); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glDeleteSync(GLsync sync) { + MakeFunctionUnique("glDeleteSync"); + interface_->DeleteSync(sync); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteTextures(GLsizei n, const GLuint* textures) { + MakeFunctionUnique("glDeleteTextures"); + interface_->DeleteTextures(n, textures); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteTransformFeedbacks(GLsizei n, const GLuint* ids) { + MakeFunctionUnique("glDeleteTransformFeedbacks"); + interface_->DeleteTransformFeedbacks(n, ids); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteVertexArrays(GLsizei n, const GLuint* arrays) { + MakeFunctionUnique("glDeleteVertexArrays"); + interface_->DeleteVertexArraysOES(n, arrays); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteVertexArraysAPPLE(GLsizei n, + const GLuint* arrays) { + MakeFunctionUnique("glDeleteVertexArraysAPPLE"); + interface_->DeleteVertexArraysOES(n, arrays); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDeleteVertexArraysOES(GLsizei n, const GLuint* arrays) { + MakeFunctionUnique("glDeleteVertexArraysOES"); + interface_->DeleteVertexArraysOES(n, arrays); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glDepthFunc(GLenum func) { + MakeFunctionUnique("glDepthFunc"); + interface_->DepthFunc(func); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glDepthMask(GLboolean flag) { + MakeFunctionUnique("glDepthMask"); + interface_->DepthMask(flag); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDepthRange(GLclampd zNear, GLclampd zFar) { + MakeFunctionUnique("glDepthRange"); + interface_->DepthRange(zNear, zFar); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDepthRangef(GLclampf zNear, GLclampf zFar) { + MakeFunctionUnique("glDepthRangef"); + interface_->DepthRangef(zNear, zFar); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDetachShader(GLuint program, GLuint shader) { + MakeFunctionUnique("glDetachShader"); + interface_->DetachShader(program, shader); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glDisable(GLenum cap) { + MakeFunctionUnique("glDisable"); + interface_->Disable(cap); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDisableVertexAttribArray(GLuint index) { + MakeFunctionUnique("glDisableVertexAttribArray"); + interface_->DisableVertexAttribArray(index); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDiscardFramebufferEXT(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) { + MakeFunctionUnique("glDiscardFramebufferEXT"); + interface_->DiscardFramebufferEXT(target, numAttachments, attachments); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawArrays(GLenum mode, GLint first, GLsizei count) { + MakeFunctionUnique("glDrawArrays"); + interface_->DrawArrays(mode, first, count); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawArraysInstanced(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) { + MakeFunctionUnique("glDrawArraysInstanced"); + interface_->DrawArraysInstancedANGLE(mode, first, count, primcount); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawArraysInstancedANGLE(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) { + MakeFunctionUnique("glDrawArraysInstancedANGLE"); + interface_->DrawArraysInstancedANGLE(mode, first, count, primcount); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawArraysInstancedARB(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) { + MakeFunctionUnique("glDrawArraysInstancedARB"); + interface_->DrawArraysInstancedANGLE(mode, first, count, primcount); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glDrawBuffer(GLenum mode) { + MakeFunctionUnique("glDrawBuffer"); + interface_->DrawBuffer(mode); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawBuffers(GLsizei n, const GLenum* bufs) { + MakeFunctionUnique("glDrawBuffers"); + interface_->DrawBuffersARB(n, bufs); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawBuffersARB(GLsizei n, const GLenum* bufs) { + MakeFunctionUnique("glDrawBuffersARB"); + interface_->DrawBuffersARB(n, bufs); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawBuffersEXT(GLsizei n, const GLenum* bufs) { + MakeFunctionUnique("glDrawBuffersEXT"); + interface_->DrawBuffersARB(n, bufs); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glDrawElements(GLenum mode, + GLsizei count, + GLenum type, + const void* indices) { + MakeFunctionUnique("glDrawElements"); + interface_->DrawElements(mode, count, type, indices); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawElementsInstanced(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) { + MakeFunctionUnique("glDrawElementsInstanced"); + interface_->DrawElementsInstancedANGLE(mode, count, type, indices, primcount); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawElementsInstancedANGLE(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) { + MakeFunctionUnique("glDrawElementsInstancedANGLE"); + interface_->DrawElementsInstancedANGLE(mode, count, type, indices, primcount); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawElementsInstancedARB(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) { + MakeFunctionUnique("glDrawElementsInstancedARB"); + interface_->DrawElementsInstancedANGLE(mode, count, type, indices, primcount); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glDrawRangeElements(GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices) { + MakeFunctionUnique("glDrawRangeElements"); + interface_->DrawRangeElements(mode, start, end, count, type, indices); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glEGLImageTargetRenderbufferStorageOES( + GLenum target, + GLeglImageOES image) { + MakeFunctionUnique("glEGLImageTargetRenderbufferStorageOES"); + interface_->EGLImageTargetRenderbufferStorageOES(target, image); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glEGLImageTargetTexture2DOES(GLenum target, + GLeglImageOES image) { + MakeFunctionUnique("glEGLImageTargetTexture2DOES"); + interface_->EGLImageTargetTexture2DOES(target, image); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glEnable(GLenum cap) { + MakeFunctionUnique("glEnable"); + interface_->Enable(cap); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glEnableVertexAttribArray(GLuint index) { + MakeFunctionUnique("glEnableVertexAttribArray"); + interface_->EnableVertexAttribArray(index); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glEndQuery(GLenum target) { + MakeFunctionUnique("glEndQuery"); + interface_->EndQuery(target); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glEndQueryARB(GLenum target) { + MakeFunctionUnique("glEndQueryARB"); + interface_->EndQueryARB(target); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glEndQueryEXT(GLenum target) { + MakeFunctionUnique("glEndQueryEXT"); + interface_->EndQueryARB(target); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glEndTransformFeedback(void) { + MakeFunctionUnique("glEndTransformFeedback"); + interface_->EndTransformFeedback(); +} + +GLsync GL_BINDING_CALL +MockGLInterface::Mock_glFenceSync(GLenum condition, GLbitfield flags) { + MakeFunctionUnique("glFenceSync"); + return interface_->FenceSync(condition, flags); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glFinish(void) { + MakeFunctionUnique("glFinish"); + interface_->Finish(); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glFinishFenceAPPLE(GLuint fence) { + MakeFunctionUnique("glFinishFenceAPPLE"); + interface_->FinishFenceAPPLE(fence); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glFinishFenceNV(GLuint fence) { + MakeFunctionUnique("glFinishFenceNV"); + interface_->FinishFenceNV(fence); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glFlush(void) { + MakeFunctionUnique("glFlush"); + interface_->Flush(); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glFlushMappedBufferRange(GLenum target, + GLintptr offset, + GLsizeiptr length) { + MakeFunctionUnique("glFlushMappedBufferRange"); + interface_->FlushMappedBufferRange(target, offset, length); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glFramebufferRenderbuffer(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer) { + MakeFunctionUnique("glFramebufferRenderbuffer"); + interface_->FramebufferRenderbufferEXT(target, attachment, renderbuffertarget, + renderbuffer); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glFramebufferRenderbufferEXT(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer) { + MakeFunctionUnique("glFramebufferRenderbufferEXT"); + interface_->FramebufferRenderbufferEXT(target, attachment, renderbuffertarget, + renderbuffer); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glFramebufferTexture2D(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level) { + MakeFunctionUnique("glFramebufferTexture2D"); + interface_->FramebufferTexture2DEXT(target, attachment, textarget, texture, + level); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glFramebufferTexture2DEXT(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level) { + MakeFunctionUnique("glFramebufferTexture2DEXT"); + interface_->FramebufferTexture2DEXT(target, attachment, textarget, texture, + level); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glFramebufferTexture2DMultisampleEXT(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) { + MakeFunctionUnique("glFramebufferTexture2DMultisampleEXT"); + interface_->FramebufferTexture2DMultisampleEXT(target, attachment, textarget, + texture, level, samples); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glFramebufferTexture2DMultisampleIMG(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples) { + MakeFunctionUnique("glFramebufferTexture2DMultisampleIMG"); + interface_->FramebufferTexture2DMultisampleIMG(target, attachment, textarget, + texture, level, samples); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glFramebufferTextureLayer(GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer) { + MakeFunctionUnique("glFramebufferTextureLayer"); + interface_->FramebufferTextureLayer(target, attachment, texture, level, + layer); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glFrontFace(GLenum mode) { + MakeFunctionUnique("glFrontFace"); + interface_->FrontFace(mode); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenBuffers(GLsizei n, GLuint* buffers) { + MakeFunctionUnique("glGenBuffers"); + interface_->GenBuffersARB(n, buffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenBuffersARB(GLsizei n, GLuint* buffers) { + MakeFunctionUnique("glGenBuffersARB"); + interface_->GenBuffersARB(n, buffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenFencesAPPLE(GLsizei n, GLuint* fences) { + MakeFunctionUnique("glGenFencesAPPLE"); + interface_->GenFencesAPPLE(n, fences); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenFencesNV(GLsizei n, GLuint* fences) { + MakeFunctionUnique("glGenFencesNV"); + interface_->GenFencesNV(n, fences); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenFramebuffers(GLsizei n, GLuint* framebuffers) { + MakeFunctionUnique("glGenFramebuffers"); + interface_->GenFramebuffersEXT(n, framebuffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenFramebuffersEXT(GLsizei n, GLuint* framebuffers) { + MakeFunctionUnique("glGenFramebuffersEXT"); + interface_->GenFramebuffersEXT(n, framebuffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenQueries(GLsizei n, GLuint* ids) { + MakeFunctionUnique("glGenQueries"); + interface_->GenQueries(n, ids); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenQueriesARB(GLsizei n, GLuint* ids) { + MakeFunctionUnique("glGenQueriesARB"); + interface_->GenQueriesARB(n, ids); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenQueriesEXT(GLsizei n, GLuint* ids) { + MakeFunctionUnique("glGenQueriesEXT"); + interface_->GenQueriesARB(n, ids); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) { + MakeFunctionUnique("glGenRenderbuffers"); + interface_->GenRenderbuffersEXT(n, renderbuffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenRenderbuffersEXT(GLsizei n, GLuint* renderbuffers) { + MakeFunctionUnique("glGenRenderbuffersEXT"); + interface_->GenRenderbuffersEXT(n, renderbuffers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenSamplers(GLsizei n, GLuint* samplers) { + MakeFunctionUnique("glGenSamplers"); + interface_->GenSamplers(n, samplers); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenTextures(GLsizei n, GLuint* textures) { + MakeFunctionUnique("glGenTextures"); + interface_->GenTextures(n, textures); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenTransformFeedbacks(GLsizei n, GLuint* ids) { + MakeFunctionUnique("glGenTransformFeedbacks"); + interface_->GenTransformFeedbacks(n, ids); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenVertexArrays(GLsizei n, GLuint* arrays) { + MakeFunctionUnique("glGenVertexArrays"); + interface_->GenVertexArraysOES(n, arrays); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenVertexArraysAPPLE(GLsizei n, GLuint* arrays) { + MakeFunctionUnique("glGenVertexArraysAPPLE"); + interface_->GenVertexArraysOES(n, arrays); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGenVertexArraysOES(GLsizei n, GLuint* arrays) { + MakeFunctionUnique("glGenVertexArraysOES"); + interface_->GenVertexArraysOES(n, arrays); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGenerateMipmap(GLenum target) { + MakeFunctionUnique("glGenerateMipmap"); + interface_->GenerateMipmapEXT(target); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGenerateMipmapEXT(GLenum target) { + MakeFunctionUnique("glGenerateMipmapEXT"); + interface_->GenerateMipmapEXT(target); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetActiveAttrib(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) { + MakeFunctionUnique("glGetActiveAttrib"); + interface_->GetActiveAttrib(program, index, bufsize, length, size, type, + name); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetActiveUniform(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name) { + MakeFunctionUnique("glGetActiveUniform"); + interface_->GetActiveUniform(program, index, bufsize, length, size, type, + name); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetActiveUniformBlockName(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + char* uniformBlockName) { + MakeFunctionUnique("glGetActiveUniformBlockName"); + interface_->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, + length, uniformBlockName); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetActiveUniformBlockiv(GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetActiveUniformBlockiv"); + interface_->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, + params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetActiveUniformsiv(GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetActiveUniformsiv"); + interface_->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, + params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetAttachedShaders(GLuint program, + GLsizei maxcount, + GLsizei* count, + GLuint* shaders) { + MakeFunctionUnique("glGetAttachedShaders"); + interface_->GetAttachedShaders(program, maxcount, count, shaders); +} + +GLint GL_BINDING_CALL +MockGLInterface::Mock_glGetAttribLocation(GLuint program, const char* name) { + MakeFunctionUnique("glGetAttribLocation"); + return interface_->GetAttribLocation(program, name); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetBooleanv(GLenum pname, GLboolean* params) { + MakeFunctionUnique("glGetBooleanv"); + interface_->GetBooleanv(pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetBufferParameteriv(GLenum target, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetBufferParameteriv"); + interface_->GetBufferParameteriv(target, pname, params); +} + +GLenum GL_BINDING_CALL MockGLInterface::Mock_glGetError(void) { + MakeFunctionUnique("glGetError"); + return interface_->GetError(); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetFenceivNV(GLuint fence, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetFenceivNV"); + interface_->GetFenceivNV(fence, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetFloatv(GLenum pname, GLfloat* params) { + MakeFunctionUnique("glGetFloatv"); + interface_->GetFloatv(pname, params); +} + +GLint GL_BINDING_CALL +MockGLInterface::Mock_glGetFragDataLocation(GLuint program, const char* name) { + MakeFunctionUnique("glGetFragDataLocation"); + return interface_->GetFragDataLocation(program, name); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetFramebufferAttachmentParameteriv(GLenum target, + GLenum attachment, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetFramebufferAttachmentParameteriv"); + interface_->GetFramebufferAttachmentParameterivEXT(target, attachment, pname, + params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetFramebufferAttachmentParameterivEXT( + GLenum target, + GLenum attachment, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetFramebufferAttachmentParameterivEXT"); + interface_->GetFramebufferAttachmentParameterivEXT(target, attachment, pname, + params); +} + +GLenum GL_BINDING_CALL MockGLInterface::Mock_glGetGraphicsResetStatus(void) { + MakeFunctionUnique("glGetGraphicsResetStatus"); + return interface_->GetGraphicsResetStatusARB(); +} + +GLenum GL_BINDING_CALL MockGLInterface::Mock_glGetGraphicsResetStatusARB(void) { + MakeFunctionUnique("glGetGraphicsResetStatusARB"); + return interface_->GetGraphicsResetStatusARB(); +} + +GLenum GL_BINDING_CALL MockGLInterface::Mock_glGetGraphicsResetStatusEXT(void) { + MakeFunctionUnique("glGetGraphicsResetStatusEXT"); + return interface_->GetGraphicsResetStatusARB(); +} + +GLenum GL_BINDING_CALL MockGLInterface::Mock_glGetGraphicsResetStatusKHR(void) { + MakeFunctionUnique("glGetGraphicsResetStatusKHR"); + return interface_->GetGraphicsResetStatusARB(); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetInteger64i_v(GLenum target, + GLuint index, + GLint64* data) { + MakeFunctionUnique("glGetInteger64i_v"); + interface_->GetInteger64i_v(target, index, data); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetInteger64v(GLenum pname, GLint64* params) { + MakeFunctionUnique("glGetInteger64v"); + interface_->GetInteger64v(pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetIntegeri_v(GLenum target, + GLuint index, + GLint* data) { + MakeFunctionUnique("glGetIntegeri_v"); + interface_->GetIntegeri_v(target, index, data); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetIntegerv(GLenum pname, GLint* params) { + MakeFunctionUnique("glGetIntegerv"); + interface_->GetIntegerv(pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetInternalformativ(GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei bufSize, + GLint* params) { + MakeFunctionUnique("glGetInternalformativ"); + interface_->GetInternalformativ(target, internalformat, pname, bufSize, + params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetProgramBinary(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary) { + MakeFunctionUnique("glGetProgramBinary"); + interface_->GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetProgramBinaryOES(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary) { + MakeFunctionUnique("glGetProgramBinaryOES"); + interface_->GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetProgramInfoLog(GLuint program, + GLsizei bufsize, + GLsizei* length, + char* infolog) { + MakeFunctionUnique("glGetProgramInfoLog"); + interface_->GetProgramInfoLog(program, bufsize, length, infolog); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetProgramiv(GLuint program, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetProgramiv"); + interface_->GetProgramiv(program, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetQueryObjecti64v(GLuint id, + GLenum pname, + GLint64* params) { + MakeFunctionUnique("glGetQueryObjecti64v"); + interface_->GetQueryObjecti64v(id, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetQueryObjectiv(GLuint id, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetQueryObjectiv"); + interface_->GetQueryObjectiv(id, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetQueryObjectivARB(GLuint id, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetQueryObjectivARB"); + interface_->GetQueryObjectivARB(id, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetQueryObjectivEXT(GLuint id, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetQueryObjectivEXT"); + interface_->GetQueryObjectivARB(id, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetQueryObjectui64v(GLuint id, + GLenum pname, + GLuint64* params) { + MakeFunctionUnique("glGetQueryObjectui64v"); + interface_->GetQueryObjectui64v(id, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetQueryObjectui64vEXT(GLuint id, + GLenum pname, + GLuint64* params) { + MakeFunctionUnique("glGetQueryObjectui64vEXT"); + interface_->GetQueryObjectui64v(id, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetQueryObjectuiv(GLuint id, + GLenum pname, + GLuint* params) { + MakeFunctionUnique("glGetQueryObjectuiv"); + interface_->GetQueryObjectuiv(id, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetQueryObjectuivARB(GLuint id, + GLenum pname, + GLuint* params) { + MakeFunctionUnique("glGetQueryObjectuivARB"); + interface_->GetQueryObjectuivARB(id, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetQueryObjectuivEXT(GLuint id, + GLenum pname, + GLuint* params) { + MakeFunctionUnique("glGetQueryObjectuivEXT"); + interface_->GetQueryObjectuivARB(id, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetQueryiv(GLenum target, GLenum pname, GLint* params) { + MakeFunctionUnique("glGetQueryiv"); + interface_->GetQueryiv(target, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetQueryivARB(GLenum target, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetQueryivARB"); + interface_->GetQueryivARB(target, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetQueryivEXT(GLenum target, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetQueryivEXT"); + interface_->GetQueryivARB(target, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetRenderbufferParameteriv(GLenum target, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetRenderbufferParameteriv"); + interface_->GetRenderbufferParameterivEXT(target, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetRenderbufferParameterivEXT(GLenum target, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetRenderbufferParameterivEXT"); + interface_->GetRenderbufferParameterivEXT(target, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetSamplerParameterfv(GLuint sampler, + GLenum pname, + GLfloat* params) { + MakeFunctionUnique("glGetSamplerParameterfv"); + interface_->GetSamplerParameterfv(sampler, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetSamplerParameteriv(GLuint sampler, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetSamplerParameteriv"); + interface_->GetSamplerParameteriv(sampler, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetShaderInfoLog(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* infolog) { + MakeFunctionUnique("glGetShaderInfoLog"); + interface_->GetShaderInfoLog(shader, bufsize, length, infolog); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetShaderPrecisionFormat(GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision) { + MakeFunctionUnique("glGetShaderPrecisionFormat"); + interface_->GetShaderPrecisionFormat(shadertype, precisiontype, range, + precision); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetShaderSource(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) { + MakeFunctionUnique("glGetShaderSource"); + interface_->GetShaderSource(shader, bufsize, length, source); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetShaderiv(GLuint shader, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetShaderiv"); + interface_->GetShaderiv(shader, pname, params); +} + +const GLubyte* GL_BINDING_CALL MockGLInterface::Mock_glGetString(GLenum name) { + MakeFunctionUnique("glGetString"); + return interface_->GetString(name); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetSynciv(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values) { + MakeFunctionUnique("glGetSynciv"); + interface_->GetSynciv(sync, pname, bufSize, length, values); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetTexLevelParameterfv(GLenum target, + GLint level, + GLenum pname, + GLfloat* params) { + MakeFunctionUnique("glGetTexLevelParameterfv"); + interface_->GetTexLevelParameterfv(target, level, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetTexLevelParameteriv(GLenum target, + GLint level, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetTexLevelParameteriv"); + interface_->GetTexLevelParameteriv(target, level, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetTexParameterfv(GLenum target, + GLenum pname, + GLfloat* params) { + MakeFunctionUnique("glGetTexParameterfv"); + interface_->GetTexParameterfv(target, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetTexParameteriv(GLenum target, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetTexParameteriv"); + interface_->GetTexParameteriv(target, pname, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetTransformFeedbackVarying(GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLenum* type, + char* name) { + MakeFunctionUnique("glGetTransformFeedbackVarying"); + interface_->GetTransformFeedbackVarying(program, index, bufSize, length, type, + name); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetTranslatedShaderSourceANGLE(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) { + MakeFunctionUnique("glGetTranslatedShaderSourceANGLE"); + interface_->GetTranslatedShaderSourceANGLE(shader, bufsize, length, source); +} + +GLuint GL_BINDING_CALL +MockGLInterface::Mock_glGetUniformBlockIndex(GLuint program, + const char* uniformBlockName) { + MakeFunctionUnique("glGetUniformBlockIndex"); + return interface_->GetUniformBlockIndex(program, uniformBlockName); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetUniformIndices(GLuint program, + GLsizei uniformCount, + const char* const* uniformNames, + GLuint* uniformIndices) { + MakeFunctionUnique("glGetUniformIndices"); + interface_->GetUniformIndices(program, uniformCount, uniformNames, + uniformIndices); +} + +GLint GL_BINDING_CALL +MockGLInterface::Mock_glGetUniformLocation(GLuint program, const char* name) { + MakeFunctionUnique("glGetUniformLocation"); + return interface_->GetUniformLocation(program, name); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetUniformfv(GLuint program, + GLint location, + GLfloat* params) { + MakeFunctionUnique("glGetUniformfv"); + interface_->GetUniformfv(program, location, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetUniformiv(GLuint program, + GLint location, + GLint* params) { + MakeFunctionUnique("glGetUniformiv"); + interface_->GetUniformiv(program, location, params); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetVertexAttribPointerv(GLuint index, + GLenum pname, + void** pointer) { + MakeFunctionUnique("glGetVertexAttribPointerv"); + interface_->GetVertexAttribPointerv(index, pname, pointer); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glGetVertexAttribfv(GLuint index, + GLenum pname, + GLfloat* params) { + MakeFunctionUnique("glGetVertexAttribfv"); + interface_->GetVertexAttribfv(index, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glGetVertexAttribiv(GLuint index, + GLenum pname, + GLint* params) { + MakeFunctionUnique("glGetVertexAttribiv"); + interface_->GetVertexAttribiv(index, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glHint(GLenum target, GLenum mode) { + MakeFunctionUnique("glHint"); + interface_->Hint(target, mode); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glInsertEventMarkerEXT(GLsizei length, + const char* marker) { + MakeFunctionUnique("glInsertEventMarkerEXT"); + interface_->InsertEventMarkerEXT(length, marker); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glInvalidateFramebuffer(GLenum target, + GLsizei numAttachments, + const GLenum* attachments) { + MakeFunctionUnique("glInvalidateFramebuffer"); + interface_->InvalidateFramebuffer(target, numAttachments, attachments); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glInvalidateSubFramebuffer(GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLint width, + GLint height) { + MakeFunctionUnique("glInvalidateSubFramebuffer"); + interface_->InvalidateSubFramebuffer(target, numAttachments, attachments, x, + y, width, height); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsBuffer(GLuint buffer) { + MakeFunctionUnique("glIsBuffer"); + return interface_->IsBuffer(buffer); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsEnabled(GLenum cap) { + MakeFunctionUnique("glIsEnabled"); + return interface_->IsEnabled(cap); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsFenceAPPLE(GLuint fence) { + MakeFunctionUnique("glIsFenceAPPLE"); + return interface_->IsFenceAPPLE(fence); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsFenceNV(GLuint fence) { + MakeFunctionUnique("glIsFenceNV"); + return interface_->IsFenceNV(fence); +} + +GLboolean GL_BINDING_CALL +MockGLInterface::Mock_glIsFramebuffer(GLuint framebuffer) { + MakeFunctionUnique("glIsFramebuffer"); + return interface_->IsFramebufferEXT(framebuffer); +} + +GLboolean GL_BINDING_CALL +MockGLInterface::Mock_glIsFramebufferEXT(GLuint framebuffer) { + MakeFunctionUnique("glIsFramebufferEXT"); + return interface_->IsFramebufferEXT(framebuffer); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsProgram(GLuint program) { + MakeFunctionUnique("glIsProgram"); + return interface_->IsProgram(program); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsQuery(GLuint query) { + MakeFunctionUnique("glIsQuery"); + return interface_->IsQuery(query); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsQueryARB(GLuint query) { + MakeFunctionUnique("glIsQueryARB"); + return interface_->IsQueryARB(query); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsQueryEXT(GLuint query) { + MakeFunctionUnique("glIsQueryEXT"); + return interface_->IsQueryARB(query); +} + +GLboolean GL_BINDING_CALL +MockGLInterface::Mock_glIsRenderbuffer(GLuint renderbuffer) { + MakeFunctionUnique("glIsRenderbuffer"); + return interface_->IsRenderbufferEXT(renderbuffer); +} + +GLboolean GL_BINDING_CALL +MockGLInterface::Mock_glIsRenderbufferEXT(GLuint renderbuffer) { + MakeFunctionUnique("glIsRenderbufferEXT"); + return interface_->IsRenderbufferEXT(renderbuffer); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsSampler(GLuint sampler) { + MakeFunctionUnique("glIsSampler"); + return interface_->IsSampler(sampler); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsShader(GLuint shader) { + MakeFunctionUnique("glIsShader"); + return interface_->IsShader(shader); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsSync(GLsync sync) { + MakeFunctionUnique("glIsSync"); + return interface_->IsSync(sync); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsTexture(GLuint texture) { + MakeFunctionUnique("glIsTexture"); + return interface_->IsTexture(texture); +} + +GLboolean GL_BINDING_CALL +MockGLInterface::Mock_glIsTransformFeedback(GLuint id) { + MakeFunctionUnique("glIsTransformFeedback"); + return interface_->IsTransformFeedback(id); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsVertexArray(GLuint array) { + MakeFunctionUnique("glIsVertexArray"); + return interface_->IsVertexArrayOES(array); +} + +GLboolean GL_BINDING_CALL +MockGLInterface::Mock_glIsVertexArrayAPPLE(GLuint array) { + MakeFunctionUnique("glIsVertexArrayAPPLE"); + return interface_->IsVertexArrayOES(array); +} + +GLboolean GL_BINDING_CALL +MockGLInterface::Mock_glIsVertexArrayOES(GLuint array) { + MakeFunctionUnique("glIsVertexArrayOES"); + return interface_->IsVertexArrayOES(array); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glLineWidth(GLfloat width) { + MakeFunctionUnique("glLineWidth"); + interface_->LineWidth(width); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glLinkProgram(GLuint program) { + MakeFunctionUnique("glLinkProgram"); + interface_->LinkProgram(program); +} + +void* GL_BINDING_CALL +MockGLInterface::Mock_glMapBuffer(GLenum target, GLenum access) { + MakeFunctionUnique("glMapBuffer"); + return interface_->MapBuffer(target, access); +} + +void* GL_BINDING_CALL +MockGLInterface::Mock_glMapBufferOES(GLenum target, GLenum access) { + MakeFunctionUnique("glMapBufferOES"); + return interface_->MapBuffer(target, access); +} + +void* GL_BINDING_CALL +MockGLInterface::Mock_glMapBufferRange(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access) { + MakeFunctionUnique("glMapBufferRange"); + return interface_->MapBufferRange(target, offset, length, access); +} + +void* GL_BINDING_CALL +MockGLInterface::Mock_glMapBufferRangeEXT(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access) { + MakeFunctionUnique("glMapBufferRangeEXT"); + return interface_->MapBufferRange(target, offset, length, access); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glMatrixLoadIdentityEXT(GLenum matrixMode) { + MakeFunctionUnique("glMatrixLoadIdentityEXT"); + interface_->MatrixLoadIdentityEXT(matrixMode); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glMatrixLoadfEXT(GLenum matrixMode, const GLfloat* m) { + MakeFunctionUnique("glMatrixLoadfEXT"); + interface_->MatrixLoadfEXT(matrixMode, m); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glPauseTransformFeedback(void) { + MakeFunctionUnique("glPauseTransformFeedback"); + interface_->PauseTransformFeedback(); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glPixelStorei(GLenum pname, GLint param) { + MakeFunctionUnique("glPixelStorei"); + interface_->PixelStorei(pname, param); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glPointParameteri(GLenum pname, GLint param) { + MakeFunctionUnique("glPointParameteri"); + interface_->PointParameteri(pname, param); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glPolygonOffset(GLfloat factor, GLfloat units) { + MakeFunctionUnique("glPolygonOffset"); + interface_->PolygonOffset(factor, units); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glPopGroupMarkerEXT(void) { + MakeFunctionUnique("glPopGroupMarkerEXT"); + interface_->PopGroupMarkerEXT(); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glProgramBinary(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length) { + MakeFunctionUnique("glProgramBinary"); + interface_->ProgramBinary(program, binaryFormat, binary, length); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glProgramBinaryOES(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length) { + MakeFunctionUnique("glProgramBinaryOES"); + interface_->ProgramBinary(program, binaryFormat, binary, length); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glProgramParameteri(GLuint program, + GLenum pname, + GLint value) { + MakeFunctionUnique("glProgramParameteri"); + interface_->ProgramParameteri(program, pname, value); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glPushGroupMarkerEXT(GLsizei length, const char* marker) { + MakeFunctionUnique("glPushGroupMarkerEXT"); + interface_->PushGroupMarkerEXT(length, marker); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glQueryCounter(GLuint id, GLenum target) { + MakeFunctionUnique("glQueryCounter"); + interface_->QueryCounter(id, target); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glQueryCounterEXT(GLuint id, GLenum target) { + MakeFunctionUnique("glQueryCounterEXT"); + interface_->QueryCounter(id, target); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glReadBuffer(GLenum src) { + MakeFunctionUnique("glReadBuffer"); + interface_->ReadBuffer(src); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glReadPixels(GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels) { + MakeFunctionUnique("glReadPixels"); + interface_->ReadPixels(x, y, width, height, format, type, pixels); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glReleaseShaderCompiler(void) { + MakeFunctionUnique("glReleaseShaderCompiler"); + interface_->ReleaseShaderCompiler(); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glRenderbufferStorage(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glRenderbufferStorage"); + interface_->RenderbufferStorageEXT(target, internalformat, width, height); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glRenderbufferStorageEXT(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glRenderbufferStorageEXT"); + interface_->RenderbufferStorageEXT(target, internalformat, width, height); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glRenderbufferStorageMultisample(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glRenderbufferStorageMultisample"); + interface_->RenderbufferStorageMultisampleEXT(target, samples, internalformat, + width, height); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glRenderbufferStorageMultisampleANGLE( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glRenderbufferStorageMultisampleANGLE"); + interface_->RenderbufferStorageMultisampleANGLE( + target, samples, internalformat, width, height); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glRenderbufferStorageMultisampleEXT(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glRenderbufferStorageMultisampleEXT"); + interface_->RenderbufferStorageMultisampleEXT(target, samples, internalformat, + width, height); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glRenderbufferStorageMultisampleIMG(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glRenderbufferStorageMultisampleIMG"); + interface_->RenderbufferStorageMultisampleIMG(target, samples, internalformat, + width, height); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glResumeTransformFeedback(void) { + MakeFunctionUnique("glResumeTransformFeedback"); + interface_->ResumeTransformFeedback(); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glSampleCoverage(GLclampf value, GLboolean invert) { + MakeFunctionUnique("glSampleCoverage"); + interface_->SampleCoverage(value, invert); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glSamplerParameterf(GLuint sampler, + GLenum pname, + GLfloat param) { + MakeFunctionUnique("glSamplerParameterf"); + interface_->SamplerParameterf(sampler, pname, param); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glSamplerParameterfv(GLuint sampler, + GLenum pname, + const GLfloat* params) { + MakeFunctionUnique("glSamplerParameterfv"); + interface_->SamplerParameterfv(sampler, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glSamplerParameteri(GLuint sampler, + GLenum pname, + GLint param) { + MakeFunctionUnique("glSamplerParameteri"); + interface_->SamplerParameteri(sampler, pname, param); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glSamplerParameteriv(GLuint sampler, + GLenum pname, + const GLint* params) { + MakeFunctionUnique("glSamplerParameteriv"); + interface_->SamplerParameteriv(sampler, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glScissor(GLint x, + GLint y, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glScissor"); + interface_->Scissor(x, y, width, height); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glSetFenceAPPLE(GLuint fence) { + MakeFunctionUnique("glSetFenceAPPLE"); + interface_->SetFenceAPPLE(fence); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glSetFenceNV(GLuint fence, GLenum condition) { + MakeFunctionUnique("glSetFenceNV"); + interface_->SetFenceNV(fence, condition); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glShaderBinary(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length) { + MakeFunctionUnique("glShaderBinary"); + interface_->ShaderBinary(n, shaders, binaryformat, binary, length); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glShaderSource(GLuint shader, + GLsizei count, + const char* const* str, + const GLint* length) { + MakeFunctionUnique("glShaderSource"); + interface_->ShaderSource(shader, count, str, length); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glStencilFunc(GLenum func, GLint ref, GLuint mask) { + MakeFunctionUnique("glStencilFunc"); + interface_->StencilFunc(func, ref, mask); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glStencilFuncSeparate(GLenum face, + GLenum func, + GLint ref, + GLuint mask) { + MakeFunctionUnique("glStencilFuncSeparate"); + interface_->StencilFuncSeparate(face, func, ref, mask); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glStencilMask(GLuint mask) { + MakeFunctionUnique("glStencilMask"); + interface_->StencilMask(mask); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glStencilMaskSeparate(GLenum face, GLuint mask) { + MakeFunctionUnique("glStencilMaskSeparate"); + interface_->StencilMaskSeparate(face, mask); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) { + MakeFunctionUnique("glStencilOp"); + interface_->StencilOp(fail, zfail, zpass); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glStencilOpSeparate(GLenum face, + GLenum fail, + GLenum zfail, + GLenum zpass) { + MakeFunctionUnique("glStencilOpSeparate"); + interface_->StencilOpSeparate(face, fail, zfail, zpass); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glTestFenceAPPLE(GLuint fence) { + MakeFunctionUnique("glTestFenceAPPLE"); + return interface_->TestFenceAPPLE(fence); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glTestFenceNV(GLuint fence) { + MakeFunctionUnique("glTestFenceNV"); + return interface_->TestFenceNV(fence); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glTexImage2D(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels) { + MakeFunctionUnique("glTexImage2D"); + interface_->TexImage2D(target, level, internalformat, width, height, border, + format, type, pixels); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glTexImage3D(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels) { + MakeFunctionUnique("glTexImage3D"); + interface_->TexImage3D(target, level, internalformat, width, height, depth, + border, format, type, pixels); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glTexParameterf(GLenum target, + GLenum pname, + GLfloat param) { + MakeFunctionUnique("glTexParameterf"); + interface_->TexParameterf(target, pname, param); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glTexParameterfv(GLenum target, + GLenum pname, + const GLfloat* params) { + MakeFunctionUnique("glTexParameterfv"); + interface_->TexParameterfv(target, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glTexParameteri(GLenum target, + GLenum pname, + GLint param) { + MakeFunctionUnique("glTexParameteri"); + interface_->TexParameteri(target, pname, param); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glTexParameteriv(GLenum target, + GLenum pname, + const GLint* params) { + MakeFunctionUnique("glTexParameteriv"); + interface_->TexParameteriv(target, pname, params); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glTexStorage2D(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glTexStorage2D"); + interface_->TexStorage2DEXT(target, levels, internalformat, width, height); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glTexStorage2DEXT(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glTexStorage2DEXT"); + interface_->TexStorage2DEXT(target, levels, internalformat, width, height); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glTexStorage3D(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth) { + MakeFunctionUnique("glTexStorage3D"); + interface_->TexStorage3D(target, levels, internalformat, width, height, + depth); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glTexSubImage2D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels) { + MakeFunctionUnique("glTexSubImage2D"); + interface_->TexSubImage2D(target, level, xoffset, yoffset, width, height, + format, type, pixels); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glTransformFeedbackVaryings(GLuint program, + GLsizei count, + const char* const* varyings, + GLenum bufferMode) { + MakeFunctionUnique("glTransformFeedbackVaryings"); + interface_->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniform1f(GLint location, GLfloat x) { + MakeFunctionUnique("glUniform1f"); + interface_->Uniform1f(location, x); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform1fv(GLint location, + GLsizei count, + const GLfloat* v) { + MakeFunctionUnique("glUniform1fv"); + interface_->Uniform1fv(location, count, v); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniform1i(GLint location, GLint x) { + MakeFunctionUnique("glUniform1i"); + interface_->Uniform1i(location, x); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform1iv(GLint location, + GLsizei count, + const GLint* v) { + MakeFunctionUnique("glUniform1iv"); + interface_->Uniform1iv(location, count, v); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniform1ui(GLint location, GLuint v0) { + MakeFunctionUnique("glUniform1ui"); + interface_->Uniform1ui(location, v0); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform1uiv(GLint location, + GLsizei count, + const GLuint* v) { + MakeFunctionUnique("glUniform1uiv"); + interface_->Uniform1uiv(location, count, v); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniform2f(GLint location, GLfloat x, GLfloat y) { + MakeFunctionUnique("glUniform2f"); + interface_->Uniform2f(location, x, y); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform2fv(GLint location, + GLsizei count, + const GLfloat* v) { + MakeFunctionUnique("glUniform2fv"); + interface_->Uniform2fv(location, count, v); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniform2i(GLint location, GLint x, GLint y) { + MakeFunctionUnique("glUniform2i"); + interface_->Uniform2i(location, x, y); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform2iv(GLint location, + GLsizei count, + const GLint* v) { + MakeFunctionUnique("glUniform2iv"); + interface_->Uniform2iv(location, count, v); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniform2ui(GLint location, GLuint v0, GLuint v1) { + MakeFunctionUnique("glUniform2ui"); + interface_->Uniform2ui(location, v0, v1); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform2uiv(GLint location, + GLsizei count, + const GLuint* v) { + MakeFunctionUnique("glUniform2uiv"); + interface_->Uniform2uiv(location, count, v); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform3f(GLint location, + GLfloat x, + GLfloat y, + GLfloat z) { + MakeFunctionUnique("glUniform3f"); + interface_->Uniform3f(location, x, y, z); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform3fv(GLint location, + GLsizei count, + const GLfloat* v) { + MakeFunctionUnique("glUniform3fv"); + interface_->Uniform3fv(location, count, v); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniform3i(GLint location, GLint x, GLint y, GLint z) { + MakeFunctionUnique("glUniform3i"); + interface_->Uniform3i(location, x, y, z); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform3iv(GLint location, + GLsizei count, + const GLint* v) { + MakeFunctionUnique("glUniform3iv"); + interface_->Uniform3iv(location, count, v); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform3ui(GLint location, + GLuint v0, + GLuint v1, + GLuint v2) { + MakeFunctionUnique("glUniform3ui"); + interface_->Uniform3ui(location, v0, v1, v2); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform3uiv(GLint location, + GLsizei count, + const GLuint* v) { + MakeFunctionUnique("glUniform3uiv"); + interface_->Uniform3uiv(location, count, v); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform4f(GLint location, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) { + MakeFunctionUnique("glUniform4f"); + interface_->Uniform4f(location, x, y, z, w); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform4fv(GLint location, + GLsizei count, + const GLfloat* v) { + MakeFunctionUnique("glUniform4fv"); + interface_->Uniform4fv(location, count, v); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform4i(GLint location, + GLint x, + GLint y, + GLint z, + GLint w) { + MakeFunctionUnique("glUniform4i"); + interface_->Uniform4i(location, x, y, z, w); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform4iv(GLint location, + GLsizei count, + const GLint* v) { + MakeFunctionUnique("glUniform4iv"); + interface_->Uniform4iv(location, count, v); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform4ui(GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3) { + MakeFunctionUnique("glUniform4ui"); + interface_->Uniform4ui(location, v0, v1, v2, v3); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUniform4uiv(GLint location, + GLsizei count, + const GLuint* v) { + MakeFunctionUnique("glUniform4uiv"); + interface_->Uniform4uiv(location, count, v); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniformBlockBinding(GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding) { + MakeFunctionUnique("glUniformBlockBinding"); + interface_->UniformBlockBinding(program, uniformBlockIndex, + uniformBlockBinding); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniformMatrix2fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + MakeFunctionUnique("glUniformMatrix2fv"); + interface_->UniformMatrix2fv(location, count, transpose, value); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniformMatrix2x3fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + MakeFunctionUnique("glUniformMatrix2x3fv"); + interface_->UniformMatrix2x3fv(location, count, transpose, value); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniformMatrix2x4fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + MakeFunctionUnique("glUniformMatrix2x4fv"); + interface_->UniformMatrix2x4fv(location, count, transpose, value); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniformMatrix3fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + MakeFunctionUnique("glUniformMatrix3fv"); + interface_->UniformMatrix3fv(location, count, transpose, value); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniformMatrix3x2fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + MakeFunctionUnique("glUniformMatrix3x2fv"); + interface_->UniformMatrix3x2fv(location, count, transpose, value); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniformMatrix3x4fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + MakeFunctionUnique("glUniformMatrix3x4fv"); + interface_->UniformMatrix3x4fv(location, count, transpose, value); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniformMatrix4fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + MakeFunctionUnique("glUniformMatrix4fv"); + interface_->UniformMatrix4fv(location, count, transpose, value); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniformMatrix4x2fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + MakeFunctionUnique("glUniformMatrix4x2fv"); + interface_->UniformMatrix4x2fv(location, count, transpose, value); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glUniformMatrix4x3fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value) { + MakeFunctionUnique("glUniformMatrix4x3fv"); + interface_->UniformMatrix4x3fv(location, count, transpose, value); +} + +GLboolean GL_BINDING_CALL MockGLInterface::Mock_glUnmapBuffer(GLenum target) { + MakeFunctionUnique("glUnmapBuffer"); + return interface_->UnmapBuffer(target); +} + +GLboolean GL_BINDING_CALL +MockGLInterface::Mock_glUnmapBufferOES(GLenum target) { + MakeFunctionUnique("glUnmapBufferOES"); + return interface_->UnmapBuffer(target); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glUseProgram(GLuint program) { + MakeFunctionUnique("glUseProgram"); + interface_->UseProgram(program); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glValidateProgram(GLuint program) { + MakeFunctionUnique("glValidateProgram"); + interface_->ValidateProgram(program); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttrib1f(GLuint indx, GLfloat x) { + MakeFunctionUnique("glVertexAttrib1f"); + interface_->VertexAttrib1f(indx, x); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttrib1fv(GLuint indx, const GLfloat* values) { + MakeFunctionUnique("glVertexAttrib1fv"); + interface_->VertexAttrib1fv(indx, values); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) { + MakeFunctionUnique("glVertexAttrib2f"); + interface_->VertexAttrib2f(indx, x, y); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttrib2fv(GLuint indx, const GLfloat* values) { + MakeFunctionUnique("glVertexAttrib2fv"); + interface_->VertexAttrib2fv(indx, values); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glVertexAttrib3f(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z) { + MakeFunctionUnique("glVertexAttrib3f"); + interface_->VertexAttrib3f(indx, x, y, z); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttrib3fv(GLuint indx, const GLfloat* values) { + MakeFunctionUnique("glVertexAttrib3fv"); + interface_->VertexAttrib3fv(indx, values); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glVertexAttrib4f(GLuint indx, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w) { + MakeFunctionUnique("glVertexAttrib4f"); + interface_->VertexAttrib4f(indx, x, y, z, w); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttrib4fv(GLuint indx, const GLfloat* values) { + MakeFunctionUnique("glVertexAttrib4fv"); + interface_->VertexAttrib4fv(indx, values); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttribDivisor(GLuint index, GLuint divisor) { + MakeFunctionUnique("glVertexAttribDivisor"); + interface_->VertexAttribDivisorANGLE(index, divisor); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttribDivisorANGLE(GLuint index, GLuint divisor) { + MakeFunctionUnique("glVertexAttribDivisorANGLE"); + interface_->VertexAttribDivisorANGLE(index, divisor); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttribDivisorARB(GLuint index, GLuint divisor) { + MakeFunctionUnique("glVertexAttribDivisorARB"); + interface_->VertexAttribDivisorANGLE(index, divisor); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glVertexAttribI4i(GLuint indx, + GLint x, + GLint y, + GLint z, + GLint w) { + MakeFunctionUnique("glVertexAttribI4i"); + interface_->VertexAttribI4i(indx, x, y, z, w); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttribI4iv(GLuint indx, const GLint* values) { + MakeFunctionUnique("glVertexAttribI4iv"); + interface_->VertexAttribI4iv(indx, values); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glVertexAttribI4ui(GLuint indx, + GLuint x, + GLuint y, + GLuint z, + GLuint w) { + MakeFunctionUnique("glVertexAttribI4ui"); + interface_->VertexAttribI4ui(indx, x, y, z, w); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttribI4uiv(GLuint indx, const GLuint* values) { + MakeFunctionUnique("glVertexAttribI4uiv"); + interface_->VertexAttribI4uiv(indx, values); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttribIPointer(GLuint indx, + GLint size, + GLenum type, + GLsizei stride, + const void* ptr) { + MakeFunctionUnique("glVertexAttribIPointer"); + interface_->VertexAttribIPointer(indx, size, type, stride, ptr); +} + +void GL_BINDING_CALL +MockGLInterface::Mock_glVertexAttribPointer(GLuint indx, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* ptr) { + MakeFunctionUnique("glVertexAttribPointer"); + interface_->VertexAttribPointer(indx, size, type, normalized, stride, ptr); +} + +void GL_BINDING_CALL MockGLInterface::Mock_glViewport(GLint x, + GLint y, + GLsizei width, + GLsizei height) { + MakeFunctionUnique("glViewport"); + interface_->Viewport(x, y, width, height); +} + +GLenum GL_BINDING_CALL MockGLInterface::Mock_glWaitSync(GLsync sync, + GLbitfield flags, + GLuint64 timeout) { + MakeFunctionUnique("glWaitSync"); + return interface_->WaitSync(sync, flags, timeout); +} + +static void MockInvalidFunction() { + NOTREACHED(); +} + +void* GL_BINDING_CALL MockGLInterface::GetGLProcAddress(const char* name) { + if (strcmp(name, "glActiveTexture") == 0) + return reinterpret_cast<void*>(Mock_glActiveTexture); + if (strcmp(name, "glAttachShader") == 0) + return reinterpret_cast<void*>(Mock_glAttachShader); + if (strcmp(name, "glBeginQuery") == 0) + return reinterpret_cast<void*>(Mock_glBeginQuery); + if (strcmp(name, "glBeginQueryARB") == 0) + return reinterpret_cast<void*>(Mock_glBeginQueryARB); + if (strcmp(name, "glBeginQueryEXT") == 0) + return reinterpret_cast<void*>(Mock_glBeginQueryEXT); + if (strcmp(name, "glBeginTransformFeedback") == 0) + return reinterpret_cast<void*>(Mock_glBeginTransformFeedback); + if (strcmp(name, "glBindAttribLocation") == 0) + return reinterpret_cast<void*>(Mock_glBindAttribLocation); + if (strcmp(name, "glBindBuffer") == 0) + return reinterpret_cast<void*>(Mock_glBindBuffer); + if (strcmp(name, "glBindBufferBase") == 0) + return reinterpret_cast<void*>(Mock_glBindBufferBase); + if (strcmp(name, "glBindBufferRange") == 0) + return reinterpret_cast<void*>(Mock_glBindBufferRange); + if (strcmp(name, "glBindFragDataLocation") == 0) + return reinterpret_cast<void*>(Mock_glBindFragDataLocation); + if (strcmp(name, "glBindFragDataLocationIndexed") == 0) + return reinterpret_cast<void*>(Mock_glBindFragDataLocationIndexed); + if (strcmp(name, "glBindFramebuffer") == 0) + return reinterpret_cast<void*>(Mock_glBindFramebuffer); + if (strcmp(name, "glBindFramebufferEXT") == 0) + return reinterpret_cast<void*>(Mock_glBindFramebufferEXT); + if (strcmp(name, "glBindRenderbuffer") == 0) + return reinterpret_cast<void*>(Mock_glBindRenderbuffer); + if (strcmp(name, "glBindRenderbufferEXT") == 0) + return reinterpret_cast<void*>(Mock_glBindRenderbufferEXT); + if (strcmp(name, "glBindSampler") == 0) + return reinterpret_cast<void*>(Mock_glBindSampler); + if (strcmp(name, "glBindTexture") == 0) + return reinterpret_cast<void*>(Mock_glBindTexture); + if (strcmp(name, "glBindTransformFeedback") == 0) + return reinterpret_cast<void*>(Mock_glBindTransformFeedback); + if (strcmp(name, "glBindVertexArray") == 0) + return reinterpret_cast<void*>(Mock_glBindVertexArray); + if (strcmp(name, "glBindVertexArrayAPPLE") == 0) + return reinterpret_cast<void*>(Mock_glBindVertexArrayAPPLE); + if (strcmp(name, "glBindVertexArrayOES") == 0) + return reinterpret_cast<void*>(Mock_glBindVertexArrayOES); + if (strcmp(name, "glBlendBarrierKHR") == 0) + return reinterpret_cast<void*>(Mock_glBlendBarrierKHR); + if (strcmp(name, "glBlendBarrierNV") == 0) + return reinterpret_cast<void*>(Mock_glBlendBarrierNV); + if (strcmp(name, "glBlendColor") == 0) + return reinterpret_cast<void*>(Mock_glBlendColor); + if (strcmp(name, "glBlendEquation") == 0) + return reinterpret_cast<void*>(Mock_glBlendEquation); + if (strcmp(name, "glBlendEquationSeparate") == 0) + return reinterpret_cast<void*>(Mock_glBlendEquationSeparate); + if (strcmp(name, "glBlendFunc") == 0) + return reinterpret_cast<void*>(Mock_glBlendFunc); + if (strcmp(name, "glBlendFuncSeparate") == 0) + return reinterpret_cast<void*>(Mock_glBlendFuncSeparate); + if (strcmp(name, "glBlitFramebuffer") == 0) + return reinterpret_cast<void*>(Mock_glBlitFramebuffer); + if (strcmp(name, "glBlitFramebufferANGLE") == 0) + return reinterpret_cast<void*>(Mock_glBlitFramebufferANGLE); + if (strcmp(name, "glBlitFramebufferEXT") == 0) + return reinterpret_cast<void*>(Mock_glBlitFramebufferEXT); + if (strcmp(name, "glBufferData") == 0) + return reinterpret_cast<void*>(Mock_glBufferData); + if (strcmp(name, "glBufferSubData") == 0) + return reinterpret_cast<void*>(Mock_glBufferSubData); + if (strcmp(name, "glCheckFramebufferStatus") == 0) + return reinterpret_cast<void*>(Mock_glCheckFramebufferStatus); + if (strcmp(name, "glCheckFramebufferStatusEXT") == 0) + return reinterpret_cast<void*>(Mock_glCheckFramebufferStatusEXT); + if (strcmp(name, "glClear") == 0) + return reinterpret_cast<void*>(Mock_glClear); + if (strcmp(name, "glClearBufferfi") == 0) + return reinterpret_cast<void*>(Mock_glClearBufferfi); + if (strcmp(name, "glClearBufferfv") == 0) + return reinterpret_cast<void*>(Mock_glClearBufferfv); + if (strcmp(name, "glClearBufferiv") == 0) + return reinterpret_cast<void*>(Mock_glClearBufferiv); + if (strcmp(name, "glClearBufferuiv") == 0) + return reinterpret_cast<void*>(Mock_glClearBufferuiv); + if (strcmp(name, "glClearColor") == 0) + return reinterpret_cast<void*>(Mock_glClearColor); + if (strcmp(name, "glClearDepth") == 0) + return reinterpret_cast<void*>(Mock_glClearDepth); + if (strcmp(name, "glClearDepthf") == 0) + return reinterpret_cast<void*>(Mock_glClearDepthf); + if (strcmp(name, "glClearStencil") == 0) + return reinterpret_cast<void*>(Mock_glClearStencil); + if (strcmp(name, "glClientWaitSync") == 0) + return reinterpret_cast<void*>(Mock_glClientWaitSync); + if (strcmp(name, "glColorMask") == 0) + return reinterpret_cast<void*>(Mock_glColorMask); + if (strcmp(name, "glCompileShader") == 0) + return reinterpret_cast<void*>(Mock_glCompileShader); + if (strcmp(name, "glCompressedTexImage2D") == 0) + return reinterpret_cast<void*>(Mock_glCompressedTexImage2D); + if (strcmp(name, "glCompressedTexImage3D") == 0) + return reinterpret_cast<void*>(Mock_glCompressedTexImage3D); + if (strcmp(name, "glCompressedTexSubImage2D") == 0) + return reinterpret_cast<void*>(Mock_glCompressedTexSubImage2D); + if (strcmp(name, "glCopyBufferSubData") == 0) + return reinterpret_cast<void*>(Mock_glCopyBufferSubData); + if (strcmp(name, "glCopyTexImage2D") == 0) + return reinterpret_cast<void*>(Mock_glCopyTexImage2D); + if (strcmp(name, "glCopyTexSubImage2D") == 0) + return reinterpret_cast<void*>(Mock_glCopyTexSubImage2D); + if (strcmp(name, "glCopyTexSubImage3D") == 0) + return reinterpret_cast<void*>(Mock_glCopyTexSubImage3D); + if (strcmp(name, "glCreateProgram") == 0) + return reinterpret_cast<void*>(Mock_glCreateProgram); + if (strcmp(name, "glCreateShader") == 0) + return reinterpret_cast<void*>(Mock_glCreateShader); + if (strcmp(name, "glCullFace") == 0) + return reinterpret_cast<void*>(Mock_glCullFace); + if (strcmp(name, "glDeleteBuffers") == 0) + return reinterpret_cast<void*>(Mock_glDeleteBuffers); + if (strcmp(name, "glDeleteBuffersARB") == 0) + return reinterpret_cast<void*>(Mock_glDeleteBuffersARB); + if (strcmp(name, "glDeleteFencesAPPLE") == 0) + return reinterpret_cast<void*>(Mock_glDeleteFencesAPPLE); + if (strcmp(name, "glDeleteFencesNV") == 0) + return reinterpret_cast<void*>(Mock_glDeleteFencesNV); + if (strcmp(name, "glDeleteFramebuffers") == 0) + return reinterpret_cast<void*>(Mock_glDeleteFramebuffers); + if (strcmp(name, "glDeleteFramebuffersEXT") == 0) + return reinterpret_cast<void*>(Mock_glDeleteFramebuffersEXT); + if (strcmp(name, "glDeleteProgram") == 0) + return reinterpret_cast<void*>(Mock_glDeleteProgram); + if (strcmp(name, "glDeleteQueries") == 0) + return reinterpret_cast<void*>(Mock_glDeleteQueries); + if (strcmp(name, "glDeleteQueriesARB") == 0) + return reinterpret_cast<void*>(Mock_glDeleteQueriesARB); + if (strcmp(name, "glDeleteQueriesEXT") == 0) + return reinterpret_cast<void*>(Mock_glDeleteQueriesEXT); + if (strcmp(name, "glDeleteRenderbuffers") == 0) + return reinterpret_cast<void*>(Mock_glDeleteRenderbuffers); + if (strcmp(name, "glDeleteRenderbuffersEXT") == 0) + return reinterpret_cast<void*>(Mock_glDeleteRenderbuffersEXT); + if (strcmp(name, "glDeleteSamplers") == 0) + return reinterpret_cast<void*>(Mock_glDeleteSamplers); + if (strcmp(name, "glDeleteShader") == 0) + return reinterpret_cast<void*>(Mock_glDeleteShader); + if (strcmp(name, "glDeleteSync") == 0) + return reinterpret_cast<void*>(Mock_glDeleteSync); + if (strcmp(name, "glDeleteTextures") == 0) + return reinterpret_cast<void*>(Mock_glDeleteTextures); + if (strcmp(name, "glDeleteTransformFeedbacks") == 0) + return reinterpret_cast<void*>(Mock_glDeleteTransformFeedbacks); + if (strcmp(name, "glDeleteVertexArrays") == 0) + return reinterpret_cast<void*>(Mock_glDeleteVertexArrays); + if (strcmp(name, "glDeleteVertexArraysAPPLE") == 0) + return reinterpret_cast<void*>(Mock_glDeleteVertexArraysAPPLE); + if (strcmp(name, "glDeleteVertexArraysOES") == 0) + return reinterpret_cast<void*>(Mock_glDeleteVertexArraysOES); + if (strcmp(name, "glDepthFunc") == 0) + return reinterpret_cast<void*>(Mock_glDepthFunc); + if (strcmp(name, "glDepthMask") == 0) + return reinterpret_cast<void*>(Mock_glDepthMask); + if (strcmp(name, "glDepthRange") == 0) + return reinterpret_cast<void*>(Mock_glDepthRange); + if (strcmp(name, "glDepthRangef") == 0) + return reinterpret_cast<void*>(Mock_glDepthRangef); + if (strcmp(name, "glDetachShader") == 0) + return reinterpret_cast<void*>(Mock_glDetachShader); + if (strcmp(name, "glDisable") == 0) + return reinterpret_cast<void*>(Mock_glDisable); + if (strcmp(name, "glDisableVertexAttribArray") == 0) + return reinterpret_cast<void*>(Mock_glDisableVertexAttribArray); + if (strcmp(name, "glDiscardFramebufferEXT") == 0) + return reinterpret_cast<void*>(Mock_glDiscardFramebufferEXT); + if (strcmp(name, "glDrawArrays") == 0) + return reinterpret_cast<void*>(Mock_glDrawArrays); + if (strcmp(name, "glDrawArraysInstanced") == 0) + return reinterpret_cast<void*>(Mock_glDrawArraysInstanced); + if (strcmp(name, "glDrawArraysInstancedANGLE") == 0) + return reinterpret_cast<void*>(Mock_glDrawArraysInstancedANGLE); + if (strcmp(name, "glDrawArraysInstancedARB") == 0) + return reinterpret_cast<void*>(Mock_glDrawArraysInstancedARB); + if (strcmp(name, "glDrawBuffer") == 0) + return reinterpret_cast<void*>(Mock_glDrawBuffer); + if (strcmp(name, "glDrawBuffers") == 0) + return reinterpret_cast<void*>(Mock_glDrawBuffers); + if (strcmp(name, "glDrawBuffersARB") == 0) + return reinterpret_cast<void*>(Mock_glDrawBuffersARB); + if (strcmp(name, "glDrawBuffersEXT") == 0) + return reinterpret_cast<void*>(Mock_glDrawBuffersEXT); + if (strcmp(name, "glDrawElements") == 0) + return reinterpret_cast<void*>(Mock_glDrawElements); + if (strcmp(name, "glDrawElementsInstanced") == 0) + return reinterpret_cast<void*>(Mock_glDrawElementsInstanced); + if (strcmp(name, "glDrawElementsInstancedANGLE") == 0) + return reinterpret_cast<void*>(Mock_glDrawElementsInstancedANGLE); + if (strcmp(name, "glDrawElementsInstancedARB") == 0) + return reinterpret_cast<void*>(Mock_glDrawElementsInstancedARB); + if (strcmp(name, "glDrawRangeElements") == 0) + return reinterpret_cast<void*>(Mock_glDrawRangeElements); + if (strcmp(name, "glEGLImageTargetRenderbufferStorageOES") == 0) + return reinterpret_cast<void*>(Mock_glEGLImageTargetRenderbufferStorageOES); + if (strcmp(name, "glEGLImageTargetTexture2DOES") == 0) + return reinterpret_cast<void*>(Mock_glEGLImageTargetTexture2DOES); + if (strcmp(name, "glEnable") == 0) + return reinterpret_cast<void*>(Mock_glEnable); + if (strcmp(name, "glEnableVertexAttribArray") == 0) + return reinterpret_cast<void*>(Mock_glEnableVertexAttribArray); + if (strcmp(name, "glEndQuery") == 0) + return reinterpret_cast<void*>(Mock_glEndQuery); + if (strcmp(name, "glEndQueryARB") == 0) + return reinterpret_cast<void*>(Mock_glEndQueryARB); + if (strcmp(name, "glEndQueryEXT") == 0) + return reinterpret_cast<void*>(Mock_glEndQueryEXT); + if (strcmp(name, "glEndTransformFeedback") == 0) + return reinterpret_cast<void*>(Mock_glEndTransformFeedback); + if (strcmp(name, "glFenceSync") == 0) + return reinterpret_cast<void*>(Mock_glFenceSync); + if (strcmp(name, "glFinish") == 0) + return reinterpret_cast<void*>(Mock_glFinish); + if (strcmp(name, "glFinishFenceAPPLE") == 0) + return reinterpret_cast<void*>(Mock_glFinishFenceAPPLE); + if (strcmp(name, "glFinishFenceNV") == 0) + return reinterpret_cast<void*>(Mock_glFinishFenceNV); + if (strcmp(name, "glFlush") == 0) + return reinterpret_cast<void*>(Mock_glFlush); + if (strcmp(name, "glFlushMappedBufferRange") == 0) + return reinterpret_cast<void*>(Mock_glFlushMappedBufferRange); + if (strcmp(name, "glFramebufferRenderbuffer") == 0) + return reinterpret_cast<void*>(Mock_glFramebufferRenderbuffer); + if (strcmp(name, "glFramebufferRenderbufferEXT") == 0) + return reinterpret_cast<void*>(Mock_glFramebufferRenderbufferEXT); + if (strcmp(name, "glFramebufferTexture2D") == 0) + return reinterpret_cast<void*>(Mock_glFramebufferTexture2D); + if (strcmp(name, "glFramebufferTexture2DEXT") == 0) + return reinterpret_cast<void*>(Mock_glFramebufferTexture2DEXT); + if (strcmp(name, "glFramebufferTexture2DMultisampleEXT") == 0) + return reinterpret_cast<void*>(Mock_glFramebufferTexture2DMultisampleEXT); + if (strcmp(name, "glFramebufferTexture2DMultisampleIMG") == 0) + return reinterpret_cast<void*>(Mock_glFramebufferTexture2DMultisampleIMG); + if (strcmp(name, "glFramebufferTextureLayer") == 0) + return reinterpret_cast<void*>(Mock_glFramebufferTextureLayer); + if (strcmp(name, "glFrontFace") == 0) + return reinterpret_cast<void*>(Mock_glFrontFace); + if (strcmp(name, "glGenBuffers") == 0) + return reinterpret_cast<void*>(Mock_glGenBuffers); + if (strcmp(name, "glGenBuffersARB") == 0) + return reinterpret_cast<void*>(Mock_glGenBuffersARB); + if (strcmp(name, "glGenFencesAPPLE") == 0) + return reinterpret_cast<void*>(Mock_glGenFencesAPPLE); + if (strcmp(name, "glGenFencesNV") == 0) + return reinterpret_cast<void*>(Mock_glGenFencesNV); + if (strcmp(name, "glGenFramebuffers") == 0) + return reinterpret_cast<void*>(Mock_glGenFramebuffers); + if (strcmp(name, "glGenFramebuffersEXT") == 0) + return reinterpret_cast<void*>(Mock_glGenFramebuffersEXT); + if (strcmp(name, "glGenQueries") == 0) + return reinterpret_cast<void*>(Mock_glGenQueries); + if (strcmp(name, "glGenQueriesARB") == 0) + return reinterpret_cast<void*>(Mock_glGenQueriesARB); + if (strcmp(name, "glGenQueriesEXT") == 0) + return reinterpret_cast<void*>(Mock_glGenQueriesEXT); + if (strcmp(name, "glGenRenderbuffers") == 0) + return reinterpret_cast<void*>(Mock_glGenRenderbuffers); + if (strcmp(name, "glGenRenderbuffersEXT") == 0) + return reinterpret_cast<void*>(Mock_glGenRenderbuffersEXT); + if (strcmp(name, "glGenSamplers") == 0) + return reinterpret_cast<void*>(Mock_glGenSamplers); + if (strcmp(name, "glGenTextures") == 0) + return reinterpret_cast<void*>(Mock_glGenTextures); + if (strcmp(name, "glGenTransformFeedbacks") == 0) + return reinterpret_cast<void*>(Mock_glGenTransformFeedbacks); + if (strcmp(name, "glGenVertexArrays") == 0) + return reinterpret_cast<void*>(Mock_glGenVertexArrays); + if (strcmp(name, "glGenVertexArraysAPPLE") == 0) + return reinterpret_cast<void*>(Mock_glGenVertexArraysAPPLE); + if (strcmp(name, "glGenVertexArraysOES") == 0) + return reinterpret_cast<void*>(Mock_glGenVertexArraysOES); + if (strcmp(name, "glGenerateMipmap") == 0) + return reinterpret_cast<void*>(Mock_glGenerateMipmap); + if (strcmp(name, "glGenerateMipmapEXT") == 0) + return reinterpret_cast<void*>(Mock_glGenerateMipmapEXT); + if (strcmp(name, "glGetActiveAttrib") == 0) + return reinterpret_cast<void*>(Mock_glGetActiveAttrib); + if (strcmp(name, "glGetActiveUniform") == 0) + return reinterpret_cast<void*>(Mock_glGetActiveUniform); + if (strcmp(name, "glGetActiveUniformBlockName") == 0) + return reinterpret_cast<void*>(Mock_glGetActiveUniformBlockName); + if (strcmp(name, "glGetActiveUniformBlockiv") == 0) + return reinterpret_cast<void*>(Mock_glGetActiveUniformBlockiv); + if (strcmp(name, "glGetActiveUniformsiv") == 0) + return reinterpret_cast<void*>(Mock_glGetActiveUniformsiv); + if (strcmp(name, "glGetAttachedShaders") == 0) + return reinterpret_cast<void*>(Mock_glGetAttachedShaders); + if (strcmp(name, "glGetAttribLocation") == 0) + return reinterpret_cast<void*>(Mock_glGetAttribLocation); + if (strcmp(name, "glGetBooleanv") == 0) + return reinterpret_cast<void*>(Mock_glGetBooleanv); + if (strcmp(name, "glGetBufferParameteriv") == 0) + return reinterpret_cast<void*>(Mock_glGetBufferParameteriv); + if (strcmp(name, "glGetError") == 0) + return reinterpret_cast<void*>(Mock_glGetError); + if (strcmp(name, "glGetFenceivNV") == 0) + return reinterpret_cast<void*>(Mock_glGetFenceivNV); + if (strcmp(name, "glGetFloatv") == 0) + return reinterpret_cast<void*>(Mock_glGetFloatv); + if (strcmp(name, "glGetFragDataLocation") == 0) + return reinterpret_cast<void*>(Mock_glGetFragDataLocation); + if (strcmp(name, "glGetFramebufferAttachmentParameteriv") == 0) + return reinterpret_cast<void*>(Mock_glGetFramebufferAttachmentParameteriv); + if (strcmp(name, "glGetFramebufferAttachmentParameterivEXT") == 0) + return reinterpret_cast<void*>( + Mock_glGetFramebufferAttachmentParameterivEXT); + if (strcmp(name, "glGetGraphicsResetStatus") == 0) + return reinterpret_cast<void*>(Mock_glGetGraphicsResetStatus); + if (strcmp(name, "glGetGraphicsResetStatusARB") == 0) + return reinterpret_cast<void*>(Mock_glGetGraphicsResetStatusARB); + if (strcmp(name, "glGetGraphicsResetStatusEXT") == 0) + return reinterpret_cast<void*>(Mock_glGetGraphicsResetStatusEXT); + if (strcmp(name, "glGetGraphicsResetStatusKHR") == 0) + return reinterpret_cast<void*>(Mock_glGetGraphicsResetStatusKHR); + if (strcmp(name, "glGetInteger64i_v") == 0) + return reinterpret_cast<void*>(Mock_glGetInteger64i_v); + if (strcmp(name, "glGetInteger64v") == 0) + return reinterpret_cast<void*>(Mock_glGetInteger64v); + if (strcmp(name, "glGetIntegeri_v") == 0) + return reinterpret_cast<void*>(Mock_glGetIntegeri_v); + if (strcmp(name, "glGetIntegerv") == 0) + return reinterpret_cast<void*>(Mock_glGetIntegerv); + if (strcmp(name, "glGetInternalformativ") == 0) + return reinterpret_cast<void*>(Mock_glGetInternalformativ); + if (strcmp(name, "glGetProgramBinary") == 0) + return reinterpret_cast<void*>(Mock_glGetProgramBinary); + if (strcmp(name, "glGetProgramBinaryOES") == 0) + return reinterpret_cast<void*>(Mock_glGetProgramBinaryOES); + if (strcmp(name, "glGetProgramInfoLog") == 0) + return reinterpret_cast<void*>(Mock_glGetProgramInfoLog); + if (strcmp(name, "glGetProgramiv") == 0) + return reinterpret_cast<void*>(Mock_glGetProgramiv); + if (strcmp(name, "glGetQueryObjecti64v") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryObjecti64v); + if (strcmp(name, "glGetQueryObjectiv") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryObjectiv); + if (strcmp(name, "glGetQueryObjectivARB") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryObjectivARB); + if (strcmp(name, "glGetQueryObjectivEXT") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryObjectivEXT); + if (strcmp(name, "glGetQueryObjectui64v") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryObjectui64v); + if (strcmp(name, "glGetQueryObjectui64vEXT") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryObjectui64vEXT); + if (strcmp(name, "glGetQueryObjectuiv") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryObjectuiv); + if (strcmp(name, "glGetQueryObjectuivARB") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryObjectuivARB); + if (strcmp(name, "glGetQueryObjectuivEXT") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryObjectuivEXT); + if (strcmp(name, "glGetQueryiv") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryiv); + if (strcmp(name, "glGetQueryivARB") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryivARB); + if (strcmp(name, "glGetQueryivEXT") == 0) + return reinterpret_cast<void*>(Mock_glGetQueryivEXT); + if (strcmp(name, "glGetRenderbufferParameteriv") == 0) + return reinterpret_cast<void*>(Mock_glGetRenderbufferParameteriv); + if (strcmp(name, "glGetRenderbufferParameterivEXT") == 0) + return reinterpret_cast<void*>(Mock_glGetRenderbufferParameterivEXT); + if (strcmp(name, "glGetSamplerParameterfv") == 0) + return reinterpret_cast<void*>(Mock_glGetSamplerParameterfv); + if (strcmp(name, "glGetSamplerParameteriv") == 0) + return reinterpret_cast<void*>(Mock_glGetSamplerParameteriv); + if (strcmp(name, "glGetShaderInfoLog") == 0) + return reinterpret_cast<void*>(Mock_glGetShaderInfoLog); + if (strcmp(name, "glGetShaderPrecisionFormat") == 0) + return reinterpret_cast<void*>(Mock_glGetShaderPrecisionFormat); + if (strcmp(name, "glGetShaderSource") == 0) + return reinterpret_cast<void*>(Mock_glGetShaderSource); + if (strcmp(name, "glGetShaderiv") == 0) + return reinterpret_cast<void*>(Mock_glGetShaderiv); + if (strcmp(name, "glGetString") == 0) + return reinterpret_cast<void*>(Mock_glGetString); + if (strcmp(name, "glGetSynciv") == 0) + return reinterpret_cast<void*>(Mock_glGetSynciv); + if (strcmp(name, "glGetTexLevelParameterfv") == 0) + return reinterpret_cast<void*>(Mock_glGetTexLevelParameterfv); + if (strcmp(name, "glGetTexLevelParameteriv") == 0) + return reinterpret_cast<void*>(Mock_glGetTexLevelParameteriv); + if (strcmp(name, "glGetTexParameterfv") == 0) + return reinterpret_cast<void*>(Mock_glGetTexParameterfv); + if (strcmp(name, "glGetTexParameteriv") == 0) + return reinterpret_cast<void*>(Mock_glGetTexParameteriv); + if (strcmp(name, "glGetTransformFeedbackVarying") == 0) + return reinterpret_cast<void*>(Mock_glGetTransformFeedbackVarying); + if (strcmp(name, "glGetTranslatedShaderSourceANGLE") == 0) + return reinterpret_cast<void*>(Mock_glGetTranslatedShaderSourceANGLE); + if (strcmp(name, "glGetUniformBlockIndex") == 0) + return reinterpret_cast<void*>(Mock_glGetUniformBlockIndex); + if (strcmp(name, "glGetUniformIndices") == 0) + return reinterpret_cast<void*>(Mock_glGetUniformIndices); + if (strcmp(name, "glGetUniformLocation") == 0) + return reinterpret_cast<void*>(Mock_glGetUniformLocation); + if (strcmp(name, "glGetUniformfv") == 0) + return reinterpret_cast<void*>(Mock_glGetUniformfv); + if (strcmp(name, "glGetUniformiv") == 0) + return reinterpret_cast<void*>(Mock_glGetUniformiv); + if (strcmp(name, "glGetVertexAttribPointerv") == 0) + return reinterpret_cast<void*>(Mock_glGetVertexAttribPointerv); + if (strcmp(name, "glGetVertexAttribfv") == 0) + return reinterpret_cast<void*>(Mock_glGetVertexAttribfv); + if (strcmp(name, "glGetVertexAttribiv") == 0) + return reinterpret_cast<void*>(Mock_glGetVertexAttribiv); + if (strcmp(name, "glHint") == 0) + return reinterpret_cast<void*>(Mock_glHint); + if (strcmp(name, "glInsertEventMarkerEXT") == 0) + return reinterpret_cast<void*>(Mock_glInsertEventMarkerEXT); + if (strcmp(name, "glInvalidateFramebuffer") == 0) + return reinterpret_cast<void*>(Mock_glInvalidateFramebuffer); + if (strcmp(name, "glInvalidateSubFramebuffer") == 0) + return reinterpret_cast<void*>(Mock_glInvalidateSubFramebuffer); + if (strcmp(name, "glIsBuffer") == 0) + return reinterpret_cast<void*>(Mock_glIsBuffer); + if (strcmp(name, "glIsEnabled") == 0) + return reinterpret_cast<void*>(Mock_glIsEnabled); + if (strcmp(name, "glIsFenceAPPLE") == 0) + return reinterpret_cast<void*>(Mock_glIsFenceAPPLE); + if (strcmp(name, "glIsFenceNV") == 0) + return reinterpret_cast<void*>(Mock_glIsFenceNV); + if (strcmp(name, "glIsFramebuffer") == 0) + return reinterpret_cast<void*>(Mock_glIsFramebuffer); + if (strcmp(name, "glIsFramebufferEXT") == 0) + return reinterpret_cast<void*>(Mock_glIsFramebufferEXT); + if (strcmp(name, "glIsProgram") == 0) + return reinterpret_cast<void*>(Mock_glIsProgram); + if (strcmp(name, "glIsQuery") == 0) + return reinterpret_cast<void*>(Mock_glIsQuery); + if (strcmp(name, "glIsQueryARB") == 0) + return reinterpret_cast<void*>(Mock_glIsQueryARB); + if (strcmp(name, "glIsQueryEXT") == 0) + return reinterpret_cast<void*>(Mock_glIsQueryEXT); + if (strcmp(name, "glIsRenderbuffer") == 0) + return reinterpret_cast<void*>(Mock_glIsRenderbuffer); + if (strcmp(name, "glIsRenderbufferEXT") == 0) + return reinterpret_cast<void*>(Mock_glIsRenderbufferEXT); + if (strcmp(name, "glIsSampler") == 0) + return reinterpret_cast<void*>(Mock_glIsSampler); + if (strcmp(name, "glIsShader") == 0) + return reinterpret_cast<void*>(Mock_glIsShader); + if (strcmp(name, "glIsSync") == 0) + return reinterpret_cast<void*>(Mock_glIsSync); + if (strcmp(name, "glIsTexture") == 0) + return reinterpret_cast<void*>(Mock_glIsTexture); + if (strcmp(name, "glIsTransformFeedback") == 0) + return reinterpret_cast<void*>(Mock_glIsTransformFeedback); + if (strcmp(name, "glIsVertexArray") == 0) + return reinterpret_cast<void*>(Mock_glIsVertexArray); + if (strcmp(name, "glIsVertexArrayAPPLE") == 0) + return reinterpret_cast<void*>(Mock_glIsVertexArrayAPPLE); + if (strcmp(name, "glIsVertexArrayOES") == 0) + return reinterpret_cast<void*>(Mock_glIsVertexArrayOES); + if (strcmp(name, "glLineWidth") == 0) + return reinterpret_cast<void*>(Mock_glLineWidth); + if (strcmp(name, "glLinkProgram") == 0) + return reinterpret_cast<void*>(Mock_glLinkProgram); + if (strcmp(name, "glMapBuffer") == 0) + return reinterpret_cast<void*>(Mock_glMapBuffer); + if (strcmp(name, "glMapBufferOES") == 0) + return reinterpret_cast<void*>(Mock_glMapBufferOES); + if (strcmp(name, "glMapBufferRange") == 0) + return reinterpret_cast<void*>(Mock_glMapBufferRange); + if (strcmp(name, "glMapBufferRangeEXT") == 0) + return reinterpret_cast<void*>(Mock_glMapBufferRangeEXT); + if (strcmp(name, "glMatrixLoadIdentityEXT") == 0) + return reinterpret_cast<void*>(Mock_glMatrixLoadIdentityEXT); + if (strcmp(name, "glMatrixLoadfEXT") == 0) + return reinterpret_cast<void*>(Mock_glMatrixLoadfEXT); + if (strcmp(name, "glPauseTransformFeedback") == 0) + return reinterpret_cast<void*>(Mock_glPauseTransformFeedback); + if (strcmp(name, "glPixelStorei") == 0) + return reinterpret_cast<void*>(Mock_glPixelStorei); + if (strcmp(name, "glPointParameteri") == 0) + return reinterpret_cast<void*>(Mock_glPointParameteri); + if (strcmp(name, "glPolygonOffset") == 0) + return reinterpret_cast<void*>(Mock_glPolygonOffset); + if (strcmp(name, "glPopGroupMarkerEXT") == 0) + return reinterpret_cast<void*>(Mock_glPopGroupMarkerEXT); + if (strcmp(name, "glProgramBinary") == 0) + return reinterpret_cast<void*>(Mock_glProgramBinary); + if (strcmp(name, "glProgramBinaryOES") == 0) + return reinterpret_cast<void*>(Mock_glProgramBinaryOES); + if (strcmp(name, "glProgramParameteri") == 0) + return reinterpret_cast<void*>(Mock_glProgramParameteri); + if (strcmp(name, "glPushGroupMarkerEXT") == 0) + return reinterpret_cast<void*>(Mock_glPushGroupMarkerEXT); + if (strcmp(name, "glQueryCounter") == 0) + return reinterpret_cast<void*>(Mock_glQueryCounter); + if (strcmp(name, "glQueryCounterEXT") == 0) + return reinterpret_cast<void*>(Mock_glQueryCounterEXT); + if (strcmp(name, "glReadBuffer") == 0) + return reinterpret_cast<void*>(Mock_glReadBuffer); + if (strcmp(name, "glReadPixels") == 0) + return reinterpret_cast<void*>(Mock_glReadPixels); + if (strcmp(name, "glReleaseShaderCompiler") == 0) + return reinterpret_cast<void*>(Mock_glReleaseShaderCompiler); + if (strcmp(name, "glRenderbufferStorage") == 0) + return reinterpret_cast<void*>(Mock_glRenderbufferStorage); + if (strcmp(name, "glRenderbufferStorageEXT") == 0) + return reinterpret_cast<void*>(Mock_glRenderbufferStorageEXT); + if (strcmp(name, "glRenderbufferStorageMultisample") == 0) + return reinterpret_cast<void*>(Mock_glRenderbufferStorageMultisample); + if (strcmp(name, "glRenderbufferStorageMultisampleANGLE") == 0) + return reinterpret_cast<void*>(Mock_glRenderbufferStorageMultisampleANGLE); + if (strcmp(name, "glRenderbufferStorageMultisampleEXT") == 0) + return reinterpret_cast<void*>(Mock_glRenderbufferStorageMultisampleEXT); + if (strcmp(name, "glRenderbufferStorageMultisampleIMG") == 0) + return reinterpret_cast<void*>(Mock_glRenderbufferStorageMultisampleIMG); + if (strcmp(name, "glResumeTransformFeedback") == 0) + return reinterpret_cast<void*>(Mock_glResumeTransformFeedback); + if (strcmp(name, "glSampleCoverage") == 0) + return reinterpret_cast<void*>(Mock_glSampleCoverage); + if (strcmp(name, "glSamplerParameterf") == 0) + return reinterpret_cast<void*>(Mock_glSamplerParameterf); + if (strcmp(name, "glSamplerParameterfv") == 0) + return reinterpret_cast<void*>(Mock_glSamplerParameterfv); + if (strcmp(name, "glSamplerParameteri") == 0) + return reinterpret_cast<void*>(Mock_glSamplerParameteri); + if (strcmp(name, "glSamplerParameteriv") == 0) + return reinterpret_cast<void*>(Mock_glSamplerParameteriv); + if (strcmp(name, "glScissor") == 0) + return reinterpret_cast<void*>(Mock_glScissor); + if (strcmp(name, "glSetFenceAPPLE") == 0) + return reinterpret_cast<void*>(Mock_glSetFenceAPPLE); + if (strcmp(name, "glSetFenceNV") == 0) + return reinterpret_cast<void*>(Mock_glSetFenceNV); + if (strcmp(name, "glShaderBinary") == 0) + return reinterpret_cast<void*>(Mock_glShaderBinary); + if (strcmp(name, "glShaderSource") == 0) + return reinterpret_cast<void*>(Mock_glShaderSource); + if (strcmp(name, "glStencilFunc") == 0) + return reinterpret_cast<void*>(Mock_glStencilFunc); + if (strcmp(name, "glStencilFuncSeparate") == 0) + return reinterpret_cast<void*>(Mock_glStencilFuncSeparate); + if (strcmp(name, "glStencilMask") == 0) + return reinterpret_cast<void*>(Mock_glStencilMask); + if (strcmp(name, "glStencilMaskSeparate") == 0) + return reinterpret_cast<void*>(Mock_glStencilMaskSeparate); + if (strcmp(name, "glStencilOp") == 0) + return reinterpret_cast<void*>(Mock_glStencilOp); + if (strcmp(name, "glStencilOpSeparate") == 0) + return reinterpret_cast<void*>(Mock_glStencilOpSeparate); + if (strcmp(name, "glTestFenceAPPLE") == 0) + return reinterpret_cast<void*>(Mock_glTestFenceAPPLE); + if (strcmp(name, "glTestFenceNV") == 0) + return reinterpret_cast<void*>(Mock_glTestFenceNV); + if (strcmp(name, "glTexImage2D") == 0) + return reinterpret_cast<void*>(Mock_glTexImage2D); + if (strcmp(name, "glTexImage3D") == 0) + return reinterpret_cast<void*>(Mock_glTexImage3D); + if (strcmp(name, "glTexParameterf") == 0) + return reinterpret_cast<void*>(Mock_glTexParameterf); + if (strcmp(name, "glTexParameterfv") == 0) + return reinterpret_cast<void*>(Mock_glTexParameterfv); + if (strcmp(name, "glTexParameteri") == 0) + return reinterpret_cast<void*>(Mock_glTexParameteri); + if (strcmp(name, "glTexParameteriv") == 0) + return reinterpret_cast<void*>(Mock_glTexParameteriv); + if (strcmp(name, "glTexStorage2D") == 0) + return reinterpret_cast<void*>(Mock_glTexStorage2D); + if (strcmp(name, "glTexStorage2DEXT") == 0) + return reinterpret_cast<void*>(Mock_glTexStorage2DEXT); + if (strcmp(name, "glTexStorage3D") == 0) + return reinterpret_cast<void*>(Mock_glTexStorage3D); + if (strcmp(name, "glTexSubImage2D") == 0) + return reinterpret_cast<void*>(Mock_glTexSubImage2D); + if (strcmp(name, "glTransformFeedbackVaryings") == 0) + return reinterpret_cast<void*>(Mock_glTransformFeedbackVaryings); + if (strcmp(name, "glUniform1f") == 0) + return reinterpret_cast<void*>(Mock_glUniform1f); + if (strcmp(name, "glUniform1fv") == 0) + return reinterpret_cast<void*>(Mock_glUniform1fv); + if (strcmp(name, "glUniform1i") == 0) + return reinterpret_cast<void*>(Mock_glUniform1i); + if (strcmp(name, "glUniform1iv") == 0) + return reinterpret_cast<void*>(Mock_glUniform1iv); + if (strcmp(name, "glUniform1ui") == 0) + return reinterpret_cast<void*>(Mock_glUniform1ui); + if (strcmp(name, "glUniform1uiv") == 0) + return reinterpret_cast<void*>(Mock_glUniform1uiv); + if (strcmp(name, "glUniform2f") == 0) + return reinterpret_cast<void*>(Mock_glUniform2f); + if (strcmp(name, "glUniform2fv") == 0) + return reinterpret_cast<void*>(Mock_glUniform2fv); + if (strcmp(name, "glUniform2i") == 0) + return reinterpret_cast<void*>(Mock_glUniform2i); + if (strcmp(name, "glUniform2iv") == 0) + return reinterpret_cast<void*>(Mock_glUniform2iv); + if (strcmp(name, "glUniform2ui") == 0) + return reinterpret_cast<void*>(Mock_glUniform2ui); + if (strcmp(name, "glUniform2uiv") == 0) + return reinterpret_cast<void*>(Mock_glUniform2uiv); + if (strcmp(name, "glUniform3f") == 0) + return reinterpret_cast<void*>(Mock_glUniform3f); + if (strcmp(name, "glUniform3fv") == 0) + return reinterpret_cast<void*>(Mock_glUniform3fv); + if (strcmp(name, "glUniform3i") == 0) + return reinterpret_cast<void*>(Mock_glUniform3i); + if (strcmp(name, "glUniform3iv") == 0) + return reinterpret_cast<void*>(Mock_glUniform3iv); + if (strcmp(name, "glUniform3ui") == 0) + return reinterpret_cast<void*>(Mock_glUniform3ui); + if (strcmp(name, "glUniform3uiv") == 0) + return reinterpret_cast<void*>(Mock_glUniform3uiv); + if (strcmp(name, "glUniform4f") == 0) + return reinterpret_cast<void*>(Mock_glUniform4f); + if (strcmp(name, "glUniform4fv") == 0) + return reinterpret_cast<void*>(Mock_glUniform4fv); + if (strcmp(name, "glUniform4i") == 0) + return reinterpret_cast<void*>(Mock_glUniform4i); + if (strcmp(name, "glUniform4iv") == 0) + return reinterpret_cast<void*>(Mock_glUniform4iv); + if (strcmp(name, "glUniform4ui") == 0) + return reinterpret_cast<void*>(Mock_glUniform4ui); + if (strcmp(name, "glUniform4uiv") == 0) + return reinterpret_cast<void*>(Mock_glUniform4uiv); + if (strcmp(name, "glUniformBlockBinding") == 0) + return reinterpret_cast<void*>(Mock_glUniformBlockBinding); + if (strcmp(name, "glUniformMatrix2fv") == 0) + return reinterpret_cast<void*>(Mock_glUniformMatrix2fv); + if (strcmp(name, "glUniformMatrix2x3fv") == 0) + return reinterpret_cast<void*>(Mock_glUniformMatrix2x3fv); + if (strcmp(name, "glUniformMatrix2x4fv") == 0) + return reinterpret_cast<void*>(Mock_glUniformMatrix2x4fv); + if (strcmp(name, "glUniformMatrix3fv") == 0) + return reinterpret_cast<void*>(Mock_glUniformMatrix3fv); + if (strcmp(name, "glUniformMatrix3x2fv") == 0) + return reinterpret_cast<void*>(Mock_glUniformMatrix3x2fv); + if (strcmp(name, "glUniformMatrix3x4fv") == 0) + return reinterpret_cast<void*>(Mock_glUniformMatrix3x4fv); + if (strcmp(name, "glUniformMatrix4fv") == 0) + return reinterpret_cast<void*>(Mock_glUniformMatrix4fv); + if (strcmp(name, "glUniformMatrix4x2fv") == 0) + return reinterpret_cast<void*>(Mock_glUniformMatrix4x2fv); + if (strcmp(name, "glUniformMatrix4x3fv") == 0) + return reinterpret_cast<void*>(Mock_glUniformMatrix4x3fv); + if (strcmp(name, "glUnmapBuffer") == 0) + return reinterpret_cast<void*>(Mock_glUnmapBuffer); + if (strcmp(name, "glUnmapBufferOES") == 0) + return reinterpret_cast<void*>(Mock_glUnmapBufferOES); + if (strcmp(name, "glUseProgram") == 0) + return reinterpret_cast<void*>(Mock_glUseProgram); + if (strcmp(name, "glValidateProgram") == 0) + return reinterpret_cast<void*>(Mock_glValidateProgram); + if (strcmp(name, "glVertexAttrib1f") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttrib1f); + if (strcmp(name, "glVertexAttrib1fv") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttrib1fv); + if (strcmp(name, "glVertexAttrib2f") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttrib2f); + if (strcmp(name, "glVertexAttrib2fv") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttrib2fv); + if (strcmp(name, "glVertexAttrib3f") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttrib3f); + if (strcmp(name, "glVertexAttrib3fv") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttrib3fv); + if (strcmp(name, "glVertexAttrib4f") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttrib4f); + if (strcmp(name, "glVertexAttrib4fv") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttrib4fv); + if (strcmp(name, "glVertexAttribDivisor") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttribDivisor); + if (strcmp(name, "glVertexAttribDivisorANGLE") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttribDivisorANGLE); + if (strcmp(name, "glVertexAttribDivisorARB") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttribDivisorARB); + if (strcmp(name, "glVertexAttribI4i") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttribI4i); + if (strcmp(name, "glVertexAttribI4iv") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttribI4iv); + if (strcmp(name, "glVertexAttribI4ui") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttribI4ui); + if (strcmp(name, "glVertexAttribI4uiv") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttribI4uiv); + if (strcmp(name, "glVertexAttribIPointer") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttribIPointer); + if (strcmp(name, "glVertexAttribPointer") == 0) + return reinterpret_cast<void*>(Mock_glVertexAttribPointer); + if (strcmp(name, "glViewport") == 0) + return reinterpret_cast<void*>(Mock_glViewport); + if (strcmp(name, "glWaitSync") == 0) + return reinterpret_cast<void*>(Mock_glWaitSync); + return reinterpret_cast<void*>(&MockInvalidFunction); +} + +} // namespace gfx
diff --git a/ui/gl/gl_bindings_autogen_mock.h b/ui/gl/gl_bindings_autogen_mock.h new file mode 100644 index 0000000..2ed1095 --- /dev/null +++ b/ui/gl/gl_bindings_autogen_mock.h
@@ -0,0 +1,880 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +static void GL_BINDING_CALL Mock_glActiveTexture(GLenum texture); +static void GL_BINDING_CALL Mock_glAttachShader(GLuint program, GLuint shader); +static void GL_BINDING_CALL Mock_glBeginQuery(GLenum target, GLuint id); +static void GL_BINDING_CALL Mock_glBeginQueryARB(GLenum target, GLuint id); +static void GL_BINDING_CALL Mock_glBeginQueryEXT(GLenum target, GLuint id); +static void GL_BINDING_CALL Mock_glBeginTransformFeedback(GLenum primitiveMode); +static void GL_BINDING_CALL +Mock_glBindAttribLocation(GLuint program, GLuint index, const char* name); +static void GL_BINDING_CALL Mock_glBindBuffer(GLenum target, GLuint buffer); +static void GL_BINDING_CALL +Mock_glBindBufferBase(GLenum target, GLuint index, GLuint buffer); +static void GL_BINDING_CALL Mock_glBindBufferRange(GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size); +static void GL_BINDING_CALL Mock_glBindFragDataLocation(GLuint program, + GLuint colorNumber, + const char* name); +static void GL_BINDING_CALL +Mock_glBindFragDataLocationIndexed(GLuint program, + GLuint colorNumber, + GLuint index, + const char* name); +static void GL_BINDING_CALL +Mock_glBindFramebuffer(GLenum target, GLuint framebuffer); +static void GL_BINDING_CALL +Mock_glBindFramebufferEXT(GLenum target, GLuint framebuffer); +static void GL_BINDING_CALL +Mock_glBindRenderbuffer(GLenum target, GLuint renderbuffer); +static void GL_BINDING_CALL +Mock_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer); +static void GL_BINDING_CALL Mock_glBindSampler(GLuint unit, GLuint sampler); +static void GL_BINDING_CALL Mock_glBindTexture(GLenum target, GLuint texture); +static void GL_BINDING_CALL +Mock_glBindTransformFeedback(GLenum target, GLuint id); +static void GL_BINDING_CALL Mock_glBindVertexArray(GLuint array); +static void GL_BINDING_CALL Mock_glBindVertexArrayAPPLE(GLuint array); +static void GL_BINDING_CALL Mock_glBindVertexArrayOES(GLuint array); +static void GL_BINDING_CALL Mock_glBlendBarrierKHR(void); +static void GL_BINDING_CALL Mock_glBlendBarrierNV(void); +static void GL_BINDING_CALL +Mock_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +static void GL_BINDING_CALL Mock_glBlendEquation(GLenum mode); +static void GL_BINDING_CALL +Mock_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); +static void GL_BINDING_CALL Mock_glBlendFunc(GLenum sfactor, GLenum dfactor); +static void GL_BINDING_CALL Mock_glBlendFuncSeparate(GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha); +static void GL_BINDING_CALL Mock_glBlitFramebuffer(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter); +static void GL_BINDING_CALL Mock_glBlitFramebufferANGLE(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter); +static void GL_BINDING_CALL Mock_glBlitFramebufferEXT(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter); +static void GL_BINDING_CALL Mock_glBufferData(GLenum target, + GLsizeiptr size, + const void* data, + GLenum usage); +static void GL_BINDING_CALL Mock_glBufferSubData(GLenum target, + GLintptr offset, + GLsizeiptr size, + const void* data); +static GLenum GL_BINDING_CALL Mock_glCheckFramebufferStatus(GLenum target); +static GLenum GL_BINDING_CALL Mock_glCheckFramebufferStatusEXT(GLenum target); +static void GL_BINDING_CALL Mock_glClear(GLbitfield mask); +static void GL_BINDING_CALL Mock_glClearBufferfi(GLenum buffer, + GLint drawbuffer, + const GLfloat depth, + GLint stencil); +static void GL_BINDING_CALL +Mock_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value); +static void GL_BINDING_CALL +Mock_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value); +static void GL_BINDING_CALL +Mock_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value); +static void GL_BINDING_CALL +Mock_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +static void GL_BINDING_CALL Mock_glClearDepth(GLclampd depth); +static void GL_BINDING_CALL Mock_glClearDepthf(GLclampf depth); +static void GL_BINDING_CALL Mock_glClearStencil(GLint s); +static GLenum GL_BINDING_CALL +Mock_glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); +static void GL_BINDING_CALL Mock_glColorMask(GLboolean red, + GLboolean green, + GLboolean blue, + GLboolean alpha); +static void GL_BINDING_CALL Mock_glCompileShader(GLuint shader); +static void GL_BINDING_CALL Mock_glCompressedTexImage2D(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data); +static void GL_BINDING_CALL Mock_glCompressedTexImage3D(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data); +static void GL_BINDING_CALL Mock_glCompressedTexSubImage2D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data); +static void GL_BINDING_CALL Mock_glCopyBufferSubData(GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size); +static void GL_BINDING_CALL Mock_glCopyTexImage2D(GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border); +static void GL_BINDING_CALL Mock_glCopyTexSubImage2D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height); +static void GL_BINDING_CALL Mock_glCopyTexSubImage3D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height); +static GLuint GL_BINDING_CALL Mock_glCreateProgram(void); +static GLuint GL_BINDING_CALL Mock_glCreateShader(GLenum type); +static void GL_BINDING_CALL Mock_glCullFace(GLenum mode); +static void GL_BINDING_CALL +Mock_glDeleteBuffers(GLsizei n, const GLuint* buffers); +static void GL_BINDING_CALL +Mock_glDeleteBuffersARB(GLsizei n, const GLuint* buffers); +static void GL_BINDING_CALL +Mock_glDeleteFencesAPPLE(GLsizei n, const GLuint* fences); +static void GL_BINDING_CALL +Mock_glDeleteFencesNV(GLsizei n, const GLuint* fences); +static void GL_BINDING_CALL +Mock_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers); +static void GL_BINDING_CALL +Mock_glDeleteFramebuffersEXT(GLsizei n, const GLuint* framebuffers); +static void GL_BINDING_CALL Mock_glDeleteProgram(GLuint program); +static void GL_BINDING_CALL Mock_glDeleteQueries(GLsizei n, const GLuint* ids); +static void GL_BINDING_CALL +Mock_glDeleteQueriesARB(GLsizei n, const GLuint* ids); +static void GL_BINDING_CALL +Mock_glDeleteQueriesEXT(GLsizei n, const GLuint* ids); +static void GL_BINDING_CALL +Mock_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers); +static void GL_BINDING_CALL +Mock_glDeleteRenderbuffersEXT(GLsizei n, const GLuint* renderbuffers); +static void GL_BINDING_CALL +Mock_glDeleteSamplers(GLsizei n, const GLuint* samplers); +static void GL_BINDING_CALL Mock_glDeleteShader(GLuint shader); +static void GL_BINDING_CALL Mock_glDeleteSync(GLsync sync); +static void GL_BINDING_CALL +Mock_glDeleteTextures(GLsizei n, const GLuint* textures); +static void GL_BINDING_CALL +Mock_glDeleteTransformFeedbacks(GLsizei n, const GLuint* ids); +static void GL_BINDING_CALL +Mock_glDeleteVertexArrays(GLsizei n, const GLuint* arrays); +static void GL_BINDING_CALL +Mock_glDeleteVertexArraysAPPLE(GLsizei n, const GLuint* arrays); +static void GL_BINDING_CALL +Mock_glDeleteVertexArraysOES(GLsizei n, const GLuint* arrays); +static void GL_BINDING_CALL Mock_glDepthFunc(GLenum func); +static void GL_BINDING_CALL Mock_glDepthMask(GLboolean flag); +static void GL_BINDING_CALL Mock_glDepthRange(GLclampd zNear, GLclampd zFar); +static void GL_BINDING_CALL Mock_glDepthRangef(GLclampf zNear, GLclampf zFar); +static void GL_BINDING_CALL Mock_glDetachShader(GLuint program, GLuint shader); +static void GL_BINDING_CALL Mock_glDisable(GLenum cap); +static void GL_BINDING_CALL Mock_glDisableVertexAttribArray(GLuint index); +static void GL_BINDING_CALL +Mock_glDiscardFramebufferEXT(GLenum target, + GLsizei numAttachments, + const GLenum* attachments); +static void GL_BINDING_CALL +Mock_glDrawArrays(GLenum mode, GLint first, GLsizei count); +static void GL_BINDING_CALL Mock_glDrawArraysInstanced(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount); +static void GL_BINDING_CALL Mock_glDrawArraysInstancedANGLE(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount); +static void GL_BINDING_CALL Mock_glDrawArraysInstancedARB(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount); +static void GL_BINDING_CALL Mock_glDrawBuffer(GLenum mode); +static void GL_BINDING_CALL Mock_glDrawBuffers(GLsizei n, const GLenum* bufs); +static void GL_BINDING_CALL +Mock_glDrawBuffersARB(GLsizei n, const GLenum* bufs); +static void GL_BINDING_CALL +Mock_glDrawBuffersEXT(GLsizei n, const GLenum* bufs); +static void GL_BINDING_CALL Mock_glDrawElements(GLenum mode, + GLsizei count, + GLenum type, + const void* indices); +static void GL_BINDING_CALL Mock_glDrawElementsInstanced(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount); +static void GL_BINDING_CALL +Mock_glDrawElementsInstancedANGLE(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount); +static void GL_BINDING_CALL Mock_glDrawElementsInstancedARB(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount); +static void GL_BINDING_CALL Mock_glDrawRangeElements(GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices); +static void GL_BINDING_CALL +Mock_glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image); +static void GL_BINDING_CALL +Mock_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image); +static void GL_BINDING_CALL Mock_glEnable(GLenum cap); +static void GL_BINDING_CALL Mock_glEnableVertexAttribArray(GLuint index); +static void GL_BINDING_CALL Mock_glEndQuery(GLenum target); +static void GL_BINDING_CALL Mock_glEndQueryARB(GLenum target); +static void GL_BINDING_CALL Mock_glEndQueryEXT(GLenum target); +static void GL_BINDING_CALL Mock_glEndTransformFeedback(void); +static GLsync GL_BINDING_CALL +Mock_glFenceSync(GLenum condition, GLbitfield flags); +static void GL_BINDING_CALL Mock_glFinish(void); +static void GL_BINDING_CALL Mock_glFinishFenceAPPLE(GLuint fence); +static void GL_BINDING_CALL Mock_glFinishFenceNV(GLuint fence); +static void GL_BINDING_CALL Mock_glFlush(void); +static void GL_BINDING_CALL Mock_glFlushMappedBufferRange(GLenum target, + GLintptr offset, + GLsizeiptr length); +static void GL_BINDING_CALL +Mock_glFramebufferRenderbuffer(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +static void GL_BINDING_CALL +Mock_glFramebufferRenderbufferEXT(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +static void GL_BINDING_CALL Mock_glFramebufferTexture2D(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level); +static void GL_BINDING_CALL Mock_glFramebufferTexture2DEXT(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level); +static void GL_BINDING_CALL +Mock_glFramebufferTexture2DMultisampleEXT(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples); +static void GL_BINDING_CALL +Mock_glFramebufferTexture2DMultisampleIMG(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples); +static void GL_BINDING_CALL Mock_glFramebufferTextureLayer(GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer); +static void GL_BINDING_CALL Mock_glFrontFace(GLenum mode); +static void GL_BINDING_CALL Mock_glGenBuffers(GLsizei n, GLuint* buffers); +static void GL_BINDING_CALL Mock_glGenBuffersARB(GLsizei n, GLuint* buffers); +static void GL_BINDING_CALL Mock_glGenFencesAPPLE(GLsizei n, GLuint* fences); +static void GL_BINDING_CALL Mock_glGenFencesNV(GLsizei n, GLuint* fences); +static void GL_BINDING_CALL +Mock_glGenFramebuffers(GLsizei n, GLuint* framebuffers); +static void GL_BINDING_CALL +Mock_glGenFramebuffersEXT(GLsizei n, GLuint* framebuffers); +static void GL_BINDING_CALL Mock_glGenQueries(GLsizei n, GLuint* ids); +static void GL_BINDING_CALL Mock_glGenQueriesARB(GLsizei n, GLuint* ids); +static void GL_BINDING_CALL Mock_glGenQueriesEXT(GLsizei n, GLuint* ids); +static void GL_BINDING_CALL +Mock_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers); +static void GL_BINDING_CALL +Mock_glGenRenderbuffersEXT(GLsizei n, GLuint* renderbuffers); +static void GL_BINDING_CALL Mock_glGenSamplers(GLsizei n, GLuint* samplers); +static void GL_BINDING_CALL Mock_glGenTextures(GLsizei n, GLuint* textures); +static void GL_BINDING_CALL +Mock_glGenTransformFeedbacks(GLsizei n, GLuint* ids); +static void GL_BINDING_CALL Mock_glGenVertexArrays(GLsizei n, GLuint* arrays); +static void GL_BINDING_CALL +Mock_glGenVertexArraysAPPLE(GLsizei n, GLuint* arrays); +static void GL_BINDING_CALL +Mock_glGenVertexArraysOES(GLsizei n, GLuint* arrays); +static void GL_BINDING_CALL Mock_glGenerateMipmap(GLenum target); +static void GL_BINDING_CALL Mock_glGenerateMipmapEXT(GLenum target); +static void GL_BINDING_CALL Mock_glGetActiveAttrib(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name); +static void GL_BINDING_CALL Mock_glGetActiveUniform(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name); +static void GL_BINDING_CALL +Mock_glGetActiveUniformBlockName(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + char* uniformBlockName); +static void GL_BINDING_CALL +Mock_glGetActiveUniformBlockiv(GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params); +static void GL_BINDING_CALL +Mock_glGetActiveUniformsiv(GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params); +static void GL_BINDING_CALL Mock_glGetAttachedShaders(GLuint program, + GLsizei maxcount, + GLsizei* count, + GLuint* shaders); +static GLint GL_BINDING_CALL +Mock_glGetAttribLocation(GLuint program, const char* name); +static void GL_BINDING_CALL Mock_glGetBooleanv(GLenum pname, GLboolean* params); +static void GL_BINDING_CALL +Mock_glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params); +static GLenum GL_BINDING_CALL Mock_glGetError(void); +static void GL_BINDING_CALL +Mock_glGetFenceivNV(GLuint fence, GLenum pname, GLint* params); +static void GL_BINDING_CALL Mock_glGetFloatv(GLenum pname, GLfloat* params); +static GLint GL_BINDING_CALL +Mock_glGetFragDataLocation(GLuint program, const char* name); +static void GL_BINDING_CALL +Mock_glGetFramebufferAttachmentParameteriv(GLenum target, + GLenum attachment, + GLenum pname, + GLint* params); +static void GL_BINDING_CALL +Mock_glGetFramebufferAttachmentParameterivEXT(GLenum target, + GLenum attachment, + GLenum pname, + GLint* params); +static GLenum GL_BINDING_CALL Mock_glGetGraphicsResetStatus(void); +static GLenum GL_BINDING_CALL Mock_glGetGraphicsResetStatusARB(void); +static GLenum GL_BINDING_CALL Mock_glGetGraphicsResetStatusEXT(void); +static GLenum GL_BINDING_CALL Mock_glGetGraphicsResetStatusKHR(void); +static void GL_BINDING_CALL +Mock_glGetInteger64i_v(GLenum target, GLuint index, GLint64* data); +static void GL_BINDING_CALL Mock_glGetInteger64v(GLenum pname, GLint64* params); +static void GL_BINDING_CALL +Mock_glGetIntegeri_v(GLenum target, GLuint index, GLint* data); +static void GL_BINDING_CALL Mock_glGetIntegerv(GLenum pname, GLint* params); +static void GL_BINDING_CALL Mock_glGetInternalformativ(GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei bufSize, + GLint* params); +static void GL_BINDING_CALL Mock_glGetProgramBinary(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary); +static void GL_BINDING_CALL Mock_glGetProgramBinaryOES(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary); +static void GL_BINDING_CALL Mock_glGetProgramInfoLog(GLuint program, + GLsizei bufsize, + GLsizei* length, + char* infolog); +static void GL_BINDING_CALL +Mock_glGetProgramiv(GLuint program, GLenum pname, GLint* params); +static void GL_BINDING_CALL +Mock_glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64* params); +static void GL_BINDING_CALL +Mock_glGetQueryObjectiv(GLuint id, GLenum pname, GLint* params); +static void GL_BINDING_CALL +Mock_glGetQueryObjectivARB(GLuint id, GLenum pname, GLint* params); +static void GL_BINDING_CALL +Mock_glGetQueryObjectivEXT(GLuint id, GLenum pname, GLint* params); +static void GL_BINDING_CALL +Mock_glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64* params); +static void GL_BINDING_CALL +Mock_glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64* params); +static void GL_BINDING_CALL +Mock_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params); +static void GL_BINDING_CALL +Mock_glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint* params); +static void GL_BINDING_CALL +Mock_glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params); +static void GL_BINDING_CALL +Mock_glGetQueryiv(GLenum target, GLenum pname, GLint* params); +static void GL_BINDING_CALL +Mock_glGetQueryivARB(GLenum target, GLenum pname, GLint* params); +static void GL_BINDING_CALL +Mock_glGetQueryivEXT(GLenum target, GLenum pname, GLint* params); +static void GL_BINDING_CALL +Mock_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params); +static void GL_BINDING_CALL Mock_glGetRenderbufferParameterivEXT(GLenum target, + GLenum pname, + GLint* params); +static void GL_BINDING_CALL +Mock_glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params); +static void GL_BINDING_CALL +Mock_glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params); +static void GL_BINDING_CALL Mock_glGetShaderInfoLog(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* infolog); +static void GL_BINDING_CALL +Mock_glGetShaderPrecisionFormat(GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision); +static void GL_BINDING_CALL Mock_glGetShaderSource(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source); +static void GL_BINDING_CALL +Mock_glGetShaderiv(GLuint shader, GLenum pname, GLint* params); +static const GLubyte* GL_BINDING_CALL Mock_glGetString(GLenum name); +static void GL_BINDING_CALL Mock_glGetSynciv(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values); +static void GL_BINDING_CALL Mock_glGetTexLevelParameterfv(GLenum target, + GLint level, + GLenum pname, + GLfloat* params); +static void GL_BINDING_CALL Mock_glGetTexLevelParameteriv(GLenum target, + GLint level, + GLenum pname, + GLint* params); +static void GL_BINDING_CALL +Mock_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params); +static void GL_BINDING_CALL +Mock_glGetTexParameteriv(GLenum target, GLenum pname, GLint* params); +static void GL_BINDING_CALL Mock_glGetTransformFeedbackVarying(GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLenum* type, + char* name); +static void GL_BINDING_CALL +Mock_glGetTranslatedShaderSourceANGLE(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source); +static GLuint GL_BINDING_CALL +Mock_glGetUniformBlockIndex(GLuint program, const char* uniformBlockName); +static void GL_BINDING_CALL +Mock_glGetUniformIndices(GLuint program, + GLsizei uniformCount, + const char* const* uniformNames, + GLuint* uniformIndices); +static GLint GL_BINDING_CALL +Mock_glGetUniformLocation(GLuint program, const char* name); +static void GL_BINDING_CALL +Mock_glGetUniformfv(GLuint program, GLint location, GLfloat* params); +static void GL_BINDING_CALL +Mock_glGetUniformiv(GLuint program, GLint location, GLint* params); +static void GL_BINDING_CALL +Mock_glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer); +static void GL_BINDING_CALL +Mock_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params); +static void GL_BINDING_CALL +Mock_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params); +static void GL_BINDING_CALL Mock_glHint(GLenum target, GLenum mode); +static void GL_BINDING_CALL +Mock_glInsertEventMarkerEXT(GLsizei length, const char* marker); +static void GL_BINDING_CALL +Mock_glInvalidateFramebuffer(GLenum target, + GLsizei numAttachments, + const GLenum* attachments); +static void GL_BINDING_CALL +Mock_glInvalidateSubFramebuffer(GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLint width, + GLint height); +static GLboolean GL_BINDING_CALL Mock_glIsBuffer(GLuint buffer); +static GLboolean GL_BINDING_CALL Mock_glIsEnabled(GLenum cap); +static GLboolean GL_BINDING_CALL Mock_glIsFenceAPPLE(GLuint fence); +static GLboolean GL_BINDING_CALL Mock_glIsFenceNV(GLuint fence); +static GLboolean GL_BINDING_CALL Mock_glIsFramebuffer(GLuint framebuffer); +static GLboolean GL_BINDING_CALL Mock_glIsFramebufferEXT(GLuint framebuffer); +static GLboolean GL_BINDING_CALL Mock_glIsProgram(GLuint program); +static GLboolean GL_BINDING_CALL Mock_glIsQuery(GLuint query); +static GLboolean GL_BINDING_CALL Mock_glIsQueryARB(GLuint query); +static GLboolean GL_BINDING_CALL Mock_glIsQueryEXT(GLuint query); +static GLboolean GL_BINDING_CALL Mock_glIsRenderbuffer(GLuint renderbuffer); +static GLboolean GL_BINDING_CALL Mock_glIsRenderbufferEXT(GLuint renderbuffer); +static GLboolean GL_BINDING_CALL Mock_glIsSampler(GLuint sampler); +static GLboolean GL_BINDING_CALL Mock_glIsShader(GLuint shader); +static GLboolean GL_BINDING_CALL Mock_glIsSync(GLsync sync); +static GLboolean GL_BINDING_CALL Mock_glIsTexture(GLuint texture); +static GLboolean GL_BINDING_CALL Mock_glIsTransformFeedback(GLuint id); +static GLboolean GL_BINDING_CALL Mock_glIsVertexArray(GLuint array); +static GLboolean GL_BINDING_CALL Mock_glIsVertexArrayAPPLE(GLuint array); +static GLboolean GL_BINDING_CALL Mock_glIsVertexArrayOES(GLuint array); +static void GL_BINDING_CALL Mock_glLineWidth(GLfloat width); +static void GL_BINDING_CALL Mock_glLinkProgram(GLuint program); +static void* GL_BINDING_CALL Mock_glMapBuffer(GLenum target, GLenum access); +static void* GL_BINDING_CALL Mock_glMapBufferOES(GLenum target, GLenum access); +static void* GL_BINDING_CALL Mock_glMapBufferRange(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access); +static void* GL_BINDING_CALL Mock_glMapBufferRangeEXT(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access); +static void GL_BINDING_CALL Mock_glMatrixLoadIdentityEXT(GLenum matrixMode); +static void GL_BINDING_CALL +Mock_glMatrixLoadfEXT(GLenum matrixMode, const GLfloat* m); +static void GL_BINDING_CALL Mock_glPauseTransformFeedback(void); +static void GL_BINDING_CALL Mock_glPixelStorei(GLenum pname, GLint param); +static void GL_BINDING_CALL Mock_glPointParameteri(GLenum pname, GLint param); +static void GL_BINDING_CALL Mock_glPolygonOffset(GLfloat factor, GLfloat units); +static void GL_BINDING_CALL Mock_glPopGroupMarkerEXT(void); +static void GL_BINDING_CALL Mock_glProgramBinary(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length); +static void GL_BINDING_CALL Mock_glProgramBinaryOES(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length); +static void GL_BINDING_CALL +Mock_glProgramParameteri(GLuint program, GLenum pname, GLint value); +static void GL_BINDING_CALL +Mock_glPushGroupMarkerEXT(GLsizei length, const char* marker); +static void GL_BINDING_CALL Mock_glQueryCounter(GLuint id, GLenum target); +static void GL_BINDING_CALL Mock_glQueryCounterEXT(GLuint id, GLenum target); +static void GL_BINDING_CALL Mock_glReadBuffer(GLenum src); +static void GL_BINDING_CALL Mock_glReadPixels(GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels); +static void GL_BINDING_CALL Mock_glReleaseShaderCompiler(void); +static void GL_BINDING_CALL Mock_glRenderbufferStorage(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height); +static void GL_BINDING_CALL Mock_glRenderbufferStorageEXT(GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height); +static void GL_BINDING_CALL +Mock_glRenderbufferStorageMultisample(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height); +static void GL_BINDING_CALL +Mock_glRenderbufferStorageMultisampleANGLE(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height); +static void GL_BINDING_CALL +Mock_glRenderbufferStorageMultisampleEXT(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height); +static void GL_BINDING_CALL +Mock_glRenderbufferStorageMultisampleIMG(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height); +static void GL_BINDING_CALL Mock_glResumeTransformFeedback(void); +static void GL_BINDING_CALL +Mock_glSampleCoverage(GLclampf value, GLboolean invert); +static void GL_BINDING_CALL +Mock_glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); +static void GL_BINDING_CALL +Mock_glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* params); +static void GL_BINDING_CALL +Mock_glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); +static void GL_BINDING_CALL +Mock_glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint* params); +static void GL_BINDING_CALL +Mock_glScissor(GLint x, GLint y, GLsizei width, GLsizei height); +static void GL_BINDING_CALL Mock_glSetFenceAPPLE(GLuint fence); +static void GL_BINDING_CALL Mock_glSetFenceNV(GLuint fence, GLenum condition); +static void GL_BINDING_CALL Mock_glShaderBinary(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length); +static void GL_BINDING_CALL Mock_glShaderSource(GLuint shader, + GLsizei count, + const char* const* str, + const GLint* length); +static void GL_BINDING_CALL +Mock_glStencilFunc(GLenum func, GLint ref, GLuint mask); +static void GL_BINDING_CALL +Mock_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); +static void GL_BINDING_CALL Mock_glStencilMask(GLuint mask); +static void GL_BINDING_CALL +Mock_glStencilMaskSeparate(GLenum face, GLuint mask); +static void GL_BINDING_CALL +Mock_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); +static void GL_BINDING_CALL +Mock_glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); +static GLboolean GL_BINDING_CALL Mock_glTestFenceAPPLE(GLuint fence); +static GLboolean GL_BINDING_CALL Mock_glTestFenceNV(GLuint fence); +static void GL_BINDING_CALL Mock_glTexImage2D(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels); +static void GL_BINDING_CALL Mock_glTexImage3D(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels); +static void GL_BINDING_CALL +Mock_glTexParameterf(GLenum target, GLenum pname, GLfloat param); +static void GL_BINDING_CALL +Mock_glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params); +static void GL_BINDING_CALL +Mock_glTexParameteri(GLenum target, GLenum pname, GLint param); +static void GL_BINDING_CALL +Mock_glTexParameteriv(GLenum target, GLenum pname, const GLint* params); +static void GL_BINDING_CALL Mock_glTexStorage2D(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height); +static void GL_BINDING_CALL Mock_glTexStorage2DEXT(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height); +static void GL_BINDING_CALL Mock_glTexStorage3D(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth); +static void GL_BINDING_CALL Mock_glTexSubImage2D(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels); +static void GL_BINDING_CALL +Mock_glTransformFeedbackVaryings(GLuint program, + GLsizei count, + const char* const* varyings, + GLenum bufferMode); +static void GL_BINDING_CALL Mock_glUniform1f(GLint location, GLfloat x); +static void GL_BINDING_CALL +Mock_glUniform1fv(GLint location, GLsizei count, const GLfloat* v); +static void GL_BINDING_CALL Mock_glUniform1i(GLint location, GLint x); +static void GL_BINDING_CALL +Mock_glUniform1iv(GLint location, GLsizei count, const GLint* v); +static void GL_BINDING_CALL Mock_glUniform1ui(GLint location, GLuint v0); +static void GL_BINDING_CALL +Mock_glUniform1uiv(GLint location, GLsizei count, const GLuint* v); +static void GL_BINDING_CALL +Mock_glUniform2f(GLint location, GLfloat x, GLfloat y); +static void GL_BINDING_CALL +Mock_glUniform2fv(GLint location, GLsizei count, const GLfloat* v); +static void GL_BINDING_CALL Mock_glUniform2i(GLint location, GLint x, GLint y); +static void GL_BINDING_CALL +Mock_glUniform2iv(GLint location, GLsizei count, const GLint* v); +static void GL_BINDING_CALL +Mock_glUniform2ui(GLint location, GLuint v0, GLuint v1); +static void GL_BINDING_CALL +Mock_glUniform2uiv(GLint location, GLsizei count, const GLuint* v); +static void GL_BINDING_CALL +Mock_glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z); +static void GL_BINDING_CALL +Mock_glUniform3fv(GLint location, GLsizei count, const GLfloat* v); +static void GL_BINDING_CALL +Mock_glUniform3i(GLint location, GLint x, GLint y, GLint z); +static void GL_BINDING_CALL +Mock_glUniform3iv(GLint location, GLsizei count, const GLint* v); +static void GL_BINDING_CALL +Mock_glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); +static void GL_BINDING_CALL +Mock_glUniform3uiv(GLint location, GLsizei count, const GLuint* v); +static void GL_BINDING_CALL +Mock_glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +static void GL_BINDING_CALL +Mock_glUniform4fv(GLint location, GLsizei count, const GLfloat* v); +static void GL_BINDING_CALL +Mock_glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w); +static void GL_BINDING_CALL +Mock_glUniform4iv(GLint location, GLsizei count, const GLint* v); +static void GL_BINDING_CALL +Mock_glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +static void GL_BINDING_CALL +Mock_glUniform4uiv(GLint location, GLsizei count, const GLuint* v); +static void GL_BINDING_CALL +Mock_glUniformBlockBinding(GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding); +static void GL_BINDING_CALL Mock_glUniformMatrix2fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +static void GL_BINDING_CALL Mock_glUniformMatrix2x3fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +static void GL_BINDING_CALL Mock_glUniformMatrix2x4fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +static void GL_BINDING_CALL Mock_glUniformMatrix3fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +static void GL_BINDING_CALL Mock_glUniformMatrix3x2fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +static void GL_BINDING_CALL Mock_glUniformMatrix3x4fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +static void GL_BINDING_CALL Mock_glUniformMatrix4fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +static void GL_BINDING_CALL Mock_glUniformMatrix4x2fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +static void GL_BINDING_CALL Mock_glUniformMatrix4x3fv(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value); +static GLboolean GL_BINDING_CALL Mock_glUnmapBuffer(GLenum target); +static GLboolean GL_BINDING_CALL Mock_glUnmapBufferOES(GLenum target); +static void GL_BINDING_CALL Mock_glUseProgram(GLuint program); +static void GL_BINDING_CALL Mock_glValidateProgram(GLuint program); +static void GL_BINDING_CALL Mock_glVertexAttrib1f(GLuint indx, GLfloat x); +static void GL_BINDING_CALL +Mock_glVertexAttrib1fv(GLuint indx, const GLfloat* values); +static void GL_BINDING_CALL +Mock_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); +static void GL_BINDING_CALL +Mock_glVertexAttrib2fv(GLuint indx, const GLfloat* values); +static void GL_BINDING_CALL +Mock_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); +static void GL_BINDING_CALL +Mock_glVertexAttrib3fv(GLuint indx, const GLfloat* values); +static void GL_BINDING_CALL +Mock_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +static void GL_BINDING_CALL +Mock_glVertexAttrib4fv(GLuint indx, const GLfloat* values); +static void GL_BINDING_CALL +Mock_glVertexAttribDivisor(GLuint index, GLuint divisor); +static void GL_BINDING_CALL +Mock_glVertexAttribDivisorANGLE(GLuint index, GLuint divisor); +static void GL_BINDING_CALL +Mock_glVertexAttribDivisorARB(GLuint index, GLuint divisor); +static void GL_BINDING_CALL +Mock_glVertexAttribI4i(GLuint indx, GLint x, GLint y, GLint z, GLint w); +static void GL_BINDING_CALL +Mock_glVertexAttribI4iv(GLuint indx, const GLint* values); +static void GL_BINDING_CALL +Mock_glVertexAttribI4ui(GLuint indx, GLuint x, GLuint y, GLuint z, GLuint w); +static void GL_BINDING_CALL +Mock_glVertexAttribI4uiv(GLuint indx, const GLuint* values); +static void GL_BINDING_CALL Mock_glVertexAttribIPointer(GLuint indx, + GLint size, + GLenum type, + GLsizei stride, + const void* ptr); +static void GL_BINDING_CALL Mock_glVertexAttribPointer(GLuint indx, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* ptr); +static void GL_BINDING_CALL +Mock_glViewport(GLint x, GLint y, GLsizei width, GLsizei height); +static GLenum GL_BINDING_CALL +Mock_glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
diff --git a/ui/gl/gl_bindings_autogen_osmesa.cc b/ui/gl/gl_bindings_autogen_osmesa.cc new file mode 100644 index 0000000..c0c3ed2 --- /dev/null +++ b/ui/gl/gl_bindings_autogen_osmesa.cc
@@ -0,0 +1,372 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#include <string> + +#include "base/debug/trace_event.h" +#include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_context.h" +#include "ui/gl/gl_enums.h" +#include "ui/gl/gl_implementation.h" +#include "ui/gl/gl_osmesa_api_implementation.h" +#include "ui/gl/gl_version_info.h" + +namespace gfx { + +static bool g_debugBindingsInitialized; +DriverOSMESA g_driver_osmesa; + +void DriverOSMESA::InitializeStaticBindings() { + fn.OSMesaColorClampFn = reinterpret_cast<OSMesaColorClampProc>( + GetGLProcAddress("OSMesaColorClamp")); + fn.OSMesaCreateContextFn = reinterpret_cast<OSMesaCreateContextProc>( + GetGLProcAddress("OSMesaCreateContext")); + fn.OSMesaCreateContextExtFn = reinterpret_cast<OSMesaCreateContextExtProc>( + GetGLProcAddress("OSMesaCreateContextExt")); + fn.OSMesaDestroyContextFn = reinterpret_cast<OSMesaDestroyContextProc>( + GetGLProcAddress("OSMesaDestroyContext")); + fn.OSMesaGetColorBufferFn = reinterpret_cast<OSMesaGetColorBufferProc>( + GetGLProcAddress("OSMesaGetColorBuffer")); + fn.OSMesaGetCurrentContextFn = reinterpret_cast<OSMesaGetCurrentContextProc>( + GetGLProcAddress("OSMesaGetCurrentContext")); + fn.OSMesaGetDepthBufferFn = reinterpret_cast<OSMesaGetDepthBufferProc>( + GetGLProcAddress("OSMesaGetDepthBuffer")); + fn.OSMesaGetIntegervFn = reinterpret_cast<OSMesaGetIntegervProc>( + GetGLProcAddress("OSMesaGetIntegerv")); + fn.OSMesaGetProcAddressFn = reinterpret_cast<OSMesaGetProcAddressProc>( + GetGLProcAddress("OSMesaGetProcAddress")); + fn.OSMesaMakeCurrentFn = reinterpret_cast<OSMesaMakeCurrentProc>( + GetGLProcAddress("OSMesaMakeCurrent")); + fn.OSMesaPixelStoreFn = reinterpret_cast<OSMesaPixelStoreProc>( + GetGLProcAddress("OSMesaPixelStore")); +} + +void DriverOSMESA::InitializeDynamicBindings(GLContext* context) { + DCHECK(context && context->IsCurrent(NULL)); + const GLVersionInfo* ver = context->GetVersionInfo(); + ALLOW_UNUSED_LOCAL(ver); + std::string extensions = context->GetExtensions() + " "; + ALLOW_UNUSED_LOCAL(extensions); + + if (g_debugBindingsInitialized) + InitializeDebugBindings(); +} + +extern "C" { + +static void GL_BINDING_CALL Debug_OSMesaColorClamp(GLboolean enable) { + GL_SERVICE_LOG("OSMesaColorClamp" + << "(" << GLEnums::GetStringBool(enable) << ")"); + g_driver_osmesa.debug_fn.OSMesaColorClampFn(enable); +} + +static OSMesaContext GL_BINDING_CALL +Debug_OSMesaCreateContext(GLenum format, OSMesaContext sharelist) { + GL_SERVICE_LOG("OSMesaCreateContext" + << "(" << GLEnums::GetStringEnum(format) << ", " << sharelist + << ")"); + OSMesaContext result = + g_driver_osmesa.debug_fn.OSMesaCreateContextFn(format, sharelist); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static OSMesaContext GL_BINDING_CALL +Debug_OSMesaCreateContextExt(GLenum format, + GLint depthBits, + GLint stencilBits, + GLint accumBits, + OSMesaContext sharelist) { + GL_SERVICE_LOG("OSMesaCreateContextExt" + << "(" << GLEnums::GetStringEnum(format) << ", " << depthBits + << ", " << stencilBits << ", " << accumBits << ", " + << sharelist << ")"); + OSMesaContext result = g_driver_osmesa.debug_fn.OSMesaCreateContextExtFn( + format, depthBits, stencilBits, accumBits, sharelist); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_OSMesaDestroyContext(OSMesaContext ctx) { + GL_SERVICE_LOG("OSMesaDestroyContext" + << "(" << ctx << ")"); + g_driver_osmesa.debug_fn.OSMesaDestroyContextFn(ctx); +} + +static GLboolean GL_BINDING_CALL Debug_OSMesaGetColorBuffer(OSMesaContext c, + GLint* width, + GLint* height, + GLint* format, + void** buffer) { + GL_SERVICE_LOG("OSMesaGetColorBuffer" + << "(" << c << ", " << static_cast<const void*>(width) << ", " + << static_cast<const void*>(height) << ", " + << static_cast<const void*>(format) << ", " << buffer << ")"); + GLboolean result = g_driver_osmesa.debug_fn.OSMesaGetColorBufferFn( + c, width, height, format, buffer); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static OSMesaContext GL_BINDING_CALL Debug_OSMesaGetCurrentContext(void) { + GL_SERVICE_LOG("OSMesaGetCurrentContext" + << "(" + << ")"); + OSMesaContext result = g_driver_osmesa.debug_fn.OSMesaGetCurrentContextFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL +Debug_OSMesaGetDepthBuffer(OSMesaContext c, + GLint* width, + GLint* height, + GLint* bytesPerValue, + void** buffer) { + GL_SERVICE_LOG("OSMesaGetDepthBuffer" + << "(" << c << ", " << static_cast<const void*>(width) << ", " + << static_cast<const void*>(height) << ", " + << static_cast<const void*>(bytesPerValue) << ", " << buffer + << ")"); + GLboolean result = g_driver_osmesa.debug_fn.OSMesaGetDepthBufferFn( + c, width, height, bytesPerValue, buffer); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_OSMesaGetIntegerv(GLint pname, GLint* value) { + GL_SERVICE_LOG("OSMesaGetIntegerv" + << "(" << pname << ", " << static_cast<const void*>(value) + << ")"); + g_driver_osmesa.debug_fn.OSMesaGetIntegervFn(pname, value); +} + +static OSMESAproc GL_BINDING_CALL +Debug_OSMesaGetProcAddress(const char* funcName) { + GL_SERVICE_LOG("OSMesaGetProcAddress" + << "(" << funcName << ")"); + OSMESAproc result = g_driver_osmesa.debug_fn.OSMesaGetProcAddressFn(funcName); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static GLboolean GL_BINDING_CALL Debug_OSMesaMakeCurrent(OSMesaContext ctx, + void* buffer, + GLenum type, + GLsizei width, + GLsizei height) { + GL_SERVICE_LOG("OSMesaMakeCurrent" + << "(" << ctx << ", " << static_cast<const void*>(buffer) + << ", " << GLEnums::GetStringEnum(type) << ", " << width + << ", " << height << ")"); + GLboolean result = g_driver_osmesa.debug_fn.OSMesaMakeCurrentFn( + ctx, buffer, type, width, height); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static void GL_BINDING_CALL Debug_OSMesaPixelStore(GLint pname, GLint value) { + GL_SERVICE_LOG("OSMesaPixelStore" + << "(" << pname << ", " << value << ")"); + g_driver_osmesa.debug_fn.OSMesaPixelStoreFn(pname, value); +} +} // extern "C" + +void DriverOSMESA::InitializeDebugBindings() { + if (!debug_fn.OSMesaColorClampFn) { + debug_fn.OSMesaColorClampFn = fn.OSMesaColorClampFn; + fn.OSMesaColorClampFn = Debug_OSMesaColorClamp; + } + if (!debug_fn.OSMesaCreateContextFn) { + debug_fn.OSMesaCreateContextFn = fn.OSMesaCreateContextFn; + fn.OSMesaCreateContextFn = Debug_OSMesaCreateContext; + } + if (!debug_fn.OSMesaCreateContextExtFn) { + debug_fn.OSMesaCreateContextExtFn = fn.OSMesaCreateContextExtFn; + fn.OSMesaCreateContextExtFn = Debug_OSMesaCreateContextExt; + } + if (!debug_fn.OSMesaDestroyContextFn) { + debug_fn.OSMesaDestroyContextFn = fn.OSMesaDestroyContextFn; + fn.OSMesaDestroyContextFn = Debug_OSMesaDestroyContext; + } + if (!debug_fn.OSMesaGetColorBufferFn) { + debug_fn.OSMesaGetColorBufferFn = fn.OSMesaGetColorBufferFn; + fn.OSMesaGetColorBufferFn = Debug_OSMesaGetColorBuffer; + } + if (!debug_fn.OSMesaGetCurrentContextFn) { + debug_fn.OSMesaGetCurrentContextFn = fn.OSMesaGetCurrentContextFn; + fn.OSMesaGetCurrentContextFn = Debug_OSMesaGetCurrentContext; + } + if (!debug_fn.OSMesaGetDepthBufferFn) { + debug_fn.OSMesaGetDepthBufferFn = fn.OSMesaGetDepthBufferFn; + fn.OSMesaGetDepthBufferFn = Debug_OSMesaGetDepthBuffer; + } + if (!debug_fn.OSMesaGetIntegervFn) { + debug_fn.OSMesaGetIntegervFn = fn.OSMesaGetIntegervFn; + fn.OSMesaGetIntegervFn = Debug_OSMesaGetIntegerv; + } + if (!debug_fn.OSMesaGetProcAddressFn) { + debug_fn.OSMesaGetProcAddressFn = fn.OSMesaGetProcAddressFn; + fn.OSMesaGetProcAddressFn = Debug_OSMesaGetProcAddress; + } + if (!debug_fn.OSMesaMakeCurrentFn) { + debug_fn.OSMesaMakeCurrentFn = fn.OSMesaMakeCurrentFn; + fn.OSMesaMakeCurrentFn = Debug_OSMesaMakeCurrent; + } + if (!debug_fn.OSMesaPixelStoreFn) { + debug_fn.OSMesaPixelStoreFn = fn.OSMesaPixelStoreFn; + fn.OSMesaPixelStoreFn = Debug_OSMesaPixelStore; + } + g_debugBindingsInitialized = true; +} + +void DriverOSMESA::ClearBindings() { + memset(this, 0, sizeof(*this)); +} + +void OSMESAApiBase::OSMesaColorClampFn(GLboolean enable) { + driver_->fn.OSMesaColorClampFn(enable); +} + +OSMesaContext OSMESAApiBase::OSMesaCreateContextFn(GLenum format, + OSMesaContext sharelist) { + return driver_->fn.OSMesaCreateContextFn(format, sharelist); +} + +OSMesaContext OSMESAApiBase::OSMesaCreateContextExtFn(GLenum format, + GLint depthBits, + GLint stencilBits, + GLint accumBits, + OSMesaContext sharelist) { + return driver_->fn.OSMesaCreateContextExtFn(format, depthBits, stencilBits, + accumBits, sharelist); +} + +void OSMESAApiBase::OSMesaDestroyContextFn(OSMesaContext ctx) { + driver_->fn.OSMesaDestroyContextFn(ctx); +} + +GLboolean OSMESAApiBase::OSMesaGetColorBufferFn(OSMesaContext c, + GLint* width, + GLint* height, + GLint* format, + void** buffer) { + return driver_->fn.OSMesaGetColorBufferFn(c, width, height, format, buffer); +} + +OSMesaContext OSMESAApiBase::OSMesaGetCurrentContextFn(void) { + return driver_->fn.OSMesaGetCurrentContextFn(); +} + +GLboolean OSMESAApiBase::OSMesaGetDepthBufferFn(OSMesaContext c, + GLint* width, + GLint* height, + GLint* bytesPerValue, + void** buffer) { + return driver_->fn.OSMesaGetDepthBufferFn(c, width, height, bytesPerValue, + buffer); +} + +void OSMESAApiBase::OSMesaGetIntegervFn(GLint pname, GLint* value) { + driver_->fn.OSMesaGetIntegervFn(pname, value); +} + +OSMESAproc OSMESAApiBase::OSMesaGetProcAddressFn(const char* funcName) { + return driver_->fn.OSMesaGetProcAddressFn(funcName); +} + +GLboolean OSMESAApiBase::OSMesaMakeCurrentFn(OSMesaContext ctx, + void* buffer, + GLenum type, + GLsizei width, + GLsizei height) { + return driver_->fn.OSMesaMakeCurrentFn(ctx, buffer, type, width, height); +} + +void OSMESAApiBase::OSMesaPixelStoreFn(GLint pname, GLint value) { + driver_->fn.OSMesaPixelStoreFn(pname, value); +} + +void TraceOSMESAApi::OSMesaColorClampFn(GLboolean enable) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaColorClamp") + osmesa_api_->OSMesaColorClampFn(enable); +} + +OSMesaContext TraceOSMESAApi::OSMesaCreateContextFn(GLenum format, + OSMesaContext sharelist) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaCreateContext") + return osmesa_api_->OSMesaCreateContextFn(format, sharelist); +} + +OSMesaContext TraceOSMESAApi::OSMesaCreateContextExtFn( + GLenum format, + GLint depthBits, + GLint stencilBits, + GLint accumBits, + OSMesaContext sharelist) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaCreateContextExt") + return osmesa_api_->OSMesaCreateContextExtFn(format, depthBits, stencilBits, + accumBits, sharelist); +} + +void TraceOSMESAApi::OSMesaDestroyContextFn(OSMesaContext ctx) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaDestroyContext") + osmesa_api_->OSMesaDestroyContextFn(ctx); +} + +GLboolean TraceOSMESAApi::OSMesaGetColorBufferFn(OSMesaContext c, + GLint* width, + GLint* height, + GLint* format, + void** buffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaGetColorBuffer") + return osmesa_api_->OSMesaGetColorBufferFn(c, width, height, format, buffer); +} + +OSMesaContext TraceOSMESAApi::OSMesaGetCurrentContextFn(void) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaGetCurrentContext") + return osmesa_api_->OSMesaGetCurrentContextFn(); +} + +GLboolean TraceOSMESAApi::OSMesaGetDepthBufferFn(OSMesaContext c, + GLint* width, + GLint* height, + GLint* bytesPerValue, + void** buffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaGetDepthBuffer") + return osmesa_api_->OSMesaGetDepthBufferFn(c, width, height, bytesPerValue, + buffer); +} + +void TraceOSMESAApi::OSMesaGetIntegervFn(GLint pname, GLint* value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaGetIntegerv") + osmesa_api_->OSMesaGetIntegervFn(pname, value); +} + +OSMESAproc TraceOSMESAApi::OSMesaGetProcAddressFn(const char* funcName) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaGetProcAddress") + return osmesa_api_->OSMesaGetProcAddressFn(funcName); +} + +GLboolean TraceOSMESAApi::OSMesaMakeCurrentFn(OSMesaContext ctx, + void* buffer, + GLenum type, + GLsizei width, + GLsizei height) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaMakeCurrent") + return osmesa_api_->OSMesaMakeCurrentFn(ctx, buffer, type, width, height); +} + +void TraceOSMESAApi::OSMesaPixelStoreFn(GLint pname, GLint value) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::OSMesaPixelStore") + osmesa_api_->OSMesaPixelStoreFn(pname, value); +} + +} // namespace gfx
diff --git a/ui/gl/gl_bindings_autogen_osmesa.h b/ui/gl/gl_bindings_autogen_osmesa.h new file mode 100644 index 0000000..8a6bb66 --- /dev/null +++ b/ui/gl/gl_bindings_autogen_osmesa.h
@@ -0,0 +1,123 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_OSMESA_H_ +#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_OSMESA_H_ + +namespace gfx { + +class GLContext; + +typedef void(GL_BINDING_CALL* OSMesaColorClampProc)(GLboolean enable); +typedef OSMesaContext(GL_BINDING_CALL* OSMesaCreateContextProc)( + GLenum format, + OSMesaContext sharelist); +typedef OSMesaContext(GL_BINDING_CALL* OSMesaCreateContextExtProc)( + GLenum format, + GLint depthBits, + GLint stencilBits, + GLint accumBits, + OSMesaContext sharelist); +typedef void(GL_BINDING_CALL* OSMesaDestroyContextProc)(OSMesaContext ctx); +typedef GLboolean(GL_BINDING_CALL* OSMesaGetColorBufferProc)(OSMesaContext c, + GLint* width, + GLint* height, + GLint* format, + void** buffer); +typedef OSMesaContext(GL_BINDING_CALL* OSMesaGetCurrentContextProc)(void); +typedef GLboolean(GL_BINDING_CALL* OSMesaGetDepthBufferProc)( + OSMesaContext c, + GLint* width, + GLint* height, + GLint* bytesPerValue, + void** buffer); +typedef void(GL_BINDING_CALL* OSMesaGetIntegervProc)(GLint pname, GLint* value); +typedef OSMESAproc(GL_BINDING_CALL* OSMesaGetProcAddressProc)( + const char* funcName); +typedef GLboolean(GL_BINDING_CALL* OSMesaMakeCurrentProc)(OSMesaContext ctx, + void* buffer, + GLenum type, + GLsizei width, + GLsizei height); +typedef void(GL_BINDING_CALL* OSMesaPixelStoreProc)(GLint pname, GLint value); + +struct ExtensionsOSMESA {}; + +struct ProcsOSMESA { + OSMesaColorClampProc OSMesaColorClampFn; + OSMesaCreateContextProc OSMesaCreateContextFn; + OSMesaCreateContextExtProc OSMesaCreateContextExtFn; + OSMesaDestroyContextProc OSMesaDestroyContextFn; + OSMesaGetColorBufferProc OSMesaGetColorBufferFn; + OSMesaGetCurrentContextProc OSMesaGetCurrentContextFn; + OSMesaGetDepthBufferProc OSMesaGetDepthBufferFn; + OSMesaGetIntegervProc OSMesaGetIntegervFn; + OSMesaGetProcAddressProc OSMesaGetProcAddressFn; + OSMesaMakeCurrentProc OSMesaMakeCurrentFn; + OSMesaPixelStoreProc OSMesaPixelStoreFn; +}; + +class GL_EXPORT OSMESAApi { + public: + OSMESAApi(); + virtual ~OSMESAApi(); + + virtual void OSMesaColorClampFn(GLboolean enable) = 0; + virtual OSMesaContext OSMesaCreateContextFn(GLenum format, + OSMesaContext sharelist) = 0; + virtual OSMesaContext OSMesaCreateContextExtFn(GLenum format, + GLint depthBits, + GLint stencilBits, + GLint accumBits, + OSMesaContext sharelist) = 0; + virtual void OSMesaDestroyContextFn(OSMesaContext ctx) = 0; + virtual GLboolean OSMesaGetColorBufferFn(OSMesaContext c, + GLint* width, + GLint* height, + GLint* format, + void** buffer) = 0; + virtual OSMesaContext OSMesaGetCurrentContextFn(void) = 0; + virtual GLboolean OSMesaGetDepthBufferFn(OSMesaContext c, + GLint* width, + GLint* height, + GLint* bytesPerValue, + void** buffer) = 0; + virtual void OSMesaGetIntegervFn(GLint pname, GLint* value) = 0; + virtual OSMESAproc OSMesaGetProcAddressFn(const char* funcName) = 0; + virtual GLboolean OSMesaMakeCurrentFn(OSMesaContext ctx, + void* buffer, + GLenum type, + GLsizei width, + GLsizei height) = 0; + virtual void OSMesaPixelStoreFn(GLint pname, GLint value) = 0; +}; + +} // namespace gfx + +#define OSMesaColorClamp ::gfx::g_current_osmesa_context->OSMesaColorClampFn +#define OSMesaCreateContext \ + ::gfx::g_current_osmesa_context->OSMesaCreateContextFn +#define OSMesaCreateContextExt \ + ::gfx::g_current_osmesa_context->OSMesaCreateContextExtFn +#define OSMesaDestroyContext \ + ::gfx::g_current_osmesa_context->OSMesaDestroyContextFn +#define OSMesaGetColorBuffer \ + ::gfx::g_current_osmesa_context->OSMesaGetColorBufferFn +#define OSMesaGetCurrentContext \ + ::gfx::g_current_osmesa_context->OSMesaGetCurrentContextFn +#define OSMesaGetDepthBuffer \ + ::gfx::g_current_osmesa_context->OSMesaGetDepthBufferFn +#define OSMesaGetIntegerv ::gfx::g_current_osmesa_context->OSMesaGetIntegervFn +#define OSMesaGetProcAddress \ + ::gfx::g_current_osmesa_context->OSMesaGetProcAddressFn +#define OSMesaMakeCurrent ::gfx::g_current_osmesa_context->OSMesaMakeCurrentFn +#define OSMesaPixelStore ::gfx::g_current_osmesa_context->OSMesaPixelStoreFn + +#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_OSMESA_H_
diff --git a/ui/gl/gl_bindings_autogen_wgl.cc b/ui/gl/gl_bindings_autogen_wgl.cc new file mode 100644 index 0000000..a28aaf6 --- /dev/null +++ b/ui/gl/gl_bindings_autogen_wgl.cc
@@ -0,0 +1,537 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#include <string> + +#include "base/debug/trace_event.h" +#include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_context.h" +#include "ui/gl/gl_enums.h" +#include "ui/gl/gl_implementation.h" +#include "ui/gl/gl_version_info.h" +#include "ui/gl/gl_wgl_api_implementation.h" + +namespace gfx { + +static bool g_debugBindingsInitialized; +DriverWGL g_driver_wgl; + +void DriverWGL::InitializeStaticBindings() { + fn.wglChoosePixelFormatARBFn = reinterpret_cast<wglChoosePixelFormatARBProc>( + GetGLProcAddress("wglChoosePixelFormatARB")); + fn.wglCopyContextFn = + reinterpret_cast<wglCopyContextProc>(GetGLProcAddress("wglCopyContext")); + fn.wglCreateContextFn = reinterpret_cast<wglCreateContextProc>( + GetGLProcAddress("wglCreateContext")); + fn.wglCreateLayerContextFn = reinterpret_cast<wglCreateLayerContextProc>( + GetGLProcAddress("wglCreateLayerContext")); + fn.wglCreatePbufferARBFn = reinterpret_cast<wglCreatePbufferARBProc>( + GetGLProcAddress("wglCreatePbufferARB")); + fn.wglDeleteContextFn = reinterpret_cast<wglDeleteContextProc>( + GetGLProcAddress("wglDeleteContext")); + fn.wglDestroyPbufferARBFn = reinterpret_cast<wglDestroyPbufferARBProc>( + GetGLProcAddress("wglDestroyPbufferARB")); + fn.wglGetCurrentContextFn = reinterpret_cast<wglGetCurrentContextProc>( + GetGLProcAddress("wglGetCurrentContext")); + fn.wglGetCurrentDCFn = reinterpret_cast<wglGetCurrentDCProc>( + GetGLProcAddress("wglGetCurrentDC")); + fn.wglGetExtensionsStringARBFn = + reinterpret_cast<wglGetExtensionsStringARBProc>( + GetGLProcAddress("wglGetExtensionsStringARB")); + fn.wglGetExtensionsStringEXTFn = + reinterpret_cast<wglGetExtensionsStringEXTProc>( + GetGLProcAddress("wglGetExtensionsStringEXT")); + fn.wglGetPbufferDCARBFn = reinterpret_cast<wglGetPbufferDCARBProc>( + GetGLProcAddress("wglGetPbufferDCARB")); + fn.wglMakeCurrentFn = + reinterpret_cast<wglMakeCurrentProc>(GetGLProcAddress("wglMakeCurrent")); + fn.wglQueryPbufferARBFn = reinterpret_cast<wglQueryPbufferARBProc>( + GetGLProcAddress("wglQueryPbufferARB")); + fn.wglReleasePbufferDCARBFn = reinterpret_cast<wglReleasePbufferDCARBProc>( + GetGLProcAddress("wglReleasePbufferDCARB")); + fn.wglShareListsFn = + reinterpret_cast<wglShareListsProc>(GetGLProcAddress("wglShareLists")); + fn.wglSwapIntervalEXTFn = reinterpret_cast<wglSwapIntervalEXTProc>( + GetGLProcAddress("wglSwapIntervalEXT")); + fn.wglSwapLayerBuffersFn = reinterpret_cast<wglSwapLayerBuffersProc>( + GetGLProcAddress("wglSwapLayerBuffers")); +} + +void DriverWGL::InitializeDynamicBindings(GLContext* context) { + DCHECK(context && context->IsCurrent(NULL)); + const GLVersionInfo* ver = context->GetVersionInfo(); + ALLOW_UNUSED_LOCAL(ver); + std::string extensions = context->GetExtensions() + " "; + ALLOW_UNUSED_LOCAL(extensions); + + ext.b_WGL_ARB_extensions_string = + extensions.find("WGL_ARB_extensions_string ") != std::string::npos; + ext.b_WGL_ARB_pbuffer = + extensions.find("WGL_ARB_pbuffer ") != std::string::npos; + ext.b_WGL_ARB_pixel_format = + extensions.find("WGL_ARB_pixel_format ") != std::string::npos; + ext.b_WGL_EXT_extensions_string = + extensions.find("WGL_EXT_extensions_string ") != std::string::npos; + ext.b_WGL_EXT_swap_control = + extensions.find("WGL_EXT_swap_control ") != std::string::npos; + + if (g_debugBindingsInitialized) + InitializeDebugBindings(); +} + +extern "C" { + +static BOOL GL_BINDING_CALL +Debug_wglChoosePixelFormatARB(HDC dc, + const int* int_attrib_list, + const float* float_attrib_list, + UINT max_formats, + int* formats, + UINT* num_formats) { + GL_SERVICE_LOG("wglChoosePixelFormatARB" + << "(" << dc << ", " + << static_cast<const void*>(int_attrib_list) << ", " + << static_cast<const void*>(float_attrib_list) << ", " + << max_formats << ", " << static_cast<const void*>(formats) + << ", " << static_cast<const void*>(num_formats) << ")"); + BOOL result = g_driver_wgl.debug_fn.wglChoosePixelFormatARBFn( + dc, int_attrib_list, float_attrib_list, max_formats, formats, + num_formats); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static BOOL GL_BINDING_CALL +Debug_wglCopyContext(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask) { + GL_SERVICE_LOG("wglCopyContext" + << "(" << hglrcSrc << ", " << hglrcDst << ", " << mask << ")"); + BOOL result = + g_driver_wgl.debug_fn.wglCopyContextFn(hglrcSrc, hglrcDst, mask); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static HGLRC GL_BINDING_CALL Debug_wglCreateContext(HDC hdc) { + GL_SERVICE_LOG("wglCreateContext" + << "(" << hdc << ")"); + HGLRC result = g_driver_wgl.debug_fn.wglCreateContextFn(hdc); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static HGLRC GL_BINDING_CALL +Debug_wglCreateLayerContext(HDC hdc, int iLayerPlane) { + GL_SERVICE_LOG("wglCreateLayerContext" + << "(" << hdc << ", " << iLayerPlane << ")"); + HGLRC result = + g_driver_wgl.debug_fn.wglCreateLayerContextFn(hdc, iLayerPlane); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static HPBUFFERARB GL_BINDING_CALL +Debug_wglCreatePbufferARB(HDC hDC, + int iPixelFormat, + int iWidth, + int iHeight, + const int* piAttribList) { + GL_SERVICE_LOG("wglCreatePbufferARB" + << "(" << hDC << ", " << iPixelFormat << ", " << iWidth << ", " + << iHeight << ", " << static_cast<const void*>(piAttribList) + << ")"); + HPBUFFERARB result = g_driver_wgl.debug_fn.wglCreatePbufferARBFn( + hDC, iPixelFormat, iWidth, iHeight, piAttribList); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static BOOL GL_BINDING_CALL Debug_wglDeleteContext(HGLRC hglrc) { + GL_SERVICE_LOG("wglDeleteContext" + << "(" << hglrc << ")"); + BOOL result = g_driver_wgl.debug_fn.wglDeleteContextFn(hglrc); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static BOOL GL_BINDING_CALL Debug_wglDestroyPbufferARB(HPBUFFERARB hPbuffer) { + GL_SERVICE_LOG("wglDestroyPbufferARB" + << "(" << hPbuffer << ")"); + BOOL result = g_driver_wgl.debug_fn.wglDestroyPbufferARBFn(hPbuffer); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static HGLRC GL_BINDING_CALL Debug_wglGetCurrentContext() { + GL_SERVICE_LOG("wglGetCurrentContext" + << "(" + << ")"); + HGLRC result = g_driver_wgl.debug_fn.wglGetCurrentContextFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static HDC GL_BINDING_CALL Debug_wglGetCurrentDC() { + GL_SERVICE_LOG("wglGetCurrentDC" + << "(" + << ")"); + HDC result = g_driver_wgl.debug_fn.wglGetCurrentDCFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static const char* GL_BINDING_CALL Debug_wglGetExtensionsStringARB(HDC hDC) { + GL_SERVICE_LOG("wglGetExtensionsStringARB" + << "(" << hDC << ")"); + const char* result = g_driver_wgl.debug_fn.wglGetExtensionsStringARBFn(hDC); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static const char* GL_BINDING_CALL Debug_wglGetExtensionsStringEXT() { + GL_SERVICE_LOG("wglGetExtensionsStringEXT" + << "(" + << ")"); + const char* result = g_driver_wgl.debug_fn.wglGetExtensionsStringEXTFn(); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static HDC GL_BINDING_CALL Debug_wglGetPbufferDCARB(HPBUFFERARB hPbuffer) { + GL_SERVICE_LOG("wglGetPbufferDCARB" + << "(" << hPbuffer << ")"); + HDC result = g_driver_wgl.debug_fn.wglGetPbufferDCARBFn(hPbuffer); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static BOOL GL_BINDING_CALL Debug_wglMakeCurrent(HDC hdc, HGLRC hglrc) { + GL_SERVICE_LOG("wglMakeCurrent" + << "(" << hdc << ", " << hglrc << ")"); + BOOL result = g_driver_wgl.debug_fn.wglMakeCurrentFn(hdc, hglrc); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static BOOL GL_BINDING_CALL +Debug_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAttribute, int* piValue) { + GL_SERVICE_LOG("wglQueryPbufferARB" + << "(" << hPbuffer << ", " << iAttribute << ", " + << static_cast<const void*>(piValue) << ")"); + BOOL result = + g_driver_wgl.debug_fn.wglQueryPbufferARBFn(hPbuffer, iAttribute, piValue); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static int GL_BINDING_CALL +Debug_wglReleasePbufferDCARB(HPBUFFERARB hPbuffer, HDC hDC) { + GL_SERVICE_LOG("wglReleasePbufferDCARB" + << "(" << hPbuffer << ", " << hDC << ")"); + int result = g_driver_wgl.debug_fn.wglReleasePbufferDCARBFn(hPbuffer, hDC); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static BOOL GL_BINDING_CALL Debug_wglShareLists(HGLRC hglrc1, HGLRC hglrc2) { + GL_SERVICE_LOG("wglShareLists" + << "(" << hglrc1 << ", " << hglrc2 << ")"); + BOOL result = g_driver_wgl.debug_fn.wglShareListsFn(hglrc1, hglrc2); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static BOOL GL_BINDING_CALL Debug_wglSwapIntervalEXT(int interval) { + GL_SERVICE_LOG("wglSwapIntervalEXT" + << "(" << interval << ")"); + BOOL result = g_driver_wgl.debug_fn.wglSwapIntervalEXTFn(interval); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} + +static BOOL GL_BINDING_CALL Debug_wglSwapLayerBuffers(HDC hdc, UINT fuPlanes) { + GL_SERVICE_LOG("wglSwapLayerBuffers" + << "(" << hdc << ", " << fuPlanes << ")"); + BOOL result = g_driver_wgl.debug_fn.wglSwapLayerBuffersFn(hdc, fuPlanes); + GL_SERVICE_LOG("GL_RESULT: " << result); + return result; +} +} // extern "C" + +void DriverWGL::InitializeDebugBindings() { + if (!debug_fn.wglChoosePixelFormatARBFn) { + debug_fn.wglChoosePixelFormatARBFn = fn.wglChoosePixelFormatARBFn; + fn.wglChoosePixelFormatARBFn = Debug_wglChoosePixelFormatARB; + } + if (!debug_fn.wglCopyContextFn) { + debug_fn.wglCopyContextFn = fn.wglCopyContextFn; + fn.wglCopyContextFn = Debug_wglCopyContext; + } + if (!debug_fn.wglCreateContextFn) { + debug_fn.wglCreateContextFn = fn.wglCreateContextFn; + fn.wglCreateContextFn = Debug_wglCreateContext; + } + if (!debug_fn.wglCreateLayerContextFn) { + debug_fn.wglCreateLayerContextFn = fn.wglCreateLayerContextFn; + fn.wglCreateLayerContextFn = Debug_wglCreateLayerContext; + } + if (!debug_fn.wglCreatePbufferARBFn) { + debug_fn.wglCreatePbufferARBFn = fn.wglCreatePbufferARBFn; + fn.wglCreatePbufferARBFn = Debug_wglCreatePbufferARB; + } + if (!debug_fn.wglDeleteContextFn) { + debug_fn.wglDeleteContextFn = fn.wglDeleteContextFn; + fn.wglDeleteContextFn = Debug_wglDeleteContext; + } + if (!debug_fn.wglDestroyPbufferARBFn) { + debug_fn.wglDestroyPbufferARBFn = fn.wglDestroyPbufferARBFn; + fn.wglDestroyPbufferARBFn = Debug_wglDestroyPbufferARB; + } + if (!debug_fn.wglGetCurrentContextFn) { + debug_fn.wglGetCurrentContextFn = fn.wglGetCurrentContextFn; + fn.wglGetCurrentContextFn = Debug_wglGetCurrentContext; + } + if (!debug_fn.wglGetCurrentDCFn) { + debug_fn.wglGetCurrentDCFn = fn.wglGetCurrentDCFn; + fn.wglGetCurrentDCFn = Debug_wglGetCurrentDC; + } + if (!debug_fn.wglGetExtensionsStringARBFn) { + debug_fn.wglGetExtensionsStringARBFn = fn.wglGetExtensionsStringARBFn; + fn.wglGetExtensionsStringARBFn = Debug_wglGetExtensionsStringARB; + } + if (!debug_fn.wglGetExtensionsStringEXTFn) { + debug_fn.wglGetExtensionsStringEXTFn = fn.wglGetExtensionsStringEXTFn; + fn.wglGetExtensionsStringEXTFn = Debug_wglGetExtensionsStringEXT; + } + if (!debug_fn.wglGetPbufferDCARBFn) { + debug_fn.wglGetPbufferDCARBFn = fn.wglGetPbufferDCARBFn; + fn.wglGetPbufferDCARBFn = Debug_wglGetPbufferDCARB; + } + if (!debug_fn.wglMakeCurrentFn) { + debug_fn.wglMakeCurrentFn = fn.wglMakeCurrentFn; + fn.wglMakeCurrentFn = Debug_wglMakeCurrent; + } + if (!debug_fn.wglQueryPbufferARBFn) { + debug_fn.wglQueryPbufferARBFn = fn.wglQueryPbufferARBFn; + fn.wglQueryPbufferARBFn = Debug_wglQueryPbufferARB; + } + if (!debug_fn.wglReleasePbufferDCARBFn) { + debug_fn.wglReleasePbufferDCARBFn = fn.wglReleasePbufferDCARBFn; + fn.wglReleasePbufferDCARBFn = Debug_wglReleasePbufferDCARB; + } + if (!debug_fn.wglShareListsFn) { + debug_fn.wglShareListsFn = fn.wglShareListsFn; + fn.wglShareListsFn = Debug_wglShareLists; + } + if (!debug_fn.wglSwapIntervalEXTFn) { + debug_fn.wglSwapIntervalEXTFn = fn.wglSwapIntervalEXTFn; + fn.wglSwapIntervalEXTFn = Debug_wglSwapIntervalEXT; + } + if (!debug_fn.wglSwapLayerBuffersFn) { + debug_fn.wglSwapLayerBuffersFn = fn.wglSwapLayerBuffersFn; + fn.wglSwapLayerBuffersFn = Debug_wglSwapLayerBuffers; + } + g_debugBindingsInitialized = true; +} + +void DriverWGL::ClearBindings() { + memset(this, 0, sizeof(*this)); +} + +BOOL WGLApiBase::wglChoosePixelFormatARBFn(HDC dc, + const int* int_attrib_list, + const float* float_attrib_list, + UINT max_formats, + int* formats, + UINT* num_formats) { + return driver_->fn.wglChoosePixelFormatARBFn(dc, int_attrib_list, + float_attrib_list, max_formats, + formats, num_formats); +} + +BOOL WGLApiBase::wglCopyContextFn(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask) { + return driver_->fn.wglCopyContextFn(hglrcSrc, hglrcDst, mask); +} + +HGLRC WGLApiBase::wglCreateContextFn(HDC hdc) { + return driver_->fn.wglCreateContextFn(hdc); +} + +HGLRC WGLApiBase::wglCreateLayerContextFn(HDC hdc, int iLayerPlane) { + return driver_->fn.wglCreateLayerContextFn(hdc, iLayerPlane); +} + +HPBUFFERARB WGLApiBase::wglCreatePbufferARBFn(HDC hDC, + int iPixelFormat, + int iWidth, + int iHeight, + const int* piAttribList) { + return driver_->fn.wglCreatePbufferARBFn(hDC, iPixelFormat, iWidth, iHeight, + piAttribList); +} + +BOOL WGLApiBase::wglDeleteContextFn(HGLRC hglrc) { + return driver_->fn.wglDeleteContextFn(hglrc); +} + +BOOL WGLApiBase::wglDestroyPbufferARBFn(HPBUFFERARB hPbuffer) { + return driver_->fn.wglDestroyPbufferARBFn(hPbuffer); +} + +HGLRC WGLApiBase::wglGetCurrentContextFn() { + return driver_->fn.wglGetCurrentContextFn(); +} + +HDC WGLApiBase::wglGetCurrentDCFn() { + return driver_->fn.wglGetCurrentDCFn(); +} + +const char* WGLApiBase::wglGetExtensionsStringARBFn(HDC hDC) { + return driver_->fn.wglGetExtensionsStringARBFn(hDC); +} + +const char* WGLApiBase::wglGetExtensionsStringEXTFn() { + return driver_->fn.wglGetExtensionsStringEXTFn(); +} + +HDC WGLApiBase::wglGetPbufferDCARBFn(HPBUFFERARB hPbuffer) { + return driver_->fn.wglGetPbufferDCARBFn(hPbuffer); +} + +BOOL WGLApiBase::wglMakeCurrentFn(HDC hdc, HGLRC hglrc) { + return driver_->fn.wglMakeCurrentFn(hdc, hglrc); +} + +BOOL WGLApiBase::wglQueryPbufferARBFn(HPBUFFERARB hPbuffer, + int iAttribute, + int* piValue) { + return driver_->fn.wglQueryPbufferARBFn(hPbuffer, iAttribute, piValue); +} + +int WGLApiBase::wglReleasePbufferDCARBFn(HPBUFFERARB hPbuffer, HDC hDC) { + return driver_->fn.wglReleasePbufferDCARBFn(hPbuffer, hDC); +} + +BOOL WGLApiBase::wglShareListsFn(HGLRC hglrc1, HGLRC hglrc2) { + return driver_->fn.wglShareListsFn(hglrc1, hglrc2); +} + +BOOL WGLApiBase::wglSwapIntervalEXTFn(int interval) { + return driver_->fn.wglSwapIntervalEXTFn(interval); +} + +BOOL WGLApiBase::wglSwapLayerBuffersFn(HDC hdc, UINT fuPlanes) { + return driver_->fn.wglSwapLayerBuffersFn(hdc, fuPlanes); +} + +BOOL TraceWGLApi::wglChoosePixelFormatARBFn(HDC dc, + const int* int_attrib_list, + const float* float_attrib_list, + UINT max_formats, + int* formats, + UINT* num_formats) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglChoosePixelFormatARB") + return wgl_api_->wglChoosePixelFormatARBFn(dc, int_attrib_list, + float_attrib_list, max_formats, + formats, num_formats); +} + +BOOL TraceWGLApi::wglCopyContextFn(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglCopyContext") + return wgl_api_->wglCopyContextFn(hglrcSrc, hglrcDst, mask); +} + +HGLRC TraceWGLApi::wglCreateContextFn(HDC hdc) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglCreateContext") + return wgl_api_->wglCreateContextFn(hdc); +} + +HGLRC TraceWGLApi::wglCreateLayerContextFn(HDC hdc, int iLayerPlane) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglCreateLayerContext") + return wgl_api_->wglCreateLayerContextFn(hdc, iLayerPlane); +} + +HPBUFFERARB TraceWGLApi::wglCreatePbufferARBFn(HDC hDC, + int iPixelFormat, + int iWidth, + int iHeight, + const int* piAttribList) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglCreatePbufferARB") + return wgl_api_->wglCreatePbufferARBFn(hDC, iPixelFormat, iWidth, iHeight, + piAttribList); +} + +BOOL TraceWGLApi::wglDeleteContextFn(HGLRC hglrc) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglDeleteContext") + return wgl_api_->wglDeleteContextFn(hglrc); +} + +BOOL TraceWGLApi::wglDestroyPbufferARBFn(HPBUFFERARB hPbuffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglDestroyPbufferARB") + return wgl_api_->wglDestroyPbufferARBFn(hPbuffer); +} + +HGLRC TraceWGLApi::wglGetCurrentContextFn() { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglGetCurrentContext") + return wgl_api_->wglGetCurrentContextFn(); +} + +HDC TraceWGLApi::wglGetCurrentDCFn() { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglGetCurrentDC") + return wgl_api_->wglGetCurrentDCFn(); +} + +const char* TraceWGLApi::wglGetExtensionsStringARBFn(HDC hDC) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglGetExtensionsStringARB") + return wgl_api_->wglGetExtensionsStringARBFn(hDC); +} + +const char* TraceWGLApi::wglGetExtensionsStringEXTFn() { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglGetExtensionsStringEXT") + return wgl_api_->wglGetExtensionsStringEXTFn(); +} + +HDC TraceWGLApi::wglGetPbufferDCARBFn(HPBUFFERARB hPbuffer) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglGetPbufferDCARB") + return wgl_api_->wglGetPbufferDCARBFn(hPbuffer); +} + +BOOL TraceWGLApi::wglMakeCurrentFn(HDC hdc, HGLRC hglrc) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglMakeCurrent") + return wgl_api_->wglMakeCurrentFn(hdc, hglrc); +} + +BOOL TraceWGLApi::wglQueryPbufferARBFn(HPBUFFERARB hPbuffer, + int iAttribute, + int* piValue) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglQueryPbufferARB") + return wgl_api_->wglQueryPbufferARBFn(hPbuffer, iAttribute, piValue); +} + +int TraceWGLApi::wglReleasePbufferDCARBFn(HPBUFFERARB hPbuffer, HDC hDC) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglReleasePbufferDCARB") + return wgl_api_->wglReleasePbufferDCARBFn(hPbuffer, hDC); +} + +BOOL TraceWGLApi::wglShareListsFn(HGLRC hglrc1, HGLRC hglrc2) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglShareLists") + return wgl_api_->wglShareListsFn(hglrc1, hglrc2); +} + +BOOL TraceWGLApi::wglSwapIntervalEXTFn(int interval) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglSwapIntervalEXT") + return wgl_api_->wglSwapIntervalEXTFn(interval); +} + +BOOL TraceWGLApi::wglSwapLayerBuffersFn(HDC hdc, UINT fuPlanes) { + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::wglSwapLayerBuffers") + return wgl_api_->wglSwapLayerBuffersFn(hdc, fuPlanes); +} + +} // namespace gfx
diff --git a/ui/gl/gl_bindings_autogen_wgl.h b/ui/gl/gl_bindings_autogen_wgl.h new file mode 100644 index 0000000..b7a2040 --- /dev/null +++ b/ui/gl/gl_bindings_autogen_wgl.h
@@ -0,0 +1,147 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_WGL_H_ +#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_WGL_H_ + +namespace gfx { + +class GLContext; + +typedef BOOL(GL_BINDING_CALL* wglChoosePixelFormatARBProc)( + HDC dc, + const int* int_attrib_list, + const float* float_attrib_list, + UINT max_formats, + int* formats, + UINT* num_formats); +typedef BOOL(GL_BINDING_CALL* wglCopyContextProc)(HGLRC hglrcSrc, + HGLRC hglrcDst, + UINT mask); +typedef HGLRC(GL_BINDING_CALL* wglCreateContextProc)(HDC hdc); +typedef HGLRC(GL_BINDING_CALL* wglCreateLayerContextProc)(HDC hdc, + int iLayerPlane); +typedef HPBUFFERARB(GL_BINDING_CALL* wglCreatePbufferARBProc)( + HDC hDC, + int iPixelFormat, + int iWidth, + int iHeight, + const int* piAttribList); +typedef BOOL(GL_BINDING_CALL* wglDeleteContextProc)(HGLRC hglrc); +typedef BOOL(GL_BINDING_CALL* wglDestroyPbufferARBProc)(HPBUFFERARB hPbuffer); +typedef HGLRC(GL_BINDING_CALL* wglGetCurrentContextProc)(); +typedef HDC(GL_BINDING_CALL* wglGetCurrentDCProc)(); +typedef const char*(GL_BINDING_CALL* wglGetExtensionsStringARBProc)(HDC hDC); +typedef const char*(GL_BINDING_CALL* wglGetExtensionsStringEXTProc)(); +typedef HDC(GL_BINDING_CALL* wglGetPbufferDCARBProc)(HPBUFFERARB hPbuffer); +typedef BOOL(GL_BINDING_CALL* wglMakeCurrentProc)(HDC hdc, HGLRC hglrc); +typedef BOOL(GL_BINDING_CALL* wglQueryPbufferARBProc)(HPBUFFERARB hPbuffer, + int iAttribute, + int* piValue); +typedef int(GL_BINDING_CALL* wglReleasePbufferDCARBProc)(HPBUFFERARB hPbuffer, + HDC hDC); +typedef BOOL(GL_BINDING_CALL* wglShareListsProc)(HGLRC hglrc1, HGLRC hglrc2); +typedef BOOL(GL_BINDING_CALL* wglSwapIntervalEXTProc)(int interval); +typedef BOOL(GL_BINDING_CALL* wglSwapLayerBuffersProc)(HDC hdc, UINT fuPlanes); + +struct ExtensionsWGL { + bool b_WGL_ARB_extensions_string; + bool b_WGL_ARB_pbuffer; + bool b_WGL_ARB_pixel_format; + bool b_WGL_EXT_extensions_string; + bool b_WGL_EXT_swap_control; +}; + +struct ProcsWGL { + wglChoosePixelFormatARBProc wglChoosePixelFormatARBFn; + wglCopyContextProc wglCopyContextFn; + wglCreateContextProc wglCreateContextFn; + wglCreateLayerContextProc wglCreateLayerContextFn; + wglCreatePbufferARBProc wglCreatePbufferARBFn; + wglDeleteContextProc wglDeleteContextFn; + wglDestroyPbufferARBProc wglDestroyPbufferARBFn; + wglGetCurrentContextProc wglGetCurrentContextFn; + wglGetCurrentDCProc wglGetCurrentDCFn; + wglGetExtensionsStringARBProc wglGetExtensionsStringARBFn; + wglGetExtensionsStringEXTProc wglGetExtensionsStringEXTFn; + wglGetPbufferDCARBProc wglGetPbufferDCARBFn; + wglMakeCurrentProc wglMakeCurrentFn; + wglQueryPbufferARBProc wglQueryPbufferARBFn; + wglReleasePbufferDCARBProc wglReleasePbufferDCARBFn; + wglShareListsProc wglShareListsFn; + wglSwapIntervalEXTProc wglSwapIntervalEXTFn; + wglSwapLayerBuffersProc wglSwapLayerBuffersFn; +}; + +class GL_EXPORT WGLApi { + public: + WGLApi(); + virtual ~WGLApi(); + + virtual BOOL wglChoosePixelFormatARBFn(HDC dc, + const int* int_attrib_list, + const float* float_attrib_list, + UINT max_formats, + int* formats, + UINT* num_formats) = 0; + virtual BOOL wglCopyContextFn(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask) = 0; + virtual HGLRC wglCreateContextFn(HDC hdc) = 0; + virtual HGLRC wglCreateLayerContextFn(HDC hdc, int iLayerPlane) = 0; + virtual HPBUFFERARB wglCreatePbufferARBFn(HDC hDC, + int iPixelFormat, + int iWidth, + int iHeight, + const int* piAttribList) = 0; + virtual BOOL wglDeleteContextFn(HGLRC hglrc) = 0; + virtual BOOL wglDestroyPbufferARBFn(HPBUFFERARB hPbuffer) = 0; + virtual HGLRC wglGetCurrentContextFn() = 0; + virtual HDC wglGetCurrentDCFn() = 0; + virtual const char* wglGetExtensionsStringARBFn(HDC hDC) = 0; + virtual const char* wglGetExtensionsStringEXTFn() = 0; + virtual HDC wglGetPbufferDCARBFn(HPBUFFERARB hPbuffer) = 0; + virtual BOOL wglMakeCurrentFn(HDC hdc, HGLRC hglrc) = 0; + virtual BOOL wglQueryPbufferARBFn(HPBUFFERARB hPbuffer, + int iAttribute, + int* piValue) = 0; + virtual int wglReleasePbufferDCARBFn(HPBUFFERARB hPbuffer, HDC hDC) = 0; + virtual BOOL wglShareListsFn(HGLRC hglrc1, HGLRC hglrc2) = 0; + virtual BOOL wglSwapIntervalEXTFn(int interval) = 0; + virtual BOOL wglSwapLayerBuffersFn(HDC hdc, UINT fuPlanes) = 0; +}; + +} // namespace gfx + +#define wglChoosePixelFormatARB \ + ::gfx::g_current_wgl_context->wglChoosePixelFormatARBFn +#define wglCopyContext ::gfx::g_current_wgl_context->wglCopyContextFn +#define wglCreateContext ::gfx::g_current_wgl_context->wglCreateContextFn +#define wglCreateLayerContext \ + ::gfx::g_current_wgl_context->wglCreateLayerContextFn +#define wglCreatePbufferARB ::gfx::g_current_wgl_context->wglCreatePbufferARBFn +#define wglDeleteContext ::gfx::g_current_wgl_context->wglDeleteContextFn +#define wglDestroyPbufferARB \ + ::gfx::g_current_wgl_context->wglDestroyPbufferARBFn +#define wglGetCurrentContext \ + ::gfx::g_current_wgl_context->wglGetCurrentContextFn +#define wglGetCurrentDC ::gfx::g_current_wgl_context->wglGetCurrentDCFn +#define wglGetExtensionsStringARB \ + ::gfx::g_current_wgl_context->wglGetExtensionsStringARBFn +#define wglGetExtensionsStringEXT \ + ::gfx::g_current_wgl_context->wglGetExtensionsStringEXTFn +#define wglGetPbufferDCARB ::gfx::g_current_wgl_context->wglGetPbufferDCARBFn +#define wglMakeCurrent ::gfx::g_current_wgl_context->wglMakeCurrentFn +#define wglQueryPbufferARB ::gfx::g_current_wgl_context->wglQueryPbufferARBFn +#define wglReleasePbufferDCARB \ + ::gfx::g_current_wgl_context->wglReleasePbufferDCARBFn +#define wglShareLists ::gfx::g_current_wgl_context->wglShareListsFn +#define wglSwapIntervalEXT ::gfx::g_current_wgl_context->wglSwapIntervalEXTFn +#define wglSwapLayerBuffers ::gfx::g_current_wgl_context->wglSwapLayerBuffersFn + +#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_WGL_H_
diff --git a/ui/gl/gl_context_ozone.cc b/ui/gl/gl_context_ozone.cc new file mode 100644 index 0000000..776e114 --- /dev/null +++ b/ui/gl/gl_context_ozone.cc
@@ -0,0 +1,47 @@ +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/gl/gl_context.h" + +#include "base/logging.h" +#include "base/memory/ref_counted.h" +#include "base/sys_info.h" +#include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_context_egl.h" +#include "ui/gl/gl_context_osmesa.h" +#include "ui/gl/gl_context_stub.h" +#include "ui/gl/gl_implementation.h" +#include "ui/gl/gl_surface.h" + +namespace gfx { + +// static +scoped_refptr<GLContext> GLContext::CreateGLContext( + GLShareGroup* share_group, + GLSurface* compatible_surface, + GpuPreference gpu_preference) { + + switch (GetGLImplementation()) { + case kGLImplementationMockGL: + return scoped_refptr<GLContext>(new GLContextStub()); + case kGLImplementationOSMesaGL: { + scoped_refptr<GLContext> context(new GLContextOSMesa(share_group)); + if (!context->Initialize(compatible_surface, gpu_preference)) + return NULL; + return context; + } + case kGLImplementationEGLGLES2: { + scoped_refptr<GLContext> context(new GLContextEGL(share_group)); + if (!context->Initialize(compatible_surface, gpu_preference)) + return NULL; + return context; + } + default: + NOTREACHED(); + return NULL; + } +} + +} // namespace gfx +
diff --git a/ui/gl/gl_enums.cc b/ui/gl/gl_enums.cc new file mode 100644 index 0000000..d43681e --- /dev/null +++ b/ui/gl/gl_enums.cc
@@ -0,0 +1,40 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <sstream> +#include <GLES2/gl2.h> + +#include "ui/gl/gl_enums.h" + +namespace gfx { + +std::string GLEnums::GetStringEnum(uint32 value) { + const EnumToString* entry = enum_to_string_table_; + const EnumToString* end = entry + enum_to_string_table_len_; + for (;entry < end; ++entry) { + if (value == entry->value) { + return entry->name; + } + } + std::stringstream ss; + ss.fill('0'); + ss.width(value < 0x10000 ? 4 : 8); + ss << std::hex << value; + return "0x" + ss.str(); +} + +std::string GLEnums::GetStringError(uint32 value) { + if (value == GL_NONE) + return "GL_NONE"; + return GetStringEnum(value); +} + +std::string GLEnums::GetStringBool(uint32 value) { + return value ? "GL_TRUE" : "GL_FALSE"; +} + +#include "ui/gl/gl_enums_implementation_autogen.h" + +} // namespace gfx +
diff --git a/ui/gl/gl_enums.h b/ui/gl/gl_enums.h new file mode 100644 index 0000000..30dee6c --- /dev/null +++ b/ui/gl/gl_enums.h
@@ -0,0 +1,34 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_GL_GL_ENUMS_H_ +#define UI_GL_GL_ENUMS_H_ + +#include <string> + +#include "base/basictypes.h" +#include "ui/gl/gl_export.h" + +namespace gfx { + +class GL_EXPORT GLEnums { + public: + struct EnumToString { + uint32_t value; + const char* name; + }; + + static std::string GetStringEnum(uint32_t value); + static std::string GetStringBool(uint32_t value); + static std::string GetStringError(uint32_t value); + + private: + static const EnumToString* const enum_to_string_table_; + static const size_t enum_to_string_table_len_; +}; + +} // namespace gfx + +#endif // UI_GL_GL_ENUMS_H_ +
diff --git a/ui/gl/gl_enums_implementation_autogen.h b/ui/gl/gl_enums_implementation_autogen.h new file mode 100644 index 0000000..5872db9 --- /dev/null +++ b/ui/gl/gl_enums_implementation_autogen.h
@@ -0,0 +1,4445 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +static const GLEnums::EnumToString enum_to_string_table[] = { + { + 0x8D77, + "GL_RGB16UI", + }, + { + 0x8D76, + "GL_RGBA16UI", + }, + { + 0x9260, + "GL_GCCSO_SHADER_BINARY_FJ", + }, + { + 0x9009, + "GL_TEXTURE_CUBE_MAP_ARRAY_EXT", + }, + { + 0x8D71, + "GL_RGB32UI", + }, + { + 0x8D70, + "GL_RGBA32UI", + }, + { + 0x8C76, + "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH", + }, + { + 0x8825, + "GL_DRAW_BUFFER0_EXT", + }, + { + 0x8D94, + "GL_RED_INTEGER", + }, + { + 0x0BC1, + "GL_ALPHA_TEST_FUNC_QCOM", + }, + { + 0x884C, + "GL_TEXTURE_COMPARE_MODE_EXT", + }, + { + 0x0BC2, + "GL_ALPHA_TEST_REF_QCOM", + }, + { + 0x78EF, + "GL_PIXEL_UNPACK_TRANSFER_BUFFER_BINDING_CHROMIUM", + }, + { + 0x884D, + "GL_TEXTURE_COMPARE_FUNC_EXT", + }, + { + 0x884E, + "GL_COMPARE_REF_TO_TEXTURE_EXT", + }, + { + 0x8E76, + "GL_TESS_GEN_MODE_EXT", + }, + { + 0x8E77, + "GL_TESS_GEN_SPACING_EXT", + }, + { + 0x000D, + "GL_TRIANGLE_STRIP_ADJACENCY_EXT", + }, + { + 0x000E, + "GL_PATCHES_EXT", + }, + { + 0x000B, + "GL_LINE_STRIP_ADJACENCY_EXT", + }, + { + 0x000C, + "GL_TRIANGLES_ADJACENCY_EXT", + }, + { + 0x000A, + "GL_LINES_ADJACENCY_EXT", + }, + { + 0x92CF, + "GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT", + }, + { + 0x93A1, + "GL_BGRA8_EXT", + }, + { + 0x813C, + "GL_TEXTURE_BASE_LEVEL", + }, + { + 0, + "GL_FALSE", + }, + { + 0x00400000, + "GL_STENCIL_BUFFER_BIT6_QCOM", + }, + { + 0x9500, + "GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL", + }, + { + 0x78F2, + "GL_SCANOUT_CHROMIUM", + }, + { + 0x9138, + "GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG", + }, + { + 0x8FC4, + "GL_SHADER_BINARY_VIV", + }, + { + 0x9130, + "GL_SGX_PROGRAM_BINARY_IMG", + }, + { + 0x9133, + "GL_RENDERBUFFER_SAMPLES_IMG", + }, + { + 0x82E0, + "GL_BUFFER_KHR", + }, + { + 0x9135, + "GL_MAX_SAMPLES_IMG", + }, + { + 0x9134, + "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG", + }, + { + 0x9137, + "GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG", + }, + { + 0x9136, + "GL_TEXTURE_SAMPLES_IMG", + }, + { + 0x8D88, + "GL_RGBA16I", + }, + { + 0x8D89, + "GL_RGB16I", + }, + { + 0x00000020, + "GL_COLOR_BUFFER_BIT5_QCOM", + }, + { + 0x0008, + "GL_MAP_INVALIDATE_BUFFER_BIT_EXT", + }, + { + 0x0BC0, + "GL_ALPHA_TEST_QCOM", + }, + { + 0x0006, + "GL_TRIANGLE_FAN", + }, + { + 0x0007, + "GL_QUADS_EXT", + }, + { + 0x0004, + "GL_TRIANGLES", + }, + { + 0x0005, + "GL_TRIANGLE_STRIP", + }, + { + 0x0002, + "GL_LINE_LOOP", + }, + { + 0x0003, + "GL_LINE_STRIP", + }, + { + 0x0000, + "GL_POINTS", + }, + { + 0x0001, + "GL_LINES", + }, + { + 0x8D7D, + "GL_RGB8UI", + }, + { + 0x93F0, + "GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG", + }, + { + 0x93F1, + "GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG", + }, + { + 0x0D04, + "GL_PACK_SKIP_PIXELS", + }, + { + 0x900E, + "GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT", + }, + { + 0x900D, + "GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT", + }, + { + 0x8C7F, + "GL_TRANSFORM_FEEDBACK_BUFFER_MODE", + }, + { + 0x900F, + "GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT", + }, + { + 0x900A, + "GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT", + }, + { + 0x900C, + "GL_SAMPLER_CUBE_MAP_ARRAY_EXT", + }, + { + 0x88B8, + "GL_READ_ONLY", + }, + { + 0x88B9, + "GL_WRITE_ONLY_OES", + }, + { + 0x8211, + "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT", + }, + { + 0x8210, + "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT", + }, + { + 0x8741, + "GL_PROGRAM_BINARY_LENGTH_OES", + }, + { + 0x8740, + "GL_Z400_BINARY_AMD", + }, + { + 0x8215, + "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE", + }, + { + 0x8C4D, + "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV", + }, + { + 0x8192, + "GL_GENERATE_MIPMAP_HINT", + }, + { + 0x8E79, + "GL_TESS_GEN_POINT_MODE_EXT", + }, + { + 0x8A54, + "GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT", + }, + { + 0x8A55, + "GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT", + }, + { + 0x8A56, + "GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT", + }, + { + 0x8A57, + "GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT", + }, + { + 0x8A51, + "GL_RGB_RAW_422_APPLE", + }, + { + 0x87F9, + "GL_3DC_X_AMD", + }, + { + 0x8A53, + "GL_SYNC_OBJECT_APPLE", + }, + { + 0x8DF8, + "GL_SHADER_BINARY_FORMATS", + }, + { + 0x8DF9, + "GL_NUM_SHADER_BINARY_FORMATS", + }, + { + 0x826D, + "GL_DEBUG_GROUP_STACK_DEPTH_KHR", + }, + { + 0x8E75, + "GL_TESS_CONTROL_OUTPUT_VERTICES_EXT", + }, + { + 0x826B, + "GL_DEBUG_SEVERITY_NOTIFICATION_KHR", + }, + { + 0x826C, + "GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR", + }, + { + 0x8B59, + "GL_BOOL_VEC4", + }, + { + 0x826A, + "GL_DEBUG_TYPE_POP_GROUP_KHR", + }, + { + 0x8B57, + "GL_BOOL_VEC2", + }, + { + 0x8DF1, + "GL_MEDIUM_FLOAT", + }, + { + 0x8B55, + "GL_INT_VEC4", + }, + { + 0x8B54, + "GL_INT_VEC3", + }, + { + 0x8DF4, + "GL_MEDIUM_INT", + }, + { + 0x8DF5, + "GL_HIGH_INT", + }, + { + 0x8B51, + "GL_FLOAT_VEC3", + }, + { + 0x8B50, + "GL_FLOAT_VEC2", + }, + { + 0x806D, + "GL_UNPACK_SKIP_IMAGES", + }, + { + 0x806E, + "GL_UNPACK_IMAGE_HEIGHT", + }, + { + 0x806F, + "GL_TEXTURE_3D_OES", + }, + { + 0x92E7, + "GL_IS_PER_PATCH_EXT", + }, + { + 0x92E0, + "GL_DEBUG_OUTPUT_KHR", + }, + { + 0x806A, + "GL_TEXTURE_BINDING_3D_OES", + }, + { + 0x8D8E, + "GL_RGBA8I", + }, + { + 0x8CE3, + "GL_COLOR_ATTACHMENT3_EXT", + }, + { + 0x9274, + "GL_COMPRESSED_RGB8_ETC2", + }, + { + 0x1904, + "GL_GREEN_NV", + }, + { + 0x928D, + "GL_DST_OUT_NV", + }, + { + 0x8069, + "GL_TEXTURE_BINDING_2D", + }, + { + 0x8A2E, + "GL_MAX_COMBINED_UNIFORM_BLOCKS", + }, + { + 0x8F96, + "GL_RGB8_SNORM", + }, + { + 0x8F95, + "GL_RG8_SNORM", + }, + { + 0x8260, + "GL_UNDEFINED_VERTEX_EXT", + }, + { + 0x8261, + "GL_NO_RESET_NOTIFICATION_KHR", + }, + { + 0x0D02, + "GL_PACK_ROW_LENGTH", + }, + { + 0x8DFA, + "GL_SHADER_COMPILER", + }, + { + 0x8DFB, + "GL_MAX_VERTEX_UNIFORM_VECTORS", + }, + { + 0x8DFC, + "GL_MAX_VARYING_VECTORS", + }, + { + 0x8B5C, + "GL_FLOAT_MAT4", + }, + { + 0x8B5B, + "GL_FLOAT_MAT3", + }, + { + 0x8268, + "GL_DEBUG_TYPE_MARKER_KHR", + }, + { + 0x8269, + "GL_DEBUG_TYPE_PUSH_GROUP_KHR", + }, + { + 0x8A43, + "GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES", + }, + { + 0x1905, + "GL_BLUE_NV", + }, + { + 0x87FF, + "GL_PROGRAM_BINARY_FORMATS_OES", + }, + { + 0x87FE, + "GL_NUM_PROGRAM_BINARY_FORMATS_OES", + }, + { + 0x8A41, + "GL_UNIFORM_BLOCK_NAME_LENGTH", + }, + { + 0x2600, + "GL_NEAREST", + }, + { + 0x2601, + "GL_LINEAR", + }, + { + 0x8C03, + "GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG", + }, + { + 0x821B, + "GL_MAJOR_VERSION", + }, + { + 0x821A, + "GL_DEPTH_STENCIL_ATTACHMENT", + }, + { + 0x8A40, + "GL_UNIFORM_BLOCK_DATA_SIZE", + }, + { + 0x9242, + "GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM", + }, + { + 0x821D, + "GL_NUM_EXTENSIONS", + }, + { + 0x88BB, + "GL_BUFFER_ACCESS_OES", + }, + { + 0x88BC, + "GL_BUFFER_MAPPED_OES", + }, + { + 0x88BD, + "GL_BUFFER_MAP_POINTER_OES", + }, + { + 0x88BF, + "GL_TIME_ELAPSED_EXT", + }, + { + 0x8A46, + "GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER", + }, + { + 0x6003, + "GL_GET_ERROR_QUERY_CHROMIUM", + }, + { + 0x8F94, + "GL_R8_SNORM", + }, + { + 0x0C10, + "GL_SCISSOR_BOX", + }, + { + 0x0C11, + "GL_SCISSOR_TEST", + }, + { + 0x1700, + "GL_PATH_MODELVIEW_CHROMIUM", + }, + { + 0x80000000, + "GL_MULTISAMPLE_BUFFER_BIT7_QCOM", + }, + { + 0x94F8, + "GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL", + }, + { + 0x8A48, + "GL_TEXTURE_SRGB_DECODE_EXT", + }, + { + 0x300E, + "GL_CONTEXT_LOST", + }, + { + 0x02000000, + "GL_MULTISAMPLE_BUFFER_BIT1_QCOM", + }, + { + 0x8C2F, + "GL_ANY_SAMPLES_PASSED_EXT", + }, + { + 0x8BD2, + "GL_TEXTURE_WIDTH_QCOM", + }, + { + 0x8C2D, + "GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT", + }, + { + 0x8C2C, + "GL_TEXTURE_BINDING_BUFFER_EXT", + }, + { + 0x8C2B, + "GL_MAX_TEXTURE_BUFFER_SIZE_EXT", + }, + { + 0x8C2A, + "GL_TEXTURE_BUFFER_EXT", + }, + { + 0x8BD7, + "GL_TEXTURE_TYPE_QCOM", + }, + { + 0x8B8D, + "GL_CURRENT_PROGRAM", + }, + { + 0x8BD9, + "GL_TEXTURE_NUM_LEVELS_QCOM", + }, + { + 0x00200000, + "GL_STENCIL_BUFFER_BIT5_QCOM", + }, + { + 0x8D9F, + "GL_INT_2_10_10_10_REV", + }, + { + 0x8B8A, + "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH", + }, + { + 0x8B8B, + "GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES", + }, + { + 0x8B8C, + "GL_SHADING_LANGUAGE_VERSION", + }, + { + 0x8BDA, + "GL_TEXTURE_TARGET_QCOM", + }, + { + 0x8BDB, + "GL_TEXTURE_OBJECT_VALID_QCOM", + }, + { + 0x8BDC, + "GL_STATE_RESTORE", + }, + { + 0x8B88, + "GL_SHADER_SOURCE_LENGTH", + }, + { + 0x8B89, + "GL_ACTIVE_ATTRIBUTES", + }, + { + 0x93C9, + "GL_COMPRESSED_RGBA_ASTC_6x6x6_OES", + }, + { + 0x93C8, + "GL_COMPRESSED_RGBA_ASTC_6x6x5_OES", + }, + { + 0x8B84, + "GL_INFO_LOG_LENGTH", + }, + { + 0x8B85, + "GL_ATTACHED_SHADERS", + }, + { + 0x8B86, + "GL_ACTIVE_UNIFORMS", + }, + { + 0x8B87, + "GL_ACTIVE_UNIFORM_MAX_LENGTH", + }, + { + 0x8B80, + "GL_DELETE_STATUS", + }, + { + 0x8B81, + "GL_COMPILE_STATUS", + }, + { + 0x8B82, + "GL_LINK_STATUS", + }, + { + 0x8B83, + "GL_VALIDATE_STATUS", + }, + { + 0x9380, + "GL_NUM_SAMPLE_COUNTS", + }, + { + 0x8D48, + "GL_STENCIL_INDEX8", + }, + { + 0x8D46, + "GL_STENCIL_INDEX1_OES", + }, + { + 0x8D47, + "GL_STENCIL_INDEX4_OES", + }, + { + 0x8D44, + "GL_RENDERBUFFER_INTERNAL_FORMAT", + }, + { + 0x00000100, + "GL_DEPTH_BUFFER_BIT", + }, + { + 0x8D42, + "GL_RENDERBUFFER_WIDTH", + }, + { + 0x8D43, + "GL_RENDERBUFFER_HEIGHT", + }, + { + 0x8D40, + "GL_FRAMEBUFFER", + }, + { + 0x8D41, + "GL_RENDERBUFFER", + }, + { + 0x8A3A, + "GL_UNIFORM_BLOCK_INDEX", + }, + { + 0x0BD0, + "GL_DITHER", + }, + { + 0x93D3, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR", + }, + { + 0x9144, + "GL_MAX_DEBUG_LOGGED_MESSAGES_KHR", + }, + { + 0x1801, + "GL_DEPTH_EXT", + }, + { + 0x1800, + "GL_COLOR_EXT", + }, + { + 0x1802, + "GL_STENCIL_EXT", + }, + { + 0x9288, + "GL_SRC_OVER_NV", + }, + { + 0x9120, + "GL_BUFFER_MAP_LENGTH", + }, + { + 0x0B21, + "GL_LINE_WIDTH", + }, + { + 0x9308, + "GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT", + }, + { + 0x81A5, + "GL_DEPTH_COMPONENT16", + }, + { + 0x81A6, + "GL_DEPTH_COMPONENT24_OES", + }, + { + 0x81A7, + "GL_DEPTH_COMPONENT32_OES", + }, + { + 0x88FD, + "GL_VERTEX_ATTRIB_ARRAY_INTEGER", + }, + { + 0x88FE, + "GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE", + }, + { + 0x88FF, + "GL_MAX_ARRAY_TEXTURE_LAYERS", + }, + { + 0x8B6A, + "GL_FLOAT_MAT4x3_NV", + }, + { + 0x93D0, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR", + }, + { + 0x9143, + "GL_MAX_DEBUG_MESSAGE_LENGTH_KHR", + }, + { + 0x8DFD, + "GL_MAX_FRAGMENT_UNIFORM_VECTORS", + }, + { + 0x9145, + "GL_DEBUG_LOGGED_MESSAGES_KHR", + }, + { + 0x9146, + "GL_DEBUG_SEVERITY_HIGH_KHR", + }, + { + 0x9147, + "GL_DEBUG_SEVERITY_MEDIUM_KHR", + }, + { + 0x9148, + "GL_DEBUG_SEVERITY_LOW_KHR", + }, + { + 0x8F63, + "GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT", + }, + { + 0x8F60, + "GL_MALI_SHADER_BINARY_ARM", + }, + { + 0x8F61, + "GL_MALI_PROGRAM_BINARY_ARM", + }, + { + 0x8F66, + "GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM", + }, + { + 0x8F67, + "GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT", + }, + { + 0x8F64, + "GL_SHADER_PIXEL_LOCAL_STORAGE_EXT", + }, + { + 0x8F65, + "GL_FETCH_PER_SAMPLE_ARM", + }, + { + 0x92D3, + "GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT", + }, + { + 0x87EE, + "GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD", + }, + { + 0x822B, + "GL_RG8_EXT", + }, + { + 0x822F, + "GL_RG16F_EXT", + }, + { + 0x822D, + "GL_R16F_EXT", + }, + { + 0x822E, + "GL_R32F_EXT", + }, + { + 1, + "GL_ES_VERSION_2_0", + }, + { + 0x84F9, + "GL_DEPTH_STENCIL_OES", + }, + { + 0x82DB, + "GL_TEXTURE_VIEW_MIN_LEVEL_EXT", + }, + { + 0x8368, + "GL_UNSIGNED_INT_2_10_10_10_REV_EXT", + }, + { + 0x8819, + "GL_LUMINANCE_ALPHA32F_EXT", + }, + { + 0x8818, + "GL_LUMINANCE32F_EXT", + }, + { + 0x82DF, + "GL_TEXTURE_IMMUTABLE_LEVELS", + }, + { + 0x8363, + "GL_UNSIGNED_SHORT_5_6_5", + }, + { + 0x9051, + "GL_IMAGE_BUFFER_EXT", + }, + { + 0x84F2, + "GL_ALL_COMPLETED_NV", + }, + { + 0x8E5A, + "GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT", + }, + { + 0x84F4, + "GL_FENCE_CONDITION_NV", + }, + { + 0x8366, + "GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT", + }, + { + 0x8365, + "GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT", + }, + { + 0x84F7, + "GL_COMMANDS_COMPLETED_CHROMIUM", + }, + { + 0x8F9C, + "GL_SIGNED_NORMALIZED", + }, + { + 0x92D5, + "GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT", + }, + { + 0x881E, + "GL_LUMINANCE16F_EXT", + }, + { + 0x84FA, + "GL_UNSIGNED_INT_24_8_OES", + }, + { + 0x92D4, + "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT", + }, + { + 0x881A, + "GL_RGBA16F_EXT", + }, + { + 0x84FE, + "GL_TEXTURE_MAX_ANISOTROPY_EXT", + }, + { + 0x0901, + "GL_CCW", + }, + { + 0x0900, + "GL_CW", + }, + { + 0x9317, + "GL_MAX_FRAMEBUFFER_LAYERS_EXT", + }, + { + 0x8229, + "GL_R8_EXT", + }, + { + 0x8230, + "GL_RG32F_EXT", + }, + { + 0x9312, + "GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT", + }, + { + 0x9283, + "GL_DISJOINT_NV", + }, + { + 0x8221, + "GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED", + }, + { + 0x8227, + "GL_RG_EXT", + }, + { + 0x8B66, + "GL_FLOAT_MAT2x4_NV", + }, + { + 0x8B67, + "GL_FLOAT_MAT3x2_NV", + }, + { + 0x8E1E, + "GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT", + }, + { + 0x8B62, + "GL_SAMPLER_2D_SHADOW_EXT", + }, + { + 0x8B63, + "GL_SAMPLER_2D_RECT_ARB", + }, + { + 0x8B60, + "GL_SAMPLER_CUBE", + }, + { + 0x00001000, + "GL_DEPTH_BUFFER_BIT4_QCOM", + }, + { + 0x8B68, + "GL_FLOAT_MAT3x4_NV", + }, + { + 0x83F0, + "GL_COMPRESSED_RGB_S3TC_DXT1_EXT", + }, + { + 0x8D6A, + "GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT", + }, + { + 0x00000080, + "GL_COLOR_BUFFER_BIT7_QCOM", + }, + { + 0x88F0, + "GL_DEPTH24_STENCIL8_OES", + }, + { + 0x8E1F, + "GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT", + }, + { + 0x80A0, + "GL_SAMPLE_COVERAGE", + }, + { + 0x928F, + "GL_DST_ATOP_NV", + }, + { + 0x8213, + "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE", + }, + { + 0x80A9, + "GL_SAMPLES", + }, + { + 0x80A8, + "GL_SAMPLE_BUFFERS", + }, + { + 0x0D55, + "GL_ALPHA_BITS", + }, + { + 0x0D54, + "GL_BLUE_BITS", + }, + { + 0x0D57, + "GL_STENCIL_BITS", + }, + { + 0x0D56, + "GL_DEPTH_BITS", + }, + { + 0x8CD5, + "GL_FRAMEBUFFER_COMPLETE", + }, + { + 0x0D50, + "GL_SUBPIXEL_BITS", + }, + { + 0x0D53, + "GL_GREEN_BITS", + }, + { + 0x0D52, + "GL_RED_BITS", + }, + { + 0x8037, + "GL_POLYGON_OFFSET_FILL", + }, + { + 0x928C, + "GL_SRC_OUT_NV", + }, + { + 0x8034, + "GL_UNSIGNED_SHORT_5_5_5_1", + }, + { + 0x8033, + "GL_UNSIGNED_SHORT_4_4_4_4", + }, + { + 0x928B, + "GL_DST_IN_NV", + }, + { + 0x0305, + "GL_ONE_MINUS_DST_ALPHA", + }, + { + 0x0304, + "GL_DST_ALPHA", + }, + { + 0x0307, + "GL_ONE_MINUS_DST_COLOR", + }, + { + 0x0306, + "GL_DST_COLOR", + }, + { + 0x0301, + "GL_ONE_MINUS_SRC_COLOR", + }, + { + 0x0300, + "GL_SRC_COLOR", + }, + { + 0x0303, + "GL_ONE_MINUS_SRC_ALPHA", + }, + { + 0x0302, + "GL_SRC_ALPHA", + }, + { + 0x8212, + "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE", + }, + { + 0x0308, + "GL_SRC_ALPHA_SATURATE", + }, + { + 0x2A00, + "GL_POLYGON_OFFSET_UNITS", + }, + { + 0xFFFFFFFF, + "GL_ALL_SHADER_BITS_EXT", + }, + { + 0x82DC, + "GL_TEXTURE_VIEW_NUM_LEVELS_EXT", + }, + { + 0x8C29, + "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT", + }, + { + 0x82DD, + "GL_TEXTURE_VIEW_MIN_LAYER_EXT", + }, + { + 0x00800000, + "GL_STENCIL_BUFFER_BIT7_QCOM", + }, + { + 0x82DE, + "GL_TEXTURE_VIEW_NUM_LAYERS_EXT", + }, + { + 0x00020000, + "GL_STENCIL_BUFFER_BIT1_QCOM", + }, + { + 0x8D00, + "GL_DEPTH_ATTACHMENT", + }, + { + 0x8FA0, + "GL_PERFMON_GLOBAL_MODE_QCOM", + }, + { + 0x8815, + "GL_RGB32F_EXT", + }, + { + 0x8A35, + "GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH", + }, + { + 0x8814, + "GL_RGBA32F_EXT", + }, + { + 0x9277, + "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", + }, + { + 0x6004, + "GL_COMMANDS_ISSUED_CHROMIUM", + }, + { + 0x813D, + "GL_TEXTURE_MAX_LEVEL_APPLE", + }, + { + 0x8816, + "GL_ALPHA32F_EXT", + }, + { + 0x813B, + "GL_TEXTURE_MAX_LOD", + }, + { + 0x8CDD, + "GL_FRAMEBUFFER_UNSUPPORTED", + }, + { + 0x8CDF, + "GL_MAX_COLOR_ATTACHMENTS_EXT", + }, + { + 0x90F3, + "GL_CONTEXT_ROBUST_ACCESS_KHR", + }, + { + 0x90F2, + "GL_MAX_MULTIVIEW_BUFFERS_EXT", + }, + { + 0x90F1, + "GL_MULTIVIEW_EXT", + }, + { + 0x90F0, + "GL_COLOR_ATTACHMENT_EXT", + }, + { + 0x803C, + "GL_ALPHA8_OES", + }, + { + 0x8904, + "GL_MIN_PROGRAM_TEXEL_OFFSET", + }, + { + 0x84F5, + "GL_TEXTURE_RECTANGLE_ARB", + }, + { + 0x882A, + "GL_DRAW_BUFFER5_EXT", + }, + { + 0x8E7F, + "GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT", + }, + { + 0x80AA, + "GL_SAMPLE_COVERAGE_VALUE", + }, + { + 0x84F6, + "GL_TEXTURE_BINDING_RECTANGLE_ARB", + }, + { + 0x80AB, + "GL_SAMPLE_COVERAGE_INVERT", + }, + { + 0x8E7D, + "GL_MAX_PATCH_VERTICES_EXT", + }, + { + 0x6005, + "GL_ASYNC_PIXEL_UNPACK_COMPLETED_CHROMIUM", + }, + { + 0x9105, + "GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES", + }, + { + 0x8E7E, + "GL_MAX_TESS_GEN_LEVEL_EXT", + }, + { + 0x9102, + "GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES", + }, + { + 0x8C40, + "GL_SRGB_EXT", + }, + { + 0x8236, + "GL_R32UI", + }, + { + 0x8E7B, + "GL_FRACTIONAL_ODD_EXT", + }, + { + 0x00000040, + "GL_COLOR_BUFFER_BIT6_QCOM", + }, + { + 0x882B, + "GL_DRAW_BUFFER6_EXT", + }, + { + 0x8E7C, + "GL_FRACTIONAL_EVEN_EXT", + }, + { + 0x8C8E, + "GL_TRANSFORM_FEEDBACK_BUFFER", + }, + { + 0x8C8D, + "GL_SEPARATE_ATTRIBS", + }, + { + 0x8C8F, + "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING", + }, + { + 0x8C8A, + "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", + }, + { + 0x8C8C, + "GL_INTERLEAVED_ATTRIBS", + }, + { + 0x8C8B, + "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", + }, + { + 0x8C17, + "GL_UNSIGNED_NORMALIZED_EXT", + }, + { + 0x8A3E, + "GL_UNIFORM_IS_ROW_MAJOR", + }, + { + 0x8E7A, + "GL_ISOLINES_EXT", + }, + { + 0x6006, + "GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM", + }, + { + 0x8D99, + "GL_RGBA_INTEGER", + }, + { + 0x8D98, + "GL_RGB_INTEGER", + }, + { + 0x8A4A, + "GL_SKIP_DECODE_EXT", + }, + { + 0x8A4F, + "GL_PROGRAM_PIPELINE_OBJECT_EXT", + }, + { + 0x882C, + "GL_DRAW_BUFFER7_EXT", + }, + { + 0x0010, + "GL_MAP_FLUSH_EXPLICIT_BIT_EXT", + }, + { + 0x8918, + "GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT", + }, + { + 0x8919, + "GL_SAMPLER_BINDING", + }, + { + 0x92CD, + "GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT", + }, + { + 0x92CE, + "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT", + }, + { + 0x8C85, + "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE", + }, + { + 0x8D7C, + "GL_RGBA8UI", + }, + { + 0x6007, + "GL_LATENCY_QUERY_CHROMIUM", + }, + { + 0x8D83, + "GL_RGB32I", + }, + { + 0x8916, + "GL_GEOMETRY_LINKED_VERTICES_OUT_EXT", + }, + { + 0x8917, + "GL_GEOMETRY_LINKED_INPUT_TYPE_EXT", + }, + { + 0x881F, + "GL_LUMINANCE_ALPHA16F_EXT", + }, + { + 0x84FD, + "GL_MAX_TEXTURE_LOD_BIAS", + }, + { + 0x882D, + "GL_DRAW_BUFFER8_EXT", + }, + { + 0x0BA6, + "GL_PATH_MODELVIEW_MATRIX_CHROMIUM", + }, + { + 0x8A42, + "GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS", + }, + { + 0x8F37, + "GL_COPY_WRITE_BUFFER_NV", + }, + { + 0x8F36, + "GL_COPY_READ_BUFFER_NV", + }, + { + 0x84FF, + "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", + }, + { + 0x8A3C, + "GL_UNIFORM_ARRAY_STRIDE", + }, + { + 0x8A44, + "GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER", + }, + { + 0x6000, + "GL_TEXTURE_POOL_CHROMIUM", + }, + { + 0x0B74, + "GL_DEPTH_FUNC", + }, + { + 0x8A49, + "GL_DECODE_EXT", + }, + { + 0x881B, + "GL_RGB16F_EXT", + }, + { + 0x0B71, + "GL_DEPTH_TEST", + }, + { + 0x0B70, + "GL_DEPTH_RANGE", + }, + { + 0x0B73, + "GL_DEPTH_CLEAR_VALUE", + }, + { + 0x0B72, + "GL_DEPTH_WRITEMASK", + }, + { + 0x8BD5, + "GL_TEXTURE_INTERNAL_FORMAT_QCOM", + }, + { + 0x85BA, + "GL_UNSIGNED_SHORT_8_8_APPLE", + }, + { + 0x8C87, + "GL_PRIMITIVES_GENERATED_EXT", + }, + { + 0x8C80, + "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", + }, + { + 0x8C83, + "GL_TRANSFORM_FEEDBACK_VARYINGS", + }, + { + 0x8D69, + "GL_PRIMITIVE_RESTART_FIXED_INDEX", + }, + { + 0x882E, + "GL_DRAW_BUFFER9_EXT", + }, + { + 0x8A32, + "GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT", + }, + { + 0x8A31, + "GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS", + }, + { + 0x8C89, + "GL_RASTERIZER_DISCARD", + }, + { + 0x8C88, + "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN", + }, + { + 0x8C1A, + "GL_TEXTURE_2D_ARRAY", + }, + { + 0x910D, + "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES", + }, + { + 0x8E80, + "GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT", + }, + { + 0x910B, + "GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES", + }, + { + 0x910C, + "GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES", + }, + { + 0x94FA, + "GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL", + }, + { + 0x8073, + "GL_MAX_3D_TEXTURE_SIZE_OES", + }, + { + 0x8072, + "GL_TEXTURE_WRAP_R_OES", + }, + { + 0x9289, + "GL_DST_OVER_NV", + }, + { + 0x882F, + "GL_DRAW_BUFFER10_EXT", + }, + { + 0x8074, + "GL_VERTEX_ARRAY_KHR", + }, + { + 0x80E1, + "GL_BGRA_EXT", + }, + { + 0x8ED7, + "GL_COVERAGE_AUTOMATIC_NV", + }, + { + 0x8ED6, + "GL_COVERAGE_EDGE_FRAGMENTS_NV", + }, + { + 0x8ED5, + "GL_COVERAGE_ALL_FRAGMENTS_NV", + }, + { + 0x8ED4, + "GL_COVERAGE_SAMPLES_NV", + }, + { + 0x8ED3, + "GL_COVERAGE_BUFFERS_NV", + }, + { + 0x8ED2, + "GL_COVERAGE_ATTACHMENT_NV", + }, + { + 0x8ED1, + "GL_COVERAGE_COMPONENT4_NV", + }, + { + 0x8ED0, + "GL_COVERAGE_COMPONENT_NV", + }, + { + 0x8217, + "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE", + }, + { + 0x8E89, + "GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT", + }, + { + 0x8216, + "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE", + }, + { + 0x8A36, + "GL_ACTIVE_UNIFORM_BLOCKS", + }, + { + 0x8A37, + "GL_UNIFORM_TYPE", + }, + { + 0x8A34, + "GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT", + }, + { + 0x3006, + "GL_CLIP_DISTANCE6_APPLE", + }, + { + 0x800B, + "GL_FUNC_REVERSE_SUBTRACT", + }, + { + 0x8A33, + "GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", + }, + { + 0x00000400, + "GL_STENCIL_BUFFER_BIT", + }, + { + 0x800A, + "GL_FUNC_SUBTRACT", + }, + { + 0x8214, + "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE", + }, + { + 0x8A38, + "GL_UNIFORM_SIZE", + }, + { + 0x8A39, + "GL_UNIFORM_NAME_LENGTH", + }, + { + 0x8E2C, + "GL_DEPTH_COMPONENT16_NONLINEAR_NV", + }, + { + 0x889F, + "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING", + }, + { + 0x8219, + "GL_FRAMEBUFFER_UNDEFINED_OES", + }, + { + 0x8E23, + "GL_TRANSFORM_FEEDBACK_PAUSED", + }, + { + 0x8E22, + "GL_TRANSFORM_FEEDBACK", + }, + { + 0x8E25, + "GL_TRANSFORM_FEEDBACK_BINDING", + }, + { + 0x9054, + "GL_IMAGE_CUBE_MAP_ARRAY_EXT", + }, + { + 0x8E28, + "GL_TIMESTAMP_EXT", + }, + { + 0x8006, + "GL_FUNC_ADD", + }, + { + 0x8007, + "GL_MIN_EXT", + }, + { + 0x8004, + "GL_ONE_MINUS_CONSTANT_ALPHA", + }, + { + 0x8005, + "GL_BLEND_COLOR", + }, + { + 0x8002, + "GL_ONE_MINUS_CONSTANT_COLOR", + }, + { + 0x8003, + "GL_CONSTANT_ALPHA", + }, + { + 0x8001, + "GL_CONSTANT_COLOR", + }, + { + 0x0204, + "GL_GREATER", + }, + { + 0x0205, + "GL_NOTEQUAL", + }, + { + 0x0206, + "GL_GEQUAL", + }, + { + 0x0207, + "GL_ALWAYS", + }, + { + 0x0200, + "GL_NEVER", + }, + { + 0x0201, + "GL_LESS", + }, + { + 0x0202, + "GL_EQUAL", + }, + { + 0x0203, + "GL_LEQUAL", + }, + { + 0x8BD6, + "GL_TEXTURE_FORMAT_QCOM", + }, + { + 0x8228, + "GL_RG_INTEGER", + }, + { + 0x2901, + "GL_REPEAT", + }, + { + 0x9067, + "GL_UNSIGNED_INT_IMAGE_BUFFER_EXT", + }, + { + 0x92A0, + "GL_EXCLUSION_KHR", + }, + { + 0x93D8, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR", + }, + { + 0x93D9, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", + }, + { + 0x8FB2, + "GL_GPU_OPTIMIZED_QCOM", + }, + { + 0x190A, + "GL_LUMINANCE_ALPHA", + }, + { + 0x8FB0, + "GL_BINNING_CONTROL_HINT_QCOM", + }, + { + 0x905C, + "GL_INT_IMAGE_BUFFER_EXT", + }, + { + 0x1E00, + "GL_KEEP", + }, + { + 0x1E01, + "GL_REPLACE", + }, + { + 0x1E02, + "GL_INCR", + }, + { + 0x1E03, + "GL_DECR", + }, + { + 0x93D6, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR", + }, + { + 0x93D7, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR", + }, + { + 0x93D4, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR", + }, + { + 0x93D5, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR", + }, + { + 0x886D, + "GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT", + }, + { + 0x0BE2, + "GL_BLEND", + }, + { + 0x84CB, + "GL_TEXTURE11", + }, + { + 0x8D55, + "GL_RENDERBUFFER_STENCIL_SIZE", + }, + { + 0x8D54, + "GL_RENDERBUFFER_DEPTH_SIZE", + }, + { + 0x8D57, + "GL_MAX_SAMPLES_ANGLE", + }, + { + 0x8D56, + "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE", + }, + { + 0x8D51, + "GL_RENDERBUFFER_GREEN_SIZE", + }, + { + 0x8D50, + "GL_RENDERBUFFER_RED_SIZE", + }, + { + 0x8D53, + "GL_RENDERBUFFER_ALPHA_SIZE", + }, + { + 0x8D52, + "GL_RENDERBUFFER_BLUE_SIZE", + }, + { + 0x92A6, + "GL_VIVIDLIGHT_NV", + }, + { + 0x8A2A, + "GL_UNIFORM_BUFFER_SIZE", + }, + { + 0x8DCC, + "GL_INT_SAMPLER_CUBE", + }, + { + 0x78F1, + "GL_MAP_CHROMIUM", + }, + { + 0x00080000, + "GL_STENCIL_BUFFER_BIT3_QCOM", + }, + { + 0x92A7, + "GL_LINEARLIGHT_NV", + }, + { + 0x8DCF, + "GL_INT_SAMPLER_2D_ARRAY", + }, + { + 0x886A, + "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED", + }, + { + 0x8C41, + "GL_SRGB8_NV", + }, + { + 0x0C01, + "GL_DRAW_BUFFER_EXT", + }, + { + 0x886C, + "GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT", + }, + { + 0x90CB, + "GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT", + }, + { + 0x8DCA, + "GL_INT_SAMPLER_2D", + }, + { + 0x93C7, + "GL_COMPRESSED_RGBA_ASTC_6x5x5_OES", + }, + { + 0x8B5F, + "GL_SAMPLER_3D_OES", + }, + { + 0x8B95, + "GL_PALETTE8_RGB8_OES", + }, + { + 0x9250, + "GL_SHADER_BINARY_DMP", + }, + { + 0x9251, + "GL_SMAPHS30_PROGRAM_BINARY_DMP", + }, + { + 0x9252, + "GL_SMAPHS_PROGRAM_BINARY_DMP", + }, + { + 0x9253, + "GL_DMP_PROGRAM_BINARY_DMP", + }, + { + 0x8DC8, + "GL_UNSIGNED_INT_VEC4", + }, + { + 0x3000, + "GL_CLIP_DISTANCE0_APPLE", + }, + { + 0x8C92, + "GL_ATC_RGB_AMD", + }, + { + 0x8DC1, + "GL_SAMPLER_2D_ARRAY", + }, + { + 0x9154, + "GL_VERTEX_ARRAY_OBJECT_EXT", + }, + { + 0x9153, + "GL_QUERY_OBJECT_EXT", + }, + { + 0x8864, + "GL_QUERY_COUNTER_BITS_EXT", + }, + { + 0x9151, + "GL_BUFFER_OBJECT_EXT", + }, + { + 0x8C93, + "GL_ATC_RGBA_EXPLICIT_ALPHA_AMD", + }, + { + 0x00000002, + "GL_CONTEXT_FLAG_DEBUG_BIT_KHR", + }, + { + 0x8A3F, + "GL_UNIFORM_BLOCK_BINDING", + }, + { + 0x00000000, + "GL_PERFQUERY_SINGLE_CONTEXT_INTEL", + }, + { + 0x00000001, + "GL_SYNC_FLUSH_COMMANDS_BIT_APPLE", + }, + { + 0x9248, + "GL_OVERLAY_TRANSFORM_ROTATE_90_CHROMIUM", + }, + { + 0x00000004, + "GL_GEOMETRY_SHADER_BIT_EXT", + }, + { + 0x1702, + "GL_TEXTURE", + }, + { + 0x3003, + "GL_CLIP_DISTANCE3_APPLE", + }, + { + 0x00000008, + "GL_TESS_CONTROL_SHADER_BIT_EXT", + }, + { + 0x8B58, + "GL_BOOL_VEC3", + }, + { + 0x8A3D, + "GL_UNIFORM_MATRIX_STRIDE", + }, + { + 0x8828, + "GL_DRAW_BUFFER3_EXT", + }, + { + 0x8DF0, + "GL_LOW_FLOAT", + }, + { + 0x1906, + "GL_ALPHA", + }, + { + 0x1907, + "GL_RGB", + }, + { + 0x8FBB, + "GL_GPU_DISJOINT_EXT", + }, + { + 0x1901, + "GL_STENCIL_INDEX_OES", + }, + { + 0x1902, + "GL_DEPTH_COMPONENT", + }, + { + 0x8B56, + "GL_BOOL", + }, + { + 0x93DB, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR", + }, + { + 0x8B9B, + "GL_IMPLEMENTATION_COLOR_READ_FORMAT", + }, + { + 0x8B9A, + "GL_IMPLEMENTATION_COLOR_READ_TYPE", + }, + { + 0x93DA, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR", + }, + { + 0x1908, + "GL_RGBA", + }, + { + 0x8DF2, + "GL_HIGH_FLOAT", + }, + { + 0x93DD, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR", + }, + { + 0x8827, + "GL_DRAW_BUFFER2_EXT", + }, + { + 0x9243, + "GL_UNPACK_COLORSPACE_CONVERSION_CHROMIUM", + }, + { + 0x8DF3, + "GL_LOW_INT", + }, + { + 0x82E8, + "GL_MAX_LABEL_LENGTH_KHR", + }, + { + 0x82E6, + "GL_SAMPLER_KHR", + }, + { + 0x0C02, + "GL_READ_BUFFER_EXT", + }, + { + 0x82E3, + "GL_QUERY_KHR", + }, + { + 0x82E2, + "GL_PROGRAM_KHR", + }, + { + 0x82E1, + "GL_SHADER_KHR", + }, + { + 0x8B52, + "GL_FLOAT_VEC4", + }, + { + 0x8239, + "GL_RG16I", + }, + { + 0x8238, + "GL_RG8UI", + }, + { + 0x9240, + "GL_UNPACK_FLIP_Y_CHROMIUM", + }, + { + 0x8DF6, + "GL_UNSIGNED_INT_10_10_10_2_OES", + }, + { + 0x8A30, + "GL_MAX_UNIFORM_BLOCK_SIZE", + }, + { + 0x9273, + "GL_COMPRESSED_SIGNED_RG11_EAC", + }, + { + 0x8231, + "GL_R8I", + }, + { + 0x8866, + "GL_QUERY_RESULT_EXT", + }, + { + 0x8233, + "GL_R16I", + }, + { + 0x8DF7, + "GL_INT_10_10_10_2_OES", + }, + { + 0x8235, + "GL_R32I", + }, + { + 0x8234, + "GL_R16UI", + }, + { + 0x8237, + "GL_RG8I", + }, + { + 0x9246, + "GL_OVERLAY_TRANSFORM_FLIP_HORIZONTAL_CHROMIUM", + }, + { + 0x8B69, + "GL_FLOAT_MAT4x2_NV", + }, + { + 0x812D, + "GL_CLAMP_TO_BORDER_EXT", + }, + { + 0x812F, + "GL_CLAMP_TO_EDGE", + }, + { + 0x92A4, + "GL_LINEARDODGE_NV", + }, + { + 0x8DD8, + "GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT", + }, + { + 0x8DD9, + "GL_GEOMETRY_SHADER_EXT", + }, + { + 0x86A3, + "GL_COMPRESSED_TEXTURE_FORMATS", + }, + { + 0x8DD4, + "GL_UNSIGNED_INT_SAMPLER_CUBE", + }, + { + 0x9244, + "GL_BIND_GENERATES_RESOURCE_CHROMIUM", + }, + { + 0x8DD2, + "GL_UNSIGNED_INT_SAMPLER_2D", + }, + { + 0x8DD3, + "GL_UNSIGNED_INT_SAMPLER_3D", + }, + { + 0x8DD0, + "GL_INT_SAMPLER_BUFFER_EXT", + }, + { + 0x86A2, + "GL_NUM_COMPRESSED_TEXTURE_FORMATS", + }, + { + 0x0CF3, + "GL_UNPACK_SKIP_ROWS_EXT", + }, + { + 0x0CF2, + "GL_UNPACK_ROW_LENGTH_EXT", + }, + { + 0x140C, + "GL_FIXED", + }, + { + 0x140B, + "GL_HALF_FLOAT", + }, + { + 0x8008, + "GL_MAX_EXT", + }, + { + 0x0CF5, + "GL_UNPACK_ALIGNMENT", + }, + { + 0x8867, + "GL_QUERY_RESULT_AVAILABLE_EXT", + }, + { + 0x8D82, + "GL_RGBA32I", + }, + { + 0x8009, + "GL_BLEND_EQUATION", + }, + { + 0x911F, + "GL_BUFFER_ACCESS_FLAGS", + }, + { + 0x1401, + "GL_UNSIGNED_BYTE", + }, + { + 0x1400, + "GL_BYTE", + }, + { + 0x1403, + "GL_UNSIGNED_SHORT", + }, + { + 0x1402, + "GL_SHORT", + }, + { + 0x1405, + "GL_UNSIGNED_INT", + }, + { + 0x1404, + "GL_INT", + }, + { + 0x1406, + "GL_FLOAT", + }, + { + 0x8C1D, + "GL_TEXTURE_BINDING_2D_ARRAY", + }, + { + 0x8DDF, + "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT", + }, + { + 0x8043, + "GL_LUMINANCE4_ALPHA4_OES", + }, + { + 0x8040, + "GL_LUMINANCE8_OES", + }, + { + 0x8045, + "GL_LUMINANCE8_ALPHA8_OES", + }, + { + 0x8CD1, + "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME", + }, + { + 0x00040000, + "GL_STENCIL_BUFFER_BIT2_QCOM", + }, + { + 0x8CD0, + "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", + }, + { + 0x823A, + "GL_RG16UI", + }, + { + 0x8CE4, + "GL_COLOR_ATTACHMENT4_EXT", + }, + { + 0x823B, + "GL_RG32I", + }, + { + 0x8CD3, + "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE", + }, + { + 0x846E, + "GL_ALIASED_LINE_WIDTH_RANGE", + }, + { + 0x0B90, + "GL_STENCIL_TEST", + }, + { + 0x8CD2, + "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", + }, + { + 0x881C, + "GL_ALPHA16F_EXT", + }, + { + 0x928E, + "GL_SRC_ATOP_NV", + }, + { + 0x8CD4, + "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES", + }, + { + 0x9113, + "GL_SYNC_CONDITION_APPLE", + }, + { + 0x8CD7, + "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT", + }, + { + 0x08000000, + "GL_MULTISAMPLE_BUFFER_BIT3_QCOM", + }, + { + 0x93A4, + "GL_PACK_REVERSE_ROW_ORDER_ANGLE", + }, + { + 0x8038, + "GL_POLYGON_OFFSET_FACTOR", + }, + { + 0x94F9, + "GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL", + }, + { + 0x851A, + "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z", + }, + { + 0x851C, + "GL_MAX_CUBE_MAP_TEXTURE_SIZE", + }, + { + 0x8CD9, + "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS", + }, + { + 0x84CC, + "GL_TEXTURE12", + }, + { + 0x0BA2, + "GL_VIEWPORT", + }, + { + 0x84CA, + "GL_TEXTURE10", + }, + { + 0x0BA7, + "GL_PATH_PROJECTION_MATRIX_CHROMIUM", + }, + { + 0x84CF, + "GL_TEXTURE15", + }, + { + 0x84CE, + "GL_TEXTURE14", + }, + { + 0x84CD, + "GL_TEXTURE13", + }, + { + 0x83F9, + "GL_PERFQUERY_DONOT_FLUSH_INTEL", + }, + { + 0x9115, + "GL_SYNC_FLAGS_APPLE", + }, + { + 0x9286, + "GL_SRC_NV", + }, + { + 0x83F3, + "GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE", + }, + { + 0x83F2, + "GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE", + }, + { + 0x83F1, + "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", + }, + { + 0x9114, + "GL_SYNC_STATUS_APPLE", + }, + { + 0x8C0A, + "GL_SGX_BINARY_IMG", + }, + { + 0x93BB, + "GL_COMPRESSED_RGBA_ASTC_10x10_KHR", + }, + { + 0x911C, + "GL_CONDITION_SATISFIED_APPLE", + }, + { + 0x911B, + "GL_TIMEOUT_EXPIRED_APPLE", + }, + { + 0x911A, + "GL_ALREADY_SIGNALED_APPLE", + }, + { + 0x9284, + "GL_CONJOINT_NV", + }, + { + 0x9124, + "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT", + }, + { + 0x911D, + "GL_WAIT_FAILED_APPLE", + }, + { + 0x929A, + "GL_COLORBURN_KHR", + }, + { + 0x929B, + "GL_HARDLIGHT_KHR", + }, + { + 0x929C, + "GL_SOFTLIGHT_KHR", + }, + { + 0x846D, + "GL_ALIASED_POINT_SIZE_RANGE", + }, + { + 0x929E, + "GL_DIFFERENCE_KHR", + }, + { + 0x929F, + "GL_MINUS_NV", + }, + { + 0x9282, + "GL_UNCORRELATED_NV", + }, + { + 0x9298, + "GL_LIGHTEN_KHR", + }, + { + 0x9299, + "GL_COLORDODGE_KHR", + }, + { + 0x9111, + "GL_MAX_SERVER_WAIT_TIMEOUT_APPLE", + }, + { + 0x93A6, + "GL_PROGRAM_BINARY_ANGLE", + }, + { + 0x9117, + "GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE", + }, + { + 0x93A0, + "GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE", + }, + { + 0x93A3, + "GL_FRAMEBUFFER_ATTACHMENT_ANGLE", + }, + { + 0x93A2, + "GL_TEXTURE_USAGE_ANGLE", + }, + { + 0x8802, + "GL_STENCIL_BACK_PASS_DEPTH_FAIL", + }, + { + 0x9119, + "GL_SIGNALED_APPLE", + }, + { + 0x9118, + "GL_UNSIGNALED_APPLE", + }, + { + 0x9294, + "GL_MULTIPLY_KHR", + }, + { + 0x9295, + "GL_SCREEN_KHR", + }, + { + 0x9296, + "GL_OVERLAY_KHR", + }, + { + 0x9297, + "GL_DARKEN_KHR", + }, + { + 0x0020, + "GL_MAP_UNSYNCHRONIZED_BIT_EXT", + }, + { + 0x8E78, + "GL_TESS_GEN_VERTEX_ORDER_EXT", + }, + { + 0x8C01, + "GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG", + }, + { + 0x8C00, + "GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG", + }, + { + 0x8A52, + "GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT", + }, + { + 0x8C02, + "GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", + }, + { + 0x84C9, + "GL_TEXTURE9", + }, + { + 0x84C8, + "GL_TEXTURE8", + }, + { + 0x8869, + "GL_MAX_VERTEX_ATTRIBS", + }, + { + 0x84C3, + "GL_TEXTURE3", + }, + { + 0x84C2, + "GL_TEXTURE2", + }, + { + 0x84C1, + "GL_TEXTURE1", + }, + { + 0x84C0, + "GL_TEXTURE0", + }, + { + 0x84C7, + "GL_TEXTURE7", + }, + { + 0x84C6, + "GL_TEXTURE6", + }, + { + 0x84C5, + "GL_TEXTURE5", + }, + { + 0x8803, + "GL_STENCIL_BACK_PASS_DEPTH_PASS", + }, + { + 0x928A, + "GL_SRC_IN_NV", + }, + { + 0x8518, + "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y", + }, + { + 0x8519, + "GL_TEXTURE_CUBE_MAP_POSITIVE_Z", + }, + { + 0x8514, + "GL_TEXTURE_BINDING_CUBE_MAP", + }, + { + 0x8515, + "GL_TEXTURE_CUBE_MAP_POSITIVE_X", + }, + { + 0x8516, + "GL_TEXTURE_CUBE_MAP_NEGATIVE_X", + }, + { + 0x8517, + "GL_TEXTURE_CUBE_MAP_POSITIVE_Y", + }, + { + 0x8218, + "GL_FRAMEBUFFER_DEFAULT", + }, + { + 0x8513, + "GL_TEXTURE_CUBE_MAP", + }, + { + 0x8626, + "GL_CURRENT_VERTEX_ATTRIB", + }, + { + 0x92B1, + "GL_PLUS_CLAMPED_NV", + }, + { + 0x92B0, + "GL_HSL_LUMINOSITY_KHR", + }, + { + 0x92B3, + "GL_MINUS_CLAMPED_NV", + }, + { + 0x92B2, + "GL_PLUS_CLAMPED_ALPHA_NV", + }, + { + 0x8765, + "GL_BUFFER_USAGE", + }, + { + 0x8764, + "GL_BUFFER_SIZE", + }, + { + 0x8B99, + "GL_PALETTE8_RGB5_A1_OES", + }, + { + 0x0503, + "GL_STACK_OVERFLOW_KHR", + }, + { + 0x0502, + "GL_INVALID_OPERATION", + }, + { + 0x0501, + "GL_INVALID_VALUE", + }, + { + 0x0500, + "GL_INVALID_ENUM", + }, + { + 0x0507, + "GL_CONTEXT_LOST_KHR", + }, + { + 0x0506, + "GL_INVALID_FRAMEBUFFER_OPERATION", + }, + { + 0x0505, + "GL_OUT_OF_MEMORY", + }, + { + 0x0504, + "GL_STACK_UNDERFLOW_KHR", + }, + { + 0x0CF4, + "GL_UNPACK_SKIP_PIXELS_EXT", + }, + { + 0x0B44, + "GL_CULL_FACE", + }, + { + 0x8B5E, + "GL_SAMPLER_2D", + }, + { + 0x0B46, + "GL_FRONT_FACE", + }, + { + 0x8FB3, + "GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM", + }, + { + 0x824A, + "GL_DEBUG_SOURCE_APPLICATION_KHR", + }, + { + 0x824B, + "GL_DEBUG_SOURCE_OTHER_KHR", + }, + { + 0x824C, + "GL_DEBUG_TYPE_ERROR_KHR", + }, + { + 0x824D, + "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR", + }, + { + 0x824E, + "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR", + }, + { + 0x824F, + "GL_DEBUG_TYPE_PORTABILITY_KHR", + }, + { + 0x8DD7, + "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY", + }, + { + 0x8B31, + "GL_VERTEX_SHADER", + }, + { + 0x8B30, + "GL_FRAGMENT_SHADER", + }, + { + 0x8FB1, + "GL_CPU_OPTIMIZED_QCOM", + }, + { + 0x93D2, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR", + }, + { + 0x82FB, + "GL_CONTEXT_RELEASE_BEHAVIOR_KHR", + }, + { + 0x8B5A, + "GL_FLOAT_MAT2", + }, + { + 0x84D8, + "GL_TEXTURE24", + }, + { + 0x84D9, + "GL_TEXTURE25", + }, + { + 0x84D6, + "GL_TEXTURE22", + }, + { + 0x84D7, + "GL_TEXTURE23", + }, + { + 0x84D4, + "GL_TEXTURE20", + }, + { + 0x0D05, + "GL_PACK_ALIGNMENT", + }, + { + 0x84D2, + "GL_TEXTURE18", + }, + { + 0x84D3, + "GL_TEXTURE19", + }, + { + 0x84D0, + "GL_TEXTURE16", + }, + { + 0x84D1, + "GL_TEXTURE17", + }, + { + 0x93D1, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR", + }, + { + 0x84DF, + "GL_TEXTURE31", + }, + { + 0x8B97, + "GL_PALETTE8_R5_G6_B5_OES", + }, + { + 0x84DD, + "GL_TEXTURE29", + }, + { + 0x84DE, + "GL_TEXTURE30", + }, + { + 0x84DB, + "GL_TEXTURE27", + }, + { + 0x84DC, + "GL_TEXTURE28", + }, + { + 0x6002, + "GL_TEXTURE_POOL_UNMANAGED_CHROMIUM", + }, + { + 0x84DA, + "GL_TEXTURE26", + }, + { + 0x8242, + "GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR", + }, + { + 0x8243, + "GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR", + }, + { + 0x8244, + "GL_DEBUG_CALLBACK_FUNCTION_KHR", + }, + { + 0x8245, + "GL_DEBUG_CALLBACK_USER_PARAM_KHR", + }, + { + 0x8246, + "GL_DEBUG_SOURCE_API_KHR", + }, + { + 0x8247, + "GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR", + }, + { + 0x8248, + "GL_DEBUG_SOURCE_SHADER_COMPILER_KHR", + }, + { + 0x8249, + "GL_DEBUG_SOURCE_THIRD_PARTY_KHR", + }, + { + 0x88ED, + "GL_PIXEL_PACK_BUFFER_BINDING", + }, + { + 0x8B94, + "GL_PALETTE4_RGB5_A1_OES", + }, + { + 0x94F4, + "GL_PERFQUERY_COUNTER_RAW_INTEL", + }, + { + 0x823C, + "GL_RG32UI", + }, + { + 0x8A29, + "GL_UNIFORM_BUFFER_START", + }, + { + 0x8A28, + "GL_UNIFORM_BUFFER_BINDING", + }, + { + 0x92BE, + "GL_PRIMITIVE_BOUNDING_BOX_EXT", + }, + { + 0x8645, + "GL_VERTEX_ATTRIB_ARRAY_POINTER", + }, + { + 0x8865, + "GL_CURRENT_QUERY_EXT", + }, + { + 0x8E5B, + "GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES", + }, + { + 0x8E5C, + "GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES", + }, + { + 0x8E5D, + "GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES", + }, + { + 0x906A, + "GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT", + }, + { + 0x906F, + "GL_RGB10_A2UI", + }, + { + 0x8E72, + "GL_PATCH_VERTICES_EXT", + }, + { + 0x8BD3, + "GL_TEXTURE_HEIGHT_QCOM", + }, + { + 0x87FA, + "GL_3DC_XY_AMD", + }, + { + 0x84C4, + "GL_TEXTURE4", + }, + { + 0x821C, + "GL_MINOR_VERSION", + }, + { + 0x8E8A, + "GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT", + }, + { + 0x85B5, + "GL_VERTEX_ARRAY_BINDING_OES", + }, + { + 0x8253, + "GL_GUILTY_CONTEXT_RESET_KHR", + }, + { + 0x8D6B, + "GL_MAX_ELEMENT_INDEX", + }, + { + 0x8D6C, + "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT", + }, + { + 0x92A1, + "GL_CONTRAST_NV", + }, + { + 0x8252, + "GL_LOSE_CONTEXT_ON_RESET_KHR", + }, + { + 0x8C4C, + "GL_COMPRESSED_SRGB_S3TC_DXT1_NV", + }, + { + 0x8C4E, + "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV", + }, + { + 0x8251, + "GL_DEBUG_TYPE_OTHER_KHR", + }, + { + 0x8C4F, + "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV", + }, + { + 0x9309, + "GL_REFERENCED_BY_GEOMETRY_SHADER_EXT", + }, + { + 0x93E9, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES", + }, + { + 0x93E8, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES", + }, + { + 0x8C43, + "GL_SRGB8_ALPHA8_EXT", + }, + { + 0x8C42, + "GL_SRGB_ALPHA_EXT", + }, + { + 0x8C45, + "GL_SLUMINANCE8_ALPHA8_NV", + }, + { + 0x8C44, + "GL_SLUMINANCE_ALPHA_NV", + }, + { + 0x8C47, + "GL_SLUMINANCE8_NV", + }, + { + 0x8C46, + "GL_SLUMINANCE_NV", + }, + { + 0x93E1, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES", + }, + { + 0x93E0, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES", + }, + { + 0x93E3, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES", + }, + { + 0x93E2, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES", + }, + { + 0x93E5, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES", + }, + { + 0x93E4, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES", + }, + { + 0x93E7, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES", + }, + { + 0x93E6, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES", + }, + { + 0x8D68, + "GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES", + }, + { + 0x8E82, + "GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT", + }, + { + 0x8E81, + "GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT", + }, + { + 0x85BB, + "GL_UNSIGNED_SHORT_8_8_REV_APPLE", + }, + { + 0x8E87, + "GL_TESS_EVALUATION_SHADER_EXT", + }, + { + 0x8E86, + "GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT", + }, + { + 0x8E85, + "GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT", + }, + { + 0x8E84, + "GL_MAX_TESS_PATCH_COMPONENTS_EXT", + }, + { + 0x8D61, + "GL_HALF_FLOAT_OES", + }, + { + 0x8D62, + "GL_RGB565", + }, + { + 0x8E88, + "GL_TESS_CONTROL_SHADER_EXT", + }, + { + 0x8D64, + "GL_ETC1_RGB8_OES", + }, + { + 0x8D65, + "GL_TEXTURE_EXTERNAL_OES", + }, + { + 0x8D66, + "GL_SAMPLER_EXTERNAL_OES", + }, + { + 0x8D67, + "GL_TEXTURE_BINDING_EXTERNAL_OES", + }, + { + 0x10000000, + "GL_MULTISAMPLE_BUFFER_BIT4_QCOM", + }, + { + 0x04000000, + "GL_MULTISAMPLE_BUFFER_BIT2_QCOM", + }, + { + 0x90D7, + "GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT", + }, + { + 0x90D9, + "GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT", + }, + { + 0x90D8, + "GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT", + }, + { + 0x8CEE, + "GL_COLOR_ATTACHMENT14_EXT", + }, + { + 0x8DC7, + "GL_UNSIGNED_INT_VEC3", + }, + { + 0x1701, + "GL_PATH_PROJECTION_CHROMIUM", + }, + { + 0x2800, + "GL_TEXTURE_MAG_FILTER", + }, + { + 0x2801, + "GL_TEXTURE_MIN_FILTER", + }, + { + 0x2802, + "GL_TEXTURE_WRAP_S", + }, + { + 0x2803, + "GL_TEXTURE_WRAP_T", + }, + { + 0x8DCB, + "GL_INT_SAMPLER_3D", + }, + { + 0x3007, + "GL_CLIP_DISTANCE7_APPLE", + }, + { + 0x2703, + "GL_LINEAR_MIPMAP_LINEAR", + }, + { + 0x3005, + "GL_CLIP_DISTANCE5_APPLE", + }, + { + 0x3004, + "GL_CLIP_DISTANCE4_APPLE", + }, + { + 0x8B98, + "GL_PALETTE8_RGBA4_OES", + }, + { + 0x3002, + "GL_CLIP_DISTANCE2_APPLE", + }, + { + 0x3001, + "GL_CLIP_DISTANCE1_APPLE", + }, + { + 0x2702, + "GL_NEAREST_MIPMAP_LINEAR", + }, + { + 0x1F03, + "GL_EXTENSIONS", + }, + { + 0x1F02, + "GL_VERSION", + }, + { + 0x1F01, + "GL_RENDERER", + }, + { + 0x1F00, + "GL_VENDOR", + }, + { + 0x9247, + "GL_OVERLAY_TRANSFORM_FLIP_VERTICAL_CHROMIUM", + }, + { + 0x2701, + "GL_LINEAR_MIPMAP_NEAREST", + }, + { + 0x9245, + "GL_OVERLAY_TRANSFORM_NONE_CHROMIUM", + }, + { + 0x92B4, + "GL_INVERT_OVG_NV", + }, + { + 0x9249, + "GL_OVERLAY_TRANSFORM_ROTATE_180_CHROMIUM", + }, + { + 0x0B94, + "GL_STENCIL_FAIL", + }, + { + 0x8B4A, + "GL_MAX_VERTEX_UNIFORM_COMPONENTS", + }, + { + 0x8B4B, + "GL_MAX_VARYING_COMPONENTS", + }, + { + 0x8B4C, + "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS", + }, + { + 0x8B4D, + "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS", + }, + { + 0x8B4F, + "GL_SHADER_TYPE", + }, + { + 0x9122, + "GL_MAX_VERTEX_OUTPUT_COMPONENTS", + }, + { + 0x9123, + "GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT", + }, + { + 0x83FB, + "GL_PERFQUERY_WAIT_INTEL", + }, + { + 0x9121, + "GL_BUFFER_MAP_OFFSET", + }, + { + 0x00004000, + "GL_COLOR_BUFFER_BIT", + }, + { + 0x9125, + "GL_MAX_FRAGMENT_INPUT_COMPONENTS", + }, + { + 0x00000010, + "GL_TESS_EVALUATION_SHADER_BIT_EXT", + }, + { + 0x8834, + "GL_DRAW_BUFFER15_EXT", + }, + { + 0x8833, + "GL_DRAW_BUFFER14_EXT", + }, + { + 0x8832, + "GL_DRAW_BUFFER13_EXT", + }, + { + 0x8831, + "GL_DRAW_BUFFER12_EXT", + }, + { + 0x8830, + "GL_DRAW_BUFFER11_EXT", + }, + { + 0x8DC5, + "GL_SAMPLER_CUBE_SHADOW_NV", + }, + { + 0x94FF, + "GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL", + }, + { + 0x94FE, + "GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL", + }, + { + 0x94FD, + "GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL", + }, + { + 0x94FC, + "GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL", + }, + { + 0x94FB, + "GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL", + }, + { + 0x93B8, + "GL_COMPRESSED_RGBA_ASTC_10x5_KHR", + }, + { + 0x8B65, + "GL_FLOAT_MAT2x3_NV", + }, + { + 0x9241, + "GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM", + }, + { + 0x00010000, + "GL_STENCIL_BUFFER_BIT0_QCOM", + }, + { + 0x83FA, + "GL_PERFQUERY_FLUSH_INTEL", + }, + { + 0x0D03, + "GL_PACK_SKIP_ROWS", + }, + { + 0x84F3, + "GL_FENCE_STATUS_NV", + }, + { + 0x88E6, + "GL_STATIC_COPY", + }, + { + 0x0B93, + "GL_STENCIL_VALUE_MASK", + }, + { + 0x0B92, + "GL_STENCIL_FUNC", + }, + { + 0x0B91, + "GL_STENCIL_CLEAR_VALUE", + }, + { + 0x883D, + "GL_BLEND_EQUATION_ALPHA", + }, + { + 0x0B97, + "GL_STENCIL_REF", + }, + { + 0x0B96, + "GL_STENCIL_PASS_DEPTH_PASS", + }, + { + 0x0B95, + "GL_STENCIL_PASS_DEPTH_FAIL", + }, + { + 0x2700, + "GL_NEAREST_MIPMAP_NEAREST", + }, + { + 0x94F5, + "GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL", + }, + { + 0x0B98, + "GL_STENCIL_WRITEMASK", + }, + { + 0x94F3, + "GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL", + }, + { + 0x94F2, + "GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL", + }, + { + 0x94F1, + "GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL", + }, + { + 0x94F0, + "GL_PERFQUERY_COUNTER_EVENT_INTEL", + }, + { + 0x8B40, + "GL_PROGRAM_OBJECT_EXT", + }, + { + 0x1004, + "GL_TEXTURE_BORDER_COLOR_EXT", + }, + { + 0x8A2D, + "GL_MAX_FRAGMENT_UNIFORM_BLOCKS", + }, + { + 0x8B48, + "GL_SHADER_OBJECT_EXT", + }, + { + 0x8B49, + "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS", + }, + { + 0x813A, + "GL_TEXTURE_MIN_LOD", + }, + { + 0x8DE1, + "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT", + }, + { + 0x8DE0, + "GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT", + }, + { + 0x924C, + "GL_MOUSE_POSITION_CHROMIUM", + }, + { + 0x924B, + "GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM", + }, + { + 0x924A, + "GL_OVERLAY_TRANSFORM_ROTATE_270_CHROMIUM", + }, + { + 0x8A2F, + "GL_MAX_UNIFORM_BUFFER_BINDINGS", + }, + { + 0x20000000, + "GL_MULTISAMPLE_BUFFER_BIT5_QCOM", + }, + { + 64, + "GL_MAILBOX_SIZE_CHROMIUM", + }, + { + 0x0DE1, + "GL_TEXTURE_2D", + }, + { + 0x8A2C, + "GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT", + }, + { + 0x80C9, + "GL_BLEND_SRC_RGB", + }, + { + 0x80C8, + "GL_BLEND_DST_RGB", + }, + { + 0x912F, + "GL_TEXTURE_IMMUTABLE_FORMAT_EXT", + }, + { + 0x8A2B, + "GL_MAX_VERTEX_UNIFORM_BLOCKS", + }, + { + 0x88EC, + "GL_PIXEL_UNPACK_BUFFER", + }, + { + 0x8D8F, + "GL_RGB8I", + }, + { + 0x8059, + "GL_RGB10_A2_EXT", + }, + { + 0x8058, + "GL_RGBA8_OES", + }, + { + 0x8B93, + "GL_PALETTE4_RGBA4_OES", + }, + { + 0x88EB, + "GL_PIXEL_PACK_BUFFER", + }, + { + 0x8E83, + "GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT", + }, + { + 0x8051, + "GL_RGB8_OES", + }, + { + 0x8CAD, + "GL_DEPTH32F_STENCIL8", + }, + { + 0x8052, + "GL_RGB10_EXT", + }, + { + 0x8CAB, + "GL_RENDERBUFFER_SAMPLES_ANGLE", + }, + { + 0x8CAC, + "GL_DEPTH_COMPONENT32F", + }, + { + 0x8057, + "GL_RGB5_A1", + }, + { + 0x8056, + "GL_RGBA4", + }, + { + 0x8232, + "GL_R8UI", + }, + { + 0x150A, + "GL_INVERT", + }, + { + 0x01000000, + "GL_MULTISAMPLE_BUFFER_BIT0_QCOM", + }, + { + 0x78ED, + "GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM", + }, + { + 0x78EE, + "GL_PIXEL_PACK_TRANSFER_BUFFER_BINDING_CHROMIUM", + }, + { + 0x6001, + "GL_TEXTURE_POOL_MANAGED_CHROMIUM", + }, + { + 0x0B45, + "GL_CULL_FACE_MODE", + }, + { + 0x8B92, + "GL_PALETTE4_R5_G6_B5_OES", + }, + { + 0x00100000, + "GL_STENCIL_BUFFER_BIT4_QCOM", + }, + { + 0x8E4E, + "GL_LAST_VERTEX_CONVENTION_EXT", + }, + { + 0x8E4D, + "GL_FIRST_VERTEX_CONVENTION_EXT", + }, + { + 0x8E24, + "GL_TRANSFORM_FEEDBACK_ACTIVE", + }, + { + 0x8E45, + "GL_TEXTURE_SWIZZLE_A", + }, + { + 0x8E44, + "GL_TEXTURE_SWIZZLE_B", + }, + { + 0x8E43, + "GL_TEXTURE_SWIZZLE_G", + }, + { + 0x8E42, + "GL_TEXTURE_SWIZZLE_R", + }, + { + 0x8D20, + "GL_STENCIL_ATTACHMENT", + }, + { + 0x8B91, + "GL_PALETTE4_RGBA8_OES", + }, + { + 0x00000200, + "GL_DEPTH_BUFFER_BIT1_QCOM", + }, + { + 0x00008000, + "GL_COVERAGE_BUFFER_BIT_NV", + }, + { + 0x1506, + "GL_XOR_NV", + }, + { + 0x8CA8, + "GL_READ_FRAMEBUFFER_ANGLE", + }, + { + 0x8CA9, + "GL_DRAW_FRAMEBUFFER_ANGLE", + }, + { + 0x8CA6, + "GL_FRAMEBUFFER_BINDING", + }, + { + 0x8CA7, + "GL_RENDERBUFFER_BINDING", + }, + { + 0x8CA4, + "GL_STENCIL_BACK_VALUE_MASK", + }, + { + 0x8CA5, + "GL_STENCIL_BACK_WRITEMASK", + }, + { + 0x8B90, + "GL_PALETTE4_RGB8_OES", + }, + { + 0x8CA3, + "GL_STENCIL_BACK_REF", + }, + { + 0x80E8, + "GL_MAX_ELEMENTS_VERTICES", + }, + { + 0x80CB, + "GL_BLEND_SRC_ALPHA", + }, + { + 0x80CA, + "GL_BLEND_DST_ALPHA", + }, + { + 0x8CE7, + "GL_COLOR_ATTACHMENT7_EXT", + }, + { + 0x93B0, + "GL_COMPRESSED_RGBA_ASTC_4x4_KHR", + }, + { + 0x93B1, + "GL_COMPRESSED_RGBA_ASTC_5x4_KHR", + }, + { + 0x93B2, + "GL_COMPRESSED_RGBA_ASTC_5x5_KHR", + }, + { + 0x93B3, + "GL_COMPRESSED_RGBA_ASTC_6x5_KHR", + }, + { + 0x93B4, + "GL_COMPRESSED_RGBA_ASTC_6x6_KHR", + }, + { + 0x93B5, + "GL_COMPRESSED_RGBA_ASTC_8x5_KHR", + }, + { + 0x93B6, + "GL_COMPRESSED_RGBA_ASTC_8x6_KHR", + }, + { + 0x93B7, + "GL_COMPRESSED_RGBA_ASTC_8x8_KHR", + }, + { + 0x8CD6, + "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT", + }, + { + 0x93B9, + "GL_COMPRESSED_RGBA_ASTC_10x6_KHR", + }, + { + 0x80E9, + "GL_MAX_ELEMENTS_INDICES", + }, + { + 0x8CE5, + "GL_COLOR_ATTACHMENT5_EXT", + }, + { + 0x8C84, + "GL_TRANSFORM_FEEDBACK_BUFFER_START", + }, + { + 0x8DC2, + "GL_SAMPLER_BUFFER_EXT", + }, + { + 0x8C36, + "GL_SAMPLE_SHADING_OES", + }, + { + 0x8C37, + "GL_MIN_SAMPLE_SHADING_VALUE_OES", + }, + { + 0x8F97, + "GL_RGBA8_SNORM", + }, + { + 0x8CE9, + "GL_COLOR_ATTACHMENT9_EXT", + }, + { + 0x8DAD, + "GL_FLOAT_32_UNSIGNED_INT_24_8_REV", + }, + { + 0x8B96, + "GL_PALETTE8_RGBA8_OES", + }, + { + 0x8872, + "GL_MAX_TEXTURE_IMAGE_UNITS", + }, + { + 0x8DC6, + "GL_UNSIGNED_INT_VEC2", + }, + { + 0x8905, + "GL_MAX_PROGRAM_TEXEL_OFFSET", + }, + { + 0x8508, + "GL_DECR_WRAP", + }, + { + 0x92AD, + "GL_HSL_HUE_KHR", + }, + { + 0x92AE, + "GL_HSL_SATURATION_KHR", + }, + { + 0x92AF, + "GL_HSL_COLOR_KHR", + }, + { + 0x8BD4, + "GL_TEXTURE_DEPTH_QCOM", + }, + { + 0x8DC4, + "GL_SAMPLER_2D_ARRAY_SHADOW_NV", + }, + { + 0x8507, + "GL_INCR_WRAP", + }, + { + 0x82FC, + "GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR", + }, + { + 0x8895, + "GL_ELEMENT_ARRAY_BUFFER_BINDING", + }, + { + 0x8894, + "GL_ARRAY_BUFFER_BINDING", + }, + { + 0x92A3, + "GL_INVERT_RGB_NV", + }, + { + 0x905F, + "GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT", + }, + { + 0x92A5, + "GL_LINEARBURN_NV", + }, + { + 0x8893, + "GL_ELEMENT_ARRAY_BUFFER", + }, + { + 0x8892, + "GL_ARRAY_BUFFER", + }, + { + 0x92A8, + "GL_PINLIGHT_NV", + }, + { + 0x92A9, + "GL_HARDMIX_NV", + }, + { + 0x9112, + "GL_OBJECT_TYPE_APPLE", + }, + { + 0x90CC, + "GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT", + }, + { + 0x90CD, + "GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT", + }, + { + 0x919F, + "GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT", + }, + { + 0x919E, + "GL_TEXTURE_BUFFER_SIZE_EXT", + }, + { + 0x919D, + "GL_TEXTURE_BUFFER_OFFSET_EXT", + }, + { + 0x8BD8, + "GL_TEXTURE_IMAGE_VALID_QCOM", + }, + { + 0x9278, + "GL_COMPRESSED_RGBA8_ETC2_EAC", + }, + { + 0x9279, + "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", + }, + { + 0x8DA7, + "GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT", + }, + { + 0x9272, + "GL_COMPRESSED_RG11_EAC", + }, + { + 0x8DA8, + "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT", + }, + { + 0x9270, + "GL_COMPRESSED_R11_EAC", + }, + { + 0x9271, + "GL_COMPRESSED_SIGNED_R11_EAC", + }, + { + 0x9276, + "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", + }, + { + 0x887F, + "GL_GEOMETRY_SHADER_INVOCATIONS_EXT", + }, + { + 0x8A3B, + "GL_UNIFORM_OFFSET", + }, + { + 0x9275, + "GL_COMPRESSED_SRGB8_ETC2", + }, + { + 0x84D5, + "GL_TEXTURE21", + }, + { + 0x8C3A, + "GL_R11F_G11F_B10F_APPLE", + }, + { + 0x8C3B, + "GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE", + }, + { + 0x8C3D, + "GL_RGB9_E5_APPLE", + }, + { + 0x8C3E, + "GL_UNSIGNED_INT_5_9_9_9_REV_APPLE", + }, + { + 0x9287, + "GL_DST_NV", + }, + { + 0x93BA, + "GL_COMPRESSED_RGBA_ASTC_10x8_KHR", + }, + { + 0x9285, + "GL_BLEND_ADVANCED_COHERENT_KHR", + }, + { + 0x93BC, + "GL_COMPRESSED_RGBA_ASTC_12x10_KHR", + }, + { + 0x93BD, + "GL_COMPRESSED_RGBA_ASTC_12x12_KHR", + }, + { + 0x84E8, + "GL_MAX_RENDERBUFFER_SIZE", + }, + { + 0x9281, + "GL_BLEND_OVERLAP_NV", + }, + { + 0x9280, + "GL_BLEND_PREMULTIPLIED_SRC_NV", + }, + { + 0x00002000, + "GL_DEPTH_BUFFER_BIT5_QCOM", + }, + { + 0x8370, + "GL_MIRRORED_REPEAT", + }, + { + 0x84E0, + "GL_ACTIVE_TEXTURE", + }, + { + 0x8800, + "GL_STENCIL_BACK_FUNC", + }, + { + 0x8801, + "GL_STENCIL_BACK_FAIL", + }, + { + 0x0D33, + "GL_MAX_TEXTURE_SIZE", + }, + { + 0x0D32, + "GL_MAX_CLIP_DISTANCES_APPLE", + }, + { + 0x8624, + "GL_VERTEX_ATTRIB_ARRAY_STRIDE", + }, + { + 0x8625, + "GL_VERTEX_ATTRIB_ARRAY_TYPE", + }, + { + 0x8622, + "GL_VERTEX_ATTRIB_ARRAY_ENABLED", + }, + { + 0x8623, + "GL_VERTEX_ATTRIB_ARRAY_SIZE", + }, + { + 0x8DB9, + "GL_FRAMEBUFFER_SRGB_EXT", + }, + { + 0x9307, + "GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT", + }, + { + 0x8259, + "GL_ACTIVE_PROGRAM_EXT", + }, + { + 0x8258, + "GL_PROGRAM_SEPARABLE_EXT", + }, + { + 0x8257, + "GL_PROGRAM_BINARY_RETRIEVABLE_HINT", + }, + { + 0x8256, + "GL_RESET_NOTIFICATION_STRATEGY_KHR", + }, + { + 0x8255, + "GL_UNKNOWN_CONTEXT_RESET_KHR", + }, + { + 0x8254, + "GL_INNOCENT_CONTEXT_RESET_KHR", + }, + { + 0x1100, + "GL_DONT_CARE", + }, + { + 0x1101, + "GL_FASTEST", + }, + { + 0x1102, + "GL_NICEST", + }, + { + 0x8250, + "GL_DEBUG_TYPE_PERFORMANCE_KHR", + }, + { + 0x8CEB, + "GL_COLOR_ATTACHMENT11_EXT", + }, + { + 0x8CEC, + "GL_COLOR_ATTACHMENT12_EXT", + }, + { + 0x0408, + "GL_FRONT_AND_BACK", + }, + { + 0x8CEA, + "GL_COLOR_ATTACHMENT10_EXT", + }, + { + 0x8CEF, + "GL_COLOR_ATTACHMENT15_EXT", + }, + { + 0x8CED, + "GL_COLOR_ATTACHMENT13_EXT", + }, + { + 0x8829, + "GL_DRAW_BUFFER4_EXT", + }, + { + 0x0404, + "GL_FRONT", + }, + { + 0x0405, + "GL_BACK", + }, + { + 0x88E1, + "GL_STREAM_READ", + }, + { + 0x88E0, + "GL_STREAM_DRAW", + }, + { + 0x88E2, + "GL_STREAM_COPY", + }, + { + 0x88E5, + "GL_STATIC_READ", + }, + { + 0x88E4, + "GL_STATIC_DRAW", + }, + { + 0x93C6, + "GL_COMPRESSED_RGBA_ASTC_5x5x5_OES", + }, + { + 0x88E9, + "GL_DYNAMIC_READ", + }, + { + 0x88E8, + "GL_DYNAMIC_DRAW", + }, + { + 0x9291, + "GL_PLUS_NV", + }, + { + 0x8CAA, + "GL_READ_FRAMEBUFFER_BINDING_ANGLE", + }, + { + 0x93C5, + "GL_COMPRESSED_RGBA_ASTC_5x5x4_OES", + }, + { + 0x40000000, + "GL_MULTISAMPLE_BUFFER_BIT6_QCOM", + }, + { + 0x88EA, + "GL_DYNAMIC_COPY", + }, + { + 0x9116, + "GL_SYNC_FENCE_APPLE", + }, + { + 0x93C4, + "GL_COMPRESSED_RGBA_ASTC_5x4x4_OES", + }, + { + 0x88EE, + "GL_ETC1_SRGB8_NV", + }, + { + 0x78EC, + "GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM", + }, + { + 0x88EF, + "GL_PIXEL_UNPACK_BUFFER_BINDING", + }, + { + 0x93C3, + "GL_COMPRESSED_RGBA_ASTC_4x4x4_OES", + }, + { + 0x00000800, + "GL_DEPTH_BUFFER_BIT3_QCOM", + }, + { + 0x1903, + "GL_RED_EXT", + }, + { + 0x93C2, + "GL_COMPRESSED_RGBA_ASTC_4x4x3_OES", + }, + { + 0x8CE2, + "GL_COLOR_ATTACHMENT2_EXT", + }, + { + 0x8BC1, + "GL_COUNTER_RANGE_AMD", + }, + { + 0x8CE0, + "GL_COLOR_ATTACHMENT0", + }, + { + 0x8CE1, + "GL_COLOR_ATTACHMENT1_EXT", + }, + { + 0x8CE6, + "GL_COLOR_ATTACHMENT6_EXT", + }, + { + 0x93C1, + "GL_COMPRESSED_RGBA_ASTC_4x3x3_OES", + }, + { + 0x8A1F, + "GL_RGB_422_APPLE", + }, + { + 0x93DC, + "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR", + }, + { + 0x9292, + "GL_PLUS_DARKER_NV", + }, + { + 0x8CE8, + "GL_COLOR_ATTACHMENT8_EXT", + }, + { + 0x93C0, + "GL_COMPRESSED_RGBA_ASTC_3x3x3_OES", + }, + { + 0x0C23, + "GL_COLOR_WRITEMASK", + }, + { + 0x0C22, + "GL_COLOR_CLEAR_VALUE", + }, + { + 0x8A11, + "GL_UNIFORM_BUFFER", + }, + { + 0x8823, + "GL_WRITEONLY_RENDERING_QCOM", + }, + { + 0x8824, + "GL_MAX_DRAW_BUFFERS_EXT", + }, + { + 0x825E, + "GL_LAYER_PROVOKING_VERTEX_EXT", + }, + { + 0x825A, + "GL_PROGRAM_PIPELINE_BINDING_EXT", + }, + { + 0x1909, + "GL_LUMINANCE", + }, + { + 0x0D3A, + "GL_MAX_VIEWPORT_DIMS", + }, + { + 0x8B53, + "GL_INT_VEC2", + }, + { + 0x8826, + "GL_DRAW_BUFFER1_EXT", + }, + { + 0x809E, + "GL_SAMPLE_ALPHA_TO_COVERAGE", + }, + { + 0x8BC0, + "GL_COUNTER_TYPE_AMD", + }, + { + 0x8BC3, + "GL_PERCENTAGE_AMD", + }, + { + 0x8BC2, + "GL_UNSIGNED_INT64_AMD", + }, + { + 0x8BC5, + "GL_PERFMON_RESULT_SIZE_AMD", + }, + { + 0x8BC4, + "GL_PERFMON_RESULT_AVAILABLE_AMD", + }, + { + 0x8BC6, + "GL_PERFMON_RESULT_AMD", + }, +}; + +const GLEnums::EnumToString* const GLEnums::enum_to_string_table_ = + enum_to_string_table; +const size_t GLEnums::enum_to_string_table_len_ = + sizeof(enum_to_string_table) / sizeof(enum_to_string_table[0]);
diff --git a/ui/gl/gl_implementation_ozone.cc b/ui/gl/gl_implementation_ozone.cc new file mode 100644 index 0000000..43b3b04 --- /dev/null +++ b/ui/gl/gl_implementation_ozone.cc
@@ -0,0 +1,121 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/bind.h" +#include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_context_stub_with_extensions.h" +#include "ui/gl/gl_egl_api_implementation.h" +#include "ui/gl/gl_gl_api_implementation.h" +#include "ui/gl/gl_implementation.h" +#include "ui/gl/gl_implementation_osmesa.h" +#include "ui/gl/gl_osmesa_api_implementation.h" +#include "ui/ozone/public/ozone_platform.h" +#include "ui/ozone/public/surface_factory_ozone.h" + +namespace gfx { + +namespace { + +void GL_BINDING_CALL MarshalClearDepthToClearDepthf(GLclampd depth) { + glClearDepthf(static_cast<GLclampf>(depth)); +} + +void GL_BINDING_CALL MarshalDepthRangeToDepthRangef(GLclampd z_near, + GLclampd z_far) { + glDepthRangef(static_cast<GLclampf>(z_near), static_cast<GLclampf>(z_far)); +} + +} // namespace + +void GetAllowedGLImplementations(std::vector<GLImplementation>* impls) { + impls->push_back(kGLImplementationEGLGLES2); + impls->push_back(kGLImplementationOSMesaGL); +} + +bool InitializeStaticGLBindings(GLImplementation implementation) { + // Prevent reinitialization with a different implementation. Once the gpu + // unit tests have initialized with kGLImplementationMock, we don't want to + // later switch to another GL implementation. + DCHECK_EQ(kGLImplementationNone, GetGLImplementation()); + ui::OzonePlatform::InitializeForGPU(); + + switch (implementation) { + case kGLImplementationOSMesaGL: + return InitializeStaticGLBindingsOSMesaGL(); + case kGLImplementationEGLGLES2: + if (!ui::SurfaceFactoryOzone::GetInstance()->LoadEGLGLES2Bindings( + base::Bind(&AddGLNativeLibrary), + base::Bind(&SetGLGetProcAddressProc))) + return false; + SetGLImplementation(kGLImplementationEGLGLES2); + InitializeStaticGLBindingsGL(); + InitializeStaticGLBindingsEGL(); + + // These two functions take single precision float rather than double + // precision float parameters in GLES. + ::gfx::g_driver_gl.fn.glClearDepthFn = MarshalClearDepthToClearDepthf; + ::gfx::g_driver_gl.fn.glDepthRangeFn = MarshalDepthRangeToDepthRangef; + break; + case kGLImplementationMockGL: { + SetGLImplementation(kGLImplementationMockGL); + InitializeStaticGLBindingsGL(); + break; + } + default: + NOTIMPLEMENTED() + << "Unsupported GL type for Ozone surface implementation"; + return false; + } + + return true; +} + +bool InitializeDynamicGLBindings(GLImplementation implementation, + GLContext* context) { + switch (implementation) { + case kGLImplementationOSMesaGL: + InitializeDynamicGLBindingsGL(context); + InitializeDynamicGLBindingsOSMESA(context); + break; + case kGLImplementationEGLGLES2: + InitializeDynamicGLBindingsGL(context); + InitializeDynamicGLBindingsEGL(context); + break; + case kGLImplementationMockGL: + if (!context) { + scoped_refptr<GLContextStubWithExtensions> mock_context( + new GLContextStubWithExtensions()); + mock_context->SetGLVersionString("3.0"); + InitializeDynamicGLBindingsGL(mock_context.get()); + } else + InitializeDynamicGLBindingsGL(context); + break; + default: + return false; + } + + return true; +} + +void InitializeDebugGLBindings() { +} + +void ClearGLBindings() { + ClearGLBindingsEGL(); + ClearGLBindingsGL(); + SetGLImplementation(kGLImplementationNone); + UnloadGLNativeLibraries(); +} + +bool GetGLWindowSystemBindingInfo(GLWindowSystemBindingInfo* info) { + switch (GetGLImplementation()) { + case kGLImplementationEGLGLES2: + return GetGLWindowSystemBindingInfoEGL(info); + default: + return false; + } + return false; +} + +} // namespace gfx
diff --git a/ui/gl/gl_mock_autogen_gl.h b/ui/gl/gl_mock_autogen_gl.h new file mode 100644 index 0000000..470de01 --- /dev/null +++ b/ui/gl/gl_mock_autogen_gl.h
@@ -0,0 +1,709 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is auto-generated from +// ui/gl/generate_bindings.py +// It's formatted by clang-format using chromium coding style: +// clang-format -i -style=chromium filename +// DO NOT EDIT! + +MOCK_METHOD1(ActiveTexture, void(GLenum texture)); +MOCK_METHOD2(AttachShader, void(GLuint program, GLuint shader)); +MOCK_METHOD2(BeginQuery, void(GLenum target, GLuint id)); +MOCK_METHOD2(BeginQueryARB, void(GLenum target, GLuint id)); +MOCK_METHOD1(BeginTransformFeedback, void(GLenum primitiveMode)); +MOCK_METHOD3(BindAttribLocation, + void(GLuint program, GLuint index, const char* name)); +MOCK_METHOD2(BindBuffer, void(GLenum target, GLuint buffer)); +MOCK_METHOD3(BindBufferBase, void(GLenum target, GLuint index, GLuint buffer)); +MOCK_METHOD5(BindBufferRange, + void(GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size)); +MOCK_METHOD3(BindFragDataLocation, + void(GLuint program, GLuint colorNumber, const char* name)); +MOCK_METHOD4( + BindFragDataLocationIndexed, + void(GLuint program, GLuint colorNumber, GLuint index, const char* name)); +MOCK_METHOD2(BindFramebufferEXT, void(GLenum target, GLuint framebuffer)); +MOCK_METHOD2(BindRenderbufferEXT, void(GLenum target, GLuint renderbuffer)); +MOCK_METHOD2(BindSampler, void(GLuint unit, GLuint sampler)); +MOCK_METHOD2(BindTexture, void(GLenum target, GLuint texture)); +MOCK_METHOD2(BindTransformFeedback, void(GLenum target, GLuint id)); +MOCK_METHOD1(BindVertexArrayOES, void(GLuint array)); +MOCK_METHOD0(BlendBarrierKHR, void()); +MOCK_METHOD4(BlendColor, + void(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)); +MOCK_METHOD1(BlendEquation, void(GLenum mode)); +MOCK_METHOD2(BlendEquationSeparate, void(GLenum modeRGB, GLenum modeAlpha)); +MOCK_METHOD2(BlendFunc, void(GLenum sfactor, GLenum dfactor)); +MOCK_METHOD4( + BlendFuncSeparate, + void(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)); +MOCK_METHOD10(BlitFramebuffer, + void(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter)); +MOCK_METHOD10(BlitFramebufferANGLE, + void(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter)); +MOCK_METHOD10(BlitFramebufferEXT, + void(GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter)); +MOCK_METHOD4( + BufferData, + void(GLenum target, GLsizeiptr size, const void* data, GLenum usage)); +MOCK_METHOD4( + BufferSubData, + void(GLenum target, GLintptr offset, GLsizeiptr size, const void* data)); +MOCK_METHOD1(CheckFramebufferStatusEXT, GLenum(GLenum target)); +MOCK_METHOD1(Clear, void(GLbitfield mask)); +MOCK_METHOD4( + ClearBufferfi, + void(GLenum buffer, GLint drawbuffer, const GLfloat depth, GLint stencil)); +MOCK_METHOD3(ClearBufferfv, + void(GLenum buffer, GLint drawbuffer, const GLfloat* value)); +MOCK_METHOD3(ClearBufferiv, + void(GLenum buffer, GLint drawbuffer, const GLint* value)); +MOCK_METHOD3(ClearBufferuiv, + void(GLenum buffer, GLint drawbuffer, const GLuint* value)); +MOCK_METHOD4(ClearColor, + void(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)); +MOCK_METHOD1(ClearDepth, void(GLclampd depth)); +MOCK_METHOD1(ClearDepthf, void(GLclampf depth)); +MOCK_METHOD1(ClearStencil, void(GLint s)); +MOCK_METHOD3(ClientWaitSync, + GLenum(GLsync sync, GLbitfield flags, GLuint64 timeout)); +MOCK_METHOD4( + ColorMask, + void(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)); +MOCK_METHOD1(CompileShader, void(GLuint shader)); +MOCK_METHOD8(CompressedTexImage2D, + void(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data)); +MOCK_METHOD9(CompressedTexImage3D, + void(GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data)); +MOCK_METHOD9(CompressedTexSubImage2D, + void(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data)); +MOCK_METHOD5(CopyBufferSubData, + void(GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size)); +MOCK_METHOD8(CopyTexImage2D, + void(GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border)); +MOCK_METHOD8(CopyTexSubImage2D, + void(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height)); +MOCK_METHOD9(CopyTexSubImage3D, + void(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height)); +MOCK_METHOD0(CreateProgram, GLuint()); +MOCK_METHOD1(CreateShader, GLuint(GLenum type)); +MOCK_METHOD1(CullFace, void(GLenum mode)); +MOCK_METHOD2(DeleteBuffersARB, void(GLsizei n, const GLuint* buffers)); +MOCK_METHOD2(DeleteFencesAPPLE, void(GLsizei n, const GLuint* fences)); +MOCK_METHOD2(DeleteFencesNV, void(GLsizei n, const GLuint* fences)); +MOCK_METHOD2(DeleteFramebuffersEXT, + void(GLsizei n, const GLuint* framebuffers)); +MOCK_METHOD1(DeleteProgram, void(GLuint program)); +MOCK_METHOD2(DeleteQueries, void(GLsizei n, const GLuint* ids)); +MOCK_METHOD2(DeleteQueriesARB, void(GLsizei n, const GLuint* ids)); +MOCK_METHOD2(DeleteRenderbuffersEXT, + void(GLsizei n, const GLuint* renderbuffers)); +MOCK_METHOD2(DeleteSamplers, void(GLsizei n, const GLuint* samplers)); +MOCK_METHOD1(DeleteShader, void(GLuint shader)); +MOCK_METHOD1(DeleteSync, void(GLsync sync)); +MOCK_METHOD2(DeleteTextures, void(GLsizei n, const GLuint* textures)); +MOCK_METHOD2(DeleteTransformFeedbacks, void(GLsizei n, const GLuint* ids)); +MOCK_METHOD2(DeleteVertexArraysOES, void(GLsizei n, const GLuint* arrays)); +MOCK_METHOD1(DepthFunc, void(GLenum func)); +MOCK_METHOD1(DepthMask, void(GLboolean flag)); +MOCK_METHOD2(DepthRange, void(GLclampd zNear, GLclampd zFar)); +MOCK_METHOD2(DepthRangef, void(GLclampf zNear, GLclampf zFar)); +MOCK_METHOD2(DetachShader, void(GLuint program, GLuint shader)); +MOCK_METHOD1(Disable, void(GLenum cap)); +MOCK_METHOD1(DisableVertexAttribArray, void(GLuint index)); +MOCK_METHOD3(DiscardFramebufferEXT, + void(GLenum target, + GLsizei numAttachments, + const GLenum* attachments)); +MOCK_METHOD3(DrawArrays, void(GLenum mode, GLint first, GLsizei count)); +MOCK_METHOD4(DrawArraysInstancedANGLE, + void(GLenum mode, GLint first, GLsizei count, GLsizei primcount)); +MOCK_METHOD1(DrawBuffer, void(GLenum mode)); +MOCK_METHOD2(DrawBuffersARB, void(GLsizei n, const GLenum* bufs)); +MOCK_METHOD4( + DrawElements, + void(GLenum mode, GLsizei count, GLenum type, const void* indices)); +MOCK_METHOD5(DrawElementsInstancedANGLE, + void(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount)); +MOCK_METHOD6(DrawRangeElements, + void(GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices)); +MOCK_METHOD2(EGLImageTargetRenderbufferStorageOES, + void(GLenum target, GLeglImageOES image)); +MOCK_METHOD2(EGLImageTargetTexture2DOES, + void(GLenum target, GLeglImageOES image)); +MOCK_METHOD1(Enable, void(GLenum cap)); +MOCK_METHOD1(EnableVertexAttribArray, void(GLuint index)); +MOCK_METHOD1(EndQuery, void(GLenum target)); +MOCK_METHOD1(EndQueryARB, void(GLenum target)); +MOCK_METHOD0(EndTransformFeedback, void()); +MOCK_METHOD2(FenceSync, GLsync(GLenum condition, GLbitfield flags)); +MOCK_METHOD0(Finish, void()); +MOCK_METHOD1(FinishFenceAPPLE, void(GLuint fence)); +MOCK_METHOD1(FinishFenceNV, void(GLuint fence)); +MOCK_METHOD0(Flush, void()); +MOCK_METHOD3(FlushMappedBufferRange, + void(GLenum target, GLintptr offset, GLsizeiptr length)); +MOCK_METHOD4(FramebufferRenderbufferEXT, + void(GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer)); +MOCK_METHOD5(FramebufferTexture2DEXT, + void(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level)); +MOCK_METHOD6(FramebufferTexture2DMultisampleEXT, + void(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples)); +MOCK_METHOD6(FramebufferTexture2DMultisampleIMG, + void(GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLsizei samples)); +MOCK_METHOD5(FramebufferTextureLayer, + void(GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer)); +MOCK_METHOD1(FrontFace, void(GLenum mode)); +MOCK_METHOD2(GenBuffersARB, void(GLsizei n, GLuint* buffers)); +MOCK_METHOD1(GenerateMipmapEXT, void(GLenum target)); +MOCK_METHOD2(GenFencesAPPLE, void(GLsizei n, GLuint* fences)); +MOCK_METHOD2(GenFencesNV, void(GLsizei n, GLuint* fences)); +MOCK_METHOD2(GenFramebuffersEXT, void(GLsizei n, GLuint* framebuffers)); +MOCK_METHOD2(GenQueries, void(GLsizei n, GLuint* ids)); +MOCK_METHOD2(GenQueriesARB, void(GLsizei n, GLuint* ids)); +MOCK_METHOD2(GenRenderbuffersEXT, void(GLsizei n, GLuint* renderbuffers)); +MOCK_METHOD2(GenSamplers, void(GLsizei n, GLuint* samplers)); +MOCK_METHOD2(GenTextures, void(GLsizei n, GLuint* textures)); +MOCK_METHOD2(GenTransformFeedbacks, void(GLsizei n, GLuint* ids)); +MOCK_METHOD2(GenVertexArraysOES, void(GLsizei n, GLuint* arrays)); +MOCK_METHOD7(GetActiveAttrib, + void(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name)); +MOCK_METHOD7(GetActiveUniform, + void(GLuint program, + GLuint index, + GLsizei bufsize, + GLsizei* length, + GLint* size, + GLenum* type, + char* name)); +MOCK_METHOD4(GetActiveUniformBlockiv, + void(GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params)); +MOCK_METHOD5(GetActiveUniformBlockName, + void(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + char* uniformBlockName)); +MOCK_METHOD5(GetActiveUniformsiv, + void(GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params)); +MOCK_METHOD4( + GetAttachedShaders, + void(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)); +MOCK_METHOD2(GetAttribLocation, GLint(GLuint program, const char* name)); +MOCK_METHOD2(GetBooleanv, void(GLenum pname, GLboolean* params)); +MOCK_METHOD3(GetBufferParameteriv, + void(GLenum target, GLenum pname, GLint* params)); +MOCK_METHOD0(GetError, GLenum()); +MOCK_METHOD3(GetFenceivNV, void(GLuint fence, GLenum pname, GLint* params)); +MOCK_METHOD2(GetFloatv, void(GLenum pname, GLfloat* params)); +MOCK_METHOD2(GetFragDataLocation, GLint(GLuint program, const char* name)); +MOCK_METHOD4( + GetFramebufferAttachmentParameterivEXT, + void(GLenum target, GLenum attachment, GLenum pname, GLint* params)); +MOCK_METHOD0(GetGraphicsResetStatusARB, GLenum()); +MOCK_METHOD3(GetInteger64i_v, void(GLenum target, GLuint index, GLint64* data)); +MOCK_METHOD2(GetInteger64v, void(GLenum pname, GLint64* params)); +MOCK_METHOD3(GetIntegeri_v, void(GLenum target, GLuint index, GLint* data)); +MOCK_METHOD2(GetIntegerv, void(GLenum pname, GLint* params)); +MOCK_METHOD5(GetInternalformativ, + void(GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei bufSize, + GLint* params)); +MOCK_METHOD5(GetProgramBinary, + void(GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + GLvoid* binary)); +MOCK_METHOD4( + GetProgramInfoLog, + void(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)); +MOCK_METHOD3(GetProgramiv, void(GLuint program, GLenum pname, GLint* params)); +MOCK_METHOD3(GetQueryiv, void(GLenum target, GLenum pname, GLint* params)); +MOCK_METHOD3(GetQueryivARB, void(GLenum target, GLenum pname, GLint* params)); +MOCK_METHOD3(GetQueryObjecti64v, + void(GLuint id, GLenum pname, GLint64* params)); +MOCK_METHOD3(GetQueryObjectiv, void(GLuint id, GLenum pname, GLint* params)); +MOCK_METHOD3(GetQueryObjectivARB, void(GLuint id, GLenum pname, GLint* params)); +MOCK_METHOD3(GetQueryObjectui64v, + void(GLuint id, GLenum pname, GLuint64* params)); +MOCK_METHOD3(GetQueryObjectuiv, void(GLuint id, GLenum pname, GLuint* params)); +MOCK_METHOD3(GetQueryObjectuivARB, + void(GLuint id, GLenum pname, GLuint* params)); +MOCK_METHOD3(GetRenderbufferParameterivEXT, + void(GLenum target, GLenum pname, GLint* params)); +MOCK_METHOD3(GetSamplerParameterfv, + void(GLuint sampler, GLenum pname, GLfloat* params)); +MOCK_METHOD3(GetSamplerParameteriv, + void(GLuint sampler, GLenum pname, GLint* params)); +MOCK_METHOD4( + GetShaderInfoLog, + void(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)); +MOCK_METHOD3(GetShaderiv, void(GLuint shader, GLenum pname, GLint* params)); +MOCK_METHOD4(GetShaderPrecisionFormat, + void(GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision)); +MOCK_METHOD4( + GetShaderSource, + void(GLuint shader, GLsizei bufsize, GLsizei* length, char* source)); +MOCK_METHOD1(GetString, const GLubyte*(GLenum name)); +MOCK_METHOD5(GetSynciv, + void(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values)); +MOCK_METHOD4(GetTexLevelParameterfv, + void(GLenum target, GLint level, GLenum pname, GLfloat* params)); +MOCK_METHOD4(GetTexLevelParameteriv, + void(GLenum target, GLint level, GLenum pname, GLint* params)); +MOCK_METHOD3(GetTexParameterfv, + void(GLenum target, GLenum pname, GLfloat* params)); +MOCK_METHOD3(GetTexParameteriv, + void(GLenum target, GLenum pname, GLint* params)); +MOCK_METHOD6(GetTransformFeedbackVarying, + void(GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLenum* type, + char* name)); +MOCK_METHOD4( + GetTranslatedShaderSourceANGLE, + void(GLuint shader, GLsizei bufsize, GLsizei* length, char* source)); +MOCK_METHOD2(GetUniformBlockIndex, + GLuint(GLuint program, const char* uniformBlockName)); +MOCK_METHOD3(GetUniformfv, + void(GLuint program, GLint location, GLfloat* params)); +MOCK_METHOD4(GetUniformIndices, + void(GLuint program, + GLsizei uniformCount, + const char* const* uniformNames, + GLuint* uniformIndices)); +MOCK_METHOD3(GetUniformiv, void(GLuint program, GLint location, GLint* params)); +MOCK_METHOD2(GetUniformLocation, GLint(GLuint program, const char* name)); +MOCK_METHOD3(GetVertexAttribfv, + void(GLuint index, GLenum pname, GLfloat* params)); +MOCK_METHOD3(GetVertexAttribiv, + void(GLuint index, GLenum pname, GLint* params)); +MOCK_METHOD3(GetVertexAttribPointerv, + void(GLuint index, GLenum pname, void** pointer)); +MOCK_METHOD2(Hint, void(GLenum target, GLenum mode)); +MOCK_METHOD2(InsertEventMarkerEXT, void(GLsizei length, const char* marker)); +MOCK_METHOD3(InvalidateFramebuffer, + void(GLenum target, + GLsizei numAttachments, + const GLenum* attachments)); +MOCK_METHOD7(InvalidateSubFramebuffer, + void(GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLint width, + GLint height)); +MOCK_METHOD1(IsBuffer, GLboolean(GLuint buffer)); +MOCK_METHOD1(IsEnabled, GLboolean(GLenum cap)); +MOCK_METHOD1(IsFenceAPPLE, GLboolean(GLuint fence)); +MOCK_METHOD1(IsFenceNV, GLboolean(GLuint fence)); +MOCK_METHOD1(IsFramebufferEXT, GLboolean(GLuint framebuffer)); +MOCK_METHOD1(IsProgram, GLboolean(GLuint program)); +MOCK_METHOD1(IsQuery, GLboolean(GLuint query)); +MOCK_METHOD1(IsQueryARB, GLboolean(GLuint query)); +MOCK_METHOD1(IsRenderbufferEXT, GLboolean(GLuint renderbuffer)); +MOCK_METHOD1(IsSampler, GLboolean(GLuint sampler)); +MOCK_METHOD1(IsShader, GLboolean(GLuint shader)); +MOCK_METHOD1(IsSync, GLboolean(GLsync sync)); +MOCK_METHOD1(IsTexture, GLboolean(GLuint texture)); +MOCK_METHOD1(IsTransformFeedback, GLboolean(GLuint id)); +MOCK_METHOD1(IsVertexArrayOES, GLboolean(GLuint array)); +MOCK_METHOD1(LineWidth, void(GLfloat width)); +MOCK_METHOD1(LinkProgram, void(GLuint program)); +MOCK_METHOD2(MapBuffer, void*(GLenum target, GLenum access)); +MOCK_METHOD4(MapBufferRange, + void*(GLenum target, + GLintptr offset, + GLsizeiptr length, + GLbitfield access)); +MOCK_METHOD2(MatrixLoadfEXT, void(GLenum matrixMode, const GLfloat* m)); +MOCK_METHOD1(MatrixLoadIdentityEXT, void(GLenum matrixMode)); +MOCK_METHOD0(PauseTransformFeedback, void()); +MOCK_METHOD2(PixelStorei, void(GLenum pname, GLint param)); +MOCK_METHOD2(PointParameteri, void(GLenum pname, GLint param)); +MOCK_METHOD2(PolygonOffset, void(GLfloat factor, GLfloat units)); +MOCK_METHOD0(PopGroupMarkerEXT, void()); +MOCK_METHOD4(ProgramBinary, + void(GLuint program, + GLenum binaryFormat, + const GLvoid* binary, + GLsizei length)); +MOCK_METHOD3(ProgramParameteri, + void(GLuint program, GLenum pname, GLint value)); +MOCK_METHOD2(PushGroupMarkerEXT, void(GLsizei length, const char* marker)); +MOCK_METHOD2(QueryCounter, void(GLuint id, GLenum target)); +MOCK_METHOD1(ReadBuffer, void(GLenum src)); +MOCK_METHOD7(ReadPixels, + void(GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels)); +MOCK_METHOD0(ReleaseShaderCompiler, void()); +MOCK_METHOD4( + RenderbufferStorageEXT, + void(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)); +MOCK_METHOD5(RenderbufferStorageMultisample, + void(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height)); +MOCK_METHOD5(RenderbufferStorageMultisampleANGLE, + void(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height)); +MOCK_METHOD5(RenderbufferStorageMultisampleEXT, + void(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height)); +MOCK_METHOD5(RenderbufferStorageMultisampleIMG, + void(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height)); +MOCK_METHOD0(ResumeTransformFeedback, void()); +MOCK_METHOD2(SampleCoverage, void(GLclampf value, GLboolean invert)); +MOCK_METHOD3(SamplerParameterf, + void(GLuint sampler, GLenum pname, GLfloat param)); +MOCK_METHOD3(SamplerParameterfv, + void(GLuint sampler, GLenum pname, const GLfloat* params)); +MOCK_METHOD3(SamplerParameteri, + void(GLuint sampler, GLenum pname, GLint param)); +MOCK_METHOD3(SamplerParameteriv, + void(GLuint sampler, GLenum pname, const GLint* params)); +MOCK_METHOD4(Scissor, void(GLint x, GLint y, GLsizei width, GLsizei height)); +MOCK_METHOD1(SetFenceAPPLE, void(GLuint fence)); +MOCK_METHOD2(SetFenceNV, void(GLuint fence, GLenum condition)); +MOCK_METHOD5(ShaderBinary, + void(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length)); +MOCK_METHOD4(ShaderSource, + void(GLuint shader, + GLsizei count, + const char* const* str, + const GLint* length)); +MOCK_METHOD3(StencilFunc, void(GLenum func, GLint ref, GLuint mask)); +MOCK_METHOD4(StencilFuncSeparate, + void(GLenum face, GLenum func, GLint ref, GLuint mask)); +MOCK_METHOD1(StencilMask, void(GLuint mask)); +MOCK_METHOD2(StencilMaskSeparate, void(GLenum face, GLuint mask)); +MOCK_METHOD3(StencilOp, void(GLenum fail, GLenum zfail, GLenum zpass)); +MOCK_METHOD4(StencilOpSeparate, + void(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)); +MOCK_METHOD1(TestFenceAPPLE, GLboolean(GLuint fence)); +MOCK_METHOD1(TestFenceNV, GLboolean(GLuint fence)); +MOCK_METHOD9(TexImage2D, + void(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels)); +MOCK_METHOD10(TexImage3D, + void(GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels)); +MOCK_METHOD3(TexParameterf, void(GLenum target, GLenum pname, GLfloat param)); +MOCK_METHOD3(TexParameterfv, + void(GLenum target, GLenum pname, const GLfloat* params)); +MOCK_METHOD3(TexParameteri, void(GLenum target, GLenum pname, GLint param)); +MOCK_METHOD3(TexParameteriv, + void(GLenum target, GLenum pname, const GLint* params)); +MOCK_METHOD5(TexStorage2DEXT, + void(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height)); +MOCK_METHOD6(TexStorage3D, + void(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth)); +MOCK_METHOD9(TexSubImage2D, + void(GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels)); +MOCK_METHOD4(TransformFeedbackVaryings, + void(GLuint program, + GLsizei count, + const char* const* varyings, + GLenum bufferMode)); +MOCK_METHOD2(Uniform1f, void(GLint location, GLfloat x)); +MOCK_METHOD3(Uniform1fv, void(GLint location, GLsizei count, const GLfloat* v)); +MOCK_METHOD2(Uniform1i, void(GLint location, GLint x)); +MOCK_METHOD3(Uniform1iv, void(GLint location, GLsizei count, const GLint* v)); +MOCK_METHOD2(Uniform1ui, void(GLint location, GLuint v0)); +MOCK_METHOD3(Uniform1uiv, void(GLint location, GLsizei count, const GLuint* v)); +MOCK_METHOD3(Uniform2f, void(GLint location, GLfloat x, GLfloat y)); +MOCK_METHOD3(Uniform2fv, void(GLint location, GLsizei count, const GLfloat* v)); +MOCK_METHOD3(Uniform2i, void(GLint location, GLint x, GLint y)); +MOCK_METHOD3(Uniform2iv, void(GLint location, GLsizei count, const GLint* v)); +MOCK_METHOD3(Uniform2ui, void(GLint location, GLuint v0, GLuint v1)); +MOCK_METHOD3(Uniform2uiv, void(GLint location, GLsizei count, const GLuint* v)); +MOCK_METHOD4(Uniform3f, void(GLint location, GLfloat x, GLfloat y, GLfloat z)); +MOCK_METHOD3(Uniform3fv, void(GLint location, GLsizei count, const GLfloat* v)); +MOCK_METHOD4(Uniform3i, void(GLint location, GLint x, GLint y, GLint z)); +MOCK_METHOD3(Uniform3iv, void(GLint location, GLsizei count, const GLint* v)); +MOCK_METHOD4(Uniform3ui, void(GLint location, GLuint v0, GLuint v1, GLuint v2)); +MOCK_METHOD3(Uniform3uiv, void(GLint location, GLsizei count, const GLuint* v)); +MOCK_METHOD5(Uniform4f, + void(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)); +MOCK_METHOD3(Uniform4fv, void(GLint location, GLsizei count, const GLfloat* v)); +MOCK_METHOD5(Uniform4i, + void(GLint location, GLint x, GLint y, GLint z, GLint w)); +MOCK_METHOD3(Uniform4iv, void(GLint location, GLsizei count, const GLint* v)); +MOCK_METHOD5(Uniform4ui, + void(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)); +MOCK_METHOD3(Uniform4uiv, void(GLint location, GLsizei count, const GLuint* v)); +MOCK_METHOD3(UniformBlockBinding, + void(GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding)); +MOCK_METHOD4(UniformMatrix2fv, + void(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value)); +MOCK_METHOD4(UniformMatrix2x3fv, + void(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value)); +MOCK_METHOD4(UniformMatrix2x4fv, + void(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value)); +MOCK_METHOD4(UniformMatrix3fv, + void(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value)); +MOCK_METHOD4(UniformMatrix3x2fv, + void(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value)); +MOCK_METHOD4(UniformMatrix3x4fv, + void(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value)); +MOCK_METHOD4(UniformMatrix4fv, + void(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value)); +MOCK_METHOD4(UniformMatrix4x2fv, + void(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value)); +MOCK_METHOD4(UniformMatrix4x3fv, + void(GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value)); +MOCK_METHOD1(UnmapBuffer, GLboolean(GLenum target)); +MOCK_METHOD1(UseProgram, void(GLuint program)); +MOCK_METHOD1(ValidateProgram, void(GLuint program)); +MOCK_METHOD2(VertexAttrib1f, void(GLuint indx, GLfloat x)); +MOCK_METHOD2(VertexAttrib1fv, void(GLuint indx, const GLfloat* values)); +MOCK_METHOD3(VertexAttrib2f, void(GLuint indx, GLfloat x, GLfloat y)); +MOCK_METHOD2(VertexAttrib2fv, void(GLuint indx, const GLfloat* values)); +MOCK_METHOD4(VertexAttrib3f, + void(GLuint indx, GLfloat x, GLfloat y, GLfloat z)); +MOCK_METHOD2(VertexAttrib3fv, void(GLuint indx, const GLfloat* values)); +MOCK_METHOD5(VertexAttrib4f, + void(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)); +MOCK_METHOD2(VertexAttrib4fv, void(GLuint indx, const GLfloat* values)); +MOCK_METHOD2(VertexAttribDivisorANGLE, void(GLuint index, GLuint divisor)); +MOCK_METHOD5(VertexAttribI4i, + void(GLuint indx, GLint x, GLint y, GLint z, GLint w)); +MOCK_METHOD2(VertexAttribI4iv, void(GLuint indx, const GLint* values)); +MOCK_METHOD5(VertexAttribI4ui, + void(GLuint indx, GLuint x, GLuint y, GLuint z, GLuint w)); +MOCK_METHOD2(VertexAttribI4uiv, void(GLuint indx, const GLuint* values)); +MOCK_METHOD5(VertexAttribIPointer, + void(GLuint indx, + GLint size, + GLenum type, + GLsizei stride, + const void* ptr)); +MOCK_METHOD6(VertexAttribPointer, + void(GLuint indx, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* ptr)); +MOCK_METHOD4(Viewport, void(GLint x, GLint y, GLsizei width, GLsizei height)); +MOCK_METHOD3(WaitSync, GLenum(GLsync sync, GLbitfield flags, GLuint64 timeout));
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc index 5e849ac..1b670e1 100644 --- a/ui/gl/gl_surface_egl.cc +++ b/ui/gl/gl_surface_egl.cc
@@ -29,6 +29,10 @@ } #endif +#if defined (USE_OZONE) +#include "ui/ozone/public/surface_factory_ozone.h" +#endif + #if !defined(EGL_FIXED_SIZE_ANGLE) #define EGL_FIXED_SIZE_ANGLE 0x3201 #endif
diff --git a/ui/gl/gl_surface_ozone.cc b/ui/gl/gl_surface_ozone.cc new file mode 100644 index 0000000..eecd064 --- /dev/null +++ b/ui/gl/gl_surface_ozone.cc
@@ -0,0 +1,266 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/gl/gl_surface.h" + +#include "base/logging.h" +#include "base/memory/ref_counted.h" +#include "ui/gfx/native_widget_types.h" +#include "ui/gl/gl_context.h" +#include "ui/gl/gl_image.h" +#include "ui/gl/gl_implementation.h" +#include "ui/gl/gl_surface_egl.h" +#include "ui/gl/gl_surface_osmesa.h" +#include "ui/gl/gl_surface_stub.h" +#include "ui/gl/scoped_make_current.h" +#include "ui/ozone/public/surface_factory_ozone.h" +#include "ui/ozone/public/surface_ozone_egl.h" + +namespace gfx { + +namespace { + +// A thin wrapper around GLSurfaceEGL that owns the EGLNativeWindow +class GL_EXPORT GLSurfaceOzoneEGL : public NativeViewGLSurfaceEGL { + public: + GLSurfaceOzoneEGL(scoped_ptr<ui::SurfaceOzoneEGL> ozone_surface, + AcceleratedWidget widget) + : NativeViewGLSurfaceEGL(ozone_surface->GetNativeWindow()), + ozone_surface_(ozone_surface.Pass()), + widget_(widget) {} + + bool Initialize() override { + return Initialize(ozone_surface_->CreateVSyncProvider()); + } + bool Resize(const gfx::Size& size) override { + if (!ozone_surface_->ResizeNativeWindow(size)) { + if (!ReinitializeNativeSurface() || + !ozone_surface_->ResizeNativeWindow(size)) + return false; + } + + return NativeViewGLSurfaceEGL::Resize(size); + } + bool SwapBuffers() override { + if (!NativeViewGLSurfaceEGL::SwapBuffers()) + return false; + + return ozone_surface_->OnSwapBuffers(); + } + bool ScheduleOverlayPlane(int z_order, + OverlayTransform transform, + GLImage* image, + const Rect& bounds_rect, + const RectF& crop_rect) override { + return image->ScheduleOverlayPlane( + widget_, z_order, transform, bounds_rect, crop_rect); + } + + private: + using NativeViewGLSurfaceEGL::Initialize; + + ~GLSurfaceOzoneEGL() override { + Destroy(); // EGL surface must be destroyed before SurfaceOzone + } + + bool ReinitializeNativeSurface() { + scoped_ptr<ui::ScopedMakeCurrent> scoped_make_current; + GLContext* current_context = GLContext::GetCurrent(); + bool was_current = + current_context && current_context->IsCurrent(this); + if (was_current) { + scoped_make_current.reset( + new ui::ScopedMakeCurrent(current_context, this)); + } + + Destroy(); + ozone_surface_ = + ui::SurfaceFactoryOzone::GetInstance()->CreateEGLSurfaceForWidget( + widget_).Pass(); + if (!ozone_surface_) { + LOG(ERROR) << "Failed to create native surface."; + return false; + } + + window_ = ozone_surface_->GetNativeWindow(); + if (!Initialize()) { + LOG(ERROR) << "Failed to initialize."; + return false; + } + + return true; + } + + // The native surface. Deleting this is allowed to free the EGLNativeWindow. + scoped_ptr<ui::SurfaceOzoneEGL> ozone_surface_; + AcceleratedWidget widget_; + + DISALLOW_COPY_AND_ASSIGN(GLSurfaceOzoneEGL); +}; + +class GL_EXPORT GLSurfaceOzoneSurfaceless : public SurfacelessEGL { + public: + GLSurfaceOzoneSurfaceless(scoped_ptr<ui::SurfaceOzoneEGL> ozone_surface, + AcceleratedWidget widget) + : SurfacelessEGL(gfx::Size()), + ozone_surface_(ozone_surface.Pass()), + widget_(widget) {} + + bool Initialize() override { + if (!SurfacelessEGL::Initialize()) + return false; + vsync_provider_ = ozone_surface_->CreateVSyncProvider(); + if (!vsync_provider_) + return false; + return true; + } + bool Resize(const gfx::Size& size) override { + if (!ozone_surface_->ResizeNativeWindow(size)) + return false; + + return SurfacelessEGL::Resize(size); + } + bool SwapBuffers() override { + // TODO: this should be replaced by a fence when supported by the driver. + glFlush(); + return ozone_surface_->OnSwapBuffers(); + } + bool ScheduleOverlayPlane(int z_order, + OverlayTransform transform, + GLImage* image, + const Rect& bounds_rect, + const RectF& crop_rect) override { + return image->ScheduleOverlayPlane( + widget_, z_order, transform, bounds_rect, crop_rect); + } + bool IsOffscreen() override { return false; } + VSyncProvider* GetVSyncProvider() override { return vsync_provider_.get(); } + bool SupportsPostSubBuffer() override { return true; } + bool PostSubBuffer(int x, int y, int width, int height) override { + // The actual sub buffer handling is handled at higher layers. + SwapBuffers(); + return true; + } + bool SwapBuffersAsync(const SwapCompletionCallback& callback) override { + // TODO: this should be replaced by a fence when supported by the driver. + glFlush(); + return ozone_surface_->OnSwapBuffersAsync(callback); + } + bool PostSubBufferAsync(int x, + int y, + int width, + int height, + const SwapCompletionCallback& callback) override { + return SwapBuffersAsync(callback); + } + + private: + ~GLSurfaceOzoneSurfaceless() override { + Destroy(); // EGL surface must be destroyed before SurfaceOzone + } + + // The native surface. Deleting this is allowed to free the EGLNativeWindow. + scoped_ptr<ui::SurfaceOzoneEGL> ozone_surface_; + AcceleratedWidget widget_; + scoped_ptr<VSyncProvider> vsync_provider_; + + DISALLOW_COPY_AND_ASSIGN(GLSurfaceOzoneSurfaceless); +}; + +} // namespace + +// static +bool GLSurface::InitializeOneOffInternal() { + switch (GetGLImplementation()) { + case kGLImplementationEGLGLES2: + if (!GLSurfaceEGL::InitializeOneOff()) { + LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed."; + return false; + } + + return true; + case kGLImplementationOSMesaGL: + case kGLImplementationMockGL: + return true; + default: + return false; + } +} + +// static +scoped_refptr<GLSurface> GLSurface::CreateViewGLSurface( + gfx::AcceleratedWidget window) { + if (GetGLImplementation() == kGLImplementationOSMesaGL) { + scoped_refptr<GLSurface> surface(new GLSurfaceOSMesaHeadless()); + if (!surface->Initialize()) + return NULL; + return surface; + } + DCHECK(GetGLImplementation() == kGLImplementationEGLGLES2); + if (window != kNullAcceleratedWidget) { + scoped_refptr<GLSurface> surface; + if (GLSurfaceEGL::IsEGLSurfacelessContextSupported() && + ui::SurfaceFactoryOzone::GetInstance() + ->CanShowPrimaryPlaneAsOverlay()) { + scoped_ptr<ui::SurfaceOzoneEGL> surface_ozone = + ui::SurfaceFactoryOzone::GetInstance() + ->CreateSurfacelessEGLSurfaceForWidget(window); + if (!surface_ozone) + return NULL; + surface = new GLSurfaceOzoneSurfaceless(surface_ozone.Pass(), window); + } else { + scoped_ptr<ui::SurfaceOzoneEGL> surface_ozone = + ui::SurfaceFactoryOzone::GetInstance()->CreateEGLSurfaceForWidget( + window); + if (!surface_ozone) + return NULL; + + surface = new GLSurfaceOzoneEGL(surface_ozone.Pass(), window); + } + if (!surface->Initialize()) + return NULL; + return surface; + } else { + scoped_refptr<GLSurface> surface = new GLSurfaceStub(); + if (surface->Initialize()) + return surface; + } + return NULL; +} + +// static +scoped_refptr<GLSurface> GLSurface::CreateOffscreenGLSurface( + const gfx::Size& size) { + switch (GetGLImplementation()) { + case kGLImplementationOSMesaGL: { + scoped_refptr<GLSurface> surface( + new GLSurfaceOSMesa(OSMesaSurfaceFormatBGRA, size)); + if (!surface->Initialize()) + return NULL; + + return surface; + } + case kGLImplementationEGLGLES2: { + scoped_refptr<GLSurface> surface; + if (GLSurfaceEGL::IsEGLSurfacelessContextSupported() && + (size.width() == 0 && size.height() == 0)) { + surface = new SurfacelessEGL(size); + } else + surface = new PbufferGLSurfaceEGL(size); + + if (!surface->Initialize()) + return NULL; + return surface; + } + default: + NOTREACHED(); + return NULL; + } +} + +EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay() { + return ui::SurfaceFactoryOzone::GetInstance()->GetNativeDisplay(); +} + +} // namespace gfx