OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
3 * | 3 * |
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 | 7 |
8 | 8 |
9 #include "GrGLCaps.h" | 9 #include "GrGLCaps.h" |
10 | 10 |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 // extension includes glMapBuffer. | 356 // extension includes glMapBuffer. |
357 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_map_buffe
r_range")) { | 357 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_map_buffe
r_range")) { |
358 fMapBufferFlags |= kSubset_MapFlag; | 358 fMapBufferFlags |= kSubset_MapFlag; |
359 fMapBufferType = kMapBufferRange_MapBufferType; | 359 fMapBufferType = kMapBufferRange_MapBufferType; |
360 } else { | 360 } else { |
361 fMapBufferType = kMapBuffer_MapBufferType; | 361 fMapBufferType = kMapBuffer_MapBufferType; |
362 } | 362 } |
363 } else { | 363 } else { |
364 // Unextended GLES2 doesn't have any buffer mapping. | 364 // Unextended GLES2 doesn't have any buffer mapping. |
365 fMapBufferFlags = kNone_MapBufferType; | 365 fMapBufferFlags = kNone_MapBufferType; |
366 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_EXT_map_buffe
r_range")) { | 366 if (ctxInfo.hasExtension("GL_CHROMIUM_map_sub")) { |
| 367 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag; |
| 368 fMapBufferType = kChromium_MapBufferType; |
| 369 } else if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_EXT_ma
p_buffer_range")) { |
367 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag; | 370 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag; |
368 fMapBufferType = kMapBufferRange_MapBufferType; | 371 fMapBufferType = kMapBufferRange_MapBufferType; |
369 } else if (ctxInfo.hasExtension("GL_CHROMIUM_map_sub")) { | |
370 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag; | |
371 fMapBufferType = kChromium_MapBufferType; | |
372 } else if (ctxInfo.hasExtension("GL_OES_mapbuffer")) { | 372 } else if (ctxInfo.hasExtension("GL_OES_mapbuffer")) { |
373 fMapBufferFlags = kCanMap_MapFlag; | 373 fMapBufferFlags = kCanMap_MapFlag; |
374 fMapBufferType = kMapBuffer_MapBufferType; | 374 fMapBufferType = kMapBuffer_MapBufferType; |
375 } | 375 } |
376 } | 376 } |
377 | 377 |
378 if (kGL_GrGLStandard == standard) { | 378 if (kGL_GrGLStandard == standard) { |
379 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_pixel_buf
fer_object")) { | 379 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_pixel_buf
fer_object")) { |
380 fTransferBufferType = kPBO_TransferBufferType; | 380 fTransferBufferType = kPBO_TransferBufferType; |
381 } | 381 } |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 fMultiDrawIndirectSupport = ctxInfo.hasExtension("GL_EXT_multi_draw_indi
rect"); | 516 fMultiDrawIndirectSupport = ctxInfo.hasExtension("GL_EXT_multi_draw_indi
rect"); |
517 fBaseInstanceSupport = ctxInfo.hasExtension("GL_EXT_base_instance"); | 517 fBaseInstanceSupport = ctxInfo.hasExtension("GL_EXT_base_instance"); |
518 } | 518 } |
519 | 519 |
520 this->initShaderPrecisionTable(ctxInfo, gli, glslCaps); | 520 this->initShaderPrecisionTable(ctxInfo, gli, glslCaps); |
521 | 521 |
522 if (contextOptions.fUseShaderSwizzling) { | 522 if (contextOptions.fUseShaderSwizzling) { |
523 fTextureSwizzleSupport = false; | 523 fTextureSwizzleSupport = false; |
524 } | 524 } |
525 | 525 |
526 // TODO: remove after command buffer supports full ES 3.0. | |
527 if (kGLES_GrGLStandard == standard && version >= GR_GL_VER(3, 0) && | |
528 kChromium_GrGLDriver == ctxInfo.driver()) { | |
529 fSupportsInstancedDraws = false; | |
530 fTextureSwizzleSupport = false; | |
531 SkASSERT(ctxInfo.hasExtension("GL_CHROMIUM_map_sub")); | |
532 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag; | |
533 fMapBufferType = kChromium_MapBufferType; | |
534 } | |
535 | |
536 // Requires fTextureRedSupport, fTextureSwizzleSupport, msaa support, ES com
patibility have | 526 // Requires fTextureRedSupport, fTextureSwizzleSupport, msaa support, ES com
patibility have |
537 // already been detected. | 527 // already been detected. |
538 this->initConfigTable(ctxInfo, gli, glslCaps); | 528 this->initConfigTable(ctxInfo, gli, glslCaps); |
539 | 529 |
540 this->applyOptionsOverrides(contextOptions); | 530 this->applyOptionsOverrides(contextOptions); |
541 glslCaps->applyOptionsOverrides(contextOptions); | 531 glslCaps->applyOptionsOverrides(contextOptions); |
542 } | 532 } |
543 | 533 |
544 const char* get_glsl_version_decl_string(GrGLStandard standard, GrGLSLGeneration
generation, | 534 const char* get_glsl_version_decl_string(GrGLStandard standard, GrGLSLGeneration
generation, |
545 bool isCoreProfile) { | 535 bool isCoreProfile) { |
(...skipping 1266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1812 for (int j = 0; j < kExternalFormatUsageCnt; ++j) { | 1802 for (int j = 0; j < kExternalFormatUsageCnt; ++j) { |
1813 SkASSERT(defaultEntry.fFormats.fExternalFormat[j] != | 1803 SkASSERT(defaultEntry.fFormats.fExternalFormat[j] != |
1814 fConfigTable[i].fFormats.fExternalFormat[j]); | 1804 fConfigTable[i].fFormats.fExternalFormat[j]); |
1815 } | 1805 } |
1816 SkASSERT(defaultEntry.fFormats.fExternalType != fConfigTable[i].fFormats
.fExternalType); | 1806 SkASSERT(defaultEntry.fFormats.fExternalType != fConfigTable[i].fFormats
.fExternalType); |
1817 } | 1807 } |
1818 #endif | 1808 #endif |
1819 } | 1809 } |
1820 | 1810 |
1821 void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {} | 1811 void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {} |
OLD | NEW |