radv: add support for VK_EXT_conditional_rendering
[mesa.git] / src / amd / vulkan / radv_meta_blit.c
index a6ee0cb7e9337925b5e2503ef6c6b1790dbffa95..67c26aabdb3507bf96b5d052ffaff287b817f2f5 100644 (file)
@@ -520,6 +520,7 @@ void radv_CmdBlitImage(
        RADV_FROM_HANDLE(radv_image, src_image, srcImage);
        RADV_FROM_HANDLE(radv_image, dest_image, destImage);
        struct radv_meta_saved_state saved_state;
+       bool old_predicating;
 
        /* From the Vulkan 1.0 spec:
         *
@@ -534,6 +535,12 @@ void radv_CmdBlitImage(
                       RADV_META_SAVE_CONSTANTS |
                       RADV_META_SAVE_DESCRIPTORS);
 
+       /* VK_EXT_conditional_rendering says that blit commands should not be
+        * affected by conditional rendering.
+        */
+       old_predicating = cmd_buffer->state.predicating;
+       cmd_buffer->state.predicating = false;
+
        for (unsigned r = 0; r < regionCount; r++) {
                const VkImageSubresourceLayers *src_res = &pRegions[r].srcSubresource;
                const VkImageSubresourceLayers *dst_res = &pRegions[r].dstSubresource;
@@ -648,6 +655,9 @@ void radv_CmdBlitImage(
                }
        }
 
+       /* Restore conditional rendering. */
+       cmd_buffer->state.predicating = old_predicating;
+
        radv_meta_restore(&saved_state, cmd_buffer);
 }