diff options
author | 2015-02-13 16:31:46 -0800 | |
---|---|---|
committer | 2015-02-13 16:31:46 -0800 | |
commit | b8a82f2bce265a09173a90dfbe4ce78e52347ba4 (patch) | |
tree | 28f876f85a48e88582ee50dfa7c698d89cd05838 /src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp | |
parent | 1c3c2d83364ee228e0751df0e1b9c161c0ba8c1e (diff) |
Revert of Multi-string shaders (patchset #4 id:60001 of https://codereview.chromium.org/929503002/)
Reason for revert:
windows warnings
Original issue's description:
> Multi-string shaders
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/1c3c2d83364ee228e0751df0e1b9c161c0ba8c1e
TBR=bsalomon@google.com,joshualitt@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review URL: https://codereview.chromium.org/924973002
Diffstat (limited to 'src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp')
-rw-r--r-- | src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp b/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp index c739f1162a..86c622d456 100644 --- a/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp +++ b/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp @@ -6,6 +6,7 @@ */ #include "GrGLFragmentShaderBuilder.h" +#include "GrGLShaderStringBuilder.h" #include "GrGLProgramBuilder.h" #include "../GrGLGpu.h" @@ -209,19 +210,33 @@ const char* GrGLFragmentShaderBuilder::getSecondaryColorOutputName() const { } bool GrGLFragmentShaderBuilder::compileAndAttachShaders(GrGLuint programId, - SkTDArray<GrGLuint>* shaderIds) { + SkTDArray<GrGLuint>* shaderIds) const { GrGLGpu* gpu = fProgramBuilder->gpu(); - this->versionDecl() = GrGetGLSLVersionDecl(gpu->ctxInfo()); + SkString fragShaderSrc(GrGetGLSLVersionDecl(gpu->ctxInfo())); + fragShaderSrc.append(fExtensions); append_default_precision_qualifier(kDefault_GrSLPrecision, gpu->glStandard(), - &this->precisionQualifier()); - fProgramBuilder->appendUniformDecls(GrGLProgramBuilder::kFragment_Visibility, - &this->uniforms()); - this->appendDecls(fInputs, &this->inputs()); + &fragShaderSrc); + fProgramBuilder->appendUniformDecls(GrGLProgramBuilder::kFragment_Visibility, &fragShaderSrc); + this->appendDecls(fInputs, &fragShaderSrc); // We shouldn't have declared outputs on 1.10 SkASSERT(k110_GrGLSLGeneration != gpu->glslGeneration() || fOutputs.empty()); - this->appendDecls(fOutputs, &this->outputs()); - return this->finalize(programId, GR_GL_FRAGMENT_SHADER, shaderIds); + this->appendDecls(fOutputs, &fragShaderSrc); + fragShaderSrc.append(fFunctions); + fragShaderSrc.append("void main() {\n"); + fragShaderSrc.append(fCode); + fragShaderSrc.append("}\n"); + + GrGLuint fragShaderId = GrGLCompileAndAttachShader(gpu->glContext(), programId, + GR_GL_FRAGMENT_SHADER, fragShaderSrc, + gpu->stats()); + if (!fragShaderId) { + return false; + } + + *shaderIds->append() = fragShaderId; + + return true; } void GrGLFragmentShaderBuilder::bindFragmentShaderLocations(GrGLuint programID) { |