| Index: src/gpu/GrGpu.h
|
| diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h
|
| index 5680d5c115e80f8de254519d39a246dd01af71d1..c98958911746bf0ee60dfa9894da19dc9befc558 100644
|
| --- a/src/gpu/GrGpu.h
|
| +++ b/src/gpu/GrGpu.h
|
| @@ -26,7 +26,6 @@ class GrVertexBufferAllocPool;
|
|
|
| class GrGpu : public SkRefCnt {
|
| public:
|
| -
|
| /**
|
| * Additional blend coefficients for dual source blending, not exposed
|
| * through GrPaint/GrContext.
|
| @@ -62,9 +61,7 @@ public:
|
| */
|
| const GrDrawTargetCaps* caps() const { return fCaps.get(); }
|
|
|
| - GrPathRendering* pathRendering() {
|
| - return fPathRendering.get();
|
| - }
|
| + GrPathRendering* pathRendering() { return fPathRendering.get(); }
|
|
|
| // Called by GrContext when the underlying backend context has been destroyed.
|
| // GrGpu should use this to ensure that no backend API calls will be made from
|
| @@ -78,11 +75,7 @@ public:
|
| * the GrGpu that the state was modified and it shouldn't make assumptions
|
| * about the state.
|
| */
|
| - void markContextDirty(uint32_t state = kAll_GrBackendState) {
|
| - fResetBits |= state;
|
| - }
|
| -
|
| - void unimpl(const char[]);
|
| + void markContextDirty(uint32_t state = kAll_GrBackendState) { fResetBits |= state; }
|
|
|
| /**
|
| * Creates a texture object. If kRenderTarget_GrSurfaceFlag the texture can
|
| @@ -302,33 +295,12 @@ public:
|
| // is dirty.
|
| ResetTimestamp getResetTimestamp() const { return fResetTimestamp; }
|
|
|
| - GrContext::GPUStats* gpuStats() { return &fGPUStats; }
|
| -
|
| virtual void buildProgramDesc(GrProgramDesc*,
|
| const GrPrimitiveProcessor&,
|
| const GrPipeline&,
|
| const GrProgramDesc::DescInfo&,
|
| const GrBatchTracker&) const = 0;
|
|
|
| - /**
|
| - * Called at start and end of gpu trace marking
|
| - * GR_CREATE_GPU_TRACE_MARKER(marker_str, target) will automatically call these at the start
|
| - * and end of a code block respectively
|
| - */
|
| - void addGpuTraceMarker(const GrGpuTraceMarker* marker);
|
| - void removeGpuTraceMarker(const GrGpuTraceMarker* marker);
|
| -
|
| - /**
|
| - * Takes the current active set of markers and stores them for later use. Any current marker
|
| - * in the active set is removed from the active set and the targets remove function is called.
|
| - * These functions do not work as a stack so you cannot call save a second time before calling
|
| - * restore. Also, it is assumed that when restore is called the current active set of markers
|
| - * is empty. When the stored markers are added back into the active set, the targets add marker
|
| - * is called.
|
| - */
|
| - void saveActiveTraceMarkers();
|
| - void restoreActiveTraceMarkers();
|
| -
|
| // Called to determine whether a copySurface call would succeed or not. Derived
|
| // classes must keep this consistent with their implementation of onCopySurface(). Fallbacks
|
| // to issuing a draw from the src to dst take place at the GrDrawTarget level and this function
|
| @@ -389,6 +361,53 @@ public:
|
| int count,
|
| const GrStencilSettings&);
|
|
|
| + ///////////////////////////////////////////////////////////////////////////
|
| + // Debugging and Stats
|
| +
|
| + class Stats {
|
| + public:
|
| +#if GR_GPU_STATS
|
| + Stats() { this->reset(); }
|
| +
|
| + void reset() { fRenderTargetBinds = 0; fShaderCompilations = 0; }
|
| +
|
| + int renderTargetBinds() const { return fRenderTargetBinds; }
|
| + void incRenderTargetBinds() { fRenderTargetBinds++; }
|
| + int shaderCompilations() const { return fShaderCompilations; }
|
| + void incShaderCompilations() { fShaderCompilations++; }
|
| + void dump(SkString*);
|
| +
|
| + private:
|
| + int fRenderTargetBinds;
|
| + int fShaderCompilations;
|
| +#else
|
| + void dump(SkString*) {};
|
| + void incRenderTargetBinds() {}
|
| + void incShaderCompilations() {}
|
| +#endif
|
| + };
|
| +
|
| + Stats* stats() { return &fStats; }
|
| +
|
| + /**
|
| + * Called at start and end of gpu trace marking
|
| + * GR_CREATE_GPU_TRACE_MARKER(marker_str, target) will automatically call these at the start
|
| + * and end of a code block respectively
|
| + */
|
| + void addGpuTraceMarker(const GrGpuTraceMarker* marker);
|
| + void removeGpuTraceMarker(const GrGpuTraceMarker* marker);
|
| +
|
| + /**
|
| + * Takes the current active set of markers and stores them for later use. Any current marker
|
| + * in the active set is removed from the active set and the targets remove function is called.
|
| + * These functions do not work as a stack so you cannot call save a second time before calling
|
| + * restore. Also, it is assumed that when restore is called the current active set of markers
|
| + * is empty. When the stored markers are added back into the active set, the targets add marker
|
| + * is called.
|
| + */
|
| + void saveActiveTraceMarkers();
|
| + void restoreActiveTraceMarkers();
|
| +
|
| protected:
|
| // Functions used to map clip-respecting stencil tests into normal
|
| // stencil funcs supported by GPUs.
|
| @@ -401,14 +420,12 @@ protected:
|
| unsigned int* ref,
|
| unsigned int* mask);
|
|
|
| - const GrTraceMarkerSet& getActiveTraceMarkers() { return fActiveTraceMarkers; }
|
| -
|
| - GrContext::GPUStats fGPUStats;
|
| -
|
| - SkAutoTDelete<GrPathRendering> fPathRendering;
|
| + const GrTraceMarkerSet& getActiveTraceMarkers() const { return fActiveTraceMarkers; }
|
|
|
| + Stats fStats;
|
| + SkAutoTDelete<GrPathRendering> fPathRendering;
|
| // Subclass must initialize this in its constructor.
|
| - SkAutoTUnref<const GrDrawTargetCaps> fCaps;
|
| + SkAutoTUnref<const GrDrawTargetCaps> fCaps;
|
|
|
| private:
|
| // called when the 3D context state is unknown. Subclass should emit any
|
| @@ -432,9 +449,7 @@ private:
|
|
|
| // Overridden by backend specific classes to perform a clear of the stencil clip bits. This is
|
| // ONLY used by the the clip target
|
| - virtual void onClearStencilClip(GrRenderTarget*,
|
| - const SkIRect& rect,
|
| - bool insideClip) = 0;
|
| + virtual void onClearStencilClip(GrRenderTarget*, const SkIRect& rect, bool insideClip) = 0;
|
|
|
| // overridden by backend-specific derived class to perform the draw call.
|
| virtual void onDraw(const DrawArgs&, const GrDrawTarget::DrawInfo&) = 0;
|
|
|