Fix #135516: Vulkan: Shader output viewport broken on RDNA2
When using the official RDNA2 driver +vulkan we see the same issue we as #123787. Adding the same workaround to vulkan as well. Pull Request: https://projects.blender.org/blender/blender/pulls/135565
This commit is contained in:
@@ -502,8 +502,8 @@ static void detect_workarounds()
|
||||
}
|
||||
}
|
||||
|
||||
/* Multi viewport creates small triangle discard on RDNA2 GPUs with official drivers.
|
||||
* Using geometry shader workaround fixes the issue. */
|
||||
/* Fix #123787: Multi viewport creates small triangle discard on RDNA2 GPUs with official
|
||||
* drivers. Using geometry shader workaround fixes the issue. */
|
||||
if (GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_ANY, GPU_DRIVER_OFFICIAL)) {
|
||||
if (strstr(renderer, "RX 6300") || strstr(renderer, "RX 6400") ||
|
||||
strstr(renderer, "RX 6450") || strstr(renderer, "RX 6500") ||
|
||||
|
||||
@@ -425,6 +425,25 @@ void VKBackend::detect_workarounds(VKDevice &device)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Fix #123787: Multi viewport creates small triangle discard on RDNA2 GPUs with official
|
||||
* drivers. Using geometry shader workaround fixes the issue. */
|
||||
if (GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_ANY, GPU_DRIVER_OFFICIAL)) {
|
||||
const char *renderer = device.physical_device_properties_get().deviceName;
|
||||
if (strstr(renderer, "RX 6300") || strstr(renderer, "RX 6400") ||
|
||||
strstr(renderer, "RX 6450") || strstr(renderer, "RX 6500") ||
|
||||
strstr(renderer, "RX 6550") || strstr(renderer, "RX 6600") ||
|
||||
strstr(renderer, "RX 6650") || strstr(renderer, "RX 6700") ||
|
||||
strstr(renderer, "RX 6750") || strstr(renderer, "RX 6800") ||
|
||||
strstr(renderer, "RX 6850") || strstr(renderer, "RX 6900") ||
|
||||
strstr(renderer, "RX 6950") || strstr(renderer, "W6300") || strstr(renderer, "W6400") ||
|
||||
strstr(renderer, "W6500") || strstr(renderer, "W6600") ||
|
||||
/* NOTE: `W6700` was never released, so it's not in this list. */
|
||||
strstr(renderer, "W6800") || strstr(renderer, "W6900"))
|
||||
{
|
||||
workarounds.shader_output_viewport_index = true;
|
||||
}
|
||||
}
|
||||
|
||||
device.workarounds_ = workarounds;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user