diff options
author | egdaniel <egdaniel@google.com> | 2015-11-11 06:27:20 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-11 06:27:20 -0800 |
commit | 8dcdedc4a087ea46ce1e2458d335d60918e56310 (patch) | |
tree | 40ef4cd4b187fceb923c4de5d7311b7684d7d6e8 /src/gpu/effects | |
parent | 49115b57cb9d260ddd49a6905ee87af63b3ab066 (diff) |
Make GrGLSLProgramBuilder base class for GrGLProgramBuilder.
This CL still keeps the weird diamond shape we have for all our ProgramBuilders.
However, the GrGLSL base class will allow us to pull multiple other parts
of our program setup away from GL which will eventually allow us to break up
the diamond.
As part of this all ShaderBuilder subclass have been made gl independent,
however I will move them to GLSL files/class names in a follow on CL.
BUG=skia:
Review URL: https://codereview.chromium.org/1416423003
Diffstat (limited to 'src/gpu/effects')
-rw-r--r-- | src/gpu/effects/GrBezierEffect.cpp | 10 | ||||
-rw-r--r-- | src/gpu/effects/GrBitmapTextGeoProc.cpp | 4 | ||||
-rw-r--r-- | src/gpu/effects/GrConvexPolyEffect.cpp | 5 | ||||
-rw-r--r-- | src/gpu/effects/GrCustomXfermode.cpp | 2 | ||||
-rw-r--r-- | src/gpu/effects/GrDashingEffect.cpp | 12 | ||||
-rw-r--r-- | src/gpu/effects/GrDistanceFieldGeoProc.cpp | 20 | ||||
-rw-r--r-- | src/gpu/effects/GrPorterDuffXferProcessor.cpp | 2 | ||||
-rw-r--r-- | src/gpu/effects/GrTextureDomain.cpp | 6 |
8 files changed, 28 insertions, 33 deletions
diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp index 41fe7fc6b1..1cf5e18fab 100644 --- a/src/gpu/effects/GrBezierEffect.cpp +++ b/src/gpu/effects/GrBezierEffect.cpp @@ -73,14 +73,14 @@ GrGLConicEffect::GrGLConicEffect(const GrGeometryProcessor& processor) } void GrGLConicEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { - GrGLGPBuilder* pb = args.fPB; + GrGLSLGPBuilder* pb = args.fPB; GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); const GrConicEffect& gp = args.fGP.cast<GrConicEffect>(); // emit attributes vsBuilder->emitAttributes(gp); - GrGLVertToFrag v(kVec4f_GrSLType); + GrGLSLVertToFrag v(kVec4f_GrSLType); args.fPB->addVarying("ConicCoeffs", &v); vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inConicCoeffs()->fName); @@ -289,14 +289,14 @@ GrGLQuadEffect::GrGLQuadEffect(const GrGeometryProcessor& processor) } void GrGLQuadEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { - GrGLGPBuilder* pb = args.fPB; + GrGLSLGPBuilder* pb = args.fPB; GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); const GrQuadEffect& gp = args.fGP.cast<GrQuadEffect>(); // emit attributes vsBuilder->emitAttributes(gp); - GrGLVertToFrag v(kVec4f_GrSLType); + GrGLSLVertToFrag v(kVec4f_GrSLType); args.fPB->addVarying("HairQuadEdge", &v); vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inHairQuadEdge()->fName); @@ -483,7 +483,7 @@ void GrGLCubicEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { // emit attributes vsBuilder->emitAttributes(gp); - GrGLVertToFrag v(kVec4f_GrSLType); + GrGLSLVertToFrag v(kVec4f_GrSLType); args.fPB->addVarying("CubicCoeffs", &v, kHigh_GrSLPrecision); vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inCubicCoeffs()->fName); diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp index 371ef010fc..c1a9dae60a 100644 --- a/src/gpu/effects/GrBitmapTextGeoProc.cpp +++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp @@ -21,7 +21,7 @@ public: void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override { const GrBitmapTextGeoProc& cte = args.fGP.cast<GrBitmapTextGeoProc>(); - GrGLGPBuilder* pb = args.fPB; + GrGLSLGPBuilder* pb = args.fPB; GrGLVertexBuilder* vsBuilder = pb->getVertexShaderBuilder(); // emit attributes @@ -34,7 +34,7 @@ public: SkScalar recipWidth = 1.0f / atlas->width(); SkScalar recipHeight = 1.0f / atlas->height(); - GrGLVertToFrag v(kVec2f_GrSLType); + GrGLSLVertToFrag v(kVec2f_GrSLType); pb->addVarying("TextureCoords", &v); vsBuilder->codeAppendf("%s = vec2(%.*f, %.*f) * %s;", v.vsOut(), GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipWidth, diff --git a/src/gpu/effects/GrConvexPolyEffect.cpp b/src/gpu/effects/GrConvexPolyEffect.cpp index b37964d6b8..714c68a9ce 100644 --- a/src/gpu/effects/GrConvexPolyEffect.cpp +++ b/src/gpu/effects/GrConvexPolyEffect.cpp @@ -212,11 +212,6 @@ void GrGLConvexPolyEffect::emitCode(EmitArgs& args) { fsBuilder->codeAppend("\t\talpha *= edge;\n"); } - // Woe is me. See https://bug.skia.org/2149 . - if (kTegra2_GrGLRenderer == args.fBuilder->ctxInfo().renderer()) { - fsBuilder->codeAppend("\t\tif (-1.0 == alpha) {\n\t\t\tdiscard;\n\t\t}\n"); - } - if (GrProcessorEdgeTypeIsInverseFill(cpe.getEdgeType())) { fsBuilder->codeAppend("\talpha = 1.0 - alpha;\n"); } diff --git a/src/gpu/effects/GrCustomXfermode.cpp b/src/gpu/effects/GrCustomXfermode.cpp index 8ebb80ae6d..abcd9a5b12 100644 --- a/src/gpu/effects/GrCustomXfermode.cpp +++ b/src/gpu/effects/GrCustomXfermode.cpp @@ -160,7 +160,7 @@ private: } } - void emitBlendCodeForDstRead(GrGLXPBuilder* pb, const char* srcColor, const char* dstColor, + void emitBlendCodeForDstRead(GrGLSLXPBuilder* pb, const char* srcColor, const char* dstColor, const char* outColor, const GrXferProcessor& proc) override { const CustomXP& xp = proc.cast<CustomXP>(); SkASSERT(!xp.hasHWBlendEquation()); diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp index 4a8c09ea55..b724082800 100644 --- a/src/gpu/effects/GrDashingEffect.cpp +++ b/src/gpu/effects/GrDashingEffect.cpp @@ -850,19 +850,19 @@ GLDashingCircleEffect::GLDashingCircleEffect() { void GLDashingCircleEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { const DashingCircleEffect& dce = args.fGP.cast<DashingCircleEffect>(); - GrGLGPBuilder* pb = args.fPB; + GrGLSLGPBuilder* pb = args.fPB; GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); // emit attributes vsBuilder->emitAttributes(dce); // XY are dashPos, Z is dashInterval - GrGLVertToFrag dashParams(kVec3f_GrSLType); + GrGLSLVertToFrag dashParams(kVec3f_GrSLType); args.fPB->addVarying("DashParam", &dashParams); vsBuilder->codeAppendf("%s = %s;", dashParams.vsOut(), dce.inDashParams()->fName); // x refers to circle radius - 0.5, y refers to cicle's center x coord - GrGLVertToFrag circleParams(kVec2f_GrSLType); + GrGLSLVertToFrag circleParams(kVec2f_GrSLType); args.fPB->addVarying("CircleParams", &circleParams); vsBuilder->codeAppendf("%s = %s;", circleParams.vsOut(), dce.inCircleParams()->fName); @@ -1054,7 +1054,7 @@ GLDashingLineEffect::GLDashingLineEffect() { void GLDashingLineEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { const DashingLineEffect& de = args.fGP.cast<DashingLineEffect>(); - GrGLGPBuilder* pb = args.fPB; + GrGLSLGPBuilder* pb = args.fPB; GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); @@ -1062,13 +1062,13 @@ void GLDashingLineEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { vsBuilder->emitAttributes(de); // XY refers to dashPos, Z is the dash interval length - GrGLVertToFrag inDashParams(kVec3f_GrSLType); + GrGLSLVertToFrag inDashParams(kVec3f_GrSLType); args.fPB->addVarying("DashParams", &inDashParams, GrSLPrecision::kHigh_GrSLPrecision); vsBuilder->codeAppendf("%s = %s;", inDashParams.vsOut(), de.inDashParams()->fName); // The rect uniform's xyzw refer to (left + 0.5, top + 0.5, right - 0.5, bottom - 0.5), // respectively. - GrGLVertToFrag inRectParams(kVec4f_GrSLType); + GrGLSLVertToFrag inRectParams(kVec4f_GrSLType); args.fPB->addVarying("RectParams", &inRectParams, GrSLPrecision::kHigh_GrSLPrecision); vsBuilder->codeAppendf("%s = %s;", inRectParams.vsOut(), de.inRectParams()->fName); diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.cpp b/src/gpu/effects/GrDistanceFieldGeoProc.cpp index 0cef6be408..41e1aea7ef 100644 --- a/src/gpu/effects/GrDistanceFieldGeoProc.cpp +++ b/src/gpu/effects/GrDistanceFieldGeoProc.cpp @@ -33,7 +33,7 @@ public: void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override{ const GrDistanceFieldA8TextGeoProc& dfTexEffect = args.fGP.cast<GrDistanceFieldA8TextGeoProc>(); - GrGLGPBuilder* pb = args.fPB; + GrGLSLGPBuilder* pb = args.fPB; GrGLFragmentBuilder* fsBuilder = pb->getFragmentShaderBuilder(); SkAssertResult(fsBuilder->enableFeature( GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature)); @@ -70,8 +70,8 @@ public: args.fTransformsIn, args.fTransformsOut); // add varyings - GrGLVertToFrag recipScale(kFloat_GrSLType); - GrGLVertToFrag st(kVec2f_GrSLType); + GrGLSLVertToFrag recipScale(kFloat_GrSLType); + GrGLSLVertToFrag st(kVec2f_GrSLType); bool isSimilarity = SkToBool(dfTexEffect.getFlags() & kSimilarity_DistanceFieldEffectFlag); pb->addVarying("IntTextureCoords", &st, kHigh_GrSLPrecision); vsBuilder->codeAppendf("%s = %s;", st.vsOut(), dfTexEffect.inTextureCoords()->fName); @@ -83,7 +83,7 @@ public: SkScalar recipWidth = 1.0f / atlas->width(); SkScalar recipHeight = 1.0f / atlas->height(); - GrGLVertToFrag uv(kVec2f_GrSLType); + GrGLSLVertToFrag uv(kVec2f_GrSLType); pb->addVarying("TextureCoords", &uv, kHigh_GrSLPrecision); vsBuilder->codeAppendf("%s = vec2(%.*f, %.*f) * %s;", uv.vsOut(), GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipWidth, @@ -284,7 +284,7 @@ public: void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override{ const GrDistanceFieldPathGeoProc& dfTexEffect = args.fGP.cast<GrDistanceFieldPathGeoProc>(); - GrGLGPBuilder* pb = args.fPB; + GrGLSLGPBuilder* pb = args.fPB; GrGLFragmentBuilder* fsBuilder = pb->getFragmentShaderBuilder(); SkAssertResult(fsBuilder->enableFeature( GrGLFragmentShaderBuilder::kStandardDerivatives_GLSLFeature)); @@ -294,7 +294,7 @@ public: // emit attributes vsBuilder->emitAttributes(dfTexEffect); - GrGLVertToFrag v(kVec2f_GrSLType); + GrGLSLVertToFrag v(kVec2f_GrSLType); pb->addVarying("TextureCoords", &v, kHigh_GrSLPrecision); // setup pass through color @@ -499,7 +499,7 @@ public: void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override{ const GrDistanceFieldLCDTextGeoProc& dfTexEffect = args.fGP.cast<GrDistanceFieldLCDTextGeoProc>(); - GrGLGPBuilder* pb = args.fPB; + GrGLSLGPBuilder* pb = args.fPB; GrGLVertexBuilder* vsBuilder = pb->getVertexShaderBuilder(); @@ -521,8 +521,8 @@ public: // set up varyings bool isUniformScale = SkToBool(dfTexEffect.getFlags() & kUniformScale_DistanceFieldEffectMask); - GrGLVertToFrag recipScale(kFloat_GrSLType); - GrGLVertToFrag st(kVec2f_GrSLType); + GrGLSLVertToFrag recipScale(kFloat_GrSLType); + GrGLSLVertToFrag st(kVec2f_GrSLType); pb->addVarying("IntTextureCoords", &st, kHigh_GrSLPrecision); vsBuilder->codeAppendf("%s = %s;", st.vsOut(), dfTexEffect.inTextureCoords()->fName); @@ -533,7 +533,7 @@ public: SkScalar recipWidth = 1.0f / atlas->width(); SkScalar recipHeight = 1.0f / atlas->height(); - GrGLVertToFrag uv(kVec2f_GrSLType); + GrGLSLVertToFrag uv(kVec2f_GrSLType); pb->addVarying("TextureCoords", &uv, kHigh_GrSLPrecision); vsBuilder->codeAppendf("%s = vec2(%.*f, %.*f) * %s;", uv.vsOut(), GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipWidth, diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp index a7f390a5dc..28663805c1 100644 --- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp +++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp @@ -543,7 +543,7 @@ public: } private: - void emitBlendCodeForDstRead(GrGLXPBuilder* pb, const char* srcColor, const char* dstColor, + void emitBlendCodeForDstRead(GrGLSLXPBuilder* pb, const char* srcColor, const char* dstColor, const char* outColor, const GrXferProcessor& proc) override { const ShaderPDXferProcessor& xp = proc.cast<ShaderPDXferProcessor>(); GrGLXPFragmentBuilder* fsBuilder = pb->getFragmentShaderBuilder(); diff --git a/src/gpu/effects/GrTextureDomain.cpp b/src/gpu/effects/GrTextureDomain.cpp index 29d5fc9453..b6458dc1f2 100644 --- a/src/gpu/effects/GrTextureDomain.cpp +++ b/src/gpu/effects/GrTextureDomain.cpp @@ -11,7 +11,7 @@ #include "SkFloatingPoint.h" #include "gl/GrGLContext.h" #include "gl/GrGLFragmentProcessor.h" -#include "gl/builders/GrGLProgramBuilder.h" +#include "glsl/GrGLSLProgramBuilder.h" #include "glsl/GrGLSLProgramDataManager.h" #include "glsl/GrGLSLTextureSampler.h" @@ -51,7 +51,7 @@ void GrTextureDomain::GLDomain::sampleTexture(GrGLShaderBuilder* builder, SkASSERT((Mode)-1 == fMode || textureDomain.mode() == fMode); SkDEBUGCODE(fMode = textureDomain.mode();) - GrGLProgramBuilder* program = builder->getProgramBuilder(); + GrGLSLProgramBuilder* program = builder->getProgramBuilder(); if (textureDomain.mode() != kIgnore_Mode && !fDomainUni.isValid()) { const char* name; @@ -59,7 +59,7 @@ void GrTextureDomain::GLDomain::sampleTexture(GrGLShaderBuilder* builder, if (textureDomain.fIndex >= 0) { uniName.appendS32(textureDomain.fIndex); } - fDomainUni = program->addUniform(GrGLProgramBuilder::kFragment_Visibility, + fDomainUni = program->addUniform(GrGLSLProgramBuilder::kFragment_Visibility, kVec4f_GrSLType, kDefault_GrSLPrecision, uniName.c_str(), &name); fDomainName = name; |