| 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 |