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

Side by Side Diff: src/gpu/batches/GrAAStrokeRectBatch.cpp

Issue 1825393002: Consolidate GPU buffer implementations (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: asserts Created 4 years, 9 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
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 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 "GrAAStrokeRectBatch.h" 8 #include "GrAAStrokeRectBatch.h"
9 9
10 #include "GrBatchFlushState.h" 10 #include "GrBatchFlushState.h"
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 } 116 }
117 117
118 static const int kMiterIndexCnt = 3 * 24; 118 static const int kMiterIndexCnt = 3 * 24;
119 static const int kMiterVertexCnt = 16; 119 static const int kMiterVertexCnt = 16;
120 static const int kNumMiterRectsInIndexBuffer = 256; 120 static const int kNumMiterRectsInIndexBuffer = 256;
121 121
122 static const int kBevelIndexCnt = 48 + 36 + 24; 122 static const int kBevelIndexCnt = 48 + 36 + 24;
123 static const int kBevelVertexCnt = 24; 123 static const int kBevelVertexCnt = 24;
124 static const int kNumBevelRectsInIndexBuffer = 256; 124 static const int kNumBevelRectsInIndexBuffer = 256;
125 125
126 static const GrIndexBuffer* GetIndexBuffer(GrResourceProvider* resourceProvi der, 126 static const GrBuffer* GetIndexBuffer(GrResourceProvider* resourceProvider, bool miterStroke);
127 bool miterStroke);
128 127
129 GrColor color() const { return fBatch.fColor; } 128 GrColor color() const { return fBatch.fColor; }
130 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 129 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
131 bool canTweakAlphaForCoverage() const { return fBatch.fCanTweakAlphaForCover age; } 130 bool canTweakAlphaForCoverage() const { return fBatch.fCanTweakAlphaForCover age; }
132 bool colorIgnored() const { return fBatch.fColorIgnored; } 131 bool colorIgnored() const { return fBatch.fColorIgnored; }
133 bool coverageIgnored() const { return fBatch.fCoverageIgnored; } 132 bool coverageIgnored() const { return fBatch.fCoverageIgnored; }
134 const Geometry& geometry() const { return fGeoData[0]; } 133 const Geometry& geometry() const { return fGeoData[0]; }
135 const SkMatrix& viewMatrix() const { return fViewMatrix; } 134 const SkMatrix& viewMatrix() const { return fViewMatrix; }
136 bool miterStroke() const { return fMiterStroke; } 135 bool miterStroke() const { return fMiterStroke; }
137 136
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 198
200 SkASSERT(canTweakAlphaForCoverage ? 199 SkASSERT(canTweakAlphaForCoverage ?
201 vertexStride == sizeof(GrDefaultGeoProcFactory::PositionColorAttr) : 200 vertexStride == sizeof(GrDefaultGeoProcFactory::PositionColorAttr) :
202 vertexStride == sizeof(GrDefaultGeoProcFactory::PositionColorCovera geAttr)); 201 vertexStride == sizeof(GrDefaultGeoProcFactory::PositionColorCovera geAttr));
203 int innerVertexNum = 4; 202 int innerVertexNum = 4;
204 int outerVertexNum = this->miterStroke() ? 4 : 8; 203 int outerVertexNum = this->miterStroke() ? 4 : 8;
205 int verticesPerInstance = (outerVertexNum + innerVertexNum) * 2; 204 int verticesPerInstance = (outerVertexNum + innerVertexNum) * 2;
206 int indicesPerInstance = this->miterStroke() ? kMiterIndexCnt : kBevelIndexC nt; 205 int indicesPerInstance = this->miterStroke() ? kMiterIndexCnt : kBevelIndexC nt;
207 int instanceCount = fGeoData.count(); 206 int instanceCount = fGeoData.count();
208 207
209 const SkAutoTUnref<const GrIndexBuffer> indexBuffer( 208 const SkAutoTUnref<const GrBuffer> indexBuffer(
210 GetIndexBuffer(target->resourceProvider(), this->miterStroke())); 209 GetIndexBuffer(target->resourceProvider(), this->miterStroke()));
211 InstancedHelper helper; 210 InstancedHelper helper;
212 void* vertices = helper.init(target, kTriangles_GrPrimitiveType, vertexStrid e, 211 void* vertices = helper.init(target, kTriangles_GrPrimitiveType, vertexStrid e,
213 indexBuffer, verticesPerInstance, indicesPerIns tance, 212 indexBuffer, verticesPerInstance, indicesPerIns tance,
214 instanceCount); 213 instanceCount);
215 if (!vertices || !indexBuffer) { 214 if (!vertices || !indexBuffer) {
216 SkDebugf("Could not allocate vertices\n"); 215 SkDebugf("Could not allocate vertices\n");
217 return; 216 return;
218 } 217 }
219 218
220 for (int i = 0; i < instanceCount; i++) { 219 for (int i = 0; i < instanceCount; i++) {
221 const Geometry& args = fGeoData[i]; 220 const Geometry& args = fGeoData[i];
222 this->generateAAStrokeRectGeometry(vertices, 221 this->generateAAStrokeRectGeometry(vertices,
223 i * verticesPerInstance * vertexStrid e, 222 i * verticesPerInstance * vertexStrid e,
224 vertexStride, 223 vertexStride,
225 outerVertexNum, 224 outerVertexNum,
226 innerVertexNum, 225 innerVertexNum,
227 args.fColor, 226 args.fColor,
228 args.fDevOutside, 227 args.fDevOutside,
229 args.fDevOutsideAssist, 228 args.fDevOutsideAssist,
230 args.fDevInside, 229 args.fDevInside,
231 fMiterStroke, 230 fMiterStroke,
232 args.fDegenerate, 231 args.fDegenerate,
233 canTweakAlphaForCoverage); 232 canTweakAlphaForCoverage);
234 } 233 }
235 helper.recordDraw(target); 234 helper.recordDraw(target);
236 } 235 }
237 236
238 const GrIndexBuffer* AAStrokeRectBatch::GetIndexBuffer(GrResourceProvider* resou rceProvider, 237 const GrBuffer* AAStrokeRectBatch::GetIndexBuffer(GrResourceProvider* resourcePr ovider,
239 bool miterStroke) { 238 bool miterStroke) {
240 239
241 if (miterStroke) { 240 if (miterStroke) {
242 static const uint16_t gMiterIndices[] = { 241 static const uint16_t gMiterIndices[] = {
243 0 + 0, 1 + 0, 5 + 0, 5 + 0, 4 + 0, 0 + 0, 242 0 + 0, 1 + 0, 5 + 0, 5 + 0, 4 + 0, 0 + 0,
244 1 + 0, 2 + 0, 6 + 0, 6 + 0, 5 + 0, 1 + 0, 243 1 + 0, 2 + 0, 6 + 0, 6 + 0, 5 + 0, 1 + 0,
245 2 + 0, 3 + 0, 7 + 0, 7 + 0, 6 + 0, 2 + 0, 244 2 + 0, 3 + 0, 7 + 0, 7 + 0, 6 + 0, 2 + 0,
246 3 + 0, 0 + 0, 4 + 0, 4 + 0, 7 + 0, 3 + 0, 245 3 + 0, 0 + 0, 4 + 0, 4 + 0, 7 + 0, 3 + 0,
247 246
248 0 + 4, 1 + 4, 5 + 4, 5 + 4, 4 + 4, 0 + 4, 247 0 + 4, 1 + 4, 5 + 4, 5 + 4, 4 + 4, 0 + 4,
249 1 + 4, 2 + 4, 6 + 4, 6 + 4, 5 + 4, 1 + 4, 248 1 + 4, 2 + 4, 6 + 4, 6 + 4, 5 + 4, 1 + 4,
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 SkRect inside = outside; 654 SkRect inside = outside;
656 inside.inset(strokeWidth, strokeWidth); 655 inside.inset(strokeWidth, strokeWidth);
657 656
658 GrColor color = GrRandomColor(random); 657 GrColor color = GrRandomColor(random);
659 658
660 return GrAAStrokeRectBatch::Create(color, GrTest::TestMatrix(random), outsid e, outsideAssist, 659 return GrAAStrokeRectBatch::Create(color, GrTest::TestMatrix(random), outsid e, outsideAssist,
661 inside, miterStroke, inside.isFinite() && inside.isEmpty()); 660 inside, miterStroke, inside.isFinite() && inside.isEmpty());
662 } 661 }
663 662
664 #endif 663 #endif
OLDNEW
« no previous file with comments | « src/gpu/batches/GrAALinearizingConvexPathRenderer.cpp ('k') | src/gpu/batches/GrAtlasTextBatch.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698