Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: src/gpu/effects/GrBitmapTextGeoProc.cpp

Issue 822423004: Move most of the transform logic into the primitive processors (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: cleanup Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/effects/GrBitmapTextGeoProc.h ('k') | src/gpu/effects/GrDashingEffect.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrBitmapTextGeoProc.h" 8 #include "GrBitmapTextGeoProc.h"
9 #include "GrInvariantOutput.h" 9 #include "GrInvariantOutput.h"
10 #include "GrTexture.h" 10 #include "GrTexture.h"
11 #include "gl/GrGLProcessor.h" 11 #include "gl/GrGLProcessor.h"
12 #include "gl/GrGLSL.h" 12 #include "gl/GrGLSL.h"
13 #include "gl/GrGLTexture.h" 13 #include "gl/GrGLTexture.h"
14 #include "gl/GrGLGeometryProcessor.h" 14 #include "gl/GrGLGeometryProcessor.h"
15 #include "gl/builders/GrGLProgramBuilder.h" 15 #include "gl/builders/GrGLProgramBuilder.h"
16 16
17 struct BitmapTextBatchTracker { 17 struct BitmapTextBatchTracker {
18 GrGPInput fInputColorType; 18 GrGPInput fInputColorType;
19 GrColor fColor; 19 GrColor fColor;
20 bool fUsesLocalCoords; 20 bool fUsesLocalCoords;
21 }; 21 };
22 22
23 class GrGLBitmapTextGeoProc : public GrGLGeometryProcessor { 23 class GrGLBitmapTextGeoProc : public GrGLGeometryProcessor {
24 public: 24 public:
25 GrGLBitmapTextGeoProc(const GrGeometryProcessor&, const GrBatchTracker&) 25 GrGLBitmapTextGeoProc(const GrGeometryProcessor&, const GrBatchTracker&)
26 : fColor(GrColor_ILLEGAL) {} 26 : fColor(GrColor_ILLEGAL) {}
27 27
28 void emitCode(const EmitArgs& args) SK_OVERRIDE { 28 void onEmitCode(EmitArgs& args) SK_OVERRIDE {
29 const GrBitmapTextGeoProc& cte = args.fGP.cast<GrBitmapTextGeoProc>(); 29 const GrBitmapTextGeoProc& cte = args.fGP.cast<GrBitmapTextGeoProc>();
30 const BitmapTextBatchTracker& local = args.fBT.cast<BitmapTextBatchTrack er>(); 30 const BitmapTextBatchTracker& local = args.fBT.cast<BitmapTextBatchTrack er>();
31 31
32 GrGLGPBuilder* pb = args.fPB; 32 GrGLGPBuilder* pb = args.fPB;
33 GrGLVertexBuilder* vsBuilder = pb->getVertexShaderBuilder(); 33 GrGLVertexBuilder* vsBuilder = pb->getVertexShaderBuilder();
34 34
35 // emit attributes
36 vsBuilder->emitAttributes(cte);
37
35 GrGLVertToFrag v(kVec2f_GrSLType); 38 GrGLVertToFrag v(kVec2f_GrSLType);
36 pb->addVarying("TextureCoords", &v); 39 pb->addVarying("TextureCoords", &v);
37 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), cte.inTextureCoords()->fNa me); 40 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), cte.inTextureCoords()->fNa me);
38 41
39 // Setup pass through color 42 // Setup pass through color
40 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor , cte.inColor(), 43 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor , cte.inColor(),
41 &fColorUniform); 44 &fColorUniform);
42 45
43 // setup output coords
44 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), cte.inPo sition()->fName);
45 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), cte.inPosit ion()->fName);
46
47 // setup uniform viewMatrix 46 // setup uniform viewMatrix
48 this->addUniformViewMatrix(pb); 47 this->addUniformViewMatrix(pb);
49 48
50 // setup position varying 49 // Setup position
51 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition() , this->uViewM(), 50 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", this->position(), this ->uViewM(),
52 cte.inPosition()->fName); 51 cte.inPosition()->fName);
53 52
53 // emit transforms
54 this->emitTransforms(args.fPB, this->position(), cte.inPosition()->fNam e,
55 cte.localMatrix(), args.fTransformsIn, args.fTransf ormsOut);
56
54 GrGLGPFragmentBuilder* fsBuilder = pb->getFragmentShaderBuilder(); 57 GrGLGPFragmentBuilder* fsBuilder = pb->getFragmentShaderBuilder();
55 fsBuilder->codeAppendf("%s = ", args.fOutputCoverage); 58 fsBuilder->codeAppendf("%s = ", args.fOutputCoverage);
56 fsBuilder->appendTextureLookup(args.fSamplers[0], v.fsIn(), kVec2f_GrSLT ype); 59 fsBuilder->appendTextureLookup(args.fSamplers[0], v.fsIn(), kVec2f_GrSLT ype);
57 fsBuilder->codeAppend(";"); 60 fsBuilder->codeAppend(";");
58 } 61 }
59 62
60 virtual void setData(const GrGLProgramDataManager& pdman, 63 virtual void setData(const GrGLProgramDataManager& pdman,
61 const GrPrimitiveProcessor& gp, 64 const GrPrimitiveProcessor& gp,
62 const GrBatchTracker& bt) SK_OVERRIDE { 65 const GrBatchTracker& bt) SK_OVERRIDE {
63 this->setUniformViewMatrix(pdman, gp.viewMatrix()); 66 this->setUniformViewMatrix(pdman, gp.viewMatrix());
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 out->setUsingLCDCoverage(); 131 out->setUsingLCDCoverage();
129 } 132 }
130 } 133 }
131 134
132 void GrBitmapTextGeoProc::getGLProcessorKey(const GrBatchTracker& bt, 135 void GrBitmapTextGeoProc::getGLProcessorKey(const GrBatchTracker& bt,
133 const GrGLCaps& caps, 136 const GrGLCaps& caps,
134 GrProcessorKeyBuilder* b) const { 137 GrProcessorKeyBuilder* b) const {
135 GrGLBitmapTextGeoProc::GenKey(*this, bt, caps, b); 138 GrGLBitmapTextGeoProc::GenKey(*this, bt, caps, b);
136 } 139 }
137 140
138 GrGLGeometryProcessor* 141 GrGLPrimitiveProcessor*
139 GrBitmapTextGeoProc::createGLInstance(const GrBatchTracker& bt) const { 142 GrBitmapTextGeoProc::createGLInstance(const GrBatchTracker& bt,
143 const GrGLCaps& caps) const {
140 return SkNEW_ARGS(GrGLBitmapTextGeoProc, (*this, bt)); 144 return SkNEW_ARGS(GrGLBitmapTextGeoProc, (*this, bt));
141 } 145 }
142 146
143 void GrBitmapTextGeoProc::initBatchTracker(GrBatchTracker* bt, const InitBT& ini t) const { 147 void GrBitmapTextGeoProc::initBatchTracker(GrBatchTracker* bt, const InitBT& ini t) const {
144 BitmapTextBatchTracker* local = bt->cast<BitmapTextBatchTracker>(); 148 BitmapTextBatchTracker* local = bt->cast<BitmapTextBatchTracker>();
145 local->fInputColorType = GetColorInputType(&local->fColor, this->color(), in it, 149 local->fInputColorType = GetColorInputType(&local->fColor, this->color(), in it,
146 SkToBool(fInColor)); 150 SkToBool(fInColor));
147 local->fUsesLocalCoords = init.fUsesLocalCoords; 151 local->fUsesLocalCoords = init.fUsesLocalCoords;
148 } 152 }
149 153
(...skipping 27 matching lines...) Expand all
177 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))], 181 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))],
178 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))], 182 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))],
179 }; 183 };
180 GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBil erp_FilterMode : 184 GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBil erp_FilterMode :
181 GrTextureParams::kNon e_FilterMode); 185 GrTextureParams::kNon e_FilterMode);
182 186
183 return GrBitmapTextGeoProc::Create(GrRandomColor(random), textures[texIdx], params, 187 return GrBitmapTextGeoProc::Create(GrRandomColor(random), textures[texIdx], params,
184 random->nextBool(), random->nextBool(), 188 random->nextBool(), random->nextBool(),
185 GrProcessorUnitTest::TestMatrix(random)); 189 GrProcessorUnitTest::TestMatrix(random));
186 } 190 }
OLDNEW
« no previous file with comments | « src/gpu/effects/GrBitmapTextGeoProc.h ('k') | src/gpu/effects/GrDashingEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698