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 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 if (ctxInfo.hasExtension("GL_OES_EGL_image_external")) { | 219 if (ctxInfo.hasExtension("GL_OES_EGL_image_external")) { |
220 if (ctxInfo.glslGeneration() == k110_GrGLSLGeneration) { | 220 if (ctxInfo.glslGeneration() == k110_GrGLSLGeneration) { |
221 fExternalTextureSupport = true; | 221 fExternalTextureSupport = true; |
222 } else if (ctxInfo.hasExtension("GL_OES_EGL_image_external_essl3") || | 222 } else if (ctxInfo.hasExtension("GL_OES_EGL_image_external_essl3") || |
223 ctxInfo.hasExtension("OES_EGL_image_external_essl3")) { | 223 ctxInfo.hasExtension("OES_EGL_image_external_essl3")) { |
224 // At least one driver has been found that has this extension withou
t the "GL_" prefix. | 224 // At least one driver has been found that has this extension withou
t the "GL_" prefix. |
225 fExternalTextureSupport = true; | 225 fExternalTextureSupport = true; |
226 } | 226 } |
227 } | 227 } |
228 | 228 |
229 if ((kGL_GrGLStandard == standard && version >= GR_GL_VER(3, 1)) || | |
230 ctxInfo.hasExtension("GL_ARB_texture_rectangle")) { | |
231 // We also require textureSize() support for rectangle 2D samplers which
was added in GLSL | |
232 // 1.40. | |
233 if (ctxInfo.glslGeneration() >= k140_GrGLSLGeneration) { | |
234 fRectangleTextureSupport = true; | |
235 } | |
236 } | |
237 | |
238 if (kGL_GrGLStandard == standard) { | 229 if (kGL_GrGLStandard == standard) { |
| 230 if (version >= GR_GL_VER(3, 1) || ctxInfo.hasExtension("GL_ARB_texture_r
ectangle")) { |
| 231 // We also require textureSize() support for rectangle 2D samplers w
hich was added in |
| 232 // GLSL 1.40. |
| 233 if (ctxInfo.glslGeneration() >= k140_GrGLSLGeneration) { |
| 234 fRectangleTextureSupport = true; |
| 235 } |
| 236 } |
| 237 } else { |
| 238 // Command buffer exposes this in GL ES context for Chromium reasons, |
| 239 // but it should not be used. Also, at the time of writing command buffe
r |
| 240 // lacks TexImage2D support and ANGLE lacks GL ES 3.0 support. |
| 241 fRectangleTextureSupport = ctxInfo.hasExtension("GL_ARB_texture_rectangl
e"); |
| 242 } |
| 243 |
| 244 if (kGL_GrGLStandard == standard) { |
239 if (version >= GR_GL_VER(3,3) || ctxInfo.hasExtension("GL_ARB_texture_sw
izzle")) { | 245 if (version >= GR_GL_VER(3,3) || ctxInfo.hasExtension("GL_ARB_texture_sw
izzle")) { |
240 fTextureSwizzleSupport = true; | 246 fTextureSwizzleSupport = true; |
241 } | 247 } |
242 } else { | 248 } else { |
243 if (version >= GR_GL_VER(3,0)) { | 249 if (version >= GR_GL_VER(3,0)) { |
244 fTextureSwizzleSupport = true; | 250 fTextureSwizzleSupport = true; |
245 } | 251 } |
246 } | 252 } |
247 | 253 |
248 #ifdef SK_BUILD_FOR_WIN | 254 #ifdef SK_BUILD_FOR_WIN |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 glslCaps->fSecondaryOutputExtensionString = "GL_EXT_blend_func_extended"
; | 631 glslCaps->fSecondaryOutputExtensionString = "GL_EXT_blend_func_extended"
; |
626 } | 632 } |
627 | 633 |
628 if (fExternalTextureSupport) { | 634 if (fExternalTextureSupport) { |
629 if (ctxInfo.glslGeneration() == k110_GrGLSLGeneration) { | 635 if (ctxInfo.glslGeneration() == k110_GrGLSLGeneration) { |
630 glslCaps->fExternalTextureExtensionString = "GL_OES_EGL_image_extern
al"; | 636 glslCaps->fExternalTextureExtensionString = "GL_OES_EGL_image_extern
al"; |
631 } else { | 637 } else { |
632 glslCaps->fExternalTextureExtensionString = "GL_OES_EGL_image_extern
al_essl3"; | 638 glslCaps->fExternalTextureExtensionString = "GL_OES_EGL_image_extern
al_essl3"; |
633 } | 639 } |
634 } | 640 } |
| 641 if (fRectangleTextureSupport) { |
| 642 if (kGL_GrGLStandard == standard) { |
| 643 // "Conceptually, you can consider the declaration |
| 644 // #extension GL_ARB_texture_rectangle : require, to allow support |
| 645 // for texture rectangles, to be implicitly prepended to every |
| 646 // GLSL shader when ARB_texture_rectangle is advertised." |
| 647 // --> glslCaps->fRectangleTextureExtensionString == nullptr. |
| 648 glslCaps->fRectangleTextureUseUnifiedTextureFunctionName = |
| 649 ctxInfo.glslGeneration() >= k130_GrGLSLGeneration; |
| 650 } else { |
| 651 //"All future GLSL extensions should follow the "OpenGL Shading Lang
uage |
| 652 // Extension Conventions" however." |
| 653 // We imagine ANGLE implementation allowing ARB_texture_rectangle be
ing |
| 654 // based on an extension text requires the extension string. |
| 655 glslCaps->fRectangleTextureExtensionString = "GL_ARB_texture_rectang
le"; |
| 656 glslCaps->fRectangleTextureUseUnifiedTextureFunctionName = |
| 657 ctxInfo.glslGeneration() == k330_GrGLSLGeneration; |
| 658 } |
| 659 } |
635 | 660 |
636 // The Tegra3 compiler will sometimes never return if we have min(abs(x), 1.
0), so we must do | 661 // The Tegra3 compiler will sometimes never return if we have min(abs(x), 1.
0), so we must do |
637 // the abs first in a separate expression. | 662 // the abs first in a separate expression. |
638 if (kTegra3_GrGLRenderer == ctxInfo.renderer()) { | 663 if (kTegra3_GrGLRenderer == ctxInfo.renderer()) { |
639 glslCaps->fCanUseMinAndAbsTogether = false; | 664 glslCaps->fCanUseMinAndAbsTogether = false; |
640 } | 665 } |
641 | 666 |
642 // On Intel GPU there is an issue where it reads the second argument to atan
"- %s.x" as an int | 667 // On Intel GPU there is an issue where it reads the second argument to atan
"- %s.x" as an int |
643 // thus must us -1.0 * %s.x to work correctly | 668 // thus must us -1.0 * %s.x to work correctly |
644 if (kIntel_GrGLVendor == ctxInfo.vendor()) { | 669 if (kIntel_GrGLVendor == ctxInfo.vendor()) { |
(...skipping 1019 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1664 for (int j = 0; j < kExternalFormatUsageCnt; ++j) { | 1689 for (int j = 0; j < kExternalFormatUsageCnt; ++j) { |
1665 SkASSERT(defaultEntry.fFormats.fExternalFormat[j] != | 1690 SkASSERT(defaultEntry.fFormats.fExternalFormat[j] != |
1666 fConfigTable[i].fFormats.fExternalFormat[j]); | 1691 fConfigTable[i].fFormats.fExternalFormat[j]); |
1667 } | 1692 } |
1668 SkASSERT(defaultEntry.fFormats.fExternalType != fConfigTable[i].fFormats
.fExternalType); | 1693 SkASSERT(defaultEntry.fFormats.fExternalType != fConfigTable[i].fFormats
.fExternalType); |
1669 } | 1694 } |
1670 #endif | 1695 #endif |
1671 } | 1696 } |
1672 | 1697 |
1673 void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {} | 1698 void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {} |
OLD | NEW |