Mesa (master): radv: initialize with expanded cmask if the destination layout needs it
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Sep 17 10:40:15 UTC 2020
Module: Mesa
Branch: master
Commit: 85cc2950a045ca0fe153498fb7d48322d2906482
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=85cc2950a045ca0fe153498fb7d48322d2906482
Author: Rhys Perry <pendingchaos02 at gmail.com>
Date: Tue Sep 15 19:55:47 2020 +0100
radv: initialize with expanded cmask if the destination layout needs it
If radv_layout_can_fast_clear() is false, 028C70_COMPRESSION is unset when
the image is rendered to and CMASK isn't updated. This appears to cause
FMASK to be ignored and the 0th sample to always be used.
Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3449
Fixes: 7b21ce401f7e81deca5ab6a4353b1369d059bcee
('radv: disable FMASK compression when drawing with GENERAL layout')
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6745>
---
src/amd/vulkan/radv_cmd_buffer.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 1b788e8cb6b..2b99a937bb2 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -6037,8 +6037,16 @@ static void radv_init_color_image_metadata(struct radv_cmd_buffer *cmd_buffer,
if (radv_image_has_cmask(image)) {
uint32_t value = 0xffffffffu; /* Fully expanded mode. */
- /* TODO: clarify this. */
- if (radv_image_has_fmask(image)) {
+ /* TODO: clarify why 0xccccccccu is used. */
+
+ /* If CMASK isn't updated with the new layout, we should use the
+ * fully expanded mode so that the image is read correctly if
+ * CMASK is used (such as when transitioning to a compressed
+ * layout).
+ */
+ if (radv_image_has_fmask(image) &&
+ radv_layout_can_fast_clear(image, dst_layout,
+ dst_render_loop, dst_queue_mask)) {
value = 0xccccccccu;
}
More information about the mesa-commit
mailing list