/* * 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 GrGLMakeAssembledInterface(void *ctx, GrGLGetProc get) { GET_PROC_LOCAL(GetString); if (nullptr == GetString) { return nullptr; } const char* verStr = reinterpret_cast(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(); }