1*c8dee2aaSAndroid Build Coastguard Worker// Copyright 2019 The Chromium Authors. All rights reserved. 2*c8dee2aaSAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be 3*c8dee2aaSAndroid Build Coastguard Worker// found in the LICENSE file. 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Workerpackage main 6*c8dee2aaSAndroid Build Coastguard Worker 7*c8dee2aaSAndroid Build Coastguard Workerconst ASSEMBLE_INTERFACE_GL_ES = `/* 8*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2019 Google LLC 9*c8dee2aaSAndroid Build Coastguard Worker * 10*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 11*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 12*c8dee2aaSAndroid Build Coastguard Worker * 13*c8dee2aaSAndroid Build Coastguard Worker * THIS FILE IS AUTOGENERATED 14*c8dee2aaSAndroid Build Coastguard Worker * Make edits to tools/gpu/gl/interface/templates.go or they will 15*c8dee2aaSAndroid Build Coastguard Worker * be overwritten. 16*c8dee2aaSAndroid Build Coastguard Worker */ 17*c8dee2aaSAndroid Build Coastguard Worker 18*c8dee2aaSAndroid Build Coastguard Worker#include "include/core/SkRefCnt.h" 19*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLAssembleHelpers.h" 20*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLAssembleInterface.h" 21*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLExtensions.h" 22*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLFunctions.h" 23*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLInterface.h" 24*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLTypes.h" 25*c8dee2aaSAndroid Build Coastguard Worker#include "src/gpu/ganesh/gl/GrGLDefines.h" 26*c8dee2aaSAndroid Build Coastguard Worker#include "src/gpu/ganesh/gl/GrGLUtil.h" 27*c8dee2aaSAndroid Build Coastguard Worker 28*c8dee2aaSAndroid Build Coastguard Worker#define GET_PROC(F) functions->f##F = (GrGL##F##Fn*)get(ctx, "gl" #F) 29*c8dee2aaSAndroid Build Coastguard Worker#define GET_PROC_SUFFIX(F, S) functions->f##F = (GrGL##F##Fn*)get(ctx, "gl" #F #S) 30*c8dee2aaSAndroid Build Coastguard Worker#define GET_PROC_LOCAL(F) GrGL##F##Fn* F = (GrGL##F##Fn*)get(ctx, "gl" #F) 31*c8dee2aaSAndroid Build Coastguard Worker 32*c8dee2aaSAndroid Build Coastguard Worker#define GET_EGL_PROC_SUFFIX(F, S) functions->fEGL##F = (GrEGL##F##Fn*)get(ctx, "egl" #F #S) 33*c8dee2aaSAndroid Build Coastguard Worker 34*c8dee2aaSAndroid Build Coastguard Worker#if SK_DISABLE_GL_ES_INTERFACE 35*c8dee2aaSAndroid Build Coastguard Workersk_sp<const GrGLInterface> GrGLMakeAssembledGLESInterface(void *ctx, GrGLGetProc get) { 36*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 37*c8dee2aaSAndroid Build Coastguard Worker} 38*c8dee2aaSAndroid Build Coastguard Worker#else 39*c8dee2aaSAndroid Build Coastguard Workersk_sp<const GrGLInterface> GrGLMakeAssembledGLESInterface(void *ctx, GrGLGetProc get) { 40*c8dee2aaSAndroid Build Coastguard Worker GET_PROC_LOCAL(GetString); 41*c8dee2aaSAndroid Build Coastguard Worker if (nullptr == GetString) { 42*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 43*c8dee2aaSAndroid Build Coastguard Worker } 44*c8dee2aaSAndroid Build Coastguard Worker 45*c8dee2aaSAndroid Build Coastguard Worker const char* verStr = reinterpret_cast<const char*>(GetString(GR_GL_VERSION)); 46*c8dee2aaSAndroid Build Coastguard Worker GrGLVersion glVer = GrGLGetVersionFromString(verStr); 47*c8dee2aaSAndroid Build Coastguard Worker 48*c8dee2aaSAndroid Build Coastguard Worker if (glVer < GR_GL_VER(2,0)) { 49*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 50*c8dee2aaSAndroid Build Coastguard Worker } 51*c8dee2aaSAndroid Build Coastguard Worker 52*c8dee2aaSAndroid Build Coastguard Worker GET_PROC_LOCAL(GetIntegerv); 53*c8dee2aaSAndroid Build Coastguard Worker GET_PROC_LOCAL(GetStringi); 54*c8dee2aaSAndroid Build Coastguard Worker GrEGLQueryStringFn* queryString; 55*c8dee2aaSAndroid Build Coastguard Worker GrEGLDisplay display; 56*c8dee2aaSAndroid Build Coastguard Worker GrGetEGLQueryAndDisplay(&queryString, &display, ctx, get); 57*c8dee2aaSAndroid Build Coastguard Worker GrGLExtensions extensions; 58*c8dee2aaSAndroid Build Coastguard Worker if (!extensions.init(kGLES_GrGLStandard, GetString, GetStringi, GetIntegerv, queryString, 59*c8dee2aaSAndroid Build Coastguard Worker display)) { 60*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 61*c8dee2aaSAndroid Build Coastguard Worker } 62*c8dee2aaSAndroid Build Coastguard Worker 63*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrGLInterface> interface(new GrGLInterface); 64*c8dee2aaSAndroid Build Coastguard Worker GrGLInterface::Functions* functions = &interface->fFunctions; 65*c8dee2aaSAndroid Build Coastguard Worker 66*c8dee2aaSAndroid Build Coastguard Worker // Autogenerated content follows 67*c8dee2aaSAndroid Build Coastguard Worker[[content]] 68*c8dee2aaSAndroid Build Coastguard Worker // End autogenerated content 69*c8dee2aaSAndroid Build Coastguard Worker // TODO(kjlubick): Do we want a feature that removes the extension if it doesn't have 70*c8dee2aaSAndroid Build Coastguard Worker // the function? This is common on some low-end GPUs. 71*c8dee2aaSAndroid Build Coastguard Worker 72*c8dee2aaSAndroid Build Coastguard Worker if (extensions.has("GL_KHR_debug")) { 73*c8dee2aaSAndroid Build Coastguard Worker // In general we have a policy against removing extension strings when the driver does 74*c8dee2aaSAndroid Build Coastguard Worker // not provide function pointers for an advertised extension. However, because there is a 75*c8dee2aaSAndroid Build Coastguard Worker // known device that advertises GL_KHR_debug but fails to provide the functions and this is 76*c8dee2aaSAndroid Build Coastguard Worker // a debugging- only extension we've made an exception. This also can happen when using 77*c8dee2aaSAndroid Build Coastguard Worker // APITRACE. 78*c8dee2aaSAndroid Build Coastguard Worker if (!interface->fFunctions.fDebugMessageControl) { 79*c8dee2aaSAndroid Build Coastguard Worker extensions.remove("GL_KHR_debug"); 80*c8dee2aaSAndroid Build Coastguard Worker } 81*c8dee2aaSAndroid Build Coastguard Worker } 82*c8dee2aaSAndroid Build Coastguard Worker interface->fStandard = kGLES_GrGLStandard; 83*c8dee2aaSAndroid Build Coastguard Worker interface->fExtensions.swap(&extensions); 84*c8dee2aaSAndroid Build Coastguard Worker 85*c8dee2aaSAndroid Build Coastguard Worker return interface; 86*c8dee2aaSAndroid Build Coastguard Worker} 87*c8dee2aaSAndroid Build Coastguard Worker#endif 88*c8dee2aaSAndroid Build Coastguard Worker` 89*c8dee2aaSAndroid Build Coastguard Worker 90*c8dee2aaSAndroid Build Coastguard Workerconst ASSEMBLE_INTERFACE_GL = `/* 91*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2019 Google LLC 92*c8dee2aaSAndroid Build Coastguard Worker * 93*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 94*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 95*c8dee2aaSAndroid Build Coastguard Worker * 96*c8dee2aaSAndroid Build Coastguard Worker * THIS FILE IS AUTOGENERATED 97*c8dee2aaSAndroid Build Coastguard Worker * Make edits to tools/gpu/gl/interface/templates.go or they will 98*c8dee2aaSAndroid Build Coastguard Worker * be overwritten. 99*c8dee2aaSAndroid Build Coastguard Worker */ 100*c8dee2aaSAndroid Build Coastguard Worker 101*c8dee2aaSAndroid Build Coastguard Worker#include "include/core/SkRefCnt.h" 102*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLAssembleHelpers.h" 103*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLAssembleInterface.h" 104*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLExtensions.h" 105*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLFunctions.h" 106*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLInterface.h" 107*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLTypes.h" 108*c8dee2aaSAndroid Build Coastguard Worker#include "src/gpu/ganesh/gl/GrGLDefines.h" 109*c8dee2aaSAndroid Build Coastguard Worker#include "src/gpu/ganesh/gl/GrGLUtil.h" 110*c8dee2aaSAndroid Build Coastguard Worker 111*c8dee2aaSAndroid Build Coastguard Worker#define GET_PROC(F) functions->f##F = (GrGL##F##Fn*)get(ctx, "gl" #F) 112*c8dee2aaSAndroid Build Coastguard Worker#define GET_PROC_SUFFIX(F, S) functions->f##F = (GrGL##F##Fn*)get(ctx, "gl" #F #S) 113*c8dee2aaSAndroid Build Coastguard Worker#define GET_PROC_LOCAL(F) GrGL##F##Fn* F = (GrGL##F##Fn*)get(ctx, "gl" #F) 114*c8dee2aaSAndroid Build Coastguard Worker 115*c8dee2aaSAndroid Build Coastguard Worker#define GET_EGL_PROC_SUFFIX(F, S) functions->fEGL##F = (GrEGL##F##Fn*)get(ctx, "egl" #F #S) 116*c8dee2aaSAndroid Build Coastguard Worker 117*c8dee2aaSAndroid Build Coastguard Worker#if SK_DISABLE_GL_INTERFACE 118*c8dee2aaSAndroid Build Coastguard Workersk_sp<const GrGLInterface> GrGLMakeAssembledGLInterface(void *ctx, GrGLGetProc get) { 119*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 120*c8dee2aaSAndroid Build Coastguard Worker} 121*c8dee2aaSAndroid Build Coastguard Worker#else 122*c8dee2aaSAndroid Build Coastguard Workersk_sp<const GrGLInterface> GrGLMakeAssembledGLInterface(void *ctx, GrGLGetProc get) { 123*c8dee2aaSAndroid Build Coastguard Worker GET_PROC_LOCAL(GetString); 124*c8dee2aaSAndroid Build Coastguard Worker GET_PROC_LOCAL(GetStringi); 125*c8dee2aaSAndroid Build Coastguard Worker GET_PROC_LOCAL(GetIntegerv); 126*c8dee2aaSAndroid Build Coastguard Worker 127*c8dee2aaSAndroid Build Coastguard Worker // GetStringi may be nullptr depending on the GL version. 128*c8dee2aaSAndroid Build Coastguard Worker if (nullptr == GetString || nullptr == GetIntegerv) { 129*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 130*c8dee2aaSAndroid Build Coastguard Worker } 131*c8dee2aaSAndroid Build Coastguard Worker 132*c8dee2aaSAndroid Build Coastguard Worker const char* versionString = (const char*) GetString(GR_GL_VERSION); 133*c8dee2aaSAndroid Build Coastguard Worker GrGLVersion glVer = GrGLGetVersionFromString(versionString); 134*c8dee2aaSAndroid Build Coastguard Worker 135*c8dee2aaSAndroid Build Coastguard Worker if (glVer < GR_GL_VER(2,0) || GR_GL_INVALID_VER == glVer) { 136*c8dee2aaSAndroid Build Coastguard Worker // This is our minimum for non-ES GL. 137*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 138*c8dee2aaSAndroid Build Coastguard Worker } 139*c8dee2aaSAndroid Build Coastguard Worker 140*c8dee2aaSAndroid Build Coastguard Worker GrEGLQueryStringFn* queryString; 141*c8dee2aaSAndroid Build Coastguard Worker GrEGLDisplay display; 142*c8dee2aaSAndroid Build Coastguard Worker GrGetEGLQueryAndDisplay(&queryString, &display, ctx, get); 143*c8dee2aaSAndroid Build Coastguard Worker GrGLExtensions extensions; 144*c8dee2aaSAndroid Build Coastguard Worker if (!extensions.init(kGL_GrGLStandard, GetString, GetStringi, GetIntegerv, queryString, 145*c8dee2aaSAndroid Build Coastguard Worker display)) { 146*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 147*c8dee2aaSAndroid Build Coastguard Worker } 148*c8dee2aaSAndroid Build Coastguard Worker 149*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrGLInterface> interface(new GrGLInterface()); 150*c8dee2aaSAndroid Build Coastguard Worker GrGLInterface::Functions* functions = &interface->fFunctions; 151*c8dee2aaSAndroid Build Coastguard Worker 152*c8dee2aaSAndroid Build Coastguard Worker // Autogenerated content follows 153*c8dee2aaSAndroid Build Coastguard Worker[[content]] 154*c8dee2aaSAndroid Build Coastguard Worker // End autogenerated content 155*c8dee2aaSAndroid Build Coastguard Worker interface->fStandard = kGL_GrGLStandard; 156*c8dee2aaSAndroid Build Coastguard Worker interface->fExtensions.swap(&extensions); 157*c8dee2aaSAndroid Build Coastguard Worker 158*c8dee2aaSAndroid Build Coastguard Worker return interface; 159*c8dee2aaSAndroid Build Coastguard Worker} 160*c8dee2aaSAndroid Build Coastguard Worker#endif 161*c8dee2aaSAndroid Build Coastguard Worker` 162*c8dee2aaSAndroid Build Coastguard Worker 163*c8dee2aaSAndroid Build Coastguard Workerconst ASSEMBLE_INTERFACE_WEBGL = `/* 164*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2019 Google LLC 165*c8dee2aaSAndroid Build Coastguard Worker * 166*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 167*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 168*c8dee2aaSAndroid Build Coastguard Worker * 169*c8dee2aaSAndroid Build Coastguard Worker * THIS FILE IS AUTOGENERATED 170*c8dee2aaSAndroid Build Coastguard Worker * Make edits to tools/gpu/gl/interface/templates.go or they will 171*c8dee2aaSAndroid Build Coastguard Worker * be overwritten. 172*c8dee2aaSAndroid Build Coastguard Worker */ 173*c8dee2aaSAndroid Build Coastguard Worker#include "include/core/SkRefCnt.h" 174*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLAssembleInterface.h" 175*c8dee2aaSAndroid Build Coastguard Worker 176*c8dee2aaSAndroid Build Coastguard Worker#if SK_DISABLE_WEBGL_INTERFACE || !defined(__EMSCRIPTEN__) 177*c8dee2aaSAndroid Build Coastguard Workerstruct GrGLInterface; 178*c8dee2aaSAndroid Build Coastguard Workersk_sp<const GrGLInterface> GrGLMakeAssembledWebGLInterface(void *ctx, GrGLGetProc get) { 179*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 180*c8dee2aaSAndroid Build Coastguard Worker} 181*c8dee2aaSAndroid Build Coastguard Worker#else 182*c8dee2aaSAndroid Build Coastguard Worker 183*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLAssembleHelpers.h" 184*c8dee2aaSAndroid Build Coastguard Worker#include "src/gpu/ganesh/gl/GrGLUtil.h" 185*c8dee2aaSAndroid Build Coastguard Worker 186*c8dee2aaSAndroid Build Coastguard Worker// Located https://github.com/emscripten-core/emscripten/tree/7ba7700902c46734987585409502f3c63beb650f/system/include/webgl 187*c8dee2aaSAndroid Build Coastguard Worker#include <webgl/webgl1.h> 188*c8dee2aaSAndroid Build Coastguard Worker#include <webgl/webgl1_ext.h> 189*c8dee2aaSAndroid Build Coastguard Worker#include <webgl/webgl2.h> 190*c8dee2aaSAndroid Build Coastguard Worker#include <webgl/webgl2_ext.h> 191*c8dee2aaSAndroid Build Coastguard Worker 192*c8dee2aaSAndroid Build Coastguard Worker#define GET_PROC(F) functions->f##F = emscripten_gl##F 193*c8dee2aaSAndroid Build Coastguard Worker#define GET_PROC_SUFFIX(F, S) functions->f##F = emscripten_gl##F##S 194*c8dee2aaSAndroid Build Coastguard Worker 195*c8dee2aaSAndroid Build Coastguard Workersk_sp<const GrGLInterface> GrGLMakeAssembledWebGLInterface(void *ctx, GrGLGetProc get) { 196*c8dee2aaSAndroid Build Coastguard Worker const char* verStr = reinterpret_cast<const char*>(glGetString(GR_GL_VERSION)); 197*c8dee2aaSAndroid Build Coastguard Worker GrGLVersion glVer = GrGLGetVersionFromString(verStr); 198*c8dee2aaSAndroid Build Coastguard Worker if (glVer < GR_GL_VER(1,0)) { 199*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 200*c8dee2aaSAndroid Build Coastguard Worker } 201*c8dee2aaSAndroid Build Coastguard Worker 202*c8dee2aaSAndroid Build Coastguard Worker GrGLExtensions extensions; 203*c8dee2aaSAndroid Build Coastguard Worker if (!extensions.init(kWebGL_GrGLStandard, glGetString, glGetStringi, glGetIntegerv)) { 204*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 205*c8dee2aaSAndroid Build Coastguard Worker } 206*c8dee2aaSAndroid Build Coastguard Worker 207*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrGLInterface> interface(new GrGLInterface); 208*c8dee2aaSAndroid Build Coastguard Worker GrGLInterface::Functions* functions = &interface->fFunctions; 209*c8dee2aaSAndroid Build Coastguard Worker 210*c8dee2aaSAndroid Build Coastguard Worker // Autogenerated content follows 211*c8dee2aaSAndroid Build Coastguard Worker[[content]] 212*c8dee2aaSAndroid Build Coastguard Worker // End autogenerated content 213*c8dee2aaSAndroid Build Coastguard Worker 214*c8dee2aaSAndroid Build Coastguard Worker interface->fStandard = kWebGL_GrGLStandard; 215*c8dee2aaSAndroid Build Coastguard Worker interface->fExtensions.swap(&extensions); 216*c8dee2aaSAndroid Build Coastguard Worker 217*c8dee2aaSAndroid Build Coastguard Worker return interface; 218*c8dee2aaSAndroid Build Coastguard Worker} 219*c8dee2aaSAndroid Build Coastguard Worker#endif 220*c8dee2aaSAndroid Build Coastguard Worker` 221*c8dee2aaSAndroid Build Coastguard Worker 222*c8dee2aaSAndroid Build Coastguard Workerconst VALIDATE_INTERFACE = `/* 223*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2011 Google Inc. 224*c8dee2aaSAndroid Build Coastguard Worker * 225*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 226*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 227*c8dee2aaSAndroid Build Coastguard Worker * 228*c8dee2aaSAndroid Build Coastguard Worker * THIS FILE IS AUTOGENERATED 229*c8dee2aaSAndroid Build Coastguard Worker * Make edits to tools/gpu/gl/interface/templates.go or they will 230*c8dee2aaSAndroid Build Coastguard Worker * be overwritten. 231*c8dee2aaSAndroid Build Coastguard Worker */ 232*c8dee2aaSAndroid Build Coastguard Worker 233*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLConfig.h" 234*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLExtensions.h" 235*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLFunctions.h" 236*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLInterface.h" 237*c8dee2aaSAndroid Build Coastguard Worker#include "include/gpu/ganesh/gl/GrGLTypes.h" 238*c8dee2aaSAndroid Build Coastguard Worker#include "include/private/base/SkDebug.h" 239*c8dee2aaSAndroid Build Coastguard Worker#include "src/gpu/ganesh/gl/GrGLDefines.h" 240*c8dee2aaSAndroid Build Coastguard Worker#include "src/gpu/ganesh/gl/GrGLUtil.h" 241*c8dee2aaSAndroid Build Coastguard Worker 242*c8dee2aaSAndroid Build Coastguard WorkerGrGLInterface::GrGLInterface() { 243*c8dee2aaSAndroid Build Coastguard Worker fStandard = kNone_GrGLStandard; 244*c8dee2aaSAndroid Build Coastguard Worker} 245*c8dee2aaSAndroid Build Coastguard Worker 246*c8dee2aaSAndroid Build Coastguard Worker#if GR_GL_CHECK_ERROR 247*c8dee2aaSAndroid Build Coastguard Workerstatic const char* get_error_string(GrGLenum err) { 248*c8dee2aaSAndroid Build Coastguard Worker switch (err) { 249*c8dee2aaSAndroid Build Coastguard Worker case GR_GL_NO_ERROR: 250*c8dee2aaSAndroid Build Coastguard Worker return ""; 251*c8dee2aaSAndroid Build Coastguard Worker case GR_GL_INVALID_ENUM: 252*c8dee2aaSAndroid Build Coastguard Worker return "Invalid Enum"; 253*c8dee2aaSAndroid Build Coastguard Worker case GR_GL_INVALID_VALUE: 254*c8dee2aaSAndroid Build Coastguard Worker return "Invalid Value"; 255*c8dee2aaSAndroid Build Coastguard Worker case GR_GL_INVALID_OPERATION: 256*c8dee2aaSAndroid Build Coastguard Worker return "Invalid Operation"; 257*c8dee2aaSAndroid Build Coastguard Worker case GR_GL_OUT_OF_MEMORY: 258*c8dee2aaSAndroid Build Coastguard Worker return "Out of Memory"; 259*c8dee2aaSAndroid Build Coastguard Worker case GR_GL_CONTEXT_LOST: 260*c8dee2aaSAndroid Build Coastguard Worker return "Context Lost"; 261*c8dee2aaSAndroid Build Coastguard Worker } 262*c8dee2aaSAndroid Build Coastguard Worker return "Unknown"; 263*c8dee2aaSAndroid Build Coastguard Worker} 264*c8dee2aaSAndroid Build Coastguard Worker 265*c8dee2aaSAndroid Build Coastguard WorkerGrGLenum GrGLInterface::checkError(const char* location, const char* call) const { 266*c8dee2aaSAndroid Build Coastguard Worker GrGLenum error = fFunctions.fGetError(); 267*c8dee2aaSAndroid Build Coastguard Worker if (error != GR_GL_NO_ERROR && !fSuppressErrorLogging) { 268*c8dee2aaSAndroid Build Coastguard Worker SkDebugf("---- glGetError 0x%x(%s)", error, get_error_string(error)); 269*c8dee2aaSAndroid Build Coastguard Worker if (location) { 270*c8dee2aaSAndroid Build Coastguard Worker SkDebugf(" at\n\t%s", location); 271*c8dee2aaSAndroid Build Coastguard Worker } 272*c8dee2aaSAndroid Build Coastguard Worker if (call) { 273*c8dee2aaSAndroid Build Coastguard Worker SkDebugf("\n\t\t%s", call); 274*c8dee2aaSAndroid Build Coastguard Worker } 275*c8dee2aaSAndroid Build Coastguard Worker SkDebugf("\n"); 276*c8dee2aaSAndroid Build Coastguard Worker if (error == GR_GL_OUT_OF_MEMORY) { 277*c8dee2aaSAndroid Build Coastguard Worker fOOMed = true; 278*c8dee2aaSAndroid Build Coastguard Worker } 279*c8dee2aaSAndroid Build Coastguard Worker } 280*c8dee2aaSAndroid Build Coastguard Worker return error; 281*c8dee2aaSAndroid Build Coastguard Worker} 282*c8dee2aaSAndroid Build Coastguard Worker 283*c8dee2aaSAndroid Build Coastguard Workerbool GrGLInterface::checkAndResetOOMed() const { 284*c8dee2aaSAndroid Build Coastguard Worker if (fOOMed) { 285*c8dee2aaSAndroid Build Coastguard Worker fOOMed = false; 286*c8dee2aaSAndroid Build Coastguard Worker return true; 287*c8dee2aaSAndroid Build Coastguard Worker } 288*c8dee2aaSAndroid Build Coastguard Worker return false; 289*c8dee2aaSAndroid Build Coastguard Worker} 290*c8dee2aaSAndroid Build Coastguard Worker 291*c8dee2aaSAndroid Build Coastguard Workervoid GrGLInterface::suppressErrorLogging() { fSuppressErrorLogging = true; } 292*c8dee2aaSAndroid Build Coastguard Worker#endif 293*c8dee2aaSAndroid Build Coastguard Worker 294*c8dee2aaSAndroid Build Coastguard Worker#define RETURN_FALSE_INTERFACE \ 295*c8dee2aaSAndroid Build Coastguard Worker SkDEBUGF("%s:%d GrGLInterface::validate() failed.\n", __FILE__, __LINE__); \ 296*c8dee2aaSAndroid Build Coastguard Worker return false 297*c8dee2aaSAndroid Build Coastguard Worker 298*c8dee2aaSAndroid Build Coastguard Workerbool GrGLInterface::validate() const { 299*c8dee2aaSAndroid Build Coastguard Worker 300*c8dee2aaSAndroid Build Coastguard Worker if (kNone_GrGLStandard == fStandard) { 301*c8dee2aaSAndroid Build Coastguard Worker RETURN_FALSE_INTERFACE; 302*c8dee2aaSAndroid Build Coastguard Worker } 303*c8dee2aaSAndroid Build Coastguard Worker 304*c8dee2aaSAndroid Build Coastguard Worker if (!fExtensions.isInitialized()) { 305*c8dee2aaSAndroid Build Coastguard Worker RETURN_FALSE_INTERFACE; 306*c8dee2aaSAndroid Build Coastguard Worker } 307*c8dee2aaSAndroid Build Coastguard Worker 308*c8dee2aaSAndroid Build Coastguard Worker GrGLVersion glVer = GrGLGetVersion(this); 309*c8dee2aaSAndroid Build Coastguard Worker if (GR_GL_INVALID_VER == glVer) { 310*c8dee2aaSAndroid Build Coastguard Worker RETURN_FALSE_INTERFACE; 311*c8dee2aaSAndroid Build Coastguard Worker } 312*c8dee2aaSAndroid Build Coastguard Worker // Autogenerated content follows 313*c8dee2aaSAndroid Build Coastguard Worker[[content]] 314*c8dee2aaSAndroid Build Coastguard Worker // End autogenerated content 315*c8dee2aaSAndroid Build Coastguard Worker return true; 316*c8dee2aaSAndroid Build Coastguard Worker} 317*c8dee2aaSAndroid Build Coastguard Worker 318*c8dee2aaSAndroid Build Coastguard Worker#if defined(GPU_TEST_UTILS) 319*c8dee2aaSAndroid Build Coastguard Worker 320*c8dee2aaSAndroid Build Coastguard Workervoid GrGLInterface::abandon() const { 321*c8dee2aaSAndroid Build Coastguard Worker const_cast<GrGLInterface*>(this)->fFunctions = GrGLInterface::Functions(); 322*c8dee2aaSAndroid Build Coastguard Worker} 323*c8dee2aaSAndroid Build Coastguard Worker 324*c8dee2aaSAndroid Build Coastguard Worker#endif // defined(GPU_TEST_UTILS) 325*c8dee2aaSAndroid Build Coastguard Worker` 326