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 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 functions->fPopGroupMarker = (GrGLPopGroupMarkerProc) eglGetProcAddress(
"glPopGroupMarker"); | 196 functions->fPopGroupMarker = (GrGLPopGroupMarkerProc) eglGetProcAddress(
"glPopGroupMarker"); |
197 // The below check is here because a device has been found that has the
extension string but | 197 // The below check is here because a device has been found that has the
extension string but |
198 // returns NULL from the eglGetProcAddress for the functions | 198 // returns NULL from the eglGetProcAddress for the functions |
199 if (NULL == functions->fInsertEventMarker || | 199 if (NULL == functions->fInsertEventMarker || |
200 NULL == functions->fPushGroupMarker || | 200 NULL == functions->fPushGroupMarker || |
201 NULL == functions->fPopGroupMarker) { | 201 NULL == functions->fPopGroupMarker) { |
202 extensions->remove("GL_EXT_debug_marker"); | 202 extensions->remove("GL_EXT_debug_marker"); |
203 } | 203 } |
204 } | 204 } |
205 | 205 |
| 206 #if GL_ES_VERSION_3_0 |
| 207 functions->fInvalidateFramebuffer = glInvalidateFramebuffer; |
| 208 functions->fInvalidateSubFramebuffer = glInvalidateSubFramebuffer; |
| 209 #else |
| 210 functions->fInvalidateFramebuffer = (GrGLInvalidateFramebufferProc) eglGetPr
ocAddress("glInvalidateFramebuffer"); |
| 211 functions->fInvalidateSubFramebuffer = (GrGLInvalidateSubFramebufferProc) eg
lGetProcAddress("glInvalidateSubFramebuffer"); |
| 212 #endif |
| 213 functions->fInvalidateBufferData = (GrGLInvalidateBufferDataProc) eglGetProc
Address("glInvalidateBufferData"); |
| 214 functions->fInvalidateBufferSubData = (GrGLInvalidateBufferSubDataProc) eglG
etProcAddress("glInvalidateBufferSubData"); |
| 215 functions->fInvalidateTexImage = (GrGLInvalidateTexImageProc) eglGetProcAddr
ess("glInvalidateTexImage"); |
| 216 functions->fInvalidateTexSubImage = (GrGLInvalidateTexSubImageProc) eglGetPr
ocAddress("glInvalidateTexSubImage"); |
| 217 |
206 return interface; | 218 return interface; |
207 } | 219 } |
208 | 220 |
209 static GrGLInterface* create_desktop_interface(GrGLVersion version, | 221 static GrGLInterface* create_desktop_interface(GrGLVersion version, |
210 const GrGLExtensions& extensions)
{ | 222 const GrGLExtensions& extensions)
{ |
211 // Currently this assumes a 4.4 context or later. Supporting lower GL versio
ns would require | 223 // Currently this assumes a 4.4 context or later. Supporting lower GL versio
ns would require |
212 // getting suffixed versions of pointers for supported extensions. | 224 // getting suffixed versions of pointers for supported extensions. |
213 if (version < GR_GL_VER(4,4)) { | 225 if (version < GR_GL_VER(4,4)) { |
214 return NULL; | 226 return NULL; |
215 } | 227 } |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 functions->fGetPathLength = (GrGLGetPathLengthProc) eglGetProcAddress("g
lGetPathLengthNV"); | 408 functions->fGetPathLength = (GrGLGetPathLengthProc) eglGetProcAddress("g
lGetPathLengthNV"); |
397 functions->fPointAlongPath = (GrGLPointAlongPathProc) eglGetProcAddress(
"glPointAlongPathNV"); | 409 functions->fPointAlongPath = (GrGLPointAlongPathProc) eglGetProcAddress(
"glPointAlongPathNV"); |
398 } | 410 } |
399 | 411 |
400 if (extensions.has("GL_EXT_debug_marker")) { | 412 if (extensions.has("GL_EXT_debug_marker")) { |
401 functions->fInsertEventMarker = (GrGLInsertEventMarkerProc) eglGetProcAd
dress("glInsertEventMarkerEXT"); | 413 functions->fInsertEventMarker = (GrGLInsertEventMarkerProc) eglGetProcAd
dress("glInsertEventMarkerEXT"); |
402 functions->fPushGroupMarker = (GrGLInsertEventMarkerProc) eglGetProcAddr
ess("glPushGroupMarkerEXT"); | 414 functions->fPushGroupMarker = (GrGLInsertEventMarkerProc) eglGetProcAddr
ess("glPushGroupMarkerEXT"); |
403 functions->fPopGroupMarker = (GrGLPopGroupMarkerProc) eglGetProcAddress(
"glPopGroupMarkerEXT"); | 415 functions->fPopGroupMarker = (GrGLPopGroupMarkerProc) eglGetProcAddress(
"glPopGroupMarkerEXT"); |
404 } | 416 } |
405 | 417 |
| 418 functions->fInvalidateBufferData = (GrGLInvalidateBufferDataProc) eglGetProc
Address("glInvalidateBufferData"); |
| 419 functions->fInvalidateBufferSubData = (GrGLInvalidateBufferSubDataProc) eglG
etProcAddress("glInvalidateBufferSubData"); |
| 420 functions->fInvalidateFramebuffer = (GrGLInvalidateFramebufferProc) eglGetPr
ocAddress("glInvalidateFramebuffer"); |
| 421 functions->fInvalidateSubFramebuffer = (GrGLInvalidateSubFramebufferProc) eg
lGetProcAddress("glInvalidateSubFramebuffer"); |
| 422 functions->fInvalidateTexImage = (GrGLInvalidateTexImageProc) eglGetProcAddr
ess("glInvalidateTexImage"); |
| 423 functions->fInvalidateTexSubImage = (GrGLInvalidateTexSubImageProc) eglGetPr
ocAddress("glInvalidateTexSubImage"); |
| 424 |
406 return interface; | 425 return interface; |
407 } | 426 } |
408 | 427 |
409 const GrGLInterface* GrGLCreateNativeInterface() { | 428 const GrGLInterface* GrGLCreateNativeInterface() { |
410 | 429 |
411 GrGLGetStringiProc getStringi = (GrGLGetStringiProc) eglGetProcAddress("glGe
tStringi"); | 430 GrGLGetStringiProc getStringi = (GrGLGetStringiProc) eglGetProcAddress("glGe
tStringi"); |
412 | 431 |
413 const char* verStr = reinterpret_cast<const char*>(glGetString(GR_GL_VERSION
)); | 432 const char* verStr = reinterpret_cast<const char*>(glGetString(GR_GL_VERSION
)); |
414 GrGLVersion version = GrGLGetVersionFromString(verStr); | 433 GrGLVersion version = GrGLGetVersionFromString(verStr); |
415 GrGLStandard standard = GrGLGetStandardInUseFromString(verStr); | 434 GrGLStandard standard = GrGLGetStandardInUseFromString(verStr); |
416 | 435 |
417 GrGLExtensions extensions; | 436 GrGLExtensions extensions; |
418 if (!extensions.init(standard, glGetString, getStringi, glGetIntegerv)) { | 437 if (!extensions.init(standard, glGetString, getStringi, glGetIntegerv)) { |
419 return NULL; | 438 return NULL; |
420 } | 439 } |
421 | 440 |
422 GrGLInterface* interface = NULL; | 441 GrGLInterface* interface = NULL; |
423 if (kGLES_GrGLStandard == standard) { | 442 if (kGLES_GrGLStandard == standard) { |
424 interface = create_es_interface(version, &extensions); | 443 interface = create_es_interface(version, &extensions); |
425 } else if (kGL_GrGLStandard == standard) { | 444 } else if (kGL_GrGLStandard == standard) { |
426 interface = create_desktop_interface(version, extensions); | 445 interface = create_desktop_interface(version, extensions); |
427 } | 446 } |
428 | 447 |
429 if (NULL != interface) { | 448 if (NULL != interface) { |
430 interface->fExtensions.swap(&extensions); | 449 interface->fExtensions.swap(&extensions); |
431 } | 450 } |
432 | 451 |
433 return interface; | 452 return interface; |
434 } | 453 } |
OLD | NEW |