| 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 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 } | 490 } |
| 491 // for now we don't support floating point MSAA on ES | 491 // for now we don't support floating point MSAA on ES |
| 492 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = false; | 492 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = false; |
| 493 } | 493 } |
| 494 } | 494 } |
| 495 | 495 |
| 496 if (this->isConfigTexturable(kAlpha_half_GrPixelConfig)) { | 496 if (this->isConfigTexturable(kAlpha_half_GrPixelConfig)) { |
| 497 if (kGL_GrGLStandard == standard) { | 497 if (kGL_GrGLStandard == standard) { |
| 498 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = true; | 498 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = true; |
| 499 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = true; | 499 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = true; |
| 500 } else if (ctxInfo.version() >= GR_GL_VER(3,0)) { |
| 501 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = true; |
| 502 // for now we don't support floating point MSAA on ES |
| 503 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = false; |
| 500 } else { | 504 } else { |
| 501 // in theory, check for "GL_EXT_color_buffer_half_float" | 505 if (ctxInfo.hasExtension("GL_EXT_color_buffer_half_float") && fTextu
reRedSupport) { |
| 502 // for now we don't support half float alpha render target on ES | 506 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = true
; |
| 503 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = false; | 507 } else { |
| 508 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = fals
e; |
| 509 } |
| 510 // for now we don't support floating point MSAA on ES |
| 504 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = false; | 511 fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = false; |
| 505 } | 512 } |
| 506 } | 513 } |
| 507 | 514 |
| 508 // If we don't support MSAA then undo any places above where we set a config
as renderable with | 515 // If we don't support MSAA then undo any places above where we set a config
as renderable with |
| 509 // msaa. | 516 // msaa. |
| 510 if (kNone_MSFBOType == fMSFBOType) { | 517 if (kNone_MSFBOType == fMSFBOType) { |
| 511 for (int i = 0; i < kGrPixelConfigCnt; ++i) { | 518 for (int i = 0; i < kGrPixelConfigCnt; ++i) { |
| 512 fConfigRenderSupport[i][kYes_MSAA] = false; | 519 fConfigRenderSupport[i][kYes_MSAA] = false; |
| 513 } | 520 } |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 642 fConfigTextureSupport[kRGBA_float_GrPixelConfig] = hasFPTextures; | 649 fConfigTextureSupport[kRGBA_float_GrPixelConfig] = hasFPTextures; |
| 643 | 650 |
| 644 // Check for fp16 texture support | 651 // Check for fp16 texture support |
| 645 // NOTE: We disallow floating point textures on ES devices if linear | 652 // NOTE: We disallow floating point textures on ES devices if linear |
| 646 // filtering modes are not supported. This is for simplicity, but a more | 653 // filtering modes are not supported. This is for simplicity, but a more |
| 647 // granular approach is possible. Coincidentally, 16-bit floating point tex
tures became part of | 654 // granular approach is possible. Coincidentally, 16-bit floating point tex
tures became part of |
| 648 // the standard in ES3.1 / OGL 3.1, hence the shorthand | 655 // the standard in ES3.1 / OGL 3.1, hence the shorthand |
| 649 bool hasHalfFPTextures = version >= GR_GL_VER(3, 1); | 656 bool hasHalfFPTextures = version >= GR_GL_VER(3, 1); |
| 650 if (!hasHalfFPTextures) { | 657 if (!hasHalfFPTextures) { |
| 651 hasHalfFPTextures = ctxInfo.hasExtension("GL_ARB_texture_float") || | 658 hasHalfFPTextures = ctxInfo.hasExtension("GL_ARB_texture_float") || |
| 652 (ctxInfo.hasExtension("GL_OES_texture_half_float_linear") && | 659 (ctxInfo.hasExtension("GL_OES_texture_half_float_lin
ear") && |
| 653 ctxInfo.hasExtension("GL_OES_texture_half_float")); | 660 ctxInfo.hasExtension("GL_OES_texture_half_float")); |
| 654 } | 661 } |
| 655 fConfigTextureSupport[kAlpha_half_GrPixelConfig] = hasHalfFPTextures && fTex
tureRedSupport; | 662 fConfigTextureSupport[kAlpha_half_GrPixelConfig] = hasHalfFPTextures; |
| 656 } | 663 } |
| 657 | 664 |
| 658 bool GrGLCaps::doReadPixelsSupported(const GrGLInterface* intf, | 665 bool GrGLCaps::doReadPixelsSupported(const GrGLInterface* intf, |
| 659 GrGLenum format, | 666 GrGLenum format, |
| 660 GrGLenum type) const { | 667 GrGLenum type) const { |
| 661 if (GR_GL_RGBA == format && GR_GL_UNSIGNED_BYTE == type) { | 668 if (GR_GL_RGBA == format && GR_GL_UNSIGNED_BYTE == type) { |
| 662 // ES 2 guarantees this format is supported | 669 // ES 2 guarantees this format is supported |
| 663 return true; | 670 return true; |
| 664 } | 671 } |
| 665 | 672 |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 994 r.appendf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO")); | 1001 r.appendf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO")); |
| 995 r.appendf("Fragment coord conventions support: %s\n", | 1002 r.appendf("Fragment coord conventions support: %s\n", |
| 996 (fFragCoordsConventionSupport ? "YES": "NO")); | 1003 (fFragCoordsConventionSupport ? "YES": "NO")); |
| 997 r.appendf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ?
"YES": "NO")); | 1004 r.appendf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ?
"YES": "NO")); |
| 998 r.appendf("Use non-VBO for dynamic data: %s\n", | 1005 r.appendf("Use non-VBO for dynamic data: %s\n", |
| 999 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); | 1006 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); |
| 1000 r.appendf("Full screen clear is free: %s\n", (fFullClearIsFree ? "YES" : "NO
")); | 1007 r.appendf("Full screen clear is free: %s\n", (fFullClearIsFree ? "YES" : "NO
")); |
| 1001 r.appendf("Drops tile on zero divide: %s\n", (fDropsTileOnZeroDivide ? "YES"
: "NO")); | 1008 r.appendf("Drops tile on zero divide: %s\n", (fDropsTileOnZeroDivide ? "YES"
: "NO")); |
| 1002 return r; | 1009 return r; |
| 1003 } | 1010 } |
| OLD | NEW |