diff options
Diffstat (limited to 'src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp')
-rw-r--r-- | src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp index 90e20437e1..f97b8541d0 100644 --- a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp +++ b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp @@ -7,6 +7,7 @@ #include "GrGLSLFragmentShaderBuilder.h" #include "GrRenderTarget.h" +#include "gl/GrGLGpu.h" #include "glsl/GrGLSL.h" #include "glsl/GrGLSLCaps.h" #include "glsl/GrGLSLProgramBuilder.h" @@ -87,6 +88,14 @@ bool GrGLSLFragmentShaderBuilder::enableFeature(GLSLFeature feature) { } return true; } + case kPixelLocalStorage_GLSLFeature: { + if (fProgramBuilder->glslCaps()->pixelLocalStorageSize() <= 0) { + return false; + } + this->addFeature(1 << kPixelLocalStorage_GLSLFeature, + "GL_EXT_shader_pixel_local_storage"); + return true; + } default: SkFAIL("Unexpected GLSLFeature requested."); return false; @@ -160,6 +169,11 @@ const char* GrGLSLFragmentShaderBuilder::fragmentPosition() { const char* GrGLSLFragmentShaderBuilder::dstColor() { fHasReadDstColor = true; + const char* override = fProgramBuilder->primitiveProcessor().getDestColorOverride(); + if (override != nullptr) { + return override; + } + const GrGLSLCaps* glslCaps = fProgramBuilder->glslCaps(); if (glslCaps->fbFetchSupport()) { this->addFeature(1 << (GrGLSLFragmentShaderBuilder::kLastGLSLPrivateFeature + 1), @@ -227,6 +241,13 @@ const char* GrGLSLFragmentShaderBuilder::getPrimaryColorOutputName() const { return fHasCustomColorOutput ? DeclaredColorOutputName() : "gl_FragColor"; } +void GrGLSLFragmentBuilder::declAppendf(const char* fmt, ...) { + va_list argp; + va_start(argp, fmt); + inputs().appendVAList(fmt, argp); + va_end(argp); +} + const char* GrGLSLFragmentShaderBuilder::getSecondaryColorOutputName() const { const GrGLSLCaps& caps = *fProgramBuilder->glslCaps(); return caps.mustDeclareFragmentShaderOutput() ? DeclaredSecondaryColorOutputName() |