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

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

Issue 815643005: Move program descriptor and primitive processor off of optstate (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: bug fix 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/GrGeometryProcessor.cpp ('k') | src/gpu/GrGpu.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 GrGpu_DEFINED 8 #ifndef GrGpu_DEFINED
9 #define GrGpu_DEFINED 9 #define GrGpu_DEFINED
10 10
11 #include "GrDrawTarget.h" 11 #include "GrDrawTarget.h"
12 #include "GrPathRendering.h" 12 #include "GrPathRendering.h"
13 #include "GrProgramDesc.h" 13 #include "GrProgramDesc.h"
14 #include "SkPath.h" 14 #include "SkPath.h"
15 15
16 class GrContext; 16 class GrContext;
17 class GrIndexBufferAllocPool; 17 class GrIndexBufferAllocPool;
18 class GrOptDrawState; 18 class GrOptDrawState;
19 class GrPath; 19 class GrPath;
20 class GrPathRange; 20 class GrPathRange;
21 class GrPathRenderer; 21 class GrPathRenderer;
22 class GrPathRendererChain; 22 class GrPathRendererChain;
23 class GrPrimitiveProcessor;
23 class GrStencilBuffer; 24 class GrStencilBuffer;
24 class GrVertexBufferAllocPool; 25 class GrVertexBufferAllocPool;
25 26
26 class GrGpu : public SkRefCnt { 27 class GrGpu : public SkRefCnt {
27 public: 28 public:
28 29
29 /** 30 /**
30 * Additional blend coefficients for dual source blending, not exposed 31 * Additional blend coefficients for dual source blending, not exposed
31 * through GrPaint/GrContext. 32 * through GrPaint/GrContext.
32 */ 33 */
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 kDrawPath_DrawType, 309 kDrawPath_DrawType,
309 kDrawPaths_DrawType, 310 kDrawPaths_DrawType,
310 }; 311 };
311 312
312 static bool IsPathRenderingDrawType(DrawType type) { 313 static bool IsPathRenderingDrawType(DrawType type) {
313 return kDrawPath_DrawType == type || kDrawPaths_DrawType == type; 314 return kDrawPath_DrawType == type || kDrawPaths_DrawType == type;
314 } 315 }
315 316
316 GrContext::GPUStats* gpuStats() { return &fGPUStats; } 317 GrContext::GPUStats* gpuStats() { return &fGPUStats; }
317 318
318 virtual void buildProgramDesc(const GrOptDrawState&, 319 virtual void buildProgramDesc(GrProgramDesc*,
320 const GrPrimitiveProcessor&,
321 const GrOptDrawState&,
319 const GrProgramDesc::DescInfo&, 322 const GrProgramDesc::DescInfo&,
320 GrGpu::DrawType, 323 GrGpu::DrawType,
321 GrProgramDesc*) = 0; 324 const GrBatchTracker&) const = 0;
322 325
323 /** 326 /**
324 * Called at start and end of gpu trace marking 327 * Called at start and end of gpu trace marking
325 * GR_CREATE_GPU_TRACE_MARKER(marker_str, target) will automatically call th ese at the start 328 * GR_CREATE_GPU_TRACE_MARKER(marker_str, target) will automatically call th ese at the start
326 * and end of a code block respectively 329 * and end of a code block respectively
327 */ 330 */
328 void addGpuTraceMarker(const GrGpuTraceMarker* marker); 331 void addGpuTraceMarker(const GrGpuTraceMarker* marker);
329 void removeGpuTraceMarker(const GrGpuTraceMarker* marker); 332 void removeGpuTraceMarker(const GrGpuTraceMarker* marker);
330 333
331 /** 334 /**
(...skipping 19 matching lines...) Expand all
351 354
352 // Called to perform a surface to surface copy. Fallbacks to issuing a draw from the src to dst 355 // Called to perform a surface to surface copy. Fallbacks to issuing a draw from the src to dst
353 // take place at the GrDrawTarget level and this function implement faster c opy paths. The rect 356 // take place at the GrDrawTarget level and this function implement faster c opy paths. The rect
354 // and point are pre-clipped. The src rect and implied dst rect are guarante ed to be within the 357 // and point are pre-clipped. The src rect and implied dst rect are guarante ed to be within the
355 // src/dst bounds and non-empty. 358 // src/dst bounds and non-empty.
356 virtual bool copySurface(GrSurface* dst, 359 virtual bool copySurface(GrSurface* dst,
357 GrSurface* src, 360 GrSurface* src,
358 const SkIRect& srcRect, 361 const SkIRect& srcRect,
359 const SkIPoint& dstPoint) = 0; 362 const SkIPoint& dstPoint) = 0;
360 363
361 void draw(const GrOptDrawState&, const GrDrawTarget::DrawInfo&); 364 struct DrawArgs {
365 typedef GrDrawTarget::DrawInfo DrawInfo;
366 DrawArgs(const GrPrimitiveProcessor* primProc,
367 const GrOptDrawState* optState,
368 const GrProgramDesc* desc,
369 const GrBatchTracker* batchTracker)
370 : fPrimitiveProcessor(primProc)
371 , fOptState(optState)
372 , fDesc(desc)
373 , fBatchTracker(batchTracker) {
374 SkASSERT(primProc && optState && desc && batchTracker);
375 }
376 const GrPrimitiveProcessor* fPrimitiveProcessor;
377 const GrOptDrawState* fOptState;
378 const GrProgramDesc* fDesc;
379 const GrBatchTracker* fBatchTracker;
380 };
381
382 void draw(const DrawArgs&, const GrDrawTarget::DrawInfo&);
362 383
363 /** None of these params are optional, pointers used just to avoid making co pies. */ 384 /** None of these params are optional, pointers used just to avoid making co pies. */
364 struct StencilPathState { 385 struct StencilPathState {
365 bool fUseHWAA; 386 bool fUseHWAA;
366 GrRenderTarget* fRenderTarget; 387 GrRenderTarget* fRenderTarget;
367 const SkMatrix* fViewMatrix; 388 const SkMatrix* fViewMatrix;
368 const GrStencilSettings* fStencil; 389 const GrStencilSettings* fStencil;
369 const GrScissorState* fScissor; 390 const GrScissorState* fScissor;
370 }; 391 };
371 392
372 void stencilPath(const GrPath*, const StencilPathState&); 393 void stencilPath(const GrPath*, const StencilPathState&);
373 394
374 void drawPath(const GrOptDrawState&, const GrPath*, const GrStencilSettings& ); 395 void drawPath(const DrawArgs&, const GrPath*, const GrStencilSettings&);
375 void drawPaths(const GrOptDrawState&, 396 void drawPaths(const DrawArgs&,
376 const GrPathRange*, 397 const GrPathRange*,
377 const void* indices, 398 const void* indices,
378 GrDrawTarget::PathIndexType, 399 GrDrawTarget::PathIndexType,
379 const float transformValues[], 400 const float transformValues[],
380 GrDrawTarget::PathTransformType, 401 GrDrawTarget::PathTransformType,
381 int count, 402 int count,
382 const GrStencilSettings&); 403 const GrStencilSettings&);
383 404
384 static DrawType PrimTypeToDrawType(GrPrimitiveType type) { 405 static DrawType PrimTypeToDrawType(GrPrimitiveType type) {
385 switch (type) { 406 switch (type) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 bool canIgnoreRect) = 0; 460 bool canIgnoreRect) = 0;
440 461
441 462
442 // Overridden by backend specific classes to perform a clear of the stencil clip bits. This is 463 // Overridden by backend specific classes to perform a clear of the stencil clip bits. This is
443 // ONLY used by the the clip target 464 // ONLY used by the the clip target
444 virtual void onClearStencilClip(GrRenderTarget*, 465 virtual void onClearStencilClip(GrRenderTarget*,
445 const SkIRect& rect, 466 const SkIRect& rect,
446 bool insideClip) = 0; 467 bool insideClip) = 0;
447 468
448 // overridden by backend-specific derived class to perform the draw call. 469 // overridden by backend-specific derived class to perform the draw call.
449 virtual void onDraw(const GrOptDrawState&, const GrDrawTarget::DrawInfo&) = 0; 470 virtual void onDraw(const DrawArgs&, const GrDrawTarget::DrawInfo&) = 0;
450 virtual void onStencilPath(const GrPath*, const StencilPathState&) = 0; 471 virtual void onStencilPath(const GrPath*, const StencilPathState&) = 0;
451 472
452 virtual void onDrawPath(const GrOptDrawState&, const GrPath*, const GrStenci lSettings&) = 0; 473 virtual void onDrawPath(const DrawArgs&, const GrPath*, const GrStencilSetti ngs&) = 0;
453 virtual void onDrawPaths(const GrOptDrawState&, 474 virtual void onDrawPaths(const DrawArgs&,
454 const GrPathRange*, 475 const GrPathRange*,
455 const void* indices, 476 const void* indices,
456 GrDrawTarget::PathIndexType, 477 GrDrawTarget::PathIndexType,
457 const float transformValues[], 478 const float transformValues[],
458 GrDrawTarget::PathTransformType, 479 GrDrawTarget::PathTransformType,
459 int count, 480 int count,
460 const GrStencilSettings&) = 0; 481 const GrStencilSettings&) = 0;
461 482
462 // overridden by backend-specific derived class to perform the read pixels. 483 // overridden by backend-specific derived class to perform the read pixels.
463 virtual bool onReadPixels(GrRenderTarget* target, 484 virtual bool onReadPixels(GrRenderTarget* target,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 int fGpuTrac eMarkerCount; 533 int fGpuTrac eMarkerCount;
513 GrTraceMarkerSet fActiveT raceMarkers; 534 GrTraceMarkerSet fActiveT raceMarkers;
514 GrTraceMarkerSet fStoredT raceMarkers; 535 GrTraceMarkerSet fStoredT raceMarkers;
515 // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu. 536 // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu.
516 GrContext* fContext ; 537 GrContext* fContext ;
517 538
518 typedef SkRefCnt INHERITED; 539 typedef SkRefCnt INHERITED;
519 }; 540 };
520 541
521 #endif 542 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrGeometryProcessor.cpp ('k') | src/gpu/GrGpu.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698