radv: Add nodisplaydcc option.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sun, 28 Feb 2021 01:59:25 +0000 (02:59 +0100)
committerMarge Bot <eric+marge@anholt.net>
Mon, 1 Mar 2021 14:42:41 +0000 (14:42 +0000)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9318>

docs/envvars.rst
src/amd/vulkan/radv_debug.h
src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_formats.c
src/amd/vulkan/radv_image.c

index 09621c2..28ef199 100644 (file)
@@ -579,6 +579,8 @@ RADV driver environment variables
       disable compute queue
    ``nodcc``
       disable Delta Color Compression (DCC) on images
+   ``nodisplaydcc``
+      disable Delta Color Compression (DCC) on displayable images
    ``nodynamicbounds``
       do not check OOB access for dynamic descriptors
    ``nofastclears``
index 735064a..e888cad 100644 (file)
@@ -60,6 +60,7 @@ enum {
        RADV_DEBUG_IMG               = 1ull << 29,
        RADV_DEBUG_NO_UMR            = 1ull << 30,
        RADV_DEBUG_INVARIANT_GEOM    = 1ull << 31,
+       RADV_DEBUG_NO_DISPLAY_DCC    = 1ull << 32,
 };
 
 enum {
index ce492a0..a22352b 100644 (file)
@@ -796,6 +796,7 @@ static const struct debug_control radv_debug_options[] = {
        {"img", RADV_DEBUG_IMG},
        {"noumr", RADV_DEBUG_NO_UMR},
        {"invariantgeom", RADV_DEBUG_INVARIANT_GEOM},
+       {"nodisplaydcc", RADV_DEBUG_NO_DISPLAY_DCC},
        {NULL, 0}
 };
 
index adcbc3c..4161c6b 100644 (file)
@@ -1152,7 +1152,7 @@ radv_get_modifier_flags(struct radv_physical_device *dev,
        if (ac_modifier_has_dcc(modifier)) {
                features &= ~VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
 
-               if (dev->instance->debug_flags & RADV_DEBUG_NO_DCC)
+               if (dev->instance->debug_flags & (RADV_DEBUG_NO_DCC | RADV_DEBUG_NO_DISPLAY_DCC))
                        return 0;
        }
 
index 0aeefbe..6b6cad5 100644 (file)
@@ -424,6 +424,8 @@ radv_patch_image_from_extra_info(struct radv_device *device,
 
                if (radv_surface_has_scanout(device, create_info)) {
                        image->planes[plane].surface.flags |= RADEON_SURF_SCANOUT;
+                       if (device->instance->debug_flags & RADV_DEBUG_NO_DISPLAY_DCC)
+                               image->planes[plane].surface.flags |= RADEON_SURF_DISABLE_DCC;
 
                        image->info.surf_index = NULL;
                }