diff options
32 files changed, 58 insertions, 187 deletions
diff --git a/include/gpu/GrShaderCaps.h b/include/gpu/GrShaderCaps.h index e25c05b20b..96fd235caf 100644 --- a/include/gpu/GrShaderCaps.h +++ b/include/gpu/GrShaderCaps.h @@ -72,10 +72,6 @@ public: bool multisampleInterpolationSupport() const { return fMultisampleInterpolationSupport; } - bool sampleVariablesSupport() const { return fSampleVariablesSupport; } - - bool sampleMaskOverrideCoverageSupport() const { return fSampleMaskOverrideCoverageSupport; } - bool externalTextureSupport() const { return fExternalTextureSupport; } bool texelFetchSupport() const { return fTexelFetchSupport; } @@ -195,11 +191,6 @@ public: return fMultisampleInterpolationExtensionString; } - const char* sampleVariablesExtensionString() const { - SkASSERT(this->sampleVariablesSupport()); - return fSampleVariablesExtensionString; - } - const char* imageLoadStoreExtensionString() const { SkASSERT(this->imageLoadStoreSupport()); return fImageLoadStoreExtensionString; @@ -260,8 +251,6 @@ private: bool fPreferFlatInterpolation : 1; bool fNoPerspectiveInterpolationSupport : 1; bool fMultisampleInterpolationSupport : 1; - bool fSampleVariablesSupport : 1; - bool fSampleMaskOverrideCoverageSupport : 1; bool fExternalTextureSupport : 1; bool fTexelFetchSupport : 1; bool fVertexIDSupport : 1; @@ -292,7 +281,6 @@ private: const char* fTexelBufferExtensionString; const char* fNoPerspectiveInterpolationExtensionString; const char* fMultisampleInterpolationExtensionString; - const char* fSampleVariablesExtensionString; const char* fImageLoadStoreExtensionString; const char* fFBFetchColorName; diff --git a/src/gpu/GrDefaultGeoProcFactory.cpp b/src/gpu/GrDefaultGeoProcFactory.cpp index 37967e4d2a..d7a5ea529a 100644 --- a/src/gpu/GrDefaultGeoProcFactory.cpp +++ b/src/gpu/GrDefaultGeoProcFactory.cpp @@ -73,7 +73,7 @@ public: void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override { const DefaultGeoProc& gp = args.fGP.cast<DefaultGeoProc>(); GrGLSLVertexBuilder* vertBuilder = args.fVertBuilder; - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; GrGLSLVaryingHandler* varyingHandler = args.fVaryingHandler; GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; diff --git a/src/gpu/GrPathProcessor.cpp b/src/gpu/GrPathProcessor.cpp index d75ac735c1..3dc6601d29 100644 --- a/src/gpu/GrPathProcessor.cpp +++ b/src/gpu/GrPathProcessor.cpp @@ -24,7 +24,7 @@ public: } void emitCode(EmitArgs& args) override { - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; const GrPathProcessor& pathProc = args.fGP.cast<GrPathProcessor>(); if (!pathProc.viewMatrix().hasPerspective()) { diff --git a/src/gpu/GrShaderCaps.cpp b/src/gpu/GrShaderCaps.cpp index e31f3300e0..ef9ca5f77f 100644 --- a/src/gpu/GrShaderCaps.cpp +++ b/src/gpu/GrShaderCaps.cpp @@ -43,8 +43,6 @@ GrShaderCaps::GrShaderCaps(const GrContextOptions& options) { fPreferFlatInterpolation = false; fNoPerspectiveInterpolationSupport = false; fMultisampleInterpolationSupport = false; - fSampleVariablesSupport = false; - fSampleMaskOverrideCoverageSupport = false; fExternalTextureSupport = false; fTexelFetchSupport = false; fVertexIDSupport = false; @@ -61,7 +59,6 @@ GrShaderCaps::GrShaderCaps(const GrContextOptions& options) { fTexelBufferExtensionString = nullptr; fNoPerspectiveInterpolationExtensionString = nullptr; fMultisampleInterpolationExtensionString = nullptr; - fSampleVariablesExtensionString = nullptr; fFBFetchColorName = nullptr; fFBFetchExtensionString = nullptr; fImageLoadStoreExtensionString = nullptr; @@ -119,8 +116,6 @@ void GrShaderCaps::dumpJSON(SkJSONWriter* writer) const { writer->appendBool("Prefer flat interpolation", fPreferFlatInterpolation); writer->appendBool("No perspective interpolation support", fNoPerspectiveInterpolationSupport); writer->appendBool("Multisample interpolation support", fMultisampleInterpolationSupport); - writer->appendBool("Sample variables support", fSampleVariablesSupport); - writer->appendBool("Sample mask override coverage support", fSampleMaskOverrideCoverageSupport); writer->appendBool("External texture support", fExternalTextureSupport); writer->appendBool("texelFetch support", fTexelFetchSupport); writer->appendBool("sk_VertexID support", fVertexIDSupport); diff --git a/src/gpu/ccpr/GrCCCoverageProcessor.cpp b/src/gpu/ccpr/GrCCCoverageProcessor.cpp index 2c3166d526..fc4409d40a 100644 --- a/src/gpu/ccpr/GrCCCoverageProcessor.cpp +++ b/src/gpu/ccpr/GrCCCoverageProcessor.cpp @@ -16,7 +16,7 @@ #include "glsl/GrGLSLVertexGeoBuilder.h" void GrCCCoverageProcessor::Shader::emitFragmentCode(const GrCCCoverageProcessor& proc, - GrGLSLPPFragmentBuilder* f, + GrGLSLFPFragmentBuilder* f, const char* skOutputColor, const char* skOutputCoverage) const { f->codeAppendf("half coverage = 0;"); @@ -44,7 +44,7 @@ void GrCCCoverageProcessor::Shader::EmitEdgeDistanceEquation(GrGLSLVertexGeoBuil s->codeAppendf("%s = float3(-n, dot(n, %s) - .5);", outputDistanceEquation, leftPt); } -int GrCCCoverageProcessor::Shader::DefineSoftSampleLocations(GrGLSLPPFragmentBuilder* f, +int GrCCCoverageProcessor::Shader::DefineSoftSampleLocations(GrGLSLFPFragmentBuilder* f, const char* samplesName) { // Standard DX11 sample locations. #if defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_IOS) diff --git a/src/gpu/ccpr/GrCCCoverageProcessor.h b/src/gpu/ccpr/GrCCCoverageProcessor.h index e6adfffe14..bcb9bb7030 100644 --- a/src/gpu/ccpr/GrCCCoverageProcessor.h +++ b/src/gpu/ccpr/GrCCCoverageProcessor.h @@ -15,7 +15,7 @@ #include "glsl/GrGLSLGeometryProcessor.h" #include "glsl/GrGLSLVarying.h" -class GrGLSLPPFragmentBuilder; +class GrGLSLFPFragmentBuilder; class GrGLSLVertexGeoBuilder; class GrMesh; @@ -178,7 +178,7 @@ public: this->onEmitVaryings(varyingHandler, scope, code, position, inputCoverage, wind); } - void emitFragmentCode(const GrCCCoverageProcessor& proc, GrGLSLPPFragmentBuilder*, + void emitFragmentCode(const GrCCCoverageProcessor& proc, GrGLSLFPFragmentBuilder*, const char* skOutputColor, const char* skOutputCoverage) const; // Defines an equation ("dot(float3(pt, 1), distance_equation)") that is -1 on the outside @@ -201,7 +201,7 @@ public: const char* wind) = 0; // Emits the fragment code that calculates a pixel's signed coverage value. - virtual void onEmitFragmentCode(GrGLSLPPFragmentBuilder*, + virtual void onEmitFragmentCode(GrGLSLFPFragmentBuilder*, const char* outputCoverage) const = 0; // Returns the name of a Shader's internal varying at the point where where its value is @@ -216,7 +216,7 @@ public: // center. Subclasses can use this for software multisampling. // // Returns the number of samples. - static int DefineSoftSampleLocations(GrGLSLPPFragmentBuilder* f, const char* samplesName); + static int DefineSoftSampleLocations(GrGLSLFPFragmentBuilder* f, const char* samplesName); }; class GSImpl; diff --git a/src/gpu/ccpr/GrCCCubicShader.cpp b/src/gpu/ccpr/GrCCCubicShader.cpp index 3bf8479536..5ae51c7d9b 100644 --- a/src/gpu/ccpr/GrCCCubicShader.cpp +++ b/src/gpu/ccpr/GrCCCubicShader.cpp @@ -92,7 +92,7 @@ void GrCCCubicShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, this->onEmitVaryings(varyingHandler, scope, code); } -void GrCCCubicShader::onEmitFragmentCode(GrGLSLPPFragmentBuilder* f, +void GrCCCubicShader::onEmitFragmentCode(GrGLSLFPFragmentBuilder* f, const char* outputCoverage) const { f->codeAppendf("float k = %s.x, l = %s.y, m = %s.z, d = %s.w;", fKLMD.fsIn(), fKLMD.fsIn(), fKLMD.fsIn(), fKLMD.fsIn()); @@ -116,7 +116,7 @@ void GrCCCubicHullShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, OutName(fGradMatrix), fKLMMatrix.c_str(), fKLMMatrix.c_str()); } -void GrCCCubicHullShader::emitCoverage(GrGLSLPPFragmentBuilder* f, +void GrCCCubicHullShader::emitCoverage(GrGLSLFPFragmentBuilder* f, const char* outputCoverage) const { // k,l,m,d are defined by the base class. f->codeAppend ("float f = k*k*k - l*m;"); @@ -148,7 +148,7 @@ void GrCCCubicCornerShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, fKLMMatrix.c_str(), fEdgeDistanceEquation.c_str()); } -void GrCCCubicCornerShader::emitCoverage(GrGLSLPPFragmentBuilder* f, +void GrCCCubicCornerShader::emitCoverage(GrGLSLFPFragmentBuilder* f, const char* outputCoverage) const { f->codeAppendf("float2x4 grad_klmd = float2x4(%s, %s);", fdKLMDdx.fsIn(), fdKLMDdy.fsIn()); diff --git a/src/gpu/ccpr/GrCCCubicShader.h b/src/gpu/ccpr/GrCCCubicShader.h index ffb9103969..063549264a 100644 --- a/src/gpu/ccpr/GrCCCubicShader.h +++ b/src/gpu/ccpr/GrCCCubicShader.h @@ -32,8 +32,8 @@ protected: const char* position, const char* inputCoverage, const char* wind) final; virtual void onEmitVaryings(GrGLSLVaryingHandler*, GrGLSLVarying::Scope, SkString* code) = 0; - void onEmitFragmentCode(GrGLSLPPFragmentBuilder*, const char* outputCoverage) const final; - virtual void emitCoverage(GrGLSLPPFragmentBuilder*, const char* outputCoverage) const = 0; + void onEmitFragmentCode(GrGLSLFPFragmentBuilder*, const char* outputCoverage) const final; + virtual void emitCoverage(GrGLSLFPFragmentBuilder*, const char* outputCoverage) const = 0; GrShaderVar fKLMMatrix{"klm_matrix", kFloat3x3_GrSLType}; GrShaderVar fEdgeDistanceEquation{"edge_distance_equation", kFloat3_GrSLType}; @@ -42,7 +42,7 @@ protected: class GrCCCubicHullShader : public GrCCCubicShader { void onEmitVaryings(GrGLSLVaryingHandler*, GrGLSLVarying::Scope, SkString* code) override; - void emitCoverage(GrGLSLPPFragmentBuilder*, const char* outputCoverage) const override; + void emitCoverage(GrGLSLFPFragmentBuilder*, const char* outputCoverage) const override; GrGLSLVarying fGradMatrix; }; @@ -51,7 +51,7 @@ class GrCCCubicCornerShader : public GrCCCubicShader { void onEmitSetupCode(GrGLSLVertexGeoBuilder*, const char* pts, const char* repetitionID, GeometryVars*) const override; void onEmitVaryings(GrGLSLVaryingHandler*, GrGLSLVarying::Scope, SkString* code) override; - void emitCoverage(GrGLSLPPFragmentBuilder*, const char* outputCoverage) const override; + void emitCoverage(GrGLSLFPFragmentBuilder*, const char* outputCoverage) const override; GrGLSLVarying fdKLMDdx; GrGLSLVarying fdKLMDdy; diff --git a/src/gpu/ccpr/GrCCPathProcessor.cpp b/src/gpu/ccpr/GrCCPathProcessor.cpp index 986b5870d7..4841ed21f1 100644 --- a/src/gpu/ccpr/GrCCPathProcessor.cpp +++ b/src/gpu/ccpr/GrCCPathProcessor.cpp @@ -219,7 +219,7 @@ void GLSLPathProcessor::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { args.fFPCoordTransformHandler); // Fragment shader. - GrGLSLPPFragmentBuilder* f = args.fFragBuilder; + GrGLSLFPFragmentBuilder* f = args.fFragBuilder; f->codeAppend ("half coverage_count = "); f->appendTextureLookup(args.fTexSamplers[0], texcoord.fsIn(), kFloat2_GrSLType); diff --git a/src/gpu/ccpr/GrCCQuadraticShader.cpp b/src/gpu/ccpr/GrCCQuadraticShader.cpp index 1122eafc98..090e29f4c3 100644 --- a/src/gpu/ccpr/GrCCQuadraticShader.cpp +++ b/src/gpu/ccpr/GrCCQuadraticShader.cpp @@ -51,7 +51,7 @@ void GrCCQuadraticShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, this->onEmitVaryings(varyingHandler, scope, code); } -void GrCCQuadraticShader::onEmitFragmentCode(GrGLSLPPFragmentBuilder* f, +void GrCCQuadraticShader::onEmitFragmentCode(GrGLSLFPFragmentBuilder* f, const char* outputCoverage) const { this->emitCoverage(f, outputCoverage); f->codeAppendf("%s *= %s.w;", outputCoverage, fXYDW.fsIn()); // Sign by wind. @@ -84,7 +84,7 @@ void GrCCQuadraticHullShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandle OutName(fGrad), OutName(fXYDW), fCanonicalMatrix.c_str()); } -void GrCCQuadraticHullShader::emitCoverage(GrGLSLPPFragmentBuilder* f, +void GrCCQuadraticHullShader::emitCoverage(GrGLSLFPFragmentBuilder* f, const char* outputCoverage) const { f->codeAppendf("float d = (%s.x * %s.x - %s.y) * inversesqrt(dot(%s, %s));", fXYDW.fsIn(), fXYDW.fsIn(), fXYDW.fsIn(), fGrad.fsIn(), fGrad.fsIn()); @@ -116,7 +116,7 @@ void GrCCQuadraticCornerShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHand fEdgeDistanceEquation.c_str()); } -void GrCCQuadraticCornerShader::emitCoverage(GrGLSLPPFragmentBuilder* f, +void GrCCQuadraticCornerShader::emitCoverage(GrGLSLFPFragmentBuilder* f, const char* outputCoverage) const { f->codeAppendf("float x = %s.x, y = %s.y, d = %s.z;", fXYDW.fsIn(), fXYDW.fsIn(), fXYDW.fsIn()); diff --git a/src/gpu/ccpr/GrCCQuadraticShader.h b/src/gpu/ccpr/GrCCQuadraticShader.h index bba3d36c30..0be03d33dd 100644 --- a/src/gpu/ccpr/GrCCQuadraticShader.h +++ b/src/gpu/ccpr/GrCCQuadraticShader.h @@ -31,8 +31,8 @@ protected: const char* position, const char* inputCoverage, const char* wind) final; virtual void onEmitVaryings(GrGLSLVaryingHandler*, GrGLSLVarying::Scope, SkString* code) {} - void onEmitFragmentCode(GrGLSLPPFragmentBuilder*, const char* outputCoverage) const final; - virtual void emitCoverage(GrGLSLPPFragmentBuilder*, const char* outputCoverage) const = 0; + void onEmitFragmentCode(GrGLSLFPFragmentBuilder*, const char* outputCoverage) const final; + virtual void emitCoverage(GrGLSLFPFragmentBuilder*, const char* outputCoverage) const = 0; const GrShaderVar fCanonicalMatrix{"canonical_matrix", kFloat3x3_GrSLType}; const GrShaderVar fEdgeDistanceEquation{"edge_distance_equation", kFloat3_GrSLType}; @@ -49,7 +49,7 @@ class GrCCQuadraticHullShader : public GrCCQuadraticShader { void onEmitSetupCode(GrGLSLVertexGeoBuilder*, const char* pts, const char* repetitionID, GeometryVars*) const override; void onEmitVaryings(GrGLSLVaryingHandler*, GrGLSLVarying::Scope, SkString* code) override; - void emitCoverage(GrGLSLPPFragmentBuilder*, const char* outputCoverage) const override; + void emitCoverage(GrGLSLFPFragmentBuilder*, const char* outputCoverage) const override; GrGLSLVarying fGrad; }; @@ -61,7 +61,7 @@ class GrCCQuadraticCornerShader : public GrCCQuadraticShader { void onEmitSetupCode(GrGLSLVertexGeoBuilder*, const char* pts, const char* repetitionID, GeometryVars*) const override; void onEmitVaryings(GrGLSLVaryingHandler*, GrGLSLVarying::Scope, SkString* code) override; - void emitCoverage(GrGLSLPPFragmentBuilder*, const char* outputCoverage) const override; + void emitCoverage(GrGLSLFPFragmentBuilder*, const char* outputCoverage) const override; GrGLSLVarying fdXYDdx; GrGLSLVarying fdXYDdy; diff --git a/src/gpu/ccpr/GrCCTriangleShader.cpp b/src/gpu/ccpr/GrCCTriangleShader.cpp index 6ed875822e..f371b03fac 100644 --- a/src/gpu/ccpr/GrCCTriangleShader.cpp +++ b/src/gpu/ccpr/GrCCTriangleShader.cpp @@ -27,7 +27,7 @@ void GrCCTriangleShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, } } -void GrCCTriangleShader::onEmitFragmentCode(GrGLSLPPFragmentBuilder* f, +void GrCCTriangleShader::onEmitFragmentCode(GrGLSLFPFragmentBuilder* f, const char* outputCoverage) const { f->codeAppendf("%s = %s;", outputCoverage, fCoverageTimesWind.fsIn()); } @@ -111,7 +111,7 @@ void GrCCTriangleCornerShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandl code->appendf("%s = %s * .5;", OutName(fWindTimesHalf), wind); } -void GrCCTriangleCornerShader::onEmitFragmentCode(GrGLSLPPFragmentBuilder* f, +void GrCCTriangleCornerShader::onEmitFragmentCode(GrGLSLFPFragmentBuilder* f, const char* outputCoverage) const { // By the time we reach this shader, the pixel is in the following state: // diff --git a/src/gpu/ccpr/GrCCTriangleShader.h b/src/gpu/ccpr/GrCCTriangleShader.h index cc7bd0eb4f..5f33b077cd 100644 --- a/src/gpu/ccpr/GrCCTriangleShader.h +++ b/src/gpu/ccpr/GrCCTriangleShader.h @@ -19,7 +19,7 @@ class GrCCTriangleShader : public GrCCCoverageProcessor::Shader { void onEmitVaryings(GrGLSLVaryingHandler*, GrGLSLVarying::Scope, SkString* code, const char* position, const char* inputCoverage, const char* wind) override; - void onEmitFragmentCode(GrGLSLPPFragmentBuilder*, const char* outputCoverage) const override; + void onEmitFragmentCode(GrGLSLFPFragmentBuilder*, const char* outputCoverage) const override; GrGLSLVarying fCoverageTimesWind; }; @@ -34,7 +34,7 @@ class GrCCTriangleCornerShader : public GrCCCoverageProcessor::Shader { const char* wind, GeometryVars*) const override; void onEmitVaryings(GrGLSLVaryingHandler*, GrGLSLVarying::Scope, SkString* code, const char* position, const char* inputCoverage, const char* wind) override; - void onEmitFragmentCode(GrGLSLPPFragmentBuilder* f, const char* outputCoverage) const override; + void onEmitFragmentCode(GrGLSLFPFragmentBuilder* f, const char* outputCoverage) const override; GrShaderVar fAABoxMatrices{"aa_box_matrices", kFloat2x2_GrSLType, 2}; GrShaderVar fAABoxTranslates{"aa_box_translates", kFloat2_GrSLType, 2}; diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp index 25148cde1b..3fb9012398 100644 --- a/src/gpu/effects/GrBezierEffect.cpp +++ b/src/gpu/effects/GrBezierEffect.cpp @@ -81,7 +81,7 @@ void GrGLConicEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { varyingHandler->addVarying("ConicCoeffs", &v); vertBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inConicCoeffs()->fName); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // Setup pass through color this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform); @@ -333,7 +333,7 @@ void GrGLQuadEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { varyingHandler->addVarying("HairQuadEdge", &v); vertBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inHairQuadEdge()->fName); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // Setup pass through color this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform); @@ -534,7 +534,7 @@ void GrGLCubicEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { // emit attributes varyingHandler->emitAttributes(gp); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // Setup pass through color if (!gp.colorIgnored()) { this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform); diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp index a9ebdca89f..d699eb74a4 100644 --- a/src/gpu/effects/GrBitmapTextGeoProc.cpp +++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp @@ -43,7 +43,7 @@ public: append_index_uv_varyings(args, btgp.inTextureCoords()->fName, atlasSizeInvName, &uv, &texIdx, nullptr); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // Setup pass through color if (btgp.hasVertexColor()) { varyingHandler->addPassThroughAttribute(btgp.inColor(), args.fOutputColor); diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.cpp b/src/gpu/effects/GrDistanceFieldGeoProc.cpp index 8a1a4de2d1..4b743b0ea9 100644 --- a/src/gpu/effects/GrDistanceFieldGeoProc.cpp +++ b/src/gpu/effects/GrDistanceFieldGeoProc.cpp @@ -27,7 +27,7 @@ public: void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override{ const GrDistanceFieldA8TextGeoProc& dfTexEffect = args.fGP.cast<GrDistanceFieldA8TextGeoProc>(); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; GrGLSLVertexBuilder* vertBuilder = args.fVertBuilder; GrGLSLVaryingHandler* varyingHandler = args.fVaryingHandler; @@ -309,7 +309,7 @@ public: const GrDistanceFieldPathGeoProc& dfPathEffect = args.fGP.cast<GrDistanceFieldPathGeoProc>(); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; GrGLSLVertexBuilder* vertBuilder = args.fVertBuilder; GrGLSLVaryingHandler* varyingHandler = args.fVaryingHandler; @@ -592,7 +592,7 @@ public: "AtlasSizeInv", &atlasSizeInvName); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // setup pass through color varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args.fOutputColor); diff --git a/src/gpu/effects/GrShadowGeoProc.cpp b/src/gpu/effects/GrShadowGeoProc.cpp index 507101d87b..7eddaa41d8 100644 --- a/src/gpu/effects/GrShadowGeoProc.cpp +++ b/src/gpu/effects/GrShadowGeoProc.cpp @@ -22,7 +22,7 @@ public: GrGLSLVertexBuilder* vertBuilder = args.fVertBuilder; GrGLSLVaryingHandler* varyingHandler = args.fVaryingHandler; GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // emit attributes varyingHandler->emitAttributes(rsgp); diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp index 0f5126b820..c872acd17d 100644 --- a/src/gpu/gl/GrGLCaps.cpp +++ b/src/gpu/gl/GrGLCaps.cpp @@ -734,22 +734,6 @@ void GrGLCaps::initGLSL(const GrGLContextInfo& ctxInfo, const GrGLInterface* gli } } - if (kGL_GrGLStandard == standard) { - shaderCaps->fSampleVariablesSupport = ctxInfo.glslGeneration() >= k400_GrGLSLGeneration; - } else { - if (ctxInfo.glslGeneration() >= k320es_GrGLSLGeneration) { - shaderCaps->fSampleVariablesSupport = true; - } else if (ctxInfo.hasExtension("GL_OES_sample_variables")) { - shaderCaps->fSampleVariablesSupport = true; - shaderCaps->fSampleVariablesExtensionString = "GL_OES_sample_variables"; - } - } - - if (shaderCaps->fSampleVariablesSupport && - ctxInfo.hasExtension("GL_NV_sample_mask_override_coverage")) { - shaderCaps->fSampleMaskOverrideCoverageSupport = true; - } - shaderCaps->fVersionDeclString = get_glsl_version_decl_string(standard, shaderCaps->fGLSLGeneration, fIsCoreProfile); @@ -2275,12 +2259,6 @@ void GrGLCaps::applyDriverCorrectnessWorkarounds(const GrGLContextInfo& ctxInfo, shaderCaps->fFBFetchSupport = false; } - // Pre-361 NVIDIA has a bug with NV_sample_mask_override_coverage. - if (kNVIDIA_GrGLDriver == ctxInfo.driver() && - ctxInfo.driverVersion() < GR_GL_DRIVER_VER(361,00)) { - shaderCaps->fSampleMaskOverrideCoverageSupport = false; - } - // Adreno GPUs have a tendency to drop tiles when there is a divide-by-zero in a shader shaderCaps->fDropsTileOnZeroDivide = kQualcomm_GrGLVendor == ctxInfo.vendor(); diff --git a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp index 6de545b0c4..92a0034b73 100644 --- a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp +++ b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp @@ -85,7 +85,6 @@ GrGLSLFragmentShaderBuilder::GrGLSLFragmentShaderBuilder(GrGLSLProgramBuilder* p , fCustomColorOutputIndex(-1) , fHasSecondaryOutput(false) , fUsedSampleOffsetArrays(0) - , fHasInitializedSampleMask(false) , fForceHighPrecision(false) { fSubstageIndices.push_back(0); #ifdef SK_DEBUG @@ -135,46 +134,6 @@ void GrGLSLFragmentShaderBuilder::appendOffsetToSample(const char* sampleIdx, Co fUsedSampleOffsetArrays |= (1 << coords); } -void GrGLSLFragmentShaderBuilder::maskSampleCoverage(const char* mask, bool invert) { - const GrShaderCaps& shaderCaps = *fProgramBuilder->shaderCaps(); - if (!shaderCaps.sampleVariablesSupport()) { - SkDEBUGFAIL("Attempted to mask sample coverage without support."); - return; - } - if (const char* extension = shaderCaps.sampleVariablesExtensionString()) { - this->addFeature(1 << kSampleVariables_GLSLPrivateFeature, extension); - } - if (!fHasInitializedSampleMask) { - this->codePrependf("gl_SampleMask[0] = -1;"); - fHasInitializedSampleMask = true; - } - if (invert) { - this->codeAppendf("gl_SampleMask[0] &= ~(%s);", mask); - } else { - this->codeAppendf("gl_SampleMask[0] &= %s;", mask); - } -} - -void GrGLSLFragmentShaderBuilder::overrideSampleCoverage(const char* mask) { - const GrShaderCaps& shaderCaps = *fProgramBuilder->shaderCaps(); - if (!shaderCaps.sampleMaskOverrideCoverageSupport()) { - SkDEBUGFAIL("Attempted to override sample coverage without support."); - return; - } - SkASSERT(shaderCaps.sampleVariablesSupport()); - if (const char* extension = shaderCaps.sampleVariablesExtensionString()) { - this->addFeature(1 << kSampleVariables_GLSLPrivateFeature, extension); - } - if (this->addFeature(1 << kSampleMaskOverrideCoverage_GLSLPrivateFeature, - "GL_NV_sample_mask_override_coverage")) { - // Redeclare gl_SampleMask with layout(override_coverage) if we haven't already. - fOutputs.push_back().set(kInt_GrSLType, "gl_SampleMask", 1, GrShaderVar::kOut_TypeModifier, - kHigh_GrSLPrecision, "override_coverage"); - } - this->codeAppendf("gl_SampleMask[0] = %s;", mask); - fHasInitializedSampleMask = true; -} - const char* GrGLSLFragmentShaderBuilder::dstColor() { SkDEBUGCODE(fHasReadDstColor = true;) diff --git a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.h b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.h index f124a449e6..a9e665be1a 100644 --- a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.h +++ b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.h @@ -79,17 +79,6 @@ public: virtual void appendOffsetToSample(const char* sampleIdx, Coordinates) = 0; /** - * Subtracts sample coverage from the fragment. Any sample whose corresponding bit is not found - * in the mask will not be written out to the framebuffer. - * - * @param mask int that contains the sample mask. Bit N corresponds to the Nth sample. - * @param invert perform a bit-wise NOT on the provided mask before applying it? - * - * Requires GLSL support for sample variables. - */ - virtual void maskSampleCoverage(const char* mask, bool invert = false) = 0; - - /** * Fragment procs with child procs should call these functions before/after calling emitCode * on a child proc. */ @@ -102,29 +91,6 @@ public: }; /* - * This class is used by primitive processors to build their fragment code. - */ -class GrGLSLPPFragmentBuilder : public GrGLSLFPFragmentBuilder { -public: - /** Appease the compiler; the derived class initializes GrGLSLFragmentBuilder. */ - GrGLSLPPFragmentBuilder() : GrGLSLFragmentBuilder(nullptr) {} - - /** - * Overrides the fragment's sample coverage. The provided mask determines which samples will now - * be written out to the framebuffer. Note that this mask can be reduced by a future call to - * maskSampleCoverage. - * - * If a primitive processor uses this method, it must guarantee that every codepath through the - * shader overrides the sample mask at some point. - * - * @param mask int that contains the new coverage mask. Bit N corresponds to the Nth sample. - * - * Requires NV_sample_mask_override_coverage. - */ - virtual void overrideSampleCoverage(const char* mask) = 0; -}; - -/* * This class is used by Xfer processors to build their fragment code. */ class GrGLSLXPFragmentBuilder : virtual public GrGLSLFragmentBuilder { @@ -148,7 +114,7 @@ public: /* * This class implements the various fragment builder interfaces. */ -class GrGLSLFragmentShaderBuilder : public GrGLSLPPFragmentBuilder, public GrGLSLXPFragmentBuilder { +class GrGLSLFragmentShaderBuilder : public GrGLSLFPFragmentBuilder, public GrGLSLXPFragmentBuilder { public: /** Returns a nonzero key for a surface's origin. This should only be called if a processor will use the fragment position and/or sample locations. */ @@ -162,8 +128,6 @@ public: // GrGLSLFPFragmentBuilder interface. void appendOffsetToSample(const char* sampleIdx, Coordinates) override; - void maskSampleCoverage(const char* mask, bool invert = false) override; - void overrideSampleCoverage(const char* mask) override; const SkString& getMangleString() const override { return fMangleString; } void onBeforeChildProcEmitCode() override; void onAfterChildProcEmitCode() override; @@ -223,13 +187,12 @@ private: */ SkString fMangleString; - bool fSetupFragPosition; - bool fHasCustomColorOutput; - int fCustomColorOutputIndex; - bool fHasSecondaryOutput; - uint8_t fUsedSampleOffsetArrays; - bool fHasInitializedSampleMask; - bool fForceHighPrecision; + bool fSetupFragPosition; + bool fHasCustomColorOutput; + int fCustomColorOutputIndex; + bool fHasSecondaryOutput; + uint8_t fUsedSampleOffsetArrays; + bool fForceHighPrecision; #ifdef SK_DEBUG // some state to verify shaders and effects are consistent, this is reset between effects by diff --git a/src/gpu/glsl/GrGLSLPrimitiveProcessor.cpp b/src/gpu/glsl/GrGLSLPrimitiveProcessor.cpp index 02fa2e7532..fb6e7f28d1 100644 --- a/src/gpu/glsl/GrGLSLPrimitiveProcessor.cpp +++ b/src/gpu/glsl/GrGLSLPrimitiveProcessor.cpp @@ -36,7 +36,7 @@ SkMatrix GrGLSLPrimitiveProcessor::GetTransformMatrix(const SkMatrix& localMatri return combined; } -void GrGLSLPrimitiveProcessor::setupUniformColor(GrGLSLPPFragmentBuilder* fragBuilder, +void GrGLSLPrimitiveProcessor::setupUniformColor(GrGLSLFPFragmentBuilder* fragBuilder, GrGLSLUniformHandler* uniformHandler, const char* outputName, UniformHandle* colorUniform) { diff --git a/src/gpu/glsl/GrGLSLPrimitiveProcessor.h b/src/gpu/glsl/GrGLSLPrimitiveProcessor.h index 30ca14387d..613ae0748b 100644 --- a/src/gpu/glsl/GrGLSLPrimitiveProcessor.h +++ b/src/gpu/glsl/GrGLSLPrimitiveProcessor.h @@ -14,7 +14,7 @@ #include "glsl/GrGLSLUniformHandler.h" class GrPrimitiveProcessor; -class GrGLSLPPFragmentBuilder; +class GrGLSLFPFragmentBuilder; class GrGLSLGeometryBuilder; class GrGLSLGPBuilder; class GrGLSLVaryingHandler; @@ -67,7 +67,7 @@ public: struct EmitArgs { EmitArgs(GrGLSLVertexBuilder* vertBuilder, GrGLSLGeometryBuilder* geomBuilder, - GrGLSLPPFragmentBuilder* fragBuilder, + GrGLSLFPFragmentBuilder* fragBuilder, GrGLSLVaryingHandler* varyingHandler, GrGLSLUniformHandler* uniformHandler, const GrShaderCaps* caps, @@ -93,7 +93,7 @@ public: , fFPCoordTransformHandler(transformHandler) {} GrGLSLVertexBuilder* fVertBuilder; GrGLSLGeometryBuilder* fGeomBuilder; - GrGLSLPPFragmentBuilder* fFragBuilder; + GrGLSLFPFragmentBuilder* fFragBuilder; GrGLSLVaryingHandler* fVaryingHandler; GrGLSLUniformHandler* fUniformHandler; const GrShaderCaps* fShaderCaps; @@ -129,7 +129,7 @@ public: static SkMatrix GetTransformMatrix(const SkMatrix& localMatrix, const GrCoordTransform&); protected: - void setupUniformColor(GrGLSLPPFragmentBuilder* fragBuilder, + void setupUniformColor(GrGLSLFPFragmentBuilder* fragBuilder, GrGLSLUniformHandler* uniformHandler, const char* outputName, UniformHandle* colorUniform); diff --git a/src/gpu/glsl/GrGLSLShaderBuilder.h b/src/gpu/glsl/GrGLSLShaderBuilder.h index 070862547d..8459218059 100644 --- a/src/gpu/glsl/GrGLSLShaderBuilder.h +++ b/src/gpu/glsl/GrGLSLShaderBuilder.h @@ -173,9 +173,7 @@ protected: kTexelBuffer_GLSLPrivateFeature, kFramebufferFetch_GLSLPrivateFeature, kNoPerspectiveInterpolation_GLSLPrivateFeature, - kSampleVariables_GLSLPrivateFeature, - kSampleMaskOverrideCoverage_GLSLPrivateFeature, - kLastGLSLPrivateFeature = kSampleMaskOverrideCoverage_GLSLPrivateFeature + kLastGLSLPrivateFeature = kNoPerspectiveInterpolation_GLSLPrivateFeature }; /* diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp index badaadd329..c238d102e4 100644 --- a/src/gpu/ops/GrAAConvexPathRenderer.cpp +++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp @@ -573,7 +573,7 @@ public: // Setup pass through color varyingHandler->addPassThroughAttribute(qe.fInColor, args.fOutputColor); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // Setup position this->writeOutputPosition(vertBuilder, gpArgs, qe.fInPosition->fName); diff --git a/src/gpu/ops/GrDashOp.cpp b/src/gpu/ops/GrDashOp.cpp index 9728aa98b5..fb559bb180 100644 --- a/src/gpu/ops/GrDashOp.cpp +++ b/src/gpu/ops/GrDashOp.cpp @@ -919,7 +919,7 @@ void GLDashingCircleEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { varyingHandler->addVarying("CircleParams", &circleParams); vertBuilder->codeAppendf("%s = %s;", circleParams.vsOut(), dce.inCircleParams()->fName); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // Setup pass through color this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform); @@ -1122,7 +1122,7 @@ void GLDashingLineEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { varyingHandler->addVarying("RectParams", &inRectParams); vertBuilder->codeAppendf("%s = %s;", inRectParams.vsOut(), de.inRectParams()->fName); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // Setup pass through color this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform); diff --git a/src/gpu/ops/GrMSAAPathRenderer.cpp b/src/gpu/ops/GrMSAAPathRenderer.cpp index 842d710269..71caa9825f 100644 --- a/src/gpu/ops/GrMSAAPathRenderer.cpp +++ b/src/gpu/ops/GrMSAAPathRenderer.cpp @@ -153,7 +153,7 @@ public: qp.inPosition()->asShaderVar(), SkMatrix::I(), args.fFPCoordTransformHandler); - GrGLSLPPFragmentBuilder* fsBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fsBuilder = args.fFragBuilder; fsBuilder->codeAppendf("if (%s.x * %s.x >= %s.y) discard;", uv.fsIn(), uv.fsIn(), uv.fsIn()); fsBuilder->codeAppendf("%s = half4(1.0);", args.fOutputCoverage); diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp index 9194f673e6..ecaa30d459 100644 --- a/src/gpu/ops/GrOvalOpFactory.cpp +++ b/src/gpu/ops/GrOvalOpFactory.cpp @@ -113,7 +113,7 @@ private: GrGLSLVertexBuilder* vertBuilder = args.fVertBuilder; GrGLSLVaryingHandler* varyingHandler = args.fVaryingHandler; GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // emit attributes varyingHandler->emitAttributes(cgp); @@ -281,7 +281,7 @@ private: varyingHandler->addVarying("EllipseRadii", &ellipseRadii); vertBuilder->codeAppendf("%s = %s;", ellipseRadii.vsOut(), egp.fInEllipseRadii->fName); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // setup pass through color varyingHandler->addPassThroughAttribute(egp.fInColor, args.fOutputColor); @@ -420,7 +420,7 @@ private: varyingHandler->addVarying("EllipseOffsets1", &offsets1); vertBuilder->codeAppendf("%s = %s;", offsets1.vsOut(), diegp.fInEllipseOffsets1->fName); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; varyingHandler->addPassThroughAttribute(diegp.fInColor, args.fOutputColor); // Setup position diff --git a/src/sksl/SkSLIRGenerator.cpp b/src/sksl/SkSLIRGenerator.cpp index 984c2e2449..78570ff024 100644 --- a/src/sksl/SkSLIRGenerator.cpp +++ b/src/sksl/SkSLIRGenerator.cpp @@ -130,8 +130,6 @@ static void fill_caps(const SKSL_CAPS_CLASS& caps, CAP(flatInterpolationSupport); CAP(noperspectiveInterpolationSupport); CAP(multisampleInterpolationSupport); - CAP(sampleVariablesSupport); - CAP(sampleMaskOverrideCoverageSupport); CAP(externalTextureSupport); CAP(texelFetchSupport); CAP(imageLoadStoreSupport); diff --git a/src/sksl/SkSLUtil.h b/src/sksl/SkSLUtil.h index 7c675eac16..c16156a413 100644 --- a/src/sksl/SkSLUtil.h +++ b/src/sksl/SkSLUtil.h @@ -99,14 +99,6 @@ public: return true; } - bool sampleVariablesSupport() const { - return true; - } - - bool sampleMaskOverrideCoverageSupport() const { - return true; - } - bool externalTextureSupport() const { return true; } diff --git a/tests/GrMeshTest.cpp b/tests/GrMeshTest.cpp index ccc9a73e8f..acac61b95f 100644 --- a/tests/GrMeshTest.cpp +++ b/tests/GrMeshTest.cpp @@ -341,7 +341,7 @@ class GLSLMeshTestProcessor : public GrGLSLGeometryProcessor { } gpArgs->fPositionVar.set(kFloat2_GrSLType, "vertex"); - GrGLSLPPFragmentBuilder* f = args.fFragBuilder; + GrGLSLFPFragmentBuilder* f = args.fFragBuilder; f->codeAppendf("%s = half4(1);", args.fOutputCoverage); } }; diff --git a/tests/GrPipelineDynamicStateTest.cpp b/tests/GrPipelineDynamicStateTest.cpp index cd1ce1e053..f715684ef9 100644 --- a/tests/GrPipelineDynamicStateTest.cpp +++ b/tests/GrPipelineDynamicStateTest.cpp @@ -93,7 +93,7 @@ class GLSLPipelineDynamicStateTestProcessor : public GrGLSLGeometryProcessor { v->codeAppendf("float2 vertex = %s;", mp.fVertex.fName); gpArgs->fPositionVar.set(kFloat2_GrSLType, "vertex"); - GrGLSLPPFragmentBuilder* f = args.fFragBuilder; + GrGLSLFPFragmentBuilder* f = args.fFragBuilder; f->codeAppendf("%s = half4(1);", args.fOutputCoverage); } }; diff --git a/tests/PrimitiveProcessorTest.cpp b/tests/PrimitiveProcessorTest.cpp index 406d5e2104..d402e65f1c 100644 --- a/tests/PrimitiveProcessorTest.cpp +++ b/tests/PrimitiveProcessorTest.cpp @@ -73,7 +73,7 @@ private: const GP& gp = args.fGP.cast<GP>(); args.fVaryingHandler->emitAttributes(gp); this->writeOutputPosition(args.fVertBuilder, gpArgs, gp.getAttrib(0).fName); - GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; + GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; fragBuilder->codeAppendf("%s = half4(1);", args.fOutputColor); fragBuilder->codeAppendf("%s = half4(1);", args.fOutputCoverage); } |