Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Side by Side Diff: src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp

Issue 351583002: Revert of Support using OpenGL ES context on desktop (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/gl/SkNullGLContext.cpp ('k') | src/gpu/gl/android/SkNativeGLContext_android.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Modified from chromium/src/webkit/glue/gl_bindings_skia_cmd_buffer.cc 1 // Modified from chromium/src/webkit/glue/gl_bindings_skia_cmd_buffer.cc
2 2
3 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 4 // Use of this source code is governed by a BSD-style license that can be
5 // found in the LICENSE file. 5 // found in the LICENSE file.
6 6
7 #include "gl/GrGLInterface.h" 7 #include "gl/GrGLInterface.h"
8 #include "gl/GrGLAssembleInterface.h" 8 #include "gl/GrGLAssembleInterface.h"
9 #include "gl/GrGLExtensions.h" 9 #include "gl/GrGLExtensions.h"
10 #include "gl/GrGLUtil.h" 10 #include "gl/GrGLUtil.h"
11 11
12 #ifndef GL_GLEXT_PROTOTYPES 12 #ifndef GL_GLEXT_PROTOTYPES
13 #define GL_GLEXT_PROTOTYPES 13 #define GL_GLEXT_PROTOTYPES
14 #endif 14 #endif
15 15
16 #include <GLES2/gl2.h> 16 #include <GLES2/gl2.h>
17 #include <GLES2/gl2ext.h> 17 #include <GLES2/gl2ext.h>
18 18
19 #include <EGL/egl.h> 19 #include <EGL/egl.h>
20 20
21 #define GET_PROC(F) functions->f ## F = (GrGL ## F ## Proc) get(ctx, "gl" #F) 21 static GrGLInterface* create_es_interface(GrGLVersion version,
22 #define GET_PROC_SUFFIX(F, S) functions->f ## F = (GrGL ## F ## Proc) get(ctx, " gl" #F #S) 22 GrGLExtensions* extensions) {
23 #define GET_PROC_LOCAL(F) GrGL ## F ## Proc F = (GrGL ## F ## Proc) get(ctx, "gl " #F) 23 if (version < GR_GL_VER(2,0)) {
24 24 return NULL;
25 #define GET_LINKED(F) functions->f ## F = gl ## F 25 }
26 #define GET_LINKED_SUFFIX(F, S) functions->f ## F = gl ## F ##S 26
27 #define USE_LINKED 1 27 GrGLInterface* interface = SkNEW(GrGLInterface);
28 28 interface->fStandard = kGLES_GrGLStandard;
29 #include "gl/GrGLAssembleGLESInterface.h" 29 GrGLInterface::Functions* functions = &interface->fFunctions;
30
31 functions->fActiveTexture = glActiveTexture;
32 functions->fAttachShader = glAttachShader;
33 functions->fBindAttribLocation = glBindAttribLocation;
34 functions->fBindBuffer = glBindBuffer;
35 functions->fBindTexture = glBindTexture;
36 functions->fBindVertexArray = glBindVertexArrayOES;
37 functions->fBlendColor = glBlendColor;
38 functions->fBlendFunc = glBlendFunc;
39 functions->fBufferData = glBufferData;
40 functions->fBufferSubData = glBufferSubData;
41 functions->fClear = glClear;
42 functions->fClearColor = glClearColor;
43 functions->fClearStencil = glClearStencil;
44 functions->fColorMask = glColorMask;
45 functions->fCompileShader = glCompileShader;
46 functions->fCompressedTexImage2D = glCompressedTexImage2D;
47 functions->fCompressedTexSubImage2D = glCompressedTexSubImage2D;
48 functions->fCopyTexSubImage2D = glCopyTexSubImage2D;
49 functions->fCreateProgram = glCreateProgram;
50 functions->fCreateShader = glCreateShader;
51 functions->fCullFace = glCullFace;
52 functions->fDeleteBuffers = glDeleteBuffers;
53 functions->fDeleteProgram = glDeleteProgram;
54 functions->fDeleteShader = glDeleteShader;
55 functions->fDeleteTextures = glDeleteTextures;
56 functions->fDeleteVertexArrays = glDeleteVertexArraysOES;
57 functions->fDepthMask = glDepthMask;
58 functions->fDisable = glDisable;
59 functions->fDisableVertexAttribArray = glDisableVertexAttribArray;
60 functions->fDrawArrays = glDrawArrays;
61 functions->fDrawElements = glDrawElements;
62 functions->fEnable = glEnable;
63 functions->fEnableVertexAttribArray = glEnableVertexAttribArray;
64 functions->fFinish = glFinish;
65 functions->fFlush = glFlush;
66 functions->fFrontFace = glFrontFace;
67 functions->fGenBuffers = glGenBuffers;
68 functions->fGenerateMipmap = glGenerateMipmap;
69 functions->fGenTextures = glGenTextures;
70 functions->fGenVertexArrays = glGenVertexArraysOES;
71 functions->fGetBufferParameteriv = glGetBufferParameteriv;
72 functions->fGetError = glGetError;
73 functions->fGetIntegerv = glGetIntegerv;
74 functions->fGetProgramInfoLog = glGetProgramInfoLog;
75 functions->fGetProgramiv = glGetProgramiv;
76 functions->fGetShaderInfoLog = glGetShaderInfoLog;
77 functions->fGetShaderiv = glGetShaderiv;
78 functions->fGetString = glGetString;
79 #if GL_ES_VERSION_3_0
80 functions->fGetStringi = glGetStringi;
81 #else
82 functions->fGetStringi = (GrGLGetStringiProc) eglGetProcAddress("glGetString i");
83 #endif
84 functions->fGetUniformLocation = glGetUniformLocation;
85 functions->fLineWidth = glLineWidth;
86 functions->fLinkProgram = glLinkProgram;
87 functions->fPixelStorei = glPixelStorei;
88 functions->fReadPixels = glReadPixels;
89 functions->fScissor = glScissor;
90 #if GR_GL_USE_NEW_SHADER_SOURCE_SIGNATURE
91 functions->fShaderSource = (GrGLShaderSourceProc) glShaderSource;
92 #else
93 functions->fShaderSource = glShaderSource;
94 #endif
95 functions->fStencilFunc = glStencilFunc;
96 functions->fStencilFuncSeparate = glStencilFuncSeparate;
97 functions->fStencilMask = glStencilMask;
98 functions->fStencilMaskSeparate = glStencilMaskSeparate;
99 functions->fStencilOp = glStencilOp;
100 functions->fStencilOpSeparate = glStencilOpSeparate;
101 functions->fTexImage2D = glTexImage2D;
102 functions->fTexParameteri = glTexParameteri;
103 functions->fTexParameteriv = glTexParameteriv;
104 functions->fTexSubImage2D = glTexSubImage2D;
105
106 if (version >= GR_GL_VER(3,0)) {
107 #if GL_ES_VERSION_3_0
108 functions->fTexStorage2D = glTexStorage2D;
109 #else
110 functions->fTexStorage2D = (GrGLTexStorage2DProc) eglGetProcAddress("glT exStorage2D");
111 #endif
112 } else {
113 #if GL_EXT_texture_storage
114 functions->fTexStorage2D = glTexStorage2DEXT;
115 #else
116 functions->fTexStorage2D = (GrGLTexStorage2DProc) eglGetProcAddress("glT exStorage2DEXT");
117 #endif
118 }
119
120 #if GL_EXT_discard_framebuffer
121 functions->fDiscardFramebuffer = glDiscardFramebufferEXT;
122 #endif
123 functions->fUniform1f = glUniform1f;
124 functions->fUniform1i = glUniform1i;
125 functions->fUniform1fv = glUniform1fv;
126 functions->fUniform1iv = glUniform1iv;
127 functions->fUniform2f = glUniform2f;
128 functions->fUniform2i = glUniform2i;
129 functions->fUniform2fv = glUniform2fv;
130 functions->fUniform2iv = glUniform2iv;
131 functions->fUniform3f = glUniform3f;
132 functions->fUniform3i = glUniform3i;
133 functions->fUniform3fv = glUniform3fv;
134 functions->fUniform3iv = glUniform3iv;
135 functions->fUniform4f = glUniform4f;
136 functions->fUniform4i = glUniform4i;
137 functions->fUniform4fv = glUniform4fv;
138 functions->fUniform4iv = glUniform4iv;
139 functions->fUniformMatrix2fv = glUniformMatrix2fv;
140 functions->fUniformMatrix3fv = glUniformMatrix3fv;
141 functions->fUniformMatrix4fv = glUniformMatrix4fv;
142 functions->fUseProgram = glUseProgram;
143 functions->fVertexAttrib4fv = glVertexAttrib4fv;
144 functions->fVertexAttribPointer = glVertexAttribPointer;
145 functions->fViewport = glViewport;
146 functions->fBindFramebuffer = glBindFramebuffer;
147 functions->fBindRenderbuffer = glBindRenderbuffer;
148 functions->fCheckFramebufferStatus = glCheckFramebufferStatus;
149 functions->fDeleteFramebuffers = glDeleteFramebuffers;
150 functions->fDeleteRenderbuffers = glDeleteRenderbuffers;
151 functions->fFramebufferRenderbuffer = glFramebufferRenderbuffer;
152 functions->fFramebufferTexture2D = glFramebufferTexture2D;
153
154 if (version >= GR_GL_VER(3,0)) {
155 #if GL_ES_VERSION_3_0
156 functions->fRenderbufferStorageMultisample = glRenderbufferStorageMultis ample;
157 functions->fBlitFramebuffer = glBlitFramebuffer;
158 #else
159 functions->fRenderbufferStorageMultisample = (GrGLRenderbufferStorageMul tisampleProc) eglGetProcAddress("glRenderbufferStorageMultisample");
160 functions->fBlitFramebuffer = (GrGLBlitFramebufferProc) eglGetProcAddres s("glBlitFramebuffer");
161 #endif
162 }
163
164 if (extensions->has("GL_EXT_multisampled_render_to_texture")) {
165 #if GL_EXT_multisampled_render_to_texture
166 functions->fFramebufferTexture2DMultisample = glFramebufferTexture2DMult isampleEXT;
167 functions->fRenderbufferStorageMultisampleES2EXT = glRenderbufferStorage MultisampleEXT;
168 #else
169 functions->fFramebufferTexture2DMultisample = (GrGLFramebufferTexture2DM ultisampleProc) eglGetProcAddress("glFramebufferTexture2DMultisampleEXT");
170 functions->fRenderbufferStorageMultisampleES2EXT = (GrGLRenderbufferStor ageMultisampleProc) eglGetProcAddress("glRenderbufferStorageMultisampleEXT");
171 #endif
172 } else if (extensions->has("GL_IMG_multisampled_render_to_texture")) {
173 #if GL_IMG_multisampled_render_to_texture
174 functions->fFramebufferTexture2DMultisample = glFramebufferTexture2DMult isampleIMG;
175 functions->fRenderbufferStorageMultisampleES2EXT = glRenderbufferStorage MultisampleIMG;
176 #else
177 functions->fFramebufferTexture2DMultisample = (GrGLFramebufferTexture2DM ultisampleProc) eglGetProcAddress("glFramebufferTexture2DMultisampleIMG");
178 functions->fRenderbufferStorageMultisampleES2EXT = (GrGLRenderbufferStor ageMultisampleProc) eglGetProcAddress("glRenderbufferStorageMultisampleIMG");
179 #endif
180 }
181
182 functions->fGenFramebuffers = glGenFramebuffers;
183 functions->fGenRenderbuffers = glGenRenderbuffers;
184 functions->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachment Parameteriv;
185 functions->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv;
186 functions->fRenderbufferStorage = glRenderbufferStorage;
187
188 #if GL_OES_mapbuffer
189 functions->fMapBuffer = glMapBufferOES;
190 functions->fUnmapBuffer = glUnmapBufferOES;
191 #else
192 functions->fMapBuffer = (GrGLMapBufferProc) eglGetProcAddress("glMapBufferOE S");
193 functions->fUnmapBuffer = (GrGLUnmapBufferProc) eglGetProcAddress("glUnmapBu fferOES");
194
195 #endif
196
197 if (version >= GR_GL_VER(3,0)) {
198 #if GL_ES_VERSION_3_0
199 functions->fMapBufferRange = glMapBufferRange;
200 functions->fFlushMappedBufferRange = glFlushMappedBufferRange;
201 #else
202 functions->fMapBufferRange = (GrGLMapBufferRangeProc) eglGetProcAddress( "glMapBufferRange");
203 functions->fFlushMappedBufferRange = (GrGLFlushMappedBufferRangeProc) eg lGetProcAddress("glFlushMappedBufferRange");
204 #endif
205 } else if (extensions->has("GL_EXT_map_buffer_range")) {
206 #if GL_EXT_map_buffer_range
207 functions->fMapBufferRange = glMapBufferRangeEXT;
208 functions->fFlushMappedBufferRange = glFlushMappedBufferRangeEXT;
209 #else
210 functions->fMapBufferRange = (GrGLMapBufferRangeProc) eglGetProcAddress( "glMapBufferRangeEXT");
211 functions->fFlushMappedBufferRange = (GrGLFlushMappedBufferRangeProc) eg lGetProcAddress("glFlushMappedBufferRangeEXT");
212 #endif
213 }
214
215 if (extensions->has("GL_EXT_debug_marker")) {
216 functions->fInsertEventMarker = (GrGLInsertEventMarkerProc) eglGetProcAd dress("glInsertEventMarker");
217 functions->fPushGroupMarker = (GrGLInsertEventMarkerProc) eglGetProcAddr ess("glPushGroupMarker");
218 functions->fPopGroupMarker = (GrGLPopGroupMarkerProc) eglGetProcAddress( "glPopGroupMarker");
219 // The below check is here because a device has been found that has the extension string but
220 // returns NULL from the eglGetProcAddress for the functions
221 if (NULL == functions->fInsertEventMarker ||
222 NULL == functions->fPushGroupMarker ||
223 NULL == functions->fPopGroupMarker) {
224 extensions->remove("GL_EXT_debug_marker");
225 }
226 }
227
228 #if GL_ES_VERSION_3_0
229 functions->fInvalidateFramebuffer = glInvalidateFramebuffer;
230 functions->fInvalidateSubFramebuffer = glInvalidateSubFramebuffer;
231 #else
232 functions->fInvalidateFramebuffer = (GrGLInvalidateFramebufferProc) eglGetPr ocAddress("glInvalidateFramebuffer");
233 functions->fInvalidateSubFramebuffer = (GrGLInvalidateSubFramebufferProc) eg lGetProcAddress("glInvalidateSubFramebuffer");
234 #endif
235 functions->fInvalidateBufferData = (GrGLInvalidateBufferDataProc) eglGetProc Address("glInvalidateBufferData");
236 functions->fInvalidateBufferSubData = (GrGLInvalidateBufferSubDataProc) eglG etProcAddress("glInvalidateBufferSubData");
237 functions->fInvalidateTexImage = (GrGLInvalidateTexImageProc) eglGetProcAddr ess("glInvalidateTexImage");
238 functions->fInvalidateTexSubImage = (GrGLInvalidateTexSubImageProc) eglGetPr ocAddress("glInvalidateTexSubImage");
239
240 return interface;
241 }
30 242
31 static GrGLFuncPtr android_get_gl_proc(void* ctx, const char name[]) { 243 static GrGLFuncPtr android_get_gl_proc(void* ctx, const char name[]) {
32 SkASSERT(NULL == ctx); 244 SkASSERT(NULL == ctx);
33 return eglGetProcAddress(name); 245 return eglGetProcAddress(name);
34 } 246 }
35 247
248 static const GrGLInterface* create_desktop_interface() {
249 return GrGLAssembleGLInterface(NULL, android_get_gl_proc);
250 }
251
36 const GrGLInterface* GrGLCreateNativeInterface() { 252 const GrGLInterface* GrGLCreateNativeInterface() {
37 253
38 const char* verStr = reinterpret_cast<const char*>(glGetString(GR_GL_VERSION )); 254 const char* verStr = reinterpret_cast<const char*>(glGetString(GR_GL_VERSION ));
39 GrGLStandard standard = GrGLGetStandardInUseFromString(verStr); 255 GrGLStandard standard = GrGLGetStandardInUseFromString(verStr);
40 256
41 if (kGLES_GrGLStandard == standard) { 257 if (kGLES_GrGLStandard == standard) {
42 return GrGLAssembleGLESInterface(NULL, android_get_gl_proc); 258 GrGLVersion version = GrGLGetVersionFromString(verStr);
259 GrGLExtensions extensions;
260 GrGLGetStringiProc getStringi = (GrGLGetStringiProc) eglGetProcAddress(" glGetStringi");
261 if (!extensions.init(standard, glGetString, getStringi, glGetIntegerv)) {
262 return NULL;
263 }
264 GrGLInterface* interface = create_es_interface(version, &extensions);
265
266 if (NULL != interface) {
267 interface->fExtensions.swap(&extensions);
268 }
269
270 return interface;
43 } else if (kGL_GrGLStandard == standard) { 271 } else if (kGL_GrGLStandard == standard) {
44 return GrGLAssembleGLInterface(NULL, android_get_gl_proc); 272 return create_desktop_interface();
45 } 273 }
46 274
47 return NULL; 275 return NULL;
48 } 276 }
OLDNEW
« no previous file with comments | « src/gpu/gl/SkNullGLContext.cpp ('k') | src/gpu/gl/android/SkNativeGLContext_android.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698