• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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