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

Side by Side Diff: src/gpu/GrInOrderDrawBuffer.h

Issue 746253003: Add IndexType parameter to GrDrawTarget::drawPaths (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years 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/GrGpu.cpp ('k') | src/gpu/GrInOrderDrawBuffer.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 2011 Google Inc. 2 * Copyright 2011 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 #ifndef GrInOrderDrawBuffer_DEFINED 8 #ifndef GrInOrderDrawBuffer_DEFINED
9 #define GrInOrderDrawBuffer_DEFINED 9 #define GrInOrderDrawBuffer_DEFINED
10 10
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 }; 150 };
151 151
152 struct DrawPaths : public Cmd { 152 struct DrawPaths : public Cmd {
153 DrawPaths(const GrPathRange* pathRange) : Cmd(kDrawPaths_Cmd), fPathRang e(pathRange) {} 153 DrawPaths(const GrPathRange* pathRange) : Cmd(kDrawPaths_Cmd), fPathRang e(pathRange) {}
154 154
155 const GrPathRange* pathRange() const { return fPathRange.get(); } 155 const GrPathRange* pathRange() const { return fPathRange.get(); }
156 156
157 void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) SK_OVERRIDE; 157 void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) SK_OVERRIDE;
158 158
159 int fIndicesLocation; 159 int fIndicesLocation;
160 size_t fCount; 160 PathIndexType fIndexType;
161 int fTransformsLocation; 161 int fTransformsLocation;
162 PathTransformType fTransformsType; 162 PathTransformType fTransformType;
163 int fCount;
163 GrStencilSettings fStencilSettings; 164 GrStencilSettings fStencilSettings;
164 165
165 private: 166 private:
166 GrPendingIOResource<const GrPathRange, kRead_GrIOType> fPathRange; 167 GrPendingIOResource<const GrPathRange, kRead_GrIOType> fPathRange;
167 }; 168 };
168 169
169 // This is also used to record a discard by setting the color to GrColor_ILL EGAL 170 // This is also used to record a discard by setting the color to GrColor_ILL EGAL
170 struct Clear : public Cmd { 171 struct Clear : public Cmd {
171 Clear(GrRenderTarget* rt) : Cmd(kClear_Cmd), fRenderTarget(rt) {} 172 Clear(GrRenderTarget* rt) : Cmd(kClear_Cmd), fRenderTarget(rt) {}
172 173
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 const GrPath*, 243 const GrPath*,
243 const ScissorState&, 244 const ScissorState&,
244 const GrStencilSettings&) SK_OVERRIDE; 245 const GrStencilSettings&) SK_OVERRIDE;
245 void onDrawPath(const GrDrawState&, 246 void onDrawPath(const GrDrawState&,
246 const GrPath*, 247 const GrPath*,
247 const ScissorState&, 248 const ScissorState&,
248 const GrStencilSettings&, 249 const GrStencilSettings&,
249 const GrDeviceCoordTexture* dstCopy) SK_OVERRIDE; 250 const GrDeviceCoordTexture* dstCopy) SK_OVERRIDE;
250 void onDrawPaths(const GrDrawState&, 251 void onDrawPaths(const GrDrawState&,
251 const GrPathRange*, 252 const GrPathRange*,
252 const uint32_t indices[], 253 const void* indices,
254 PathIndexType,
255 const float transformValues[],
256 PathTransformType,
253 int count, 257 int count,
254 const float transforms[],
255 PathTransformType,
256 const ScissorState&, 258 const ScissorState&,
257 const GrStencilSettings&, 259 const GrStencilSettings&,
258 const GrDeviceCoordTexture*) SK_OVERRIDE; 260 const GrDeviceCoordTexture*) SK_OVERRIDE;
259 void onClear(const SkIRect* rect, 261 void onClear(const SkIRect* rect,
260 GrColor color, 262 GrColor color,
261 bool canIgnoreRect, 263 bool canIgnoreRect,
262 GrRenderTarget* renderTarget) SK_OVERRIDE; 264 GrRenderTarget* renderTarget) SK_OVERRIDE;
263 void setDrawBuffers(DrawInfo*) SK_OVERRIDE; 265 void setDrawBuffers(DrawInfo*) SK_OVERRIDE;
264 266
265 bool onReserveVertexSpace(size_t vertexSize, int vertexCount, void** vertice s) SK_OVERRIDE; 267 bool onReserveVertexSpace(size_t vertexSize, int vertexCount, void** vertice s) SK_OVERRIDE;
(...skipping 20 matching lines...) Expand all
286 // We lazily record clip changes in order to skip clips that have no effect. 288 // We lazily record clip changes in order to skip clips that have no effect.
287 void recordClipIfNecessary(); 289 void recordClipIfNecessary();
288 // Records any trace markers for a command after adding it to the buffer. 290 // Records any trace markers for a command after adding it to the buffer.
289 void recordTraceMarkersIfNecessary(); 291 void recordTraceMarkersIfNecessary();
290 292
291 virtual bool isIssued(uint32_t drawID) { return drawID != fDrawID; } 293 virtual bool isIssued(uint32_t drawID) { return drawID != fDrawID; }
292 294
293 // TODO: Use a single allocator for commands and records 295 // TODO: Use a single allocator for commands and records
294 enum { 296 enum {
295 kCmdBufferInitialSizeInBytes = 8 * 1024, 297 kCmdBufferInitialSizeInBytes = 8 * 1024,
296 kPathIdxBufferMinReserve = 64, 298 kPathIdxBufferMinReserve = 2 * 64, // 64 uint16_t's
297 kPathXformBufferMinReserve = 2 * kPathIdxBufferMinReserve, 299 kPathXformBufferMinReserve = 2 * 64, // 64 two-float transforms
298 kGeoPoolStatePreAllocCnt = 4, 300 kGeoPoolStatePreAllocCnt = 4,
299 }; 301 };
300 302
301 struct GeometryPoolState { 303 struct GeometryPoolState {
302 const GrVertexBuffer* fPoolVertexBuffer; 304 const GrVertexBuffer* fPoolVertexBuffer;
303 int fPoolStartVertex; 305 int fPoolStartVertex;
304 const GrIndexBuffer* fPoolIndexBuffer; 306 const GrIndexBuffer* fPoolIndexBuffer;
305 int fPoolStartIndex; 307 int fPoolStartIndex;
306 // caller may conservatively over reserve vertices / indices. 308 // caller may conservatively over reserve vertices / indices.
307 // we release unused space back to allocator if possible 309 // we release unused space back to allocator if possible
308 // can only do this if there isn't an intervening pushGeometrySource() 310 // can only do this if there isn't an intervening pushGeometrySource()
309 size_t fUsedPoolVertexBytes; 311 size_t fUsedPoolVertexBytes;
310 size_t fUsedPoolIndexBytes; 312 size_t fUsedPoolIndexBytes;
311 }; 313 };
312 314
313 typedef SkSTArray<kGeoPoolStatePreAllocCnt, GeometryPoolState> GeoPoolStateS tack; 315 typedef SkSTArray<kGeoPoolStatePreAllocCnt, GeometryPoolState> GeoPoolStateS tack;
314 316
315 CmdBuffer fCmdBuffer; 317 CmdBuffer fCmdBuffer;
316 const GrOptDrawState* fPrevState; 318 const GrOptDrawState* fPrevState;
317 SkTArray<GrTraceMarkerSet, false> fGpuCmdMarkers; 319 SkTArray<GrTraceMarkerSet, false> fGpuCmdMarkers;
318 GrGpu* fDstGpu; 320 GrGpu* fDstGpu;
319 GrVertexBufferAllocPool& fVertexPool; 321 GrVertexBufferAllocPool& fVertexPool;
320 GrIndexBufferAllocPool& fIndexPool; 322 GrIndexBufferAllocPool& fIndexPool;
321 SkTDArray<uint32_t> fPathIndexBuffer; 323 SkTDArray<char> fPathIndexBuffer;
322 SkTDArray<float> fPathTransformBuffer; 324 SkTDArray<float> fPathTransformBuffer;
323 GeoPoolStateStack fGeoPoolStateStack; 325 GeoPoolStateStack fGeoPoolStateStack;
324 bool fFlushing; 326 bool fFlushing;
325 uint32_t fDrawID; 327 uint32_t fDrawID;
326 328
327 typedef GrClipTarget INHERITED; 329 typedef GrClipTarget INHERITED;
328 }; 330 };
329 331
330 #endif 332 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrGpu.cpp ('k') | src/gpu/GrInOrderDrawBuffer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698