| // Copyright 2015 Google Inc. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #include <EGL/egl.h> |
| #include <GLES2/gl2.h> |
| |
| #include "third_party/skia/include/gpu/gl/GrGLInterface.h" |
| #include "third_party/skia/src/gpu/gl/GrGLAssembleInterface.h" |
| #include "third_party/skia/src/gpu/gl/GrGLUtil.h" |
| |
| #define REGISTER_GL_FUNCTION(F) \ |
| if (0 == strcmp("gl" #F, name)) { \ |
| return reinterpret_cast<GrGLFuncPtr>(&gl##F); \ |
| } |
| |
| GrGLFuncPtr GetGLProc(void* ctx, const char name[]) { |
| SkASSERT(NULL == ctx); |
| |
| // Make non-extension GL function addresses available without having |
| // to go through eglGetProcAddress() if possible. |
| REGISTER_GL_FUNCTION(ActiveTexture); |
| REGISTER_GL_FUNCTION(AttachShader); |
| REGISTER_GL_FUNCTION(BindAttribLocation); |
| REGISTER_GL_FUNCTION(BindBuffer); |
| REGISTER_GL_FUNCTION(BindFramebuffer); |
| REGISTER_GL_FUNCTION(BindRenderbuffer); |
| REGISTER_GL_FUNCTION(BindTexture); |
| REGISTER_GL_FUNCTION(BlendColor); |
| REGISTER_GL_FUNCTION(BlendFunc); |
| REGISTER_GL_FUNCTION(BufferData); |
| REGISTER_GL_FUNCTION(BufferSubData); |
| REGISTER_GL_FUNCTION(CheckFramebufferStatus); |
| REGISTER_GL_FUNCTION(Clear); |
| REGISTER_GL_FUNCTION(ClearColor); |
| REGISTER_GL_FUNCTION(ClearStencil); |
| REGISTER_GL_FUNCTION(ColorMask); |
| REGISTER_GL_FUNCTION(CompileShader); |
| REGISTER_GL_FUNCTION(CompressedTexImage2D); |
| REGISTER_GL_FUNCTION(CompressedTexSubImage2D); |
| REGISTER_GL_FUNCTION(CopyTexSubImage2D); |
| REGISTER_GL_FUNCTION(CreateProgram); |
| REGISTER_GL_FUNCTION(CreateShader); |
| REGISTER_GL_FUNCTION(CullFace); |
| REGISTER_GL_FUNCTION(DeleteBuffers); |
| REGISTER_GL_FUNCTION(DeleteFramebuffers); |
| REGISTER_GL_FUNCTION(DeleteProgram); |
| REGISTER_GL_FUNCTION(DeleteRenderbuffers); |
| REGISTER_GL_FUNCTION(DeleteShader); |
| REGISTER_GL_FUNCTION(DeleteTextures); |
| REGISTER_GL_FUNCTION(DepthMask); |
| REGISTER_GL_FUNCTION(Disable); |
| REGISTER_GL_FUNCTION(DisableVertexAttribArray); |
| REGISTER_GL_FUNCTION(DrawArrays); |
| REGISTER_GL_FUNCTION(DrawElements); |
| REGISTER_GL_FUNCTION(Enable); |
| REGISTER_GL_FUNCTION(EnableVertexAttribArray); |
| REGISTER_GL_FUNCTION(Finish); |
| REGISTER_GL_FUNCTION(Flush); |
| REGISTER_GL_FUNCTION(FramebufferRenderbuffer); |
| REGISTER_GL_FUNCTION(FramebufferTexture2D); |
| REGISTER_GL_FUNCTION(FrontFace); |
| REGISTER_GL_FUNCTION(GenBuffers); |
| REGISTER_GL_FUNCTION(GenerateMipmap); |
| REGISTER_GL_FUNCTION(GenFramebuffers); |
| REGISTER_GL_FUNCTION(GenRenderbuffers); |
| REGISTER_GL_FUNCTION(GenTextures); |
| REGISTER_GL_FUNCTION(GetBufferParameteriv); |
| REGISTER_GL_FUNCTION(GetError); |
| REGISTER_GL_FUNCTION(GetFramebufferAttachmentParameteriv); |
| REGISTER_GL_FUNCTION(GetIntegerv); |
| REGISTER_GL_FUNCTION(GetIntegerv); |
| REGISTER_GL_FUNCTION(GetProgramInfoLog); |
| REGISTER_GL_FUNCTION(GetProgramiv); |
| REGISTER_GL_FUNCTION(GetRenderbufferParameteriv); |
| REGISTER_GL_FUNCTION(GetShaderInfoLog); |
| REGISTER_GL_FUNCTION(GetShaderiv); |
| REGISTER_GL_FUNCTION(GetString); |
| REGISTER_GL_FUNCTION(GetUniformLocation); |
| REGISTER_GL_FUNCTION(LineWidth); |
| REGISTER_GL_FUNCTION(LinkProgram); |
| REGISTER_GL_FUNCTION(PixelStorei); |
| REGISTER_GL_FUNCTION(ReadPixels); |
| REGISTER_GL_FUNCTION(RenderbufferStorage); |
| REGISTER_GL_FUNCTION(Scissor); |
| REGISTER_GL_FUNCTION(ShaderSource); |
| REGISTER_GL_FUNCTION(StencilFunc); |
| REGISTER_GL_FUNCTION(StencilFuncSeparate); |
| REGISTER_GL_FUNCTION(StencilMask); |
| REGISTER_GL_FUNCTION(StencilMaskSeparate); |
| REGISTER_GL_FUNCTION(StencilOp); |
| REGISTER_GL_FUNCTION(StencilOpSeparate); |
| REGISTER_GL_FUNCTION(TexImage2D); |
| REGISTER_GL_FUNCTION(TexParameteri); |
| REGISTER_GL_FUNCTION(TexParameteriv); |
| REGISTER_GL_FUNCTION(TexSubImage2D); |
| REGISTER_GL_FUNCTION(Uniform1f); |
| REGISTER_GL_FUNCTION(Uniform1fv); |
| REGISTER_GL_FUNCTION(Uniform1i); |
| REGISTER_GL_FUNCTION(Uniform1iv); |
| REGISTER_GL_FUNCTION(Uniform2f); |
| REGISTER_GL_FUNCTION(Uniform2fv); |
| REGISTER_GL_FUNCTION(Uniform2i); |
| REGISTER_GL_FUNCTION(Uniform2iv); |
| REGISTER_GL_FUNCTION(Uniform3f); |
| REGISTER_GL_FUNCTION(Uniform3fv); |
| REGISTER_GL_FUNCTION(Uniform3i); |
| REGISTER_GL_FUNCTION(Uniform3iv); |
| REGISTER_GL_FUNCTION(Uniform4f); |
| REGISTER_GL_FUNCTION(Uniform4fv); |
| REGISTER_GL_FUNCTION(Uniform4i); |
| REGISTER_GL_FUNCTION(Uniform4iv); |
| REGISTER_GL_FUNCTION(UniformMatrix2fv); |
| REGISTER_GL_FUNCTION(UniformMatrix3fv); |
| REGISTER_GL_FUNCTION(UniformMatrix4fv); |
| REGISTER_GL_FUNCTION(UseProgram); |
| REGISTER_GL_FUNCTION(VertexAttrib4fv); |
| REGISTER_GL_FUNCTION(VertexAttribPointer); |
| REGISTER_GL_FUNCTION(Viewport); |
| |
| return eglGetProcAddress(name); |
| } |
| |
| const GrGLInterface* GrGLCreateNativeInterface() { |
| return GrGLAssembleInterface(NULL, &GetGLProc); |
| } |