summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2017-11-29 14:48:32 +0100
committerSamuel Pitoiset <[email protected]>2017-11-30 21:38:30 +0100
commitff0f17da1446e7aa965e06c04a6ad5a55d95463d (patch)
tree9f55df269d62229335b9a5353e982006b0aae192
parentf5955c6bf869e323373c59c2687b463b7e16bdf4 (diff)
radv: do not allocate CMASK or DCC for small surfaces
The idea is ported from RadeonSI, but using 512x512 instead of 256x256 seems slightly better. This improves dota2 performance by +2%. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Dave Airlie <[email protected]> Tested-by: Dieter Nützel <[email protected]>
-rw-r--r--src/amd/vulkan/radv_image.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c
index b145e81f826..ee03a1dc6a9 100644
--- a/src/amd/vulkan/radv_image.c
+++ b/src/amd/vulkan/radv_image.c
@@ -806,6 +806,16 @@ radv_image_alloc_htile(struct radv_image *image)
static inline bool
radv_image_can_enable_dcc_or_cmask(struct radv_image *image)
{
+ if (image->info.samples <= 1 &&
+ image->info.width <= 512 && image->info.height <= 512) {
+ /* Do not enable CMASK or DCC for small surfaces where the cost
+ * of the eliminate pass can be higher than the benefit of fast
+ * clear. RadeonSI does this, but the image threshold is
+ * different.
+ */
+ return false;
+ }
+
return image->usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT &&
(image->exclusive || image->queue_family_mask == 1);
}