| /* |
| * 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); |
| } |