From ec00d94199fad7723b5987b86c1abef8ddafe2d8 Mon Sep 17 00:00:00 2001 From: egdaniel Date: Mon, 14 Sep 2015 12:56:10 -0700 Subject: Move some of the adding stencil attachment logic of Gpu and into Render Target. The new flow of calls for attaching a Stencil looks like: Client rt->attachStencilAttachment() gpu->getStencilAttachment() glgpu->createStencilAttachment() glrt->completeStencilAttachment() //actually attaches BUG=skia: Review URL: https://codereview.chromium.org/1333383002 --- include/gpu/GrRenderTarget.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'include/gpu/GrRenderTarget.h') diff --git a/include/gpu/GrRenderTarget.h b/include/gpu/GrRenderTarget.h index 8983d53a25..2309dbd876 100644 --- a/include/gpu/GrRenderTarget.h +++ b/include/gpu/GrRenderTarget.h @@ -144,15 +144,18 @@ public: */ virtual GrBackendObject getRenderTargetHandle() const = 0; + // Checked when this object is asked to attach a stencil buffer. + virtual bool canAttemptStencilAttachment() const = 0; + // Provides access to functions that aren't part of the public API. GrRenderTargetPriv renderTargetPriv(); const GrRenderTargetPriv renderTargetPriv() const; protected: GrRenderTarget(GrGpu* gpu, LifeCycle lifeCycle, const GrSurfaceDesc& desc, - SampleConfig sampleConfig) + SampleConfig sampleConfig, GrStencilAttachment* stencil = nullptr) : INHERITED(gpu, lifeCycle, desc) - , fStencilAttachment(NULL) + , fStencilAttachment(stencil) , fSampleConfig(sampleConfig) { fResolveRect.setLargestInverted(); } @@ -162,8 +165,11 @@ protected: void onRelease() override; private: - // Checked when this object is asked to attach a stencil buffer. - virtual bool canAttemptStencilAttachment() const = 0; + // Allows the backends to perform any additional work that is required for attaching a + // GrStencilAttachment. When this is called, the GrStencilAttachment has already been put onto + // the GrRenderTarget. This function must return false if any failures occur when completing the + // stencil attachment. + virtual bool completeStencilAttachment() = 0; friend class GrRenderTargetPriv; -- cgit v1.2.3