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

Side by Side Diff: src/gpu/gl/GrGLCaps.cpp

Issue 1684413003: Implement support for using GL ES 3.0 with command buffer (Closed) Base URL: https://skia.googlesource.com/skia.git@no-texture-rectangle-gles
Patch Set: egl destruction update Created 4 years, 9 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
OLDNEW
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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 ctxInfo.hasExtension("GL_ANGLE_texture_usage"); 107 ctxInfo.hasExtension("GL_ANGLE_texture_usage");
108 108
109 if (kGL_GrGLStandard == standard) { 109 if (kGL_GrGLStandard == standard) {
110 // The EXT version can apply to either GL or GLES. 110 // The EXT version can apply to either GL or GLES.
111 fTexStorageSupport = version >= GR_GL_VER(4,2) || 111 fTexStorageSupport = version >= GR_GL_VER(4,2) ||
112 ctxInfo.hasExtension("GL_ARB_texture_storage") || 112 ctxInfo.hasExtension("GL_ARB_texture_storage") ||
113 ctxInfo.hasExtension("GL_EXT_texture_storage"); 113 ctxInfo.hasExtension("GL_EXT_texture_storage");
114 } else { 114 } else {
115 // Qualcomm Adreno drivers appear to have issues with texture storage. 115 // Qualcomm Adreno drivers appear to have issues with texture storage.
116 fTexStorageSupport = (version >= GR_GL_VER(3,0) && 116 fTexStorageSupport = (version >= GR_GL_VER(3,0) &&
117 kQualcomm_GrGLVendor != ctxInfo.vendor()) || 117 kQualcomm_GrGLVendor != ctxInfo.vendor()) &&
118 ctxInfo.hasExtension("GL_EXT_texture_storage"); 118 ctxInfo.hasExtension("GL_EXT_texture_storage");
119 } 119 }
120 120
121 if (kGL_GrGLStandard == standard) { 121 if (kGL_GrGLStandard == standard) {
122 fTextureBarrierSupport = version >= GR_GL_VER(4,5) || 122 fTextureBarrierSupport = version >= GR_GL_VER(4,5) ||
123 ctxInfo.hasExtension("GL_ARB_texture_barrier") || 123 ctxInfo.hasExtension("GL_ARB_texture_barrier") ||
124 ctxInfo.hasExtension("GL_NV_texture_barrier"); 124 ctxInfo.hasExtension("GL_NV_texture_barrier");
125 } else { 125 } else {
126 fTextureBarrierSupport = ctxInfo.hasExtension("GL_NV_texture_barrier"); 126 fTextureBarrierSupport = ctxInfo.hasExtension("GL_NV_texture_barrier");
127 } 127 }
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 // extension includes glMapBuffer. 348 // extension includes glMapBuffer.
349 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_map_buffe r_range")) { 349 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_map_buffe r_range")) {
350 fMapBufferFlags |= kSubset_MapFlag; 350 fMapBufferFlags |= kSubset_MapFlag;
351 fMapBufferType = kMapBufferRange_MapBufferType; 351 fMapBufferType = kMapBufferRange_MapBufferType;
352 } else { 352 } else {
353 fMapBufferType = kMapBuffer_MapBufferType; 353 fMapBufferType = kMapBuffer_MapBufferType;
354 } 354 }
355 } else { 355 } else {
356 // Unextended GLES2 doesn't have any buffer mapping. 356 // Unextended GLES2 doesn't have any buffer mapping.
357 fMapBufferFlags = kNone_MapBufferType; 357 fMapBufferFlags = kNone_MapBufferType;
358 if (ctxInfo.hasExtension("GL_CHROMIUM_map_sub")) { 358 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_EXT_map_buffe r_range")) {
359 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag;
360 fMapBufferType = kMapBufferRange_MapBufferType;
361 } else if (ctxInfo.hasExtension("GL_CHROMIUM_map_sub")) {
359 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag; 362 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag;
360 fMapBufferType = kChromium_MapBufferType; 363 fMapBufferType = kChromium_MapBufferType;
361 } else if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_EXT_ma p_buffer_range")) {
362 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag;
363 fMapBufferType = kMapBufferRange_MapBufferType;
364 } else if (ctxInfo.hasExtension("GL_OES_mapbuffer")) { 364 } else if (ctxInfo.hasExtension("GL_OES_mapbuffer")) {
365 fMapBufferFlags = kCanMap_MapFlag; 365 fMapBufferFlags = kCanMap_MapFlag;
366 fMapBufferType = kMapBuffer_MapBufferType; 366 fMapBufferType = kMapBuffer_MapBufferType;
367 } 367 }
368 } 368 }
369 369
370 if (kGL_GrGLStandard == standard) { 370 if (kGL_GrGLStandard == standard) {
371 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_pixel_buf fer_object")) { 371 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_pixel_buf fer_object")) {
372 fTransferBufferType = kPBO_TransferBufferType; 372 fTransferBufferType = kPBO_TransferBufferType;
373 } 373 }
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 fMultiDrawIndirectSupport = ctxInfo.hasExtension("GL_EXT_multi_draw_indi rect"); 502 fMultiDrawIndirectSupport = ctxInfo.hasExtension("GL_EXT_multi_draw_indi rect");
503 fBaseInstanceSupport = ctxInfo.hasExtension("GL_EXT_base_instance"); 503 fBaseInstanceSupport = ctxInfo.hasExtension("GL_EXT_base_instance");
504 } 504 }
505 505
506 this->initShaderPrecisionTable(ctxInfo, gli, glslCaps); 506 this->initShaderPrecisionTable(ctxInfo, gli, glslCaps);
507 507
508 if (contextOptions.fUseShaderSwizzling) { 508 if (contextOptions.fUseShaderSwizzling) {
509 fTextureSwizzleSupport = false; 509 fTextureSwizzleSupport = false;
510 } 510 }
511 511
512 // TODO: remove after command buffer supports full ES 3.0.
513 if (kGLES_GrGLStandard == standard && version >= GR_GL_VER(3, 0) &&
514 kChromium_GrGLDriver == ctxInfo.driver()) {
515 fTexStorageSupport = false;
516 fSupportsInstancedDraws = false;
517 fTextureSwizzleSupport = false;
518 SkASSERT(ctxInfo.hasExtension("GL_CHROMIUM_map_sub"));
519 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag;
520 fMapBufferType = kChromium_MapBufferType;
521 }
522
512 // Requires fTextureRedSupport, fTextureSwizzleSupport, msaa support, ES com patibility have 523 // Requires fTextureRedSupport, fTextureSwizzleSupport, msaa support, ES com patibility have
513 // already been detected. 524 // already been detected.
514 this->initConfigTable(ctxInfo, gli, glslCaps); 525 this->initConfigTable(ctxInfo, gli, glslCaps);
515 526
516 this->applyOptionsOverrides(contextOptions); 527 this->applyOptionsOverrides(contextOptions);
517 glslCaps->applyOptionsOverrides(contextOptions); 528 glslCaps->applyOptionsOverrides(contextOptions);
518 } 529 }
519 530
520 const char* get_glsl_version_decl_string(GrGLStandard standard, GrGLSLGeneration generation, 531 const char* get_glsl_version_decl_string(GrGLStandard standard, GrGLSLGeneration generation,
521 bool isCoreProfile) { 532 bool isCoreProfile) {
(...skipping 1175 matching lines...) Expand 10 before | Expand all | Expand 10 after
1697 for (int j = 0; j < kExternalFormatUsageCnt; ++j) { 1708 for (int j = 0; j < kExternalFormatUsageCnt; ++j) {
1698 SkASSERT(defaultEntry.fFormats.fExternalFormat[j] != 1709 SkASSERT(defaultEntry.fFormats.fExternalFormat[j] !=
1699 fConfigTable[i].fFormats.fExternalFormat[j]); 1710 fConfigTable[i].fFormats.fExternalFormat[j]);
1700 } 1711 }
1701 SkASSERT(defaultEntry.fFormats.fExternalType != fConfigTable[i].fFormats .fExternalType); 1712 SkASSERT(defaultEntry.fFormats.fExternalType != fConfigTable[i].fFormats .fExternalType);
1702 } 1713 }
1703 #endif 1714 #endif
1704 } 1715 }
1705 1716
1706 void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {} 1717 void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698