LCOV - code coverage report
Current view: top level - gfx/skia/skia/include/private - GrRenderTargetProxy.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 7 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 9 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2016 Google Inc.
       3             :  *
       4             :  * Use of this source code is governed by a BSD-style license that can be
       5             :  * found in the LICENSE file.
       6             :  */
       7             : 
       8             : #ifndef GrRenderTargetProxy_DEFINED
       9             : #define GrRenderTargetProxy_DEFINED
      10             : 
      11             : #include "GrRenderTarget.h"
      12             : #include "GrSurfaceProxy.h"
      13             : #include "GrTypes.h"
      14             : 
      15             : class GrResourceProvider;
      16             : 
      17             : // This class delays the acquisition of RenderTargets until they are actually
      18             : // required
      19             : // Beware: the uniqueID of the RenderTargetProxy will usually be different than
      20             : // the uniqueID of the RenderTarget it represents!
      21           0 : class GrRenderTargetProxy : virtual public GrSurfaceProxy {
      22             : public:
      23           0 :     GrRenderTargetProxy* asRenderTargetProxy() override { return this; }
      24           0 :     const GrRenderTargetProxy* asRenderTargetProxy() const override { return this; }
      25             : 
      26             :     // Actually instantiate the backing rendertarget, if necessary.
      27             :     GrRenderTarget* instantiate(GrResourceProvider* resourceProvider);
      28             : 
      29           0 :     bool isStencilBufferMultisampled() const { return fDesc.fSampleCnt > 0; }
      30             : 
      31             :     /**
      32             :      * For our purposes, "Mixed Sampled" means the stencil buffer is multisampled but the color
      33             :      * buffer is not.
      34             :      */
      35           0 :     bool isMixedSampled() const { return fRenderTargetFlags & GrRenderTarget::Flags::kMixedSampled; }
      36             : 
      37             :     /**
      38             :      * "Unified Sampled" means the stencil and color buffers are both multisampled.
      39             :      */
      40           0 :     bool isUnifiedMultisampled() const { return fDesc.fSampleCnt > 0 && !this->isMixedSampled(); }
      41             : 
      42             :     /**
      43             :      * Returns the number of samples/pixel in the stencil buffer (Zero if non-MSAA).
      44             :      */
      45             :     int numStencilSamples() const { return fDesc.fSampleCnt; }
      46             : 
      47             :     /**
      48             :      * Returns the number of samples/pixel in the color buffer (Zero if non-MSAA or mixed sampled).
      49             :      */
      50           0 :     int numColorSamples() const { return this->isMixedSampled() ? 0 : fDesc.fSampleCnt; }
      51             : 
      52             :     int maxWindowRectangles(const GrCaps& caps) const;
      53             : 
      54             :     GrRenderTarget::Flags testingOnly_getFlags() const;
      55             : 
      56             :     // TODO: move this to a priv class!
      57             :     bool refsWrappedObjects() const;
      58             : 
      59             : protected:
      60             :     friend class GrSurfaceProxy;  // for ctors
      61             : 
      62             :     // Deferred version
      63             :     GrRenderTargetProxy(const GrCaps&, const GrSurfaceDesc&,
      64             :                         SkBackingFit, SkBudgeted, uint32_t flags);
      65             : 
      66             :     // Wrapped version
      67             :     GrRenderTargetProxy(sk_sp<GrSurface>);
      68             : 
      69             : private:
      70             :     size_t onGpuMemorySize() const override;
      71             : 
      72             :     // For wrapped render targets the actual GrRenderTarget is stored in the GrIORefProxy class.
      73             :     // For deferred proxies that pointer is filled in when we need to instantiate the
      74             :     // deferred resource.
      75             : 
      76             :     // These don't usually get computed until the render target is instantiated, but the render
      77             :     // target proxy may need to answer queries about it before then. And since in the deferred case
      78             :     // we know the newly created render target will be internal, we are able to precompute what the
      79             :     // flags will ultimately end up being. In the wrapped case we just copy the wrapped
      80             :     // rendertarget's info here.
      81             :     GrRenderTarget::Flags   fRenderTargetFlags;
      82             : 
      83             :     typedef GrSurfaceProxy INHERITED;
      84             : };
      85             : 
      86             : #endif

Generated by: LCOV version 1.13