From 92be2f74db81f0ed480b55c58cbde39270f9b772 Mon Sep 17 00:00:00 2001 From: Brian Salomon Date: Tue, 19 Jun 2018 14:33:47 -0400 Subject: Revert "Revert "Change how vertex/instance attributes are handled in geometry processors."" This reverts commit 5045e501d2aec23e5f1e4b46346033ac3202c6b0. TBR=csmartdalton@google.com Change-Id: Ifbf5f1d8f8ef340fdc69653e931b6d68d4bf0854 Reviewed-on: https://skia-review.googlesource.com/135862 Reviewed-by: Brian Salomon Commit-Queue: Brian Salomon --- src/gpu/ops/GrAAConvexPathRenderer.cpp | 42 ++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 20 deletions(-) (limited to 'src/gpu/ops/GrAAConvexPathRenderer.cpp') diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp index 3237afeaed..566eebd827 100644 --- a/src/gpu/ops/GrAAConvexPathRenderer.cpp +++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp @@ -576,21 +576,21 @@ public: GrGLSLVarying v(kHalf4_GrSLType); varyingHandler->addVarying("QuadEdge", &v); - vertBuilder->codeAppendf("%s = %s;", v.vsOut(), qe.fInQuadEdge->name()); + vertBuilder->codeAppendf("%s = %s;", v.vsOut(), qe.kInQuadEdge.name()); // Setup pass through color - varyingHandler->addPassThroughAttribute(qe.fInColor, args.fOutputColor); + varyingHandler->addPassThroughAttribute(qe.kInColor, args.fOutputColor); GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; // Setup position - this->writeOutputPosition(vertBuilder, gpArgs, qe.fInPosition->name()); + this->writeOutputPosition(vertBuilder, gpArgs, qe.kInPosition.name()); // emit transforms this->emitTransforms(vertBuilder, varyingHandler, uniformHandler, - qe.fInPosition->asShaderVar(), + qe.kInPosition.asShaderVar(), qe.fLocalMatrix, args.fFPCoordTransformHandler); @@ -646,21 +646,25 @@ private: : INHERITED(kQuadEdgeEffect_ClassID) , fLocalMatrix(localMatrix) , fUsesLocalCoords(usesLocalCoords) { - fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType); - fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType); - fInQuadEdge = &this->addVertexAttrib("inQuadEdge", kHalf4_GrVertexAttribType); + this->setVertexAttributeCnt(3); } - const Attribute* fInPosition; - const Attribute* fInQuadEdge; - const Attribute* fInColor; - SkMatrix fLocalMatrix; - bool fUsesLocalCoords; + const Attribute& onVertexAttribute(int i) const override { + return IthAttribute(i, kInPosition, kInColor, kInQuadEdge); + } + static constexpr Attribute kInPosition = {"inPosition", kFloat2_GrVertexAttribType}; + static constexpr Attribute kInColor = {"inColor", kUByte4_norm_GrVertexAttribType}; + static constexpr Attribute kInQuadEdge = {"inQuadEdge", kHalf4_GrVertexAttribType}; + SkMatrix fLocalMatrix; + bool fUsesLocalCoords; GR_DECLARE_GEOMETRY_PROCESSOR_TEST typedef GrGeometryProcessor INHERITED; }; +constexpr GrPrimitiveProcessor::Attribute QuadEdgeEffect::kInPosition; +constexpr GrPrimitiveProcessor::Attribute QuadEdgeEffect::kInColor; +constexpr GrPrimitiveProcessor::Attribute QuadEdgeEffect::kInQuadEdge; GR_DEFINE_GEOMETRY_PROCESSOR_TEST(QuadEdgeEffect); @@ -795,12 +799,10 @@ private: return; } - size_t vertexStride = gp->getVertexStride(); - - SkASSERT(fHelper.compatibleWithAlphaAsCoverage() - ? vertexStride == sizeof(GrDefaultGeoProcFactory::PositionColorAttr) - : vertexStride == - sizeof(GrDefaultGeoProcFactory::PositionColorCoverageAttr)); + size_t vertexStride = fHelper.compatibleWithAlphaAsCoverage() + ? sizeof(GrDefaultGeoProcFactory::PositionColorAttr) + : sizeof(GrDefaultGeoProcFactory::PositionColorCoverageAttr); + SkASSERT(vertexStride == gp->debugOnly_vertexStride()); GrAAConvexTessellator tess; @@ -901,9 +903,9 @@ private: const GrBuffer* vertexBuffer; int firstVertex; - size_t vertexStride = quadProcessor->getVertexStride(); + SkASSERT(sizeof(QuadVertex) == quadProcessor->debugOnly_vertexStride()); QuadVertex* verts = reinterpret_cast(target->makeVertexSpace( - vertexStride, vertexCount, &vertexBuffer, &firstVertex)); + sizeof(QuadVertex), vertexCount, &vertexBuffer, &firstVertex)); if (!verts) { SkDebugf("Could not allocate vertices\n"); -- cgit v1.2.3