123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580 |
- // 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.
- #ifndef UI_GL_GL_BINDINGS_H_
- #define UI_GL_GL_BINDINGS_H_
- #include "build/build_config.h"
- // Includes the platform independent and platform dependent GL headers.
- // GL headers may include inttypes.h and so we need to ensure that
- // __STDC_FORMAT_MACROS is defined in order for //base/format_macros.h to
- // function correctly. See comment and #error message in //base/format_macros.h
- // for details.
- #if BUILDFLAG(IS_POSIX) && !defined(__STDC_FORMAT_MACROS)
- #define __STDC_FORMAT_MACROS
- #endif
- #include <GL/gl.h>
- #include <GL/glext.h>
- #include <EGL/egl.h>
- #include <EGL/eglext.h>
- #include <stdint.h>
- #include <string>
- #include "base/logging.h"
- #include "base/threading/thread_local.h"
- #include "build/build_config.h"
- #include "ui/gfx/extension_set.h"
- #include "ui/gl/gl_export.h"
- // The standard OpenGL native extension headers are also included.
- #if BUILDFLAG(IS_WIN)
- #include <GL/wglext.h>
- #elif BUILDFLAG(IS_APPLE)
- #include <OpenGL/OpenGL.h>
- #elif defined(USE_GLX)
- using Display = struct _XDisplay;
- using Bool = int;
- using Status = int;
- using XID = unsigned long;
- using Colormap = XID;
- using Font = XID;
- using Pixmap = XID;
- using Window = XID;
- using GLXPixmap = XID;
- using GLXWindow = XID;
- using GLXDrawable = XID;
- using GLXPbuffer = XID;
- using GLXContextID = XID;
- using GLXContext = struct __GLXcontextRec*;
- using GLXFBConfig = struct __GLXFBConfigRec*;
- struct XVisualInfo;
- #include <GL/glxext.h>
- #include <GL/glxtokens.h>
- #endif
- // GLES2 defines not part of Desktop GL
- // Shader Precision-Specified Types
- #define GL_LOW_FLOAT 0x8DF0
- #define GL_MEDIUM_FLOAT 0x8DF1
- #define GL_HIGH_FLOAT 0x8DF2
- #define GL_LOW_INT 0x8DF3
- #define GL_MEDIUM_INT 0x8DF4
- #define GL_HIGH_INT 0x8DF5
- #define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
- #define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
- #define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
- #define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
- #define GL_MAX_VARYING_VECTORS 0x8DFC
- #define GL_SHADER_BINARY_FORMATS 0x8DF8
- #define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
- #define GL_SHADER_COMPILER 0x8DFA
- #define GL_RGB565 0x8D62
- #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
- #define GL_RGB8_OES 0x8051
- #define GL_RGBA8_OES 0x8058
- #define GL_HALF_FLOAT_OES 0x8D61
- // GL_OES_EGL_image_external
- #define GL_TEXTURE_EXTERNAL_OES 0x8D65
- #define GL_SAMPLER_EXTERNAL_OES 0x8D66
- #define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
- #define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
- // GL_ANGLE_texture_rectangle
- #define GL_MAX_RECTANGLE_TEXTURE_SIZE_ANGLE 0x84F8
- #define GL_TEXTURE_RECTANGLE_ANGLE 0x84F5
- #define GL_TEXTURE_BINDING_RECTANGLE_ANGLE 0x84F6
- #define GL_SAMPLER_2D_RECT_ANGLE 0x8B63
- // GL_ANGLE_translated_shader_source
- #define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
- #define GL_UNPACK_COLORSPACE_CONVERSION_CHROMIUM 0x9243
- #define GL_BIND_GENERATES_RESOURCE_CHROMIUM 0x9244
- // GL_ANGLE_texture_usage
- #define GL_TEXTURE_USAGE_ANGLE 0x93A2
- #define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3
- // GL_EXT_texture_storage
- #define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F
- #define GL_ALPHA8_EXT 0x803C
- #define GL_LUMINANCE8_EXT 0x8040
- #define GL_LUMINANCE8_ALPHA8_EXT 0x8045
- #define GL_RGB10_A2_EXT 0x8059
- #define GL_RGBA32F_EXT 0x8814
- #define GL_RGB32F_EXT 0x8815
- #define GL_ALPHA32F_EXT 0x8816
- #define GL_LUMINANCE32F_EXT 0x8818
- #define GL_LUMINANCE_ALPHA32F_EXT 0x8819
- #define GL_RGBA16F_EXT 0x881A
- #define GL_RGB16F_EXT 0x881B
- #define GL_RG16F_EXT 0x822F
- #define GL_R16F_EXT 0x822D
- #define GL_ALPHA16F_EXT 0x881C
- #define GL_LUMINANCE16F_EXT 0x881E
- #define GL_LUMINANCE_ALPHA16F_EXT 0x881F
- #define GL_R32F_EXT 0x822E
- #define GL_RG32F_EXT 0x8230
- #define GL_BGRA8_EXT 0x93A1
- // GL_ANGLE_instanced_arrays
- #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
- // GL_ANGLE_client_arrays
- #define GL_CLIENT_ARRAYS_ANGLE 0x93AA
- // GL_ANGLE_robust_resource_initialization
- #define GL_ROBUST_RESOURCE_INITIALIZATION_ANGLE 0x93AB
- #define GL_RESOURCE_INITIALIZED_ANGLE 0x969F
- // GL_ANGLE_request_extension
- #define GL_REQUESTABLE_EXTENSIONS_ANGLE 0x93A8
- #define GL_NUM_REQUESTABLE_EXTENSIONS_ANGLE 0x93A9
- // GL_ANGLE_memory_size
- #define GL_MEMORY_SIZE_ANGLE 0x93AD
- // GL_ANGLE_rgbx_internal_format
- #define GL_RGBX8_ANGLE 0x96BA
- // GL_EXT_occlusion_query_boolean
- #define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F
- #define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A
- #define GL_CURRENT_QUERY_EXT 0x8865
- #define GL_QUERY_RESULT_EXT 0x8866
- #define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
- // GL_ARB_occlusion_query
- #define GL_SAMPLES_PASSED_ARB 0x8914
- // GL_CHROMIUM_command_buffer_query
- #define GL_COMMANDS_ISSUED_CHROMIUM 0x6004
- #define GL_COMMANDS_ISSUED_TIMESTAMP_CHROMIUM 0x6005
- /* GL_CHROMIUM_get_error_query */
- #define GL_GET_ERROR_QUERY_CHROMIUM 0x6003
- /* GL_CHROMIUM_command_buffer_latency_query */
- #define GL_LATENCY_QUERY_CHROMIUM 0x6007
- /* GL_CHROMIUM_program_completion_query */
- #define GL_PROGRAM_COMPLETION_QUERY_CHROMIUM 0x6009
- /* GL_CHROMIUM_async_pixel_transfers */
- #define GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM 0x6006
- // GL_CHROMIUM_sync_query
- #define GL_COMMANDS_COMPLETED_CHROMIUM 0x84F7
- // GL_CHROMIUM_ycrcb_420_image
- #define GL_RGB_YCRCB_420_CHROMIUM 0x78FA
- // GL_CHROMIUM_ycbcr_422_image
- #define GL_RGB_YCBCR_422_CHROMIUM 0x78FB
- // GL_CHROMIUM_ycbcr_420v_image
- #define GL_RGB_YCBCR_420V_CHROMIUM 0x78FC
- // GL_CHROMIUM_ycbcr_p010_image
- #define GL_RGB_YCBCR_P010_CHROMIUM 0x78FD
- // GL_CHROMIUM_subscribe_uniforms
- #define GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM 0x924B
- #define GL_MOUSE_POSITION_CHROMIUM 0x924C
- // GL_CHROMIUM_texture_filtering_hint
- #define GL_TEXTURE_FILTERING_HINT_CHROMIUM 0x8AF0
- // GL_OES_texure_3D
- #define GL_SAMPLER_3D_OES 0x8B5F
- // GL_OES_depth24
- #define GL_DEPTH_COMPONENT24_OES 0x81A6
- // GL_OES_depth32
- #define GL_DEPTH_COMPONENT32_OES 0x81A7
- // GL_OES_packed_depth_stencil
- #ifndef GL_DEPTH24_STENCIL8_OES
- #define GL_DEPTH24_STENCIL8_OES 0x88F0
- #endif
- #ifndef GL_DEPTH24_STENCIL8
- #define GL_DEPTH24_STENCIL8 0x88F0
- #endif
- // GL_OES_compressed_ETC1_RGB8_texture
- #define GL_ETC1_RGB8_OES 0x8D64
- // GL_OES_compressed_ETC2_RGB8_texture
- #define GL_COMPRESSED_RGB8_ETC2 0x9274
- // GL_AMD_compressed_ATC_texture
- #define GL_ATC_RGB_AMD 0x8C92
- #define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
- #define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
- // GL_IMG_texture_compression_pvrtc
- #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
- #define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
- #define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
- #define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
- // GL_EXT_texture_compression_bptc
- #define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C
- #define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D
- #define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E
- #define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F
- // GL_EXT_texture_compression_rgtc
- #define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
- #define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
- #define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
- #define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
- // GL_OES_vertex_array_object
- #define GL_VERTEX_ARRAY_BINDING_OES 0x85B5
- // GL_CHROMIUM_pixel_transfer_buffer_object
- #define GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM 0x78EC
- #define GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM 0x78ED
- #define GL_PIXEL_PACK_TRANSFER_BUFFER_BINDING_CHROMIUM 0x78EE
- #define GL_PIXEL_UNPACK_TRANSFER_BUFFER_BINDING_CHROMIUM 0x78EF
- /* GL_EXT_discard_framebuffer */
- #ifndef GL_EXT_discard_framebuffer
- #define GL_COLOR_EXT 0x1800
- #define GL_DEPTH_EXT 0x1801
- #define GL_STENCIL_EXT 0x1802
- #endif
- // GL_EXT_sRGB
- #define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210
- // GL_ARB_get_program_binary
- #define PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
- // GL_OES_get_program_binary
- #define GL_PROGRAM_BINARY_LENGTH_OES 0x8741
- #define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE
- #define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF
- #ifndef GL_EXT_multisampled_render_to_texture
- #define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
- #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
- #define GL_MAX_SAMPLES_EXT 0x8D57
- #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C
- #endif
- #ifndef GL_IMG_multisampled_render_to_texture
- #define GL_RENDERBUFFER_SAMPLES_IMG 0x9133
- #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134
- #define GL_MAX_SAMPLES_IMG 0x9135
- #define GL_TEXTURE_SAMPLES_IMG 0x9136
- #endif
- #ifndef GL_CHROMIUM_path_rendering
- #define GL_CHROMIUM_path_rendering 1
- // These match the corresponding values in NV_path_rendering
- // extension, eg tokens with CHROMIUM replaced with NV.
- #define GL_PATH_MODELVIEW_MATRIX_CHROMIUM 0x0BA6
- #define GL_PATH_PROJECTION_MATRIX_CHROMIUM 0x0BA7
- #define GL_PATH_MODELVIEW_CHROMIUM 0x1700
- #define GL_PATH_PROJECTION_CHROMIUM 0x1701
- #define GL_FLAT_CHROMIUM 0x1D00
- #define GL_CLOSE_PATH_CHROMIUM 0x00
- #define GL_MOVE_TO_CHROMIUM 0x02
- #define GL_LINE_TO_CHROMIUM 0x04
- #define GL_QUADRATIC_CURVE_TO_CHROMIUM 0x0A
- #define GL_CUBIC_CURVE_TO_CHROMIUM 0x0C
- #define GL_CONIC_CURVE_TO_CHROMIUM 0x1A
- #define GL_EYE_LINEAR_CHROMIUM 0x2400
- #define GL_OBJECT_LINEAR_CHROMIUM 0x2401
- #define GL_CONSTANT_CHROMIUM 0x8576
- #define GL_PATH_STROKE_WIDTH_CHROMIUM 0x9075
- #define GL_PATH_END_CAPS_CHROMIUM 0x9076
- #define GL_PATH_JOIN_STYLE_CHROMIUM 0x9079
- #define GL_PATH_MITER_LIMIT_CHROMIUM 0x907a
- #define GL_PATH_STROKE_BOUND_CHROMIUM 0x9086
- #define GL_COUNT_UP_CHROMIUM 0x9088
- #define GL_COUNT_DOWN_CHROMIUM 0x9089
- #define GL_CONVEX_HULL_CHROMIUM 0x908B
- #define GL_BOUNDING_BOX_CHROMIUM 0x908D
- #define GL_TRANSLATE_X_CHROMIUM 0x908E
- #define GL_TRANSLATE_Y_CHROMIUM 0x908F
- #define GL_TRANSLATE_2D_CHROMIUM 0x9090
- #define GL_TRANSLATE_3D_CHROMIUM 0x9091
- #define GL_AFFINE_2D_CHROMIUM 0x9092
- #define GL_AFFINE_3D_CHROMIUM 0x9094
- #define GL_TRANSPOSE_AFFINE_2D_CHROMIUM 0x9096
- #define GL_TRANSPOSE_AFFINE_3D_CHROMIUM 0x9098
- #define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM 0x909C
- #define GL_SQUARE_CHROMIUM 0x90a3
- #define GL_ROUND_CHROMIUM 0x90a4
- #define GL_BEVEL_CHROMIUM 0x90a6
- #define GL_MITER_REVERT_CHROMIUM 0x90a7
- #define GL_PATH_STENCIL_FUNC_CHROMIUM 0x90B7
- #define GL_PATH_STENCIL_REF_CHROMIUM 0x90B8
- #define GL_PATH_STENCIL_VALUE_MASK_CHROMIUM 0x90B9
- #endif
- #ifndef GL_EXT_multisample_compatibility
- #define GL_EXT_multisample_compatibility 1
- #define GL_MULTISAMPLE_EXT 0x809D
- #define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
- #endif /* GL_EXT_multisample_compatibility */
- #ifndef GL_CHROMIUM_framebuffer_mixed_samples
- #define GL_CHROMIUM_framebuffer_mixed_samples 1
- #define GL_COVERAGE_MODULATION_CHROMIUM 0x9332
- #endif /* GL_CHROMIUM_framebuffer_mixed_samples */
- #ifndef GL_KHR_blend_equation_advanced
- #define GL_KHR_blend_equation_advanced 1
- #define GL_COLORBURN_KHR 0x929A
- #define GL_COLORDODGE_KHR 0x9299
- #define GL_DARKEN_KHR 0x9297
- #define GL_DIFFERENCE_KHR 0x929E
- #define GL_EXCLUSION_KHR 0x92A0
- #define GL_HARDLIGHT_KHR 0x929B
- #define GL_HSL_COLOR_KHR 0x92AF
- #define GL_HSL_HUE_KHR 0x92AD
- #define GL_HSL_LUMINOSITY_KHR 0x92B0
- #define GL_HSL_SATURATION_KHR 0x92AE
- #define GL_LIGHTEN_KHR 0x9298
- #define GL_MULTIPLY_KHR 0x9294
- #define GL_OVERLAY_KHR 0x9296
- #define GL_SCREEN_KHR 0x9295
- #define GL_SOFTLIGHT_KHR 0x929C
- #endif /* GL_KHR_blend_equation_advanced */
- #ifndef GL_KHR_blend_equation_advanced_coherent
- #define GL_KHR_blend_equation_advanced_coherent 1
- #define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285
- #endif /* GL_KHR_blend_equation_advanced_coherent */
- #ifndef GL_EXT_disjoint_timer_query
- #define GL_EXT_disjoint_timer_query 1
- #define GL_QUERY_COUNTER_BITS_EXT 0x8864
- #define GL_TIME_ELAPSED_EXT 0x88BF
- #define GL_TIMESTAMP_EXT 0x8E28
- #define GL_GPU_DISJOINT_EXT 0x8FBB
- #endif
- #ifndef GL_KHR_robustness
- #define GL_KHR_robustness 1
- #define GL_CONTEXT_ROBUST_ACCESS_KHR 0x90F3
- #define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252
- #define GL_GUILTY_CONTEXT_RESET_KHR 0x8253
- #define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254
- #define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255
- #define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256
- #define GL_NO_RESET_NOTIFICATION_KHR 0x8261
- #define GL_CONTEXT_LOST_KHR 0x0507
- #endif /* GL_KHR_robustness */
- #ifndef GL_EXT_texture_norm16
- #define GL_EXT_texture_norm16 1
- #define GL_R16_EXT 0x822A
- #define GL_RG16_EXT 0x822C
- #define GL_RGBA16_EXT 0x805B
- #define GL_RGB16_EXT 0x8054
- #define GL_R16_SNORM_EXT 0x8F98
- #define GL_RG16_SNORM_EXT 0x8F99
- #define GL_RGBA16_SNORM_EXT 0x8F9B
- #define GL_RGB16_SNORM_EXT 0x8F9A
- #endif /* GL_EXT_texture_norm16 */
- #ifndef GL_EXT_texture_rg
- #define GL_EXT_texture_rg 1
- #define GL_RED_EXT 0x1903
- #define GL_RG_EXT 0x8227
- #define GL_R8_EXT 0x8229
- #define GL_RG8_EXT 0x822B
- #endif /* GL_EXT_texture_rg */
- // This is from NV_path_rendering, but the GL header is not up to date with the
- // most recent version of the extension. This definition could be removed once
- // glext.h r27498 or later is imported.
- #ifndef GL_FRAGMENT_INPUT_NV
- #define GL_FRAGMENT_INPUT_NV 0x936D
- #endif
- #ifndef GL_EXT_blend_func_extended
- #define GL_EXT_blend_func_extended 1
- #define GL_SRC_ALPHA_SATURATE_EXT 0x0308
- #define GL_SRC1_ALPHA_EXT 0x8589 // OpenGL 1.5 token value
- #define GL_SRC1_COLOR_EXT 0x88F9
- #define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
- #define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
- #define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
- #endif /* GL_EXT_blend_func_extended */
- #ifndef GL_OES_draw_buffers_indexed
- #define GL_OES_draw_buffers_indexed 1
- #define GL_BLEND_EQUATION_RGB 0x8009
- #define GL_BLEND_EQUATION_ALPHA 0x883D
- #define GL_BLEND_SRC_RGB 0x80C9
- #define GL_BLEND_SRC_ALPHA 0x80CB
- #define GL_BLEND_DST_RGB 0x80C8
- #define GL_BLEND_DST_ALPHA 0x80CA
- #define GL_COLOR_WRITEMASK 0x0C23
- #endif /* GL_OES_draw_buffers_indexed */
- #ifndef GL_EXT_window_rectangles
- #define GL_EXT_window_rectangles 1
- #define GL_INCLUSIVE_EXT 0x8F10
- #define GL_EXCLUSIVE_EXT 0x8F11
- #define GL_WINDOW_RECTANGLE_EXT 0x8F12
- #define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
- #define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
- #define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
- #endif /* GL_EXT_window_rectangles */
- #ifndef GL_CHROMIUM_nonblocking_readback
- #define GL_CHROMIUM_nonblocking_readback 1
- #define GL_READBACK_SHADOW_COPIES_UPDATED_CHROMIUM 0x84F8
- #endif /* GL_CHROMIUM_nonblocking_readback */
- #ifndef GL_MESA_framebuffer_flip_y
- #define GL_MESA_framebuffer_flip_y 1
- #define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB
- #endif /* GL_MESA_framebuffer_flip_y */
- #ifndef GL_KHR_parallel_shader_compile
- #define GL_KHR_parallel_shader_compile 1
- #define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
- #define GL_COMPLETION_STATUS_KHR 0x91B1
- #endif /* GL_KHR_parallel_shader_compile */
- #ifndef GL_CHROMIUM_shared_image
- #define GL_CHROMIUM_shared_image 1
- #define GL_SHARED_IMAGE_ACCESS_MODE_READ_CHROMIUM 0x8AF6
- #define GL_SHARED_IMAGE_ACCESS_MODE_READWRITE_CHROMIUM 0x8AF7
- #define GL_SHARED_IMAGE_ACCESS_MODE_OVERLAY_CHROMIUM 0x8AF8
- #endif /* GL_CHROMIUM_shared_image */
- #ifndef GL_NV_internalformat_sample_query
- #define GL_MULTISAMPLES_NV 0x9371
- #define GL_SUPERSAMPLE_SCALE_X_NV 0x9372
- #define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373
- #define GL_CONFORMANT_NV 0x9374
- #endif /* GL_NV_internalformat_sample_query */
- #ifndef GL_EXT_YUV_target
- #define GL_EXT_YUV_target 1
- #define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7
- #endif /* GL_EXT_YUV_target */
- #define GL_GLEXT_PROTOTYPES 1
- #if BUILDFLAG(IS_WIN)
- #define GL_BINDING_CALL WINAPI
- #else
- #define GL_BINDING_CALL
- #endif
- #if defined(NDEBUG) && !defined(GPU_ENABLE_SERVICE_LOGGING)
- #define GL_SERVICE_LOG(args) DLOG(INFO) << args;
- #define GL_SERVICE_LOG_CODE_BLOCK(code)
- #else
- #define GL_SERVICE_LOG(args) LOG(INFO) << args;
- #define GL_SERVICE_LOG_CODE_BLOCK(code) code
- #endif
- // OVR_multiview2 constants.
- #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
- #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
- #define GL_MAX_VIEWS_OVR 0x9631
- #define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
- #define GL_QUERY_RESULT_AVAILABLE_NO_FLUSH_CHROMIUM_EXT 0x8868
- // Forward declare EGL types.
- typedef uint64_t EGLuint64CHROMIUM;
- #include "gl_bindings_autogen_gl.h"
- #if defined(USE_EGL)
- #include "gl_bindings_autogen_egl.h"
- #endif
- #if defined(USE_GLX)
- #include "gl_bindings_autogen_glx.h"
- #endif
- namespace gl {
- struct GLVersionInfo;
- struct GL_EXPORT DriverGL {
- void InitializeStaticBindings();
- void InitializeDynamicBindings(const GLVersionInfo* ver,
- const gfx::ExtensionSet& extensions);
- void ClearBindings();
- ProcsGL fn;
- ExtensionsGL ext;
- DriverGL() {
- // InitializeStaticBindings() requires that fn is null-initialized.
- ClearBindings();
- }
- };
- struct GL_EXPORT CurrentGL {
- GLApi* Api = nullptr;
- DriverGL* Driver = nullptr;
- const GLVersionInfo* Version = nullptr;
- };
- #if defined(USE_EGL)
- struct GL_EXPORT DriverEGL {
- void InitializeStaticBindings();
- void ClearBindings();
- ProcsEGL fn;
- ClientExtensionsEGL client_ext;
- };
- #endif
- #if defined(USE_GLX)
- struct GL_EXPORT DriverGLX {
- void InitializeStaticBindings();
- void InitializeExtensionBindings();
- void ClearBindings();
- ProcsGLX fn;
- ExtensionsGLX ext;
- private:
- static std::string GetPlatformExtensions();
- };
- #endif
- // This #define is here to support autogenerated code.
- #define g_current_gl_context g_current_gl_context_tls->Get()->Api
- #define g_current_gl_driver g_current_gl_context_tls->Get()->Driver
- #define g_current_gl_version g_current_gl_context_tls->Get()->Version
- GL_EXPORT extern base::ThreadLocalPointer<CurrentGL>* g_current_gl_context_tls;
- #if defined(USE_EGL)
- GL_EXPORT extern EGLApi* g_current_egl_context;
- GL_EXPORT extern DriverEGL g_driver_egl;
- #endif
- #if defined(USE_GLX)
- GL_EXPORT extern GLXApi* g_current_glx_context;
- GL_EXPORT extern DriverGLX g_driver_glx;
- #endif
- } // namespace gl
- #endif // UI_GL_GL_BINDINGS_H_
|