Block MSAA CCPR on NVIDIA without mixed samples
We are still seeing problems on the GTX660. It's not crashing, but still is producing incorrect renderings. For now let's just block MSAA CCPR completely on non-mixed-sampled NVIDIA. Change-Id: I505281cc0731f3c106cbb4c685d41f801955d648 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255416 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
This commit is contained in:
parent
e7b8e4144f
commit
c6a278aa71
@ -385,14 +385,13 @@ void GrVkCaps::init(const GrContextOptions& contextOptions, const GrVkInterface*
|
||||
this->initStencilFormat(vkInterface, physDev);
|
||||
|
||||
if (!contextOptions.fDisableDriverCorrectnessWorkarounds) {
|
||||
this->applyDriverCorrectnessWorkarounds(properties, extensions);
|
||||
this->applyDriverCorrectnessWorkarounds(properties);
|
||||
}
|
||||
|
||||
this->finishInitialization(contextOptions);
|
||||
}
|
||||
|
||||
void GrVkCaps::applyDriverCorrectnessWorkarounds(const VkPhysicalDeviceProperties& properties,
|
||||
const GrVkExtensions& extensions) {
|
||||
void GrVkCaps::applyDriverCorrectnessWorkarounds(const VkPhysicalDeviceProperties& properties) {
|
||||
if (kQualcomm_VkVendor == properties.vendorID) {
|
||||
fMustDoCopiesFromOrigin = true;
|
||||
// Transfer doesn't support this workaround.
|
||||
@ -442,13 +441,16 @@ void GrVkCaps::applyDriverCorrectnessWorkarounds(const VkPhysicalDevicePropertie
|
||||
// GrCaps workarounds
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// The GTX660 bot experiences crashes when running msaa ccpr with 8k textures.
|
||||
// (We get VK_ERROR_DEVICE_LOST when calling vkGetFenceStatus.)
|
||||
// ((Checking for mixed samples is an easy way to detect pre-maxwell architectures.))
|
||||
bool isNVIDIAPreMaxwell = (kNvidia_VkVendor == properties.vendorID) &&
|
||||
!extensions.hasExtension(VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME, 1);
|
||||
// The GTX660 bot experiences crashes and incorrect rendering with MSAA CCPR. Block this path
|
||||
// renderer on non-mixed-sampled NVIDIA.
|
||||
// NOTE: We may lose mixed samples support later if the context options suppress dual source
|
||||
// blending, but that shouldn't be an issue because MSAA CCPR seems to work fine (even without
|
||||
// mixed samples) on later NVIDIA hardware where mixed samples would be supported.
|
||||
if ((kNvidia_VkVendor == properties.vendorID) && !fMixedSamplesSupport) {
|
||||
fDriverBlacklistMSAACCPR = true;
|
||||
}
|
||||
|
||||
if (isNVIDIAPreMaxwell || fDriverBugWorkarounds.max_texture_size_limit_4096) {
|
||||
if (fDriverBugWorkarounds.max_texture_size_limit_4096) {
|
||||
fMaxTextureSize = SkTMin(fMaxTextureSize, 4096);
|
||||
fMaxRenderTargetSize = SkTMin(fMaxRenderTargetSize, fMaxTextureSize);
|
||||
fMaxPreferredRenderTargetSize = SkTMin(fMaxPreferredRenderTargetSize, fMaxRenderTargetSize);
|
||||
|
@ -216,8 +216,7 @@ private:
|
||||
void initFormatTable(const GrVkInterface*, VkPhysicalDevice, const VkPhysicalDeviceProperties&);
|
||||
void initStencilFormat(const GrVkInterface* iface, VkPhysicalDevice physDev);
|
||||
|
||||
void applyDriverCorrectnessWorkarounds(const VkPhysicalDeviceProperties&,
|
||||
const GrVkExtensions&);
|
||||
void applyDriverCorrectnessWorkarounds(const VkPhysicalDeviceProperties&);
|
||||
|
||||
bool onSurfaceSupportsWritePixels(const GrSurface*) const override;
|
||||
bool onCanCopySurface(const GrSurfaceProxy* dst, const GrSurfaceProxy* src,
|
||||
|
Loading…
Reference in New Issue
Block a user