aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrAAConvexPathRenderer.cpp
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2015-01-18 08:14:14 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-01-18 08:14:14 -0800
commit46d36f0e7b709a077c647841eee23bd3efdc4117 (patch)
treef1af8cebc0e3fbaa0eabc29cfbd781eedffee287 /src/gpu/GrAAConvexPathRenderer.cpp
parent75d98fd6f23fc73aad3ce87d6c4b6c41c2d1536e (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.cpp14
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,