blob: cc5fe7623bb44415b27b861e19d5155366881234 [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/GrGLAssembleInterface.h"
#include "include/gpu/gl/GrGLInterface.h"
#include "src/gpu/gl/GrGLUtil.h"
#include <EGL/egl.h>
#ifndef GL_GLEXT_PROTOTYPES
#define GL_GLEXT_PROTOTYPES
#endif
#include <GLES2/gl2.h>
static GrGLFuncPtr egl_get_gl_proc(void* ctx, const char name[]) {
SkASSERT(nullptr == ctx);
// https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt
// eglGetProcAddress() is not guaranteed to support the querying of non-extension EGL functions.
#define M(X) if (0 == strcmp(#X, name)) { return (GrGLFuncPtr) X; }
M(eglGetCurrentDisplay)
M(eglQueryString)
M(glActiveTexture)
M(glAttachShader)
M(glBindAttribLocation)
M(glBindBuffer)
M(glBindFramebuffer)
M(glBindRenderbuffer)
M(glBindTexture)
M(glBlendColor)
M(glBlendEquation)
M(glBlendFunc)
M(glBufferData)
M(glBufferSubData)
M(glCheckFramebufferStatus)
M(glClear)
M(glClearColor)
M(glClearStencil)
M(glColorMask)
M(glCompileShader)
M(glCompressedTexImage2D)
M(glCompressedTexSubImage2D)
M(glCopyTexSubImage2D)
M(glCreateProgram)
M(glCreateShader)
M(glCullFace)
M(glDeleteBuffers)
M(glDeleteFramebuffers)
M(glDeleteProgram)
M(glDeleteRenderbuffers)
M(glDeleteShader)
M(glDeleteTextures)
M(glDepthMask)
M(glDisable)
M(glDisableVertexAttribArray)
M(glDrawArrays)
M(glDrawElements)
M(glEnable)
M(glEnableVertexAttribArray)
M(glFinish)
M(glFlush)
M(glFramebufferRenderbuffer)
M(glFramebufferTexture2D)
M(glFrontFace)
M(glGenBuffers)
M(glGenFramebuffers)
M(glGenRenderbuffers)
M(glGenTextures)
M(glGenerateMipmap)
M(glGetBufferParameteriv)
M(glGetError)
M(glGetFramebufferAttachmentParameteriv)
M(glGetIntegerv)
M(glGetProgramInfoLog)
M(glGetProgramiv)
M(glGetRenderbufferParameteriv)
M(glGetShaderInfoLog)
M(glGetShaderPrecisionFormat)
M(glGetShaderiv)
M(glGetString)
M(glGetUniformLocation)
M(glIsTexture)
M(glLineWidth)
M(glLinkProgram)
M(glPixelStorei)
M(glReadPixels)
M(glRenderbufferStorage)
M(glScissor)
M(glShaderSource)
M(glStencilFunc)
M(glStencilFuncSeparate)
M(glStencilMask)
M(glStencilMaskSeparate)
M(glStencilOp)
M(glStencilOpSeparate)
M(glTexImage2D)
M(glTexParameterf)
M(glTexParameterfv)
M(glTexParameteri)
M(glTexParameteriv)
M(glTexSubImage2D)
M(glUniform1f)
M(glUniform1fv)
M(glUniform1i)
M(glUniform1iv)
M(glUniform2f)
M(glUniform2fv)
M(glUniform2i)
M(glUniform2iv)
M(glUniform3f)
M(glUniform3fv)
M(glUniform3i)
M(glUniform3iv)
M(glUniform4f)
M(glUniform4fv)
M(glUniform4i)
M(glUniform4iv)
M(glUniformMatrix2fv)
M(glUniformMatrix3fv)
M(glUniformMatrix4fv)
M(glUseProgram)
M(glVertexAttrib1f)
M(glVertexAttrib2fv)
M(glVertexAttrib3fv)
M(glVertexAttrib4fv)
M(glVertexAttribPointer)
M(glViewport)
#undef M
return eglGetProcAddress(name);
}
sk_sp<const GrGLInterface> GrGLMakeEGLInterface() {
return GrGLMakeAssembledInterface(nullptr, egl_get_gl_proc);
}