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

Unified Diff: include/gpu/GrRenderTarget.h

Issue 2225303002: Add flag for window rectangles to GrRenderTarget (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Add GrRenderTarget flag for window rectangles Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/gpu/GrDrawContext.h ('k') | include/gpu/GrTypes.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/gpu/GrRenderTarget.h
diff --git a/include/gpu/GrRenderTarget.h b/include/gpu/GrRenderTarget.h
index 77b04d24d3f993d1cafbf30712ca34afe79b1f3c..1f87787d45dcd92c154bfbf8f3ba6f64a5df4321 100644
--- a/include/gpu/GrRenderTarget.h
+++ b/include/gpu/GrRenderTarget.h
@@ -30,66 +30,28 @@ public:
const GrRenderTarget* asRenderTarget() const override { return this; }
// GrRenderTarget
- /**
- * On some hardware it is possible for a render target to have multisampling
- * only in certain buffers.
- * Enforce only two legal sample configs.
- * kUnified_SampleConfig signifies multisampling in both color and stencil
- * buffers and is available across all hardware.
- * kStencil_SampleConfig means multisampling is present in stencil buffer
- * only; this config requires hardware support of
- * NV_framebuffer_mixed_samples.
- */
- enum SampleConfig {
- kUnified_SampleConfig = 0,
- kStencil_SampleConfig = 1
- };
-
- /**
- * @return true if the surface is multisampled in all buffers,
- * false otherwise
- */
- bool isUnifiedMultisampled() const {
- if (fSampleConfig != kUnified_SampleConfig) {
- return false;
- }
- return 0 != fDesc.fSampleCnt;
- }
+ bool isStencilBufferMultisampled() const { return fDesc.fSampleCnt > 0; }
/**
- * @return true if the surface is multisampled in the stencil buffer,
- * false otherwise
+ * For our purposes, "Mixed Sampled" means the stencil buffer is multisampled but the color
+ * buffer is not.
*/
- bool isStencilBufferMultisampled() const {
- return 0 != fDesc.fSampleCnt;
- }
+ bool isMixedSampled() const { return fFlags & Flags::kMixedSampled; }
/**
- * @return the number of color samples-per-pixel, or zero if non-MSAA or
- * multisampled in the stencil buffer only.
+ * "Unified Sampled" means the stencil and color buffers are both multisampled.
*/
- int numColorSamples() const {
- if (fSampleConfig == kUnified_SampleConfig) {
- return fDesc.fSampleCnt;
- }
- return 0;
- }
+ bool isUnifiedMultisampled() const { return fDesc.fSampleCnt > 0 && !this->isMixedSampled(); }
/**
- * @return the number of stencil samples-per-pixel, or zero if non-MSAA.
+ * Returns the number of samples/pixel in the stencil buffer (Zero if non-MSAA).
*/
- int numStencilSamples() const {
- return fDesc.fSampleCnt;
- }
+ int numStencilSamples() const { return fDesc.fSampleCnt; }
/**
- * @return true if the surface is mixed sampled, false otherwise.
+ * Returns the number of samples/pixel in the color buffer (Zero if non-MSAA or mixed sampled).
*/
- bool hasMixedSamples() const {
- SkASSERT(kStencil_SampleConfig != fSampleConfig ||
- this->isStencilBufferMultisampled());
- return kStencil_SampleConfig == fSampleConfig;
- }
+ int numColorSamples() const { return this->isMixedSampled() ? 0 : fDesc.fSampleCnt; }
/**
* Call to indicate the multisample contents were modified such that the
@@ -156,19 +118,17 @@ public:
void setLastDrawTarget(GrDrawTarget* dt);
GrDrawTarget* getLastDrawTarget() { return fLastDrawTarget; }
- static SampleConfig ComputeSampleConfig(const GrCaps& caps, int sampleCnt);
-
protected:
- GrRenderTarget(GrGpu* gpu, const GrSurfaceDesc& desc,
- SampleConfig sampleConfig, GrStencilAttachment* stencil = nullptr)
- : INHERITED(gpu, desc)
- , fStencilAttachment(stencil)
- , fMultisampleSpecsID(0)
- , fSampleConfig(sampleConfig)
- , fLastDrawTarget(nullptr) {
- fResolveRect.setLargestInverted();
- }
+ enum class Flags {
+ kNone = 0,
+ kMixedSampled = 1 << 0,
+ kWindowRectsSupport = 1 << 1
+ };
+
+ GR_DECL_BITFIELD_CLASS_OPS_FRIENDS(Flags);
+ GrRenderTarget(GrGpu*, const GrSurfaceDesc&, Flags = Flags::kNone,
+ GrStencilAttachment* = nullptr);
~GrRenderTarget() override;
// override of GrResource
@@ -186,7 +146,7 @@ private:
GrStencilAttachment* fStencilAttachment;
uint8_t fMultisampleSpecsID;
- SampleConfig fSampleConfig;
+ Flags fFlags;
SkIRect fResolveRect;
@@ -201,5 +161,6 @@ private:
typedef GrSurface INHERITED;
};
+GR_MAKE_BITFIELD_CLASS_OPS(GrRenderTarget::Flags);
#endif
« no previous file with comments | « include/gpu/GrDrawContext.h ('k') | include/gpu/GrTypes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698