vulkan: Blacklist MSAA path renderer on Qualcomm drivers
Bug: skia:7758 Change-Id: I96b5c259352949d67f5e0263a7164cdce54b3269 Reviewed-on: https://skia-review.googlesource.com/117152 Reviewed-by: Derek Sollenberger <djsollen@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
This commit is contained in:
parent
9329689045
commit
0361657402
@ -73,6 +73,8 @@ public:
|
||||
|
||||
bool blacklistCoverageCounting() const { return fBlacklistCoverageCounting; }
|
||||
|
||||
bool blacklistMSAAPathRenderer() const { return fBlacklistMSAAPathRenderer; }
|
||||
|
||||
bool avoidStencilBuffers() const { return fAvoidStencilBuffers; }
|
||||
|
||||
/**
|
||||
@ -292,6 +294,7 @@ protected:
|
||||
|
||||
// Driver workaround
|
||||
bool fBlacklistCoverageCounting : 1;
|
||||
bool fBlacklistMSAAPathRenderer : 1;
|
||||
bool fAvoidStencilBuffers : 1;
|
||||
|
||||
// ANGLE performance workaround
|
||||
|
@ -91,6 +91,7 @@ GrCaps::GrCaps(const GrContextOptions& options) {
|
||||
#endif
|
||||
fBufferMapThreshold = options.fBufferMapThreshold;
|
||||
fBlacklistCoverageCounting = false;
|
||||
fBlacklistMSAAPathRenderer = false;
|
||||
fAvoidStencilBuffers = false;
|
||||
|
||||
fPreferVRAMUseOverFlushes = true;
|
||||
@ -102,6 +103,7 @@ void GrCaps::applyOptionsOverrides(const GrContextOptions& options) {
|
||||
// We always blacklist coverage counting on Vulkan currently. TODO: Either stop doing that
|
||||
// or disambiguate blacklisting from incomplete implementation.
|
||||
// SkASSERT(!fBlacklistCoverageCounting);
|
||||
SkASSERT(!fBlacklistMSAAPathRenderer);
|
||||
SkASSERT(!fAvoidStencilBuffers);
|
||||
SkASSERT(!fAdvBlendEqBlacklist);
|
||||
}
|
||||
@ -173,6 +175,7 @@ void GrCaps::dumpJSON(SkJSONWriter* writer) const {
|
||||
|
||||
writer->appendBool("Blacklist Coverage Counting Path Renderer [workaround]",
|
||||
fBlacklistCoverageCounting);
|
||||
writer->appendBool("Blacklist MSAA Path Renderer [workaround]", fBlacklistMSAAPathRenderer);
|
||||
writer->appendBool("Prefer VRAM Use over flushes [workaround]", fPreferVRAMUseOverFlushes);
|
||||
writer->appendBool("Avoid stencil buffers [workaround]", fAvoidStencilBuffers);
|
||||
|
||||
|
@ -41,7 +41,7 @@ GrPathRendererChain::GrPathRendererChain(GrContext* context, const Options& opti
|
||||
}
|
||||
#ifndef SK_BUILD_FOR_ANDROID_FRAMEWORK
|
||||
if (options.fGpuPathRenderers & GpuPathRenderers::kMSAA) {
|
||||
if (caps.sampleShadingSupport()) {
|
||||
if (caps.sampleShadingSupport() && !caps.blacklistMSAAPathRenderer()) {
|
||||
fChain.push_back(sk_make_sp<GrMSAAPathRenderer>());
|
||||
}
|
||||
}
|
||||
|
@ -131,6 +131,10 @@ void GrVkCaps::applyDriverCorrectnessWorkarounds(const VkPhysicalDevicePropertie
|
||||
fNewCBOnPipelineChange = true;
|
||||
}
|
||||
|
||||
if (kIntel_VkVendor == properties.vendorID) {
|
||||
fCanUseWholeSizeOnFlushMappedMemory = false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// GrCaps workarounds
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
@ -144,8 +148,14 @@ void GrVkCaps::applyDriverCorrectnessWorkarounds(const VkPhysicalDevicePropertie
|
||||
fMaxVertexAttributes = SkTMin(fMaxVertexAttributes, 32);
|
||||
}
|
||||
|
||||
if (kIntel_VkVendor == properties.vendorID) {
|
||||
fCanUseWholeSizeOnFlushMappedMemory = false;
|
||||
if (kQualcomm_VkVendor == properties.vendorID) {
|
||||
// http://skbug.com/7758 -- the bots have a rendering issue related to the MSAA path
|
||||
// renderer. It doesn't repro locally, and there doesn't seem to be a correlation between it
|
||||
// and the driver version. Blacklisting across-the-board for now.
|
||||
//
|
||||
// properties.driverVersion=93622907, Android 8.1 -> no repro
|
||||
// properties.driverVersion=159578699, Android 8.0 -> repros
|
||||
fBlacklistMSAAPathRenderer = true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
Loading…
Reference in New Issue
Block a user