#ifndef UI_GL_GL_BINDINGS_H_
#define UI_GL_GL_BINDINGS_H_
#include "base/memory/raw_ptr.h"
#include "build/build_config.h"
#if BUILDFLAG(IS_POSIX) && !defined(__STDC_FORMAT_MACROS)
#define __STDC_FORMAT_MACROS
#endif
#include <GLES3/gl32.h>
#include <GLES2/gl2ext.h>
#include <GLES2/gl2ext_angle.h>
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <EGL/eglext_angle.h>
#include <stdint.h>
#include "base/logging.h"
#include "build/build_config.h"
#include "ui/gfx/extension_set.h"
#include "ui/gl/gl_export.h"
typedef double GLclampd;
#define GL_PRIMITIVE_RESTART 0x8F9D
#define GL_UNPACK_COLORSPACE_CONVERSION_CHROMIUM 0x9243
#define GL_BIND_GENERATES_RESOURCE_CHROMIUM 0x9244
#define GL_SAMPLES_PASSED_ARB 0x8914
#define GL_COMMANDS_ISSUED_CHROMIUM 0x6004
#define GL_GET_ERROR_QUERY_CHROMIUM 0x6003
#define GL_PROGRAM_COMPLETION_QUERY_CHROMIUM 0x6009
#define GL_ASYNC_PIXEL_PACK_COMPLETED_CHROMIUM 0x6006
#define GL_COMMANDS_COMPLETED_CHROMIUM 0x84F7
#define GL_RGB_YCRCB_420_CHROMIUM 0x78FA
#define GL_RGB_YCBCR_422_CHROMIUM 0x78FB
#define GL_RGB_YCBCR_420V_CHROMIUM 0x78FC
#define GL_RGB_YCBCR_P010_CHROMIUM 0x78FD
#define GL_SUBSCRIBED_VALUES_BUFFER_CHROMIUM 0x924B
#define GL_MOUSE_POSITION_CHROMIUM 0x924C
#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
#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
#ifndef GL_CHROMIUM_nonblocking_readback
#define GL_CHROMIUM_nonblocking_readback 1
#define GL_READBACK_SHADOW_COPIES_UPDATED_CHROMIUM 0x84F8
#endif
#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
#endif
#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
#define GL_QUERY_RESULT_AVAILABLE_NO_FLUSH_CHROMIUM_EXT 0x8868
typedef uint64_t EGLuint64CHROMIUM;
#if !defined(BINDINGS_GL_PROTOTYPES)
#define BINDINGS_GL_PROTOTYPES 1
#endif
#include "gl_bindings_autogen_gl.h"
#if !defined(BINDINGS_EGL_PROTOTYPES)
#define BINDINGS_EGL_PROTOTYPES 1
#endif
#include "gl_bindings_autogen_egl.h"
using GLFunctionPointerType = void (*)();
#if BUILDFLAG(IS_WIN)
typedef GLFunctionPointerType(WINAPI* GLGetProcAddressProc)(const char* name);
#define STDCALL __stdcall
#else
typedef GLFunctionPointerType (*GLGetProcAddressProc)(const char* name);
#define STDCALL
#endif
namespace gl {
struct GLVersionInfo;
struct GL_EXPORT DriverGL {
void InitializeStaticBindings(GLGetProcAddressProc get_proc_address);
void InitializeDynamicBindings(GLGetProcAddressProc get_proc_address,
const GLVersionInfo* ver,
const gfx::ExtensionSet& extensions);
void ClearBindings();
ProcsGL fn;
ExtensionsGL ext;
};
struct GL_EXPORT CurrentGL {
raw_ptr<GLApi, DanglingUntriaged> Api = nullptr;
raw_ptr<DriverGL, DanglingUntriaged> Driver = nullptr;
raw_ptr<const GLVersionInfo, AcrossTasksDanglingUntriaged> Version = nullptr;
};
struct GL_EXPORT DriverEGL {
void InitializeStaticBindings(GLGetProcAddressProc get_proc_address);
void ClearBindings();
ProcsEGL fn;
ClientExtensionsEGL client_ext;
};
#define g_current_gl_context GetThreadLocalCurrentGL()->Api.get()
#define g_current_gl_driver GetThreadLocalCurrentGL()->Driver
#define g_current_gl_version GetThreadLocalCurrentGL()->Version.get()
GL_EXPORT CurrentGL* GetThreadLocalCurrentGL();
GL_EXPORT extern EGLApi* g_current_egl_context;
GL_EXPORT extern DriverEGL g_driver_egl;
}
#endif