Home | History | Annotate | Download | only in gl
      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