radv: disable 1d/2d linear optimisation on gfx9.
authorDave Airlie <airlied@redhat.com>
Tue, 22 Aug 2017 02:47:09 +0000 (12:47 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 6 Sep 2017 02:06:08 +0000 (03:06 +0100)
This causes hangs in some of the CTS tests with a 2d
1536x2 texture.

This fixes hangs with:
dEQP-VK.pipeline.image.suballocation.sampling_type.combined.iew_type.1d_aray.format.r4g4b4a4_unorm_pack16.count_1.size.512x1_array_of_3
if we reenable it, make sure these don't regress.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Cc: "17.2" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_image.c

index c9e8bb3d430122484ffae2e1de1614eab1ac1d8b..06b9c2f9d37f8b6734431d527bc7bf96b11edfeb 100644 (file)
@@ -35,7 +35,7 @@
 #include "util/debug.h"
 #include "util/u_atomic.h"
 static unsigned
-radv_choose_tiling(struct radv_device *Device,
+radv_choose_tiling(struct radv_device *device,
                   const struct radv_image_create_info *create_info)
 {
        const VkImageCreateInfo *pCreateInfo = create_info->vk_info;
@@ -46,14 +46,15 @@ radv_choose_tiling(struct radv_device *Device,
        }
 
        if (!vk_format_is_compressed(pCreateInfo->format) &&
-           !vk_format_is_depth_or_stencil(pCreateInfo->format)) {
+           !vk_format_is_depth_or_stencil(pCreateInfo->format)
+           && device->physical_device->rad_info.chip_class <= VI) {
+               /* this causes hangs in some VK CTS tests on GFX9. */
                /* Textures with a very small height are recommended to be linear. */
                if (pCreateInfo->imageType == VK_IMAGE_TYPE_1D ||
                    /* Only very thin and long 2D textures should benefit from
                     * linear_aligned. */
                    (pCreateInfo->extent.width > 8 && pCreateInfo->extent.height <= 2))
                        return RADEON_SURF_MODE_LINEAR_ALIGNED;
-
        }
 
        /* MSAA resources must be 2D tiled. */