Index: src/gpu/gl/builders/GrGLShaderBuilder.cpp |
diff --git a/src/gpu/gl/builders/GrGLShaderBuilder.cpp b/src/gpu/gl/builders/GrGLShaderBuilder.cpp |
index 991ac9117657a9a7ed042546dd09ce7836994c12..95607ecabe98a06489a3598d2a14b52ed578831d 100644 |
--- a/src/gpu/gl/builders/GrGLShaderBuilder.cpp |
+++ b/src/gpu/gl/builders/GrGLShaderBuilder.cpp |
@@ -6,11 +6,8 @@ |
*/ |
#include "GrGLShaderBuilder.h" |
-#include "GrGLProgramBuilder.h" |
-#include "GrGLShaderStringBuilder.h" |
-#include "gl/GrGLCaps.h" |
-#include "gl/GrGLContext.h" |
#include "gl/GrGLGpu.h" |
+#include "gl/builders/GrGLProgramBuilder.h" |
#include "glsl/GrGLSLCaps.h" |
#include "glsl/GrGLSLShaderVar.h" |
#include "glsl/GrGLSLTextureSampler.h" |
@@ -123,23 +120,6 @@ void GrGLShaderBuilder::appendTextureLookupAndModulate(const char* modulation, |
this->codeAppend((GrGLSLExpr4(modulation) * GrGLSLExpr4(lookup)).c_str()); |
} |
- |
-const GrGLenum* GrGLShaderBuilder::GetTexParamSwizzle(GrPixelConfig config, const GrGLCaps& caps) { |
- if (caps.textureSwizzleSupport() && GrPixelConfigIsAlphaOnly(config)) { |
- if (caps.textureRedSupport()) { |
- static const GrGLenum gRedSmear[] = { GR_GL_RED, GR_GL_RED, GR_GL_RED, GR_GL_RED }; |
- return gRedSmear; |
- } else { |
- static const GrGLenum gAlphaSmear[] = { GR_GL_ALPHA, GR_GL_ALPHA, |
- GR_GL_ALPHA, GR_GL_ALPHA }; |
- return gAlphaSmear; |
- } |
- } else { |
- static const GrGLenum gStraight[] = { GR_GL_RED, GR_GL_GREEN, GR_GL_BLUE, GR_GL_ALPHA }; |
- return gStraight; |
- } |
-} |
- |
void GrGLShaderBuilder::addFeature(uint32_t featureBit, const char* extensionName) { |
if (!(featureBit & fFeaturesAddedMask)) { |
this->extensions().appendf("#extension %s: require\n", extensionName); |
@@ -168,8 +148,8 @@ void GrGLShaderBuilder::appendTextureLookup(const char* samplerName, |
} |
void GrGLShaderBuilder::addLayoutQualifier(const char* param, InterfaceQualifier interface) { |
- SkASSERT(fProgramBuilder->gpu()->glslGeneration() >= k330_GrGLSLGeneration || |
- fProgramBuilder->gpu()->glCaps().glslCaps()->mustEnableAdvBlendEqs()); |
+ SkASSERT(fProgramBuilder->glslCaps()->generation() >= k330_GrGLSLGeneration || |
+ fProgramBuilder->glslCaps()->mustEnableAdvBlendEqs()); |
fLayoutParams[interface].push_back() = param; |
} |
@@ -194,9 +174,17 @@ void GrGLShaderBuilder::compileAndAppendLayoutQualifiers() { |
GR_STATIC_ASSERT(SK_ARRAY_COUNT(interfaceQualifierNames) == kLastInterfaceQualifier + 1); |
} |
-bool |
-GrGLShaderBuilder::finalize(GrGLuint programId, GrGLenum type, SkTDArray<GrGLuint>* shaderIds) { |
+void GrGLShaderBuilder::finalize(uint32_t visibility) { |
SkASSERT(!fFinalized); |
+ this->versionDecl() = fProgramBuilder->glslCaps()->versionDeclString(); |
+ this->compileAndAppendLayoutQualifiers(); |
+ fProgramBuilder->appendUniformDecls((GrGLProgramBuilder::ShaderVisibility) visibility, |
+ &this->uniforms()); |
+ this->appendDecls(fInputs, &this->inputs()); |
+ SkASSERT(k110_GrGLSLGeneration != fProgramBuilder->glslCaps()->generation() || |
+ fOutputs.empty()); |
+ this->appendDecls(fOutputs, &this->outputs()); |
+ this->onFinalize(); |
// append the 'footer' to code |
this->code().append("}"); |
@@ -205,22 +193,6 @@ GrGLShaderBuilder::finalize(GrGLuint programId, GrGLenum type, SkTDArray<GrGLuin |
fCompilerStringLengths[i] = (int)fShaderStrings[i].size(); |
} |
- GrGLGpu* gpu = fProgramBuilder->gpu(); |
- GrGLuint shaderId = GrGLCompileAndAttachShader(gpu->glContext(), |
- programId, |
- type, |
- fCompilerStrings.begin(), |
- fCompilerStringLengths.begin(), |
- fCompilerStrings.count(), |
- gpu->stats()); |
- |
fFinalized = true; |
- |
- if (!shaderId) { |
- return false; |
- } |
- |
- *shaderIds->append() = shaderId; |
- |
- return true; |
} |
+ |