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