1 // Modified from chromium/src/webkit/glue/gl_bindings_skia_cmd_buffer.cc 2 3 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style license that can be 5 // found in the LICENSE file. 6 7 #include "gl/GrGLInterface.h" 8 9 #ifndef GL_GLEXT_PROTOTYPES 10 #define GL_GLEXT_PROTOTYPES 11 #endif 12 13 #include <GLES2/gl2.h> 14 #include <GLES2/gl2ext.h> 15 GrGLCreateNativeInterface()16 const GrGLInterface* GrGLCreateNativeInterface() { 17 static SkAutoTUnref<GrGLInterface> glInterface; 18 if (!glInterface.get()) { 19 GrGLInterface* interface = new GrGLInterface; 20 glInterface.reset(interface); 21 interface->fBindingsExported = kES2_GrGLBinding; 22 interface->fActiveTexture = glActiveTexture; 23 interface->fAttachShader = glAttachShader; 24 interface->fBindAttribLocation = glBindAttribLocation; 25 interface->fBindBuffer = glBindBuffer; 26 interface->fBindTexture = glBindTexture; 27 interface->fBlendColor = glBlendColor; 28 interface->fBlendFunc = glBlendFunc; 29 interface->fBufferData = glBufferData; 30 interface->fBufferSubData = glBufferSubData; 31 interface->fClear = glClear; 32 interface->fClearColor = glClearColor; 33 interface->fClearStencil = glClearStencil; 34 interface->fColorMask = glColorMask; 35 interface->fCompileShader = glCompileShader; 36 interface->fCompressedTexImage2D = glCompressedTexImage2D; 37 interface->fCreateProgram = glCreateProgram; 38 interface->fCreateShader = glCreateShader; 39 interface->fCullFace = glCullFace; 40 interface->fDeleteBuffers = glDeleteBuffers; 41 interface->fDeleteProgram = glDeleteProgram; 42 interface->fDeleteShader = glDeleteShader; 43 interface->fDeleteTextures = glDeleteTextures; 44 interface->fDepthMask = glDepthMask; 45 interface->fDisable = glDisable; 46 interface->fDisableVertexAttribArray = glDisableVertexAttribArray; 47 interface->fDrawArrays = glDrawArrays; 48 interface->fDrawElements = glDrawElements; 49 interface->fEnable = glEnable; 50 interface->fEnableVertexAttribArray = glEnableVertexAttribArray; 51 interface->fFinish = glFinish; 52 interface->fFlush = glFlush; 53 interface->fFrontFace = glFrontFace; 54 interface->fGenBuffers = glGenBuffers; 55 interface->fGenTextures = glGenTextures; 56 interface->fGetBufferParameteriv = glGetBufferParameteriv; 57 interface->fGetError = glGetError; 58 interface->fGetIntegerv = glGetIntegerv; 59 interface->fGetProgramInfoLog = glGetProgramInfoLog; 60 interface->fGetProgramiv = glGetProgramiv; 61 interface->fGetShaderInfoLog = glGetShaderInfoLog; 62 interface->fGetShaderiv = glGetShaderiv; 63 interface->fGetString = glGetString; 64 interface->fGetUniformLocation = glGetUniformLocation; 65 interface->fLineWidth = glLineWidth; 66 interface->fLinkProgram = glLinkProgram; 67 interface->fPixelStorei = glPixelStorei; 68 interface->fReadPixels = glReadPixels; 69 interface->fScissor = glScissor; 70 interface->fShaderSource = glShaderSource; 71 interface->fStencilFunc = glStencilFunc; 72 interface->fStencilFuncSeparate = glStencilFuncSeparate; 73 interface->fStencilMask = glStencilMask; 74 interface->fStencilMaskSeparate = glStencilMaskSeparate; 75 interface->fStencilOp = glStencilOp; 76 interface->fStencilOpSeparate = glStencilOpSeparate; 77 interface->fTexImage2D = glTexImage2D; 78 interface->fTexParameteri = glTexParameteri; 79 interface->fTexSubImage2D = glTexSubImage2D; 80 #if GL_ARB_texture_storage 81 interface->fTexStorage2D = glTexStorage2D; 82 #elif GL_EXT_texture_storage 83 interface->fTexStorage2D = glTexStorage2DEXT; 84 #endif 85 interface->fUniform1f = glUniform1f; 86 interface->fUniform1i = glUniform1i; 87 interface->fUniform1fv = glUniform1fv; 88 interface->fUniform1iv = glUniform1iv; 89 interface->fUniform2f = glUniform2f; 90 interface->fUniform2i = glUniform2i; 91 interface->fUniform2fv = glUniform2fv; 92 interface->fUniform2iv = glUniform2iv; 93 interface->fUniform3f = glUniform3f; 94 interface->fUniform3i = glUniform3i; 95 interface->fUniform3fv = glUniform3fv; 96 interface->fUniform3iv = glUniform3iv; 97 interface->fUniform4f = glUniform4f; 98 interface->fUniform4i = glUniform4i; 99 interface->fUniform4fv = glUniform4fv; 100 interface->fUniform4iv = glUniform4iv; 101 interface->fUniformMatrix2fv = glUniformMatrix2fv; 102 interface->fUniformMatrix3fv = glUniformMatrix3fv; 103 interface->fUniformMatrix4fv = glUniformMatrix4fv; 104 interface->fUseProgram = glUseProgram; 105 interface->fVertexAttrib4fv = glVertexAttrib4fv; 106 interface->fVertexAttribPointer = glVertexAttribPointer; 107 interface->fViewport = glViewport; 108 interface->fBindFramebuffer = glBindFramebuffer; 109 interface->fBindRenderbuffer = glBindRenderbuffer; 110 interface->fCheckFramebufferStatus = glCheckFramebufferStatus; 111 interface->fDeleteFramebuffers = glDeleteFramebuffers; 112 interface->fDeleteRenderbuffers = glDeleteRenderbuffers; 113 interface->fFramebufferRenderbuffer = glFramebufferRenderbuffer; 114 interface->fFramebufferTexture2D = glFramebufferTexture2D; 115 interface->fGenFramebuffers = glGenFramebuffers; 116 interface->fGenRenderbuffers = glGenRenderbuffers; 117 interface->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameteriv; 118 interface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv; 119 interface->fRenderbufferStorage = glRenderbufferStorage; 120 #if GL_OES_mapbuffer 121 interface->fMapBuffer = glMapBufferOES; 122 interface->fUnmapBuffer = glUnmapBufferOES; 123 #endif 124 } 125 glInterface.get()->ref(); 126 return glInterface.get(); 127 } 128