From d7bafb700c62dff466a88bee81d793e51737284b Mon Sep 17 00:00:00 2001 From: "bsalomon@google.com" Date: Mon, 22 Oct 2012 14:30:50 +0000 Subject: Make GrGLShaderBuilder responsible for inserting begining of main() function defition and closing brace. This will allow another change I am working on to insert code at the begining of a shader. R=robertphillips@google.com Review URL: https://codereview.appspot.com/6737058 git-svn-id: http://skia.googlecode.com/svn/trunk@6028 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/gpu/gl/GrGLProgram.cpp | 18 +++++------------- src/gpu/gl/GrGLShaderBuilder.cpp | 6 ++++++ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/gpu/gl/GrGLProgram.cpp b/src/gpu/gl/GrGLProgram.cpp index fcf00af552..066da357a1 100644 --- a/src/gpu/gl/GrGLProgram.cpp +++ b/src/gpu/gl/GrGLProgram.cpp @@ -364,9 +364,8 @@ void GrGLProgram::genGeometryShader(GrGLShaderBuilder* segments) const { GrAssert(fContextInfo.glslGeneration() >= k150_GrGLSLGeneration); segments->fGSHeader.append("layout(triangles) in;\n" "layout(triangle_strip, max_vertices = 6) out;\n"); - segments->fGSCode.append("void main() {\n" - "\tfor (int i = 0; i < 3; ++i) {\n" - "\t\tgl_Position = gl_in[i].gl_Position;\n"); + segments->fGSCode.append("\tfor (int i = 0; i < 3; ++i) {\n" + "\t\tgl_Position = gl_in[i].gl_Position;\n"); if (fDesc.fEmitsPointSize) { segments->fGSCode.append("\t\tgl_PointSize = 1.0;\n"); } @@ -379,8 +378,7 @@ void GrGLProgram::genGeometryShader(GrGLShaderBuilder* segments) const { } segments->fGSCode.append("\t\tEmitVertex();\n" "\t}\n" - "\tEndPrimitive();\n" - "}\n"); + "\tEndPrimitive();\n"); } #endif } @@ -571,9 +569,8 @@ bool GrGLProgram::genProgram(const GrCustomStage** customStages) { GrGLShaderVar::kAttribute_TypeModifier, POS_ATTR_NAME); - builder.fVSCode.appendf("void main() {\n" - "\tvec3 pos3 = %s * vec3("POS_ATTR_NAME", 1);\n" - "\tgl_Position = vec4(pos3.xy, 0, pos3.z);\n", + builder.fVSCode.appendf("\tvec3 pos3 = %s * vec3("POS_ATTR_NAME", 1);\n" + "\tgl_Position = vec4(pos3.xy, 0, pos3.z);\n", viewMName); // incoming color to current stage being processed. @@ -588,8 +585,6 @@ bool GrGLProgram::genProgram(const GrCustomStage** customStages) { builder.fVSCode.append("\tgl_PointSize = 1.0;\n"); } - builder.fFSCode.append("void main() {\n"); - // add texture coordinates that are used to the list of vertex attr decls SkString texCoordAttrs[GrDrawState::kMaxTexCoords]; for (int t = 0; t < GrDrawState::kMaxTexCoords; ++t) { @@ -791,9 +786,6 @@ bool GrGLProgram::genProgram(const GrCustomStage** customStages) { } } - builder.fVSCode.append("}\n"); - builder.fFSCode.append("}\n"); - /////////////////////////////////////////////////////////////////////////// // insert GS #if GR_DEBUG diff --git a/src/gpu/gl/GrGLShaderBuilder.cpp b/src/gpu/gl/GrGLShaderBuilder.cpp index 473c7b4d73..3ce118ccc9 100644 --- a/src/gpu/gl/GrGLShaderBuilder.cpp +++ b/src/gpu/gl/GrGLShaderBuilder.cpp @@ -359,7 +359,9 @@ void GrGLShaderBuilder::getShader(ShaderType type, SkString* shaderStr) const { this->appendUniformDecls(kVertex_ShaderType, shaderStr); this->appendDecls(fVSAttrs, shaderStr); this->appendDecls(fVSOutputs, shaderStr); + shaderStr->append("void main() {\n"); shaderStr->append(fVSCode); + shaderStr->append("}\n"); break; case kGeometry_ShaderType: if (fUsesGS) { @@ -367,7 +369,9 @@ void GrGLShaderBuilder::getShader(ShaderType type, SkString* shaderStr) const { shaderStr->append(fGSHeader); this->appendDecls(fGSInputs, shaderStr); this->appendDecls(fGSOutputs, shaderStr); + shaderStr->append("void main() {\n"); shaderStr->append(fGSCode); + shaderStr->append("}\n"); } else { shaderStr->reset(); } @@ -383,7 +387,9 @@ void GrGLShaderBuilder::getShader(ShaderType type, SkString* shaderStr) const { GrAssert(k110_GrGLSLGeneration != fContext.glslGeneration() || fFSOutputs.empty()); this->appendDecls(fFSOutputs, shaderStr); shaderStr->append(fFSFunctions); + shaderStr->append("void main() {\n"); shaderStr->append(fFSCode); + shaderStr->append("}\n"); break; } } -- cgit v1.2.3