123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /*
- * Copyright 2014 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "include/gpu/gl/GrGLAssembleHelpers.h"
- #include "include/gpu/gl/GrGLAssembleInterface.h"
- #include "src/gpu/gl/GrGLUtil.h"
- #define GET_PROC_LOCAL(F) GrGL##F##Fn* F = (GrGL##F##Fn*)get(ctx, "gl" #F)
- sk_sp<const GrGLInterface> GrGLMakeAssembledInterface(void *ctx, GrGLGetProc get) {
- GET_PROC_LOCAL(GetString);
- if (nullptr == GetString) {
- return nullptr;
- }
- const char* verStr = reinterpret_cast<const char*>(GetString(GR_GL_VERSION));
- if (nullptr == verStr) {
- return nullptr;
- }
- GrGLStandard standard = GrGLGetStandardInUseFromString(verStr);
- // standard can be unused (optimzed away) if SK_ASSUME_GL_ES is set
- sk_ignore_unused_variable(standard);
- if (GR_IS_GR_GL_ES(standard)) {
- return GrGLMakeAssembledGLESInterface(ctx, get);
- } else if (GR_IS_GR_GL(standard)) {
- return GrGLMakeAssembledGLInterface(ctx, get);
- } else if (GR_IS_GR_WEBGL(standard)) {
- return GrGLMakeAssembledWebGLInterface(ctx, get);
- }
- return nullptr;
- }
- SK_API const GrGLInterface* GrGLAssembleInterface(void *ctx, GrGLGetProc get) {
- return GrGLMakeAssembledInterface(ctx, get).release();
- }
|