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

Unified Diff: src/gpu/GrRenderTargetPriv.h

Issue 1717393002: Add "sample locations" feature to GrProcessor (Closed) Base URL: https://skia.googlesource.com/skia.git@upload_getmultisamp
Patch Set: move into GrProcessor Created 4 years, 10 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
Index: src/gpu/GrRenderTargetPriv.h
diff --git a/src/gpu/GrRenderTargetPriv.h b/src/gpu/GrRenderTargetPriv.h
index f4931db1db7475feab36d24f163aeec8b4bc0f7e..2d2fe94a294732c3b5b20a83594a3c2e0b2bca24 100644
--- a/src/gpu/GrRenderTargetPriv.h
+++ b/src/gpu/GrRenderTargetPriv.h
@@ -10,11 +10,15 @@
#include "GrRenderTarget.h"
+class GrStencilSettings;
+
/** Class that adds methods to GrRenderTarget that are only intended for use internal to Skia.
This class is purely a privileged window into GrRenderTarget. It should never have additional
data members or virtual methods. */
class GrRenderTargetPriv {
public:
+ typedef GrRenderTarget::MultisampleSpecs MultisampleSpecs;
+
/**
* GrStencilAttachment is not part of the public API.
*/
@@ -27,6 +31,37 @@ public:
*/
bool attachStencilAttachment(GrStencilAttachment* stencil);
+ /**
+ * Returns the actual number of samples the GPU will run when drawing to this render target with
+ * HW antialiasing and the provided stencil settings. NOTE: this can be greater than the sample
+ * count in the render target's surface descriptor.
+ */
+ int getEffectiveSampleCount(const GrStencilSettings&) const;
+
+ /**
+ * Returns a nonzero unique ID that identifies the sample pattern the GPU will use when drawing
+ * to this render target with HW antialiasing and the provided stencil settings.
+ *
+ * Requires support for sample locations.
+ */
+ uint16_t getSamplePatternID(const GrStencilSettings&) const;
+
+ /**
+ * Returns the sample locations the GPU will use when drawing to this render target with HW
+ * antialiasing and the provided stencil settings. The sample locations are stored in device
+ * space, with the center of the pixel at [0.5, 0.5].
+ *
+ * Requires support for sample locations.
+ */
+ const SkPoint* getSampleLocations(const GrStencilSettings&) const;
+
+ /**
+ * Used by GrGpu to cache the render target's multisample info.
+ */
+ SkAutoTDelete<MultisampleSpecs>* accessMultisampleSpecs() {
+ return &fRenderTarget->fMultisampleSpecs;
+ }
+
private:
explicit GrRenderTargetPriv(GrRenderTarget* renderTarget) : fRenderTarget(renderTarget) {}
GrRenderTargetPriv(const GrRenderTargetPriv&) {} // unimpl

Powered by Google App Engine
This is Rietveld 408576698