radv: Use ac_surface to determine fmask enable.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sun, 24 May 2020 09:57:09 +0000 (11:57 +0200)
committerMarge Bot <eric+marge@anholt.net>
Fri, 5 Jun 2020 13:27:55 +0000 (13:27 +0000)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5194>

src/amd/vulkan/radv_image.c

index e28523ddb702a39f7d042369ac2acc42258414bd..3f9395774bd4d3461e7b05872df4e2edf06f803a 100644 (file)
@@ -230,6 +230,13 @@ radv_use_dcc_for_image(struct radv_device *device,
        return true;
 }
 
+static inline bool
+radv_use_fmask_for_image(const struct radv_image *image)
+{
+       return image->info.samples > 1 &&
+              image->usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+}
+
 static bool
 radv_use_tc_compat_cmask_for_image(struct radv_device *device,
                                   struct radv_image *image)
@@ -458,6 +465,9 @@ radv_init_surface(struct radv_device *device,
        if (!radv_use_dcc_for_image(device, image, pCreateInfo, image_format))
                surface->flags |= RADEON_SURF_DISABLE_DCC;
 
+       if (!radv_use_fmask_for_image(image))
+               surface->flags |= RADEON_SURF_NO_FMASK;
+
        return 0;
 }
 
@@ -1313,13 +1323,6 @@ radv_image_can_enable_cmask(struct radv_image *image)
               !image->planes[0].surface.is_linear;
 }
 
-static inline bool
-radv_image_can_enable_fmask(struct radv_image *image)
-{
-       return image->info.samples > 1 &&
-              image->usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
-}
-
 static inline bool
 radv_image_can_enable_htile(struct radv_image *image)
 {
@@ -1400,7 +1403,7 @@ radv_image_create_layout(struct radv_device *device,
                }
 
                /* Try to enable FMASK for multisampled images. */
-               if (radv_image_can_enable_fmask(image)) {
+               if (image->planes[0].surface.fmask_size) {
                        radv_image_alloc_fmask(device, image);
 
                        if (radv_use_tc_compat_cmask_for_image(device, image))