| /* | |
| * Copyright 2015 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef GrGLTypes_DEFINED | |
| #define GrGLTypes_DEFINED | |
| #include "GrGLConfig.h" | |
| /** | |
| * Classifies GL contexts by which standard they implement (currently as OpenGL vs. OpenGL ES). | |
| */ | |
| enum GrGLStandard { | |
| kNone_GrGLStandard, | |
| kGL_GrGLStandard, | |
| kGLES_GrGLStandard, | |
| }; | |
| static const int kGrGLStandardCnt = 3; | |
| /////////////////////////////////////////////////////////////////////////////// | |
| /** | |
| * Declares typedefs for all the GL functions used in GrGLInterface | |
| */ | |
| typedef unsigned int GrGLenum; | |
| typedef unsigned char GrGLboolean; | |
| typedef unsigned int GrGLbitfield; | |
| typedef signed char GrGLbyte; | |
| typedef char GrGLchar; | |
| typedef short GrGLshort; | |
| typedef int GrGLint; | |
| typedef int GrGLsizei; | |
| typedef int64_t GrGLint64; | |
| typedef unsigned char GrGLubyte; | |
| typedef unsigned short GrGLushort; | |
| typedef unsigned int GrGLuint; | |
| typedef uint64_t GrGLuint64; | |
| typedef float GrGLfloat; | |
| typedef float GrGLclampf; | |
| typedef double GrGLdouble; | |
| typedef double GrGLclampd; | |
| typedef void GrGLvoid; | |
| #ifndef SK_IGNORE_64BIT_OPENGL_CHANGES | |
| #ifdef _WIN64 | |
| typedef signed long long int GrGLintptr; | |
| typedef signed long long int GrGLsizeiptr; | |
| #else | |
| typedef signed long int GrGLintptr; | |
| typedef signed long int GrGLsizeiptr; | |
| #endif | |
| #else | |
| typedef signed long int GrGLintptr; | |
| typedef signed long int GrGLsizeiptr; | |
| #endif | |
| typedef void* GrGLeglImage; | |
| struct GrGLDrawArraysIndirectCommand { | |
| GrGLuint fCount; | |
| GrGLuint fInstanceCount; | |
| GrGLuint fFirst; | |
| GrGLuint fBaseInstance; // Requires EXT_base_instance on ES. | |
| }; | |
| GR_STATIC_ASSERT(16 == sizeof(GrGLDrawArraysIndirectCommand)); | |
| struct GrGLDrawElementsIndirectCommand { | |
| GrGLuint fCount; | |
| GrGLuint fInstanceCount; | |
| GrGLuint fFirstIndex; | |
| GrGLuint fBaseVertex; | |
| GrGLuint fBaseInstance; // Requires EXT_base_instance on ES. | |
| }; | |
| GR_STATIC_ASSERT(20 == sizeof(GrGLDrawElementsIndirectCommand)); | |
| /** | |
| * KHR_debug | |
| */ | |
| typedef void (GR_GL_FUNCTION_TYPE* GRGLDEBUGPROC)(GrGLenum source, | |
| GrGLenum type, | |
| GrGLuint id, | |
| GrGLenum severity, | |
| GrGLsizei length, | |
| const GrGLchar* message, | |
| const void* userParam); | |
| /** | |
| * EGL types. | |
| */ | |
| typedef void* GrEGLImage; | |
| typedef void* GrEGLDisplay; | |
| typedef void* GrEGLContext; | |
| typedef void* GrEGLClientBuffer; | |
| typedef unsigned int GrEGLenum; | |
| typedef int32_t GrEGLint; | |
| typedef unsigned int GrEGLBoolean; | |
| /////////////////////////////////////////////////////////////////////////////// | |
| /** | |
| * Types for interacting with GL resources created externally to Skia. GrBackendObjects for GL | |
| * textures are really const GrGLTexture* | |
| */ | |
| struct GrGLTextureInfo { | |
| GrGLenum fTarget; | |
| GrGLuint fID; | |
| }; | |
| GR_STATIC_ASSERT(sizeof(GrBackendObject) >= sizeof(const GrGLTextureInfo*)); | |
| #endif |