Add GrCaps::msaaResolvesAutomatically
Bug: skia:
Change-Id: Iecf29be73d66b06f5b5c6dcb51e2f41b7d35ba1b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233307
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/GrCaps.cpp b/src/gpu/GrCaps.cpp
index 2ccfdfd..107fe30 100644
--- a/src/gpu/GrCaps.cpp
+++ b/src/gpu/GrCaps.cpp
@@ -28,6 +28,7 @@
fMultisampleDisableSupport = false;
fInstanceAttribSupport = false;
fMixedSamplesSupport = false;
+ fMSAAResolvesAutomatically = false;
fUsePrimitiveRestart = false;
fPreferClientSideDynamicBuffers = false;
fPreferFullscreenClears = false;
@@ -177,6 +178,7 @@
writer->appendBool("Multisample disable support", fMultisampleDisableSupport);
writer->appendBool("Instance Attrib Support", fInstanceAttribSupport);
writer->appendBool("Mixed Samples Support", fMixedSamplesSupport);
+ writer->appendBool("MSAA Resolves Automatically", fMSAAResolvesAutomatically);
writer->appendBool("Use primitive restart", fUsePrimitiveRestart);
writer->appendBool("Prefer client-side dynamic buffers", fPreferClientSideDynamicBuffers);
writer->appendBool("Prefer fullscreen clears", fPreferFullscreenClears);
diff --git a/src/gpu/GrCaps.h b/src/gpu/GrCaps.h
index 5183a55..a796ff2 100644
--- a/src/gpu/GrCaps.h
+++ b/src/gpu/GrCaps.h
@@ -57,6 +57,10 @@
bool multisampleDisableSupport() const { return fMultisampleDisableSupport; }
bool instanceAttribSupport() const { return fInstanceAttribSupport; }
bool mixedSamplesSupport() const { return fMixedSamplesSupport; }
+ // This flag indicates that we never have to resolve MSAA. In practice, it means that we have
+ // an MSAA-render-to-texture extension: Any render target we create internally will use the
+ // extension, and any wrapped render target is the client's responsibility.
+ bool msaaResolvesAutomatically() const { return fMSAAResolvesAutomatically; }
bool halfFloatVertexAttributeSupport() const { return fHalfFloatVertexAttributeSupport; }
// Primitive restart functionality is core in ES 3.0, but using it will cause slowdowns on some
@@ -475,6 +479,7 @@
bool fMultisampleDisableSupport : 1;
bool fInstanceAttribSupport : 1;
bool fMixedSamplesSupport : 1;
+ bool fMSAAResolvesAutomatically : 1;
bool fUsePrimitiveRestart : 1;
bool fPreferClientSideDynamicBuffers : 1;
bool fPreferFullscreenClears : 1;
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index 5f02c43..19086c1 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -1004,8 +1004,10 @@
// ES3 driver bugs on at least one device with a tiled GPU (N10).
if (ctxInfo.hasExtension("GL_EXT_multisampled_render_to_texture")) {
fMSFBOType = kES_EXT_MsToTexture_MSFBOType;
+ fMSAAResolvesAutomatically = true;
} else if (ctxInfo.hasExtension("GL_IMG_multisampled_render_to_texture")) {
fMSFBOType = kES_IMG_MsToTexture_MSFBOType;
+ fMSAAResolvesAutomatically = true;
} else if (ctxInfo.version() >= GR_GL_VER(3,0)) {
fMSFBOType = kStandard_MSFBOType;
} else if (ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_multisample")) {