1 2 /* 3 * Copyright 2015 Google Inc. 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 9 #ifndef GrGLTypes_DEFINED 10 #define GrGLTypes_DEFINED 11 12 #include "GrGLConfig.h" 13 14 /** 15 * Classifies GL contexts by which standard they implement (currently as OpenGL vs. OpenGL ES). 16 */ 17 enum GrGLStandard { 18 kNone_GrGLStandard, 19 kGL_GrGLStandard, 20 kGLES_GrGLStandard, 21 }; 22 static const int kGrGLStandardCnt = 3; 23 24 /////////////////////////////////////////////////////////////////////////////// 25 26 /** 27 * Declares typedefs for all the GL functions used in GrGLInterface 28 */ 29 30 typedef unsigned int GrGLenum; 31 typedef unsigned char GrGLboolean; 32 typedef unsigned int GrGLbitfield; 33 typedef signed char GrGLbyte; 34 typedef char GrGLchar; 35 typedef short GrGLshort; 36 typedef int GrGLint; 37 typedef int GrGLsizei; 38 typedef int64_t GrGLint64; 39 typedef unsigned char GrGLubyte; 40 typedef unsigned short GrGLushort; 41 typedef unsigned int GrGLuint; 42 typedef uint64_t GrGLuint64; 43 typedef float GrGLfloat; 44 typedef float GrGLclampf; 45 typedef double GrGLdouble; 46 typedef double GrGLclampd; 47 typedef void GrGLvoid; 48 #ifndef SK_IGNORE_64BIT_OPENGL_CHANGES 49 #ifdef _WIN64 50 typedef signed long long int GrGLintptr; 51 typedef signed long long int GrGLsizeiptr; 52 #else 53 typedef signed long int GrGLintptr; 54 typedef signed long int GrGLsizeiptr; 55 #endif 56 #else 57 typedef signed long int GrGLintptr; 58 typedef signed long int GrGLsizeiptr; 59 #endif 60 typedef void* GrGLeglImage; 61 62 struct GrGLDrawArraysIndirectCommand { 63 GrGLuint fCount; 64 GrGLuint fInstanceCount; 65 GrGLuint fFirst; 66 GrGLuint fBaseInstance; // Requires EXT_base_instance on ES. 67 }; 68 69 GR_STATIC_ASSERT(16 == sizeof(GrGLDrawArraysIndirectCommand)); 70 71 struct GrGLDrawElementsIndirectCommand { 72 GrGLuint fCount; 73 GrGLuint fInstanceCount; 74 GrGLuint fFirstIndex; 75 GrGLuint fBaseVertex; 76 GrGLuint fBaseInstance; // Requires EXT_base_instance on ES. 77 }; 78 79 GR_STATIC_ASSERT(20 == sizeof(GrGLDrawElementsIndirectCommand)); 80 81 /** 82 * KHR_debug 83 */ 84 typedef void (GR_GL_FUNCTION_TYPE* GRGLDEBUGPROC)(GrGLenum source, 85 GrGLenum type, 86 GrGLuint id, 87 GrGLenum severity, 88 GrGLsizei length, 89 const GrGLchar* message, 90 const void* userParam); 91 92 /** 93 * EGL types. 94 */ 95 typedef void* GrEGLImage; 96 typedef void* GrEGLDisplay; 97 typedef void* GrEGLContext; 98 typedef void* GrEGLClientBuffer; 99 typedef unsigned int GrEGLenum; 100 typedef int32_t GrEGLint; 101 typedef unsigned int GrEGLBoolean; 102 103 /////////////////////////////////////////////////////////////////////////////// 104 /** 105 * Types for interacting with GL resources created externally to Skia. GrBackendObjects for GL 106 * textures are really const GrGLTexture* 107 */ 108 109 struct GrGLTextureInfo { 110 GrGLenum fTarget; 111 GrGLuint fID; 112 }; 113 114 GR_STATIC_ASSERT(sizeof(GrBackendObject) >= sizeof(const GrGLTextureInfo*)); 115 116 #endif 117