diff options
author | 2015-01-18 08:14:14 -0800 | |
---|---|---|
committer | 2015-01-18 08:14:14 -0800 | |
commit | 46d36f0e7b709a077c647841eee23bd3efdc4117 (patch) | |
tree | f1af8cebc0e3fbaa0eabc29cfbd781eedffee287 /src/gpu/GrAAConvexPathRenderer.cpp | |
parent | 75d98fd6f23fc73aad3ce87d6c4b6c41c2d1536e (diff) |
Refactor position computation to enable device space "nudge"
To match raster's handling of BW geometry we want to be able to perform a device space "nudge" on all geometry. This CL sets us up to be able to do that in GrGLVertexBuilder::transformToNormalizedDeviceSpace.
BUG=423834
TBR=bsalomon@google.com
Review URL: https://codereview.chromium.org/854013002
Diffstat (limited to 'src/gpu/GrAAConvexPathRenderer.cpp')
-rw-r--r-- | src/gpu/GrAAConvexPathRenderer.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/gpu/GrAAConvexPathRenderer.cpp b/src/gpu/GrAAConvexPathRenderer.cpp index c589f8cb1d..27cc8aa3be 100644 --- a/src/gpu/GrAAConvexPathRenderer.cpp +++ b/src/gpu/GrAAConvexPathRenderer.cpp @@ -535,7 +535,7 @@ public: const GrBatchTracker&) : fColor(GrColor_ILLEGAL) {} - void onEmitCode(EmitArgs& args) SK_OVERRIDE { + void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) SK_OVERRIDE { const QuadEdgeEffect& qe = args.fGP.cast<QuadEdgeEffect>(); GrGLGPBuilder* pb = args.fPB; GrGLVertexBuilder* vsBuilder = pb->getVertexShaderBuilder(); @@ -557,11 +557,11 @@ public: this->addUniformViewMatrix(pb); // Setup position - vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", this->position(), this->uViewM(), - qe.inPosition()->fName); + SetupPosition(vsBuilder, gpArgs, qe.inPosition()->fName, + qe.viewMatrix(), this->uViewM()); // emit transforms - this->emitTransforms(args.fPB, this->position(), qe.inPosition()->fName, + this->emitTransforms(args.fPB, gpArgs->fPositionVar, qe.inPosition()->fName, qe.localMatrix(), args.fTransformsIn, args.fTransformsOut); GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); @@ -594,8 +594,10 @@ public: const GrGLCaps&, GrProcessorKeyBuilder* b) { const BatchTracker& local = bt.cast<BatchTracker>(); - b->add32((local.fInputColorType << 16) | - (local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 : 0x0)); + uint32_t key = local.fInputColorType << 16; + key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 : 0x0; + key |= ComputePosKey(gp.viewMatrix()) << 1; + b->add32(key); } virtual void setData(const GrGLProgramDataManager& pdman, |