OLD | NEW |
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/GrGLExtensions.h" | 7 #include "gl/GrGLExtensions.h" |
8 #include "gl/GrGLInterface.h" | 8 #include "gl/GrGLInterface.h" |
9 #include "gl/GrGLUtil.h" | 9 #include "gl/GrGLUtil.h" |
10 | 10 |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 functions->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv; | 183 functions->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv; |
184 functions->fRenderbufferStorage = glRenderbufferStorage; | 184 functions->fRenderbufferStorage = glRenderbufferStorage; |
185 #if GL_OES_mapbuffer | 185 #if GL_OES_mapbuffer |
186 functions->fMapBuffer = glMapBufferOES; | 186 functions->fMapBuffer = glMapBufferOES; |
187 functions->fUnmapBuffer = glUnmapBufferOES; | 187 functions->fUnmapBuffer = glUnmapBufferOES; |
188 #else | 188 #else |
189 functions->fMapBuffer = (GrGLMapBufferProc) eglGetProcAddress("glMapBufferOE
S"); | 189 functions->fMapBuffer = (GrGLMapBufferProc) eglGetProcAddress("glMapBufferOE
S"); |
190 functions->fUnmapBuffer = (GrGLUnmapBufferProc) eglGetProcAddress("glUnmapBu
fferOES"); | 190 functions->fUnmapBuffer = (GrGLUnmapBufferProc) eglGetProcAddress("glUnmapBu
fferOES"); |
191 #endif | 191 #endif |
192 | 192 |
| 193 if (extensions.has("GL_EXT_debug_marker")) { |
| 194 functions->fInsertEventMarker = (GrGLInsertEventMarkerProc) eglGetProcAd
dress("glInsertEventMarkerEXT"); |
| 195 functions->fPushGroupMarker = (GrGLInsertEventMarkerProc) eglGetProcAddr
ess("glPushGroupMarkerEXT"); |
| 196 functions->fPopGroupMarker = (GrGLPopGroupMarkerProc) eglGetProcAddress(
"glPopGropuMarkerEXT"); |
| 197 } |
| 198 |
193 return interface; | 199 return interface; |
194 } | 200 } |
195 | 201 |
196 static GrGLInterface* create_desktop_interface(GrGLVersion version, | 202 static GrGLInterface* create_desktop_interface(GrGLVersion version, |
197 const GrGLExtensions& extensions)
{ | 203 const GrGLExtensions& extensions)
{ |
198 // Currently this assumes a 4.4 context or later. Supporting lower GL versio
ns would require | 204 // Currently this assumes a 4.4 context or later. Supporting lower GL versio
ns would require |
199 // getting suffixed versions of pointers for supported extensions. | 205 // getting suffixed versions of pointers for supported extensions. |
200 if (version < GR_GL_VER(4,4)) { | 206 if (version < GR_GL_VER(4,4)) { |
201 return NULL; | 207 return NULL; |
202 } | 208 } |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 functions->fGetPathColorGeniv = (GrGLGetPathColorGenivProc) eglGetProcAd
dress("glGetPathColorGenivNV"); | 388 functions->fGetPathColorGeniv = (GrGLGetPathColorGenivProc) eglGetProcAd
dress("glGetPathColorGenivNV"); |
383 functions->fGetPathColorGenfv = (GrGLGetPathColorGenfvProc) eglGetProcAd
dress("glGetPathColorGenfvNV"); | 389 functions->fGetPathColorGenfv = (GrGLGetPathColorGenfvProc) eglGetProcAd
dress("glGetPathColorGenfvNV"); |
384 functions->fGetPathTexGeniv = (GrGLGetPathTexGenivProc) eglGetProcAddres
s("glGetPathTexGenivNV"); | 390 functions->fGetPathTexGeniv = (GrGLGetPathTexGenivProc) eglGetProcAddres
s("glGetPathTexGenivNV"); |
385 functions->fGetPathTexGenfv = (GrGLGetPathTexGenfvProc) eglGetProcAddres
s("glGetPathTexGenfvNV"); | 391 functions->fGetPathTexGenfv = (GrGLGetPathTexGenfvProc) eglGetProcAddres
s("glGetPathTexGenfvNV"); |
386 functions->fIsPointInFillPath = (GrGLIsPointInFillPathProc) eglGetProcAd
dress("glIsPointInFillPathNV"); | 392 functions->fIsPointInFillPath = (GrGLIsPointInFillPathProc) eglGetProcAd
dress("glIsPointInFillPathNV"); |
387 functions->fIsPointInStrokePath = (GrGLIsPointInStrokePathProc) eglGetPr
ocAddress("glIsPointInStrokePathNV"); | 393 functions->fIsPointInStrokePath = (GrGLIsPointInStrokePathProc) eglGetPr
ocAddress("glIsPointInStrokePathNV"); |
388 functions->fGetPathLength = (GrGLGetPathLengthProc) eglGetProcAddress("g
lGetPathLengthNV"); | 394 functions->fGetPathLength = (GrGLGetPathLengthProc) eglGetProcAddress("g
lGetPathLengthNV"); |
389 functions->fPointAlongPath = (GrGLPointAlongPathProc) eglGetProcAddress(
"glPointAlongPathNV"); | 395 functions->fPointAlongPath = (GrGLPointAlongPathProc) eglGetProcAddress(
"glPointAlongPathNV"); |
390 } | 396 } |
391 | 397 |
| 398 if (extensions.has("GL_EXT_debug_marker")) { |
| 399 functions->fInsertEventMarker = (GrGLInsertEventMarkerProc) eglGetProcAd
dress("glInsertEventMarkerEXT"); |
| 400 functions->fPushGroupMarker = (GrGLInsertEventMarkerProc) eglGetProcAddr
ess("glPushGroupMarkerEXT"); |
| 401 functions->fPopGroupMarker = (GrGLPopGroupMarkerProc) eglGetProcAddress(
"glPopGropuMarkerEXT"); |
| 402 } |
| 403 |
392 return interface; | 404 return interface; |
393 } | 405 } |
394 | 406 |
395 const GrGLInterface* GrGLCreateNativeInterface() { | 407 const GrGLInterface* GrGLCreateNativeInterface() { |
396 | 408 |
397 GrGLGetStringiProc getStringi = (GrGLGetStringiProc) eglGetProcAddress("glGe
tStringi"); | 409 GrGLGetStringiProc getStringi = (GrGLGetStringiProc) eglGetProcAddress("glGe
tStringi"); |
398 | 410 |
399 const char* verStr = reinterpret_cast<const char*>(glGetString(GR_GL_VERSION
)); | 411 const char* verStr = reinterpret_cast<const char*>(glGetString(GR_GL_VERSION
)); |
400 GrGLVersion version = GrGLGetVersionFromString(verStr); | 412 GrGLVersion version = GrGLGetVersionFromString(verStr); |
401 GrGLStandard standard = GrGLGetStandardInUseFromString(verStr); | 413 GrGLStandard standard = GrGLGetStandardInUseFromString(verStr); |
402 | 414 |
403 GrGLExtensions extensions; | 415 GrGLExtensions extensions; |
404 if (!extensions.init(standard, glGetString, getStringi, glGetIntegerv)) { | 416 if (!extensions.init(standard, glGetString, getStringi, glGetIntegerv)) { |
405 return NULL; | 417 return NULL; |
406 } | 418 } |
407 | 419 |
408 GrGLInterface* interface = NULL; | 420 GrGLInterface* interface = NULL; |
409 if (kGLES_GrGLStandard == standard) { | 421 if (kGLES_GrGLStandard == standard) { |
410 interface = create_es_interface(version, extensions); | 422 interface = create_es_interface(version, extensions); |
411 } else if (kGL_GrGLStandard == standard) { | 423 } else if (kGL_GrGLStandard == standard) { |
412 interface = create_desktop_interface(version, extensions); | 424 interface = create_desktop_interface(version, extensions); |
413 } | 425 } |
414 | 426 |
415 if (NULL != interface) { | 427 if (NULL != interface) { |
416 interface->fExtensions.swap(&extensions); | 428 interface->fExtensions.swap(&extensions); |
417 } | 429 } |
418 | 430 |
419 return interface; | 431 return interface; |
420 } | 432 } |
OLD | NEW |