aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2020-01-15 16:58:21 -0800
committerMarge Bot <[email protected]>2020-01-21 19:29:59 +0000
commitd1166a3b3a96845ac2173ef56caee55c9a1ca849 (patch)
tree0cec248ee9054f4f7f3e3acc3696ee0fe47164e4
parente5ce365cdea5f01385aaf56d98618624c67bfa5f (diff)
turnip: Disable UBWC on images used as storage images.
The closed GL driver doesn't use UBWC on any storage images. It does tile mostly (skipping tiling on writeonly images, it seems), but for freedreno we've been enabling tiling in all cases and it's fine. We do need to disable UBWC, as tests fail otherwise and just plugging in the equivalent UBWC regs like we were setting up a texture isn't enough. Fixes dEQP-VK.image.atomic_operations.* Reviewed-by: Jonathan Marek <[email protected]> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3433> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3433>
-rw-r--r--src/freedreno/vulkan/tu_image.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/freedreno/vulkan/tu_image.c b/src/freedreno/vulkan/tu_image.c
index 978b1b18453..f596feb9855 100644
--- a/src/freedreno/vulkan/tu_image.c
+++ b/src/freedreno/vulkan/tu_image.c
@@ -126,6 +126,18 @@ tu_image_create(VkDevice _device,
ubwc_enabled = false;
}
+ /* Disable UBWC for storage images.
+ *
+ * The closed GL driver skips UBWC for storage images (and additionally
+ * uses linear for writeonly images). We seem to have image tiling working
+ * in freedreno in general, so turnip matches that. freedreno also enables
+ * UBWC on images, but it's not really tested due to the lack of
+ * UBWC-enabled mipmaps in freedreno currently. Just match the closed GL
+ * behavior of no UBWC.
+ */
+ if (image->usage & VK_IMAGE_USAGE_STORAGE_BIT)
+ ubwc_enabled = false;
+
uint32_t ubwc_blockwidth, ubwc_blockheight;
fdl6_get_ubwc_blockwidth(&image->layout,
&ubwc_blockwidth, &ubwc_blockheight);