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

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

Issue 1157683006: Refactor GrGpu path rendering functions to GrPathRendering (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase, remove include ordering Created 5 years, 6 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/GrBatchTarget.h ('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 "GrPipelineBuilder.h"
12 #include "GrPathRendering.h"
13 #include "GrProgramDesc.h" 12 #include "GrProgramDesc.h"
13 #include "GrStencil.h"
14 #include "GrTraceMarker.h"
15 #include "GrXferProcessor.h"
14 #include "SkPath.h" 16 #include "SkPath.h"
15 17
18 class GrBatchTracker;
16 class GrContext; 19 class GrContext;
17 struct GrGLInterface; 20 struct GrGLInterface;
21 class GrIndexBuffer;
18 class GrNonInstancedVertices; 22 class GrNonInstancedVertices;
19 class GrPath; 23 class GrPath;
20 class GrPathRange; 24 class GrPathRange;
21 class GrPathRenderer; 25 class GrPathRenderer;
22 class GrPathRendererChain; 26 class GrPathRendererChain;
27 class GrPathRendering;
23 class GrPipeline; 28 class GrPipeline;
24 class GrPrimitiveProcessor; 29 class GrPrimitiveProcessor;
30 class GrRenderTarget;
25 class GrStencilAttachment; 31 class GrStencilAttachment;
32 class GrSurface;
33 class GrTexture;
34 class GrVertexBuffer;
26 class GrVertices; 35 class GrVertices;
27 36
28 class GrGpu : public SkRefCnt { 37 class GrGpu : public SkRefCnt {
29 public: 38 public:
30 /** 39 /**
31 * Create an instance of GrGpu that matches the specified backend. If the re quested backend is 40 * Create an instance of GrGpu that matches the specified backend. If the re quested backend is
32 * not supported (at compile-time or run-time) this returns NULL. The contex t will not be 41 * not supported (at compile-time or run-time) this returns NULL. The contex t will not be
33 * fully constructed and should not be used by GrGpu until after this functi on returns. 42 * fully constructed and should not be used by GrGpu until after this functi on returns.
34 */ 43 */
35 static GrGpu* Create(GrBackend, GrBackendContext, const GrContextOptions&, G rContext* context); 44 static GrGpu* Create(GrBackend, GrBackendContext, const GrContextOptions&, G rContext* context);
36 45
37 //////////////////////////////////////////////////////////////////////////// 46 ////////////////////////////////////////////////////////////////////////////
38 47
39 GrGpu(GrContext* context); 48 GrGpu(GrContext* context);
40 ~GrGpu() override; 49 ~GrGpu() override;
41 50
42 GrContext* getContext() { return fContext; } 51 GrContext* getContext() { return fContext; }
43 const GrContext* getContext() const { return fContext; } 52 const GrContext* getContext() const { return fContext; }
44 53
45 /** 54 /**
46 * Gets the capabilities of the draw target. 55 * Gets the capabilities of the draw target.
47 */ 56 */
48 const GrCaps* caps() const { return fCaps.get(); } 57 const GrCaps* caps() const { return fCaps.get(); }
49 58
50 GrPathRendering* pathRendering() { return fPathRendering.get(); } 59 GrPathRendering* pathRendering() { return fPathRendering.get(); }
51 60
52 // Called by GrContext when the underlying backend context has been destroye d. 61 // Called by GrContext when the underlying backend context has been destroye d.
53 // GrGpu should use this to ensure that no backend API calls will be made fr om 62 // GrGpu should use this to ensure that no backend API calls will be made fr om
54 // here onward, including in its destructor. Subclasses should call 63 // here onward, including in its destructor. Subclasses should call
55 // INHERITED::contextAbandoned() if they override this. 64 // INHERITED::contextAbandoned() if they override this.
56 virtual void contextAbandoned(); 65 virtual void contextAbandoned();
57 66
58 /** 67 /**
59 * The GrGpu object normally assumes that no outsider is setting state 68 * The GrGpu object normally assumes that no outsider is setting state
60 * within the underlying 3D API's context/device/whatever. This call informs 69 * within the underlying 3D API's context/device/whatever. This call informs
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 SkASSERT(primProc && pipeline && desc && batchTracker); 301 SkASSERT(primProc && pipeline && desc && batchTracker);
293 } 302 }
294 const GrPrimitiveProcessor* fPrimitiveProcessor; 303 const GrPrimitiveProcessor* fPrimitiveProcessor;
295 const GrPipeline* fPipeline; 304 const GrPipeline* fPipeline;
296 const GrProgramDesc* fDesc; 305 const GrProgramDesc* fDesc;
297 const GrBatchTracker* fBatchTracker; 306 const GrBatchTracker* fBatchTracker;
298 }; 307 };
299 308
300 void draw(const DrawArgs&, const GrVertices&); 309 void draw(const DrawArgs&, const GrVertices&);
301 310
302 /** None of these params are optional, pointers used just to avoid making co pies. */
303 struct StencilPathState {
304 bool fUseHWAA;
305 GrRenderTarget* fRenderTarget;
306 const SkMatrix* fViewMatrix;
307 const GrStencilSettings* fStencil;
308 const GrScissorState* fScissor;
309 };
310
311 void stencilPath(const GrPath*, const StencilPathState&);
312
313 void drawPath(const DrawArgs&, const GrPath*, const GrStencilSettings&);
314 void drawPaths(const DrawArgs&,
315 const GrPathRange*,
316 const void* indices,
317 GrDrawTarget::PathIndexType,
318 const float transformValues[],
319 GrDrawTarget::PathTransformType,
320 int count,
321 const GrStencilSettings&);
322
323 /////////////////////////////////////////////////////////////////////////// 311 ///////////////////////////////////////////////////////////////////////////
324 // Debugging and Stats 312 // Debugging and Stats
325 313
326 class Stats { 314 class Stats {
327 public: 315 public:
328 #if GR_GPU_STATS 316 #if GR_GPU_STATS
329 Stats() { this->reset(); } 317 Stats() { this->reset(); }
330 318
331 void reset() { 319 void reset() {
332 fRenderTargetBinds = 0; 320 fRenderTargetBinds = 0;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 virtual void onClear(GrRenderTarget*, const SkIRect* rect, GrColor color, 420 virtual void onClear(GrRenderTarget*, const SkIRect* rect, GrColor color,
433 bool canIgnoreRect) = 0; 421 bool canIgnoreRect) = 0;
434 422
435 423
436 // Overridden by backend specific classes to perform a clear of the stencil clip bits. This is 424 // Overridden by backend specific classes to perform a clear of the stencil clip bits. This is
437 // ONLY used by the the clip target 425 // ONLY used by the the clip target
438 virtual void onClearStencilClip(GrRenderTarget*, const SkIRect& rect, bool i nsideClip) = 0; 426 virtual void onClearStencilClip(GrRenderTarget*, const SkIRect& rect, bool i nsideClip) = 0;
439 427
440 // overridden by backend-specific derived class to perform the draw call. 428 // overridden by backend-specific derived class to perform the draw call.
441 virtual void onDraw(const DrawArgs&, const GrNonInstancedVertices&) = 0; 429 virtual void onDraw(const DrawArgs&, const GrNonInstancedVertices&) = 0;
442 virtual void onStencilPath(const GrPath*, const StencilPathState&) = 0;
443 430
444 virtual void onDrawPath(const DrawArgs&, const GrPath*, const GrStencilSetti ngs&) = 0;
445 virtual void onDrawPaths(const DrawArgs&,
446 const GrPathRange*,
447 const void* indices,
448 GrDrawTarget::PathIndexType,
449 const float transformValues[],
450 GrDrawTarget::PathTransformType,
451 int count,
452 const GrStencilSettings&) = 0;
453
454 // overridden by backend-specific derived class to perform the read pixels.
455 virtual bool onReadPixels(GrRenderTarget* target, 431 virtual bool onReadPixels(GrRenderTarget* target,
456 int left, int top, int width, int height, 432 int left, int top, int width, int height,
457 GrPixelConfig, 433 GrPixelConfig,
458 void* buffer, 434 void* buffer,
459 size_t rowBytes) = 0; 435 size_t rowBytes) = 0;
460 436
461 // overridden by backend-specific derived class to perform the texture updat e 437 // overridden by backend-specific derived class to perform the texture updat e
462 virtual bool onWriteTexturePixels(GrTexture* texture, 438 virtual bool onWriteTexturePixels(GrTexture* texture,
463 int left, int top, int width, int height, 439 int left, int top, int width, int height,
464 GrPixelConfig config, const void* buffer, 440 GrPixelConfig config, const void* buffer,
(...skipping 30 matching lines...) Expand all
495 471
496 ResetTimestamp fResetTi mestamp; 472 ResetTimestamp fResetTi mestamp;
497 uint32_t fResetBi ts; 473 uint32_t fResetBi ts;
498 // To keep track that we always have at least as many debug marker adds as r emoves 474 // To keep track that we always have at least as many debug marker adds as r emoves
499 int fGpuTrac eMarkerCount; 475 int fGpuTrac eMarkerCount;
500 GrTraceMarkerSet fActiveT raceMarkers; 476 GrTraceMarkerSet fActiveT raceMarkers;
501 GrTraceMarkerSet fStoredT raceMarkers; 477 GrTraceMarkerSet fStoredT raceMarkers;
502 // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu. 478 // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu.
503 GrContext* fContext ; 479 GrContext* fContext ;
504 480
481 friend class GrPathRendering;
505 typedef SkRefCnt INHERITED; 482 typedef SkRefCnt INHERITED;
506 }; 483 };
507 484
508 #endif 485 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrBatchTarget.h ('k') | src/gpu/GrGpu.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698