From: Dave Airlie <airl...@redhat.com> This fixes dEQP-VK.pipeline.multisample.sampled_image*
These all render to multisampled image, and then sample from it, so we must transition it correctly. Cc: "13.0" <mesa-sta...@lists.freedesktop.org> Signed-off-by: Dave Airlie <airl...@redhat.com> --- src/amd/vulkan/radv_cmd_buffer.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 3f1a6f4..64a87ac 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -2170,6 +2170,21 @@ static void radv_handle_cmask_image_transition(struct radv_cmd_buffer *cmd_buffe } } +static void radv_handle_fmask_image_transition(struct radv_cmd_buffer *cmd_buffer, + struct radv_image *image, + VkImageLayout src_layout, + VkImageLayout dst_layout, + VkImageSubresourceRange range, + VkImageAspectFlags pending_clears) +{ + /* fmask should be same conditions as cmask */ + if (radv_layout_has_cmask(image, src_layout) && + !radv_layout_has_cmask(image, dst_layout)) { + + radv_fast_clear_flush_image_inplace(cmd_buffer, image); + } +} + void radv_initialize_dcc(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image, uint32_t value) { @@ -2217,6 +2232,10 @@ static void radv_handle_image_transition(struct radv_cmd_buffer *cmd_buffer, radv_handle_cmask_image_transition(cmd_buffer, image, src_layout, dst_layout, range, pending_clears); + if (image->fmask.size) + radv_handle_fmask_image_transition(cmd_buffer, image, src_layout, + dst_layout, range, pending_clears); + if (image->surface.dcc_size) radv_handle_dcc_image_transition(cmd_buffer, image, src_layout, dst_layout, range, pending_clears); -- 2.5.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev