blob: 2a0f774f0e2af9730f3277c58a8731b5c1369006 [file] [log] [blame]
/*
* 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;
}
const GrGLInterface* GrGLAssembleInterface(void *ctx, GrGLGetProc get) {
return GrGLMakeAssembledInterface(ctx, get).release();
}