| Index: src/gpu/gl/GrGLCaps.cpp
|
| diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
|
| index 9879846ef20a165eda917f6fdfad2fcad63e3deb..58c08627cd5817ab0c2c2139333b1083d7dc31bd 100644
|
| --- a/src/gpu/gl/GrGLCaps.cpp
|
| +++ b/src/gpu/gl/GrGLCaps.cpp
|
| @@ -27,14 +27,12 @@ GrGLCaps::GrGLCaps(const GrContextOptions& contextOptions,
|
| fMaxFragmentTextureUnits = 0;
|
| fRGBA8RenderbufferSupport = false;
|
| fBGRAIsInternalFormat = false;
|
| - fTextureSwizzleSupport = false;
|
| fUnpackRowLengthSupport = false;
|
| fUnpackFlipYSupport = false;
|
| fPackRowLengthSupport = false;
|
| fPackFlipYSupport = false;
|
| fTextureUsageSupport = false;
|
| fTexStorageSupport = false;
|
| - fTextureRedSupport = false;
|
| fImagingSupport = false;
|
| fTwoFormatLimit = false;
|
| fFragCoordsConventionSupport = false;
|
| @@ -94,13 +92,6 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
|
| }
|
|
|
| if (kGL_GrGLStandard == standard) {
|
| - fTextureSwizzleSupport = version >= GR_GL_VER(3,3) ||
|
| - ctxInfo.hasExtension("GL_ARB_texture_swizzle");
|
| - } else {
|
| - fTextureSwizzleSupport = version >= GR_GL_VER(3,0);
|
| - }
|
| -
|
| - if (kGL_GrGLStandard == standard) {
|
| fUnpackRowLengthSupport = true;
|
| fUnpackFlipYSupport = false;
|
| fPackRowLengthSupport = true;
|
| @@ -138,17 +129,6 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
|
| fTextureBarrierSupport = ctxInfo.hasExtension("GL_NV_texture_barrier");
|
| }
|
|
|
| - // ARB_texture_rg is part of OpenGL 3.0, but mesa doesn't support GL_RED
|
| - // and GL_RG on FBO textures.
|
| - if (kMesa_GrGLDriver != ctxInfo.driver()) {
|
| - if (kGL_GrGLStandard == standard) {
|
| - fTextureRedSupport = version >= GR_GL_VER(3,0) ||
|
| - ctxInfo.hasExtension("GL_ARB_texture_rg");
|
| - } else {
|
| - fTextureRedSupport = version >= GR_GL_VER(3,0) ||
|
| - ctxInfo.hasExtension("GL_EXT_texture_rg");
|
| - }
|
| - }
|
| fImagingSupport = kGL_GrGLStandard == standard &&
|
| ctxInfo.hasExtension("GL_ARB_imaging");
|
|
|
| @@ -489,6 +469,7 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
|
| }
|
|
|
| this->initConfigTexturableTable(ctxInfo, gli, srgbSupport);
|
| + // initGLSL must be called before this, so that we know if we have GL_RED/R8 support or not
|
| this->initConfigRenderableTable(ctxInfo, srgbSupport);
|
| this->initShaderPrecisionTable(ctxInfo, gli, glslCaps);
|
|
|
| @@ -591,6 +572,29 @@ void GrGLCaps::initGLSL(const GrGLContextInfo& ctxInfo) {
|
|
|
| glslCaps->fVersionDeclString = get_glsl_version_decl_string(standard, glslCaps->fGLSLGeneration,
|
| fIsCoreProfile);
|
| +
|
| + if (kGLES_GrGLStandard == standard && k110_GrGLSLGeneration == glslCaps->fGLSLGeneration) {
|
| + glslCaps->fShaderDerivativeExtensionString = "GL_OES_standard_derivatives";
|
| + }
|
| +
|
| + if (kGL_GrGLStandard == standard) {
|
| + glslCaps->fTextureSwizzleSupport = version >= GR_GL_VER(3,3) ||
|
| + ctxInfo.hasExtension("GL_ARB_texture_swizzle");
|
| + } else {
|
| + glslCaps->fTextureSwizzleSupport = version >= GR_GL_VER(3,0);
|
| + }
|
| +
|
| + // ARB_texture_rg is part of OpenGL 3.0, but mesa doesn't support GL_RED
|
| + // and GL_RG on FBO textures.
|
| + if (kMesa_GrGLDriver != ctxInfo.driver()) {
|
| + if (kGL_GrGLStandard == standard) {
|
| + glslCaps->fTextureRedSupport = version >= GR_GL_VER(3,0) ||
|
| + ctxInfo.hasExtension("GL_ARB_texture_rg");
|
| + } else {
|
| + glslCaps->fTextureRedSupport = version >= GR_GL_VER(3,0) ||
|
| + ctxInfo.hasExtension("GL_EXT_texture_rg");
|
| + }
|
| + }
|
| }
|
|
|
| bool GrGLCaps::hasPathRenderingSupport(const GrGLContextInfo& ctxInfo, const GrGLInterface* gli) {
|
| @@ -656,6 +660,7 @@ void GrGLCaps::initConfigRenderableTable(const GrGLContextInfo& ctxInfo, bool sr
|
| // below already account for this).
|
|
|
| GrGLStandard standard = ctxInfo.standard();
|
| + GrGLSLCaps* glslCaps = static_cast<GrGLSLCaps*>(fShaderCaps.get());
|
|
|
| enum {
|
| kNo_MSAA = 0,
|
| @@ -672,8 +677,8 @@ void GrGLCaps::initConfigRenderableTable(const GrGLContextInfo& ctxInfo, bool sr
|
| }
|
| } else {
|
| // On ES we can only hope for R8
|
| - fConfigRenderSupport[kAlpha_8_GrPixelConfig][kNo_MSAA] = fTextureRedSupport;
|
| - fConfigRenderSupport[kAlpha_8_GrPixelConfig][kYes_MSAA] = fTextureRedSupport;
|
| + fConfigRenderSupport[kAlpha_8_GrPixelConfig][kNo_MSAA] = glslCaps->fTextureRedSupport;
|
| + fConfigRenderSupport[kAlpha_8_GrPixelConfig][kYes_MSAA] = glslCaps->fTextureRedSupport;
|
| }
|
|
|
| if (kGL_GrGLStandard != standard) {
|
| @@ -738,7 +743,8 @@ void GrGLCaps::initConfigRenderableTable(const GrGLContextInfo& ctxInfo, bool sr
|
| // for now we don't support floating point MSAA on ES
|
| fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = false;
|
| } else {
|
| - if (ctxInfo.hasExtension("GL_EXT_color_buffer_half_float") && fTextureRedSupport) {
|
| + if (ctxInfo.hasExtension("GL_EXT_color_buffer_half_float") &&
|
| + glslCaps->fTextureRedSupport) {
|
| fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = true;
|
| } else {
|
| fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = false;
|
| @@ -1165,7 +1171,6 @@ SkString GrGLCaps::dump() const {
|
| r.appendf("Max Vertex Attributes: %d\n", fMaxVertexAttributes);
|
| r.appendf("Support RGBA8 Render Buffer: %s\n", (fRGBA8RenderbufferSupport ? "YES": "NO"));
|
| r.appendf("BGRA is an internal format: %s\n", (fBGRAIsInternalFormat ? "YES": "NO"));
|
| - r.appendf("Support texture swizzle: %s\n", (fTextureSwizzleSupport ? "YES": "NO"));
|
| r.appendf("Unpack Row length support: %s\n", (fUnpackRowLengthSupport ? "YES": "NO"));
|
| r.appendf("Unpack Flip Y support: %s\n", (fUnpackFlipYSupport ? "YES": "NO"));
|
| r.appendf("Pack Row length support: %s\n", (fPackRowLengthSupport ? "YES": "NO"));
|
| @@ -1173,7 +1178,6 @@ SkString GrGLCaps::dump() const {
|
|
|
| r.appendf("Texture Usage support: %s\n", (fTextureUsageSupport ? "YES": "NO"));
|
| r.appendf("Texture Storage support: %s\n", (fTexStorageSupport ? "YES": "NO"));
|
| - r.appendf("GL_R support: %s\n", (fTextureRedSupport ? "YES": "NO"));
|
| r.appendf("GL_ARB_imaging support: %s\n", (fImagingSupport ? "YES": "NO"));
|
| r.appendf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO"));
|
| r.appendf("Fragment coord conventions support: %s\n",
|
|
|