radv: select the pipeline outside of the loop when decompressing htile
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 3 Oct 2017 09:08:03 +0000 (11:08 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 6 Oct 2017 07:49:05 +0000 (09:49 +0200)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_meta_decompress.c

index f4ed63f68be6e7c165544414efbfe03bf9b9b944..83885f73f87a3e7a47ba1a91a825173b761e4c21 100644 (file)
@@ -311,6 +311,7 @@ static void radv_process_depth_image_inplace(struct radv_cmd_buffer *cmd_buffer,
        uint32_t samples = image->info.samples;
        uint32_t samples_log2 = ffs(samples) - 1;
        struct radv_meta_state *meta_state = &cmd_buffer->device->meta_state;
+       VkPipeline pipeline_h;
 
        if (!image->surface.htile_size)
                return;
@@ -318,6 +319,17 @@ static void radv_process_depth_image_inplace(struct radv_cmd_buffer *cmd_buffer,
 
        radv_meta_save_graphics_reset_vport_scissor_novertex(&saved_state, cmd_buffer);
 
+       switch (op) {
+       case DEPTH_DECOMPRESS:
+               pipeline_h = meta_state->depth_decomp[samples_log2].decompress_pipeline;
+               break;
+       case DEPTH_RESUMMARIZE:
+               pipeline_h = meta_state->depth_decomp[samples_log2].resummarize_pipeline;
+               break;
+       default:
+               unreachable("unknown operation");
+       }
+
        for (uint32_t layer = 0; layer < radv_get_layerCount(image, subresourceRange); layer++) {
                struct radv_image_view iview;
 
@@ -372,18 +384,6 @@ static void radv_process_depth_image_inplace(struct radv_cmd_buffer *cmd_buffer,
                                           },
                                           VK_SUBPASS_CONTENTS_INLINE);
 
-               VkPipeline pipeline_h;
-               switch (op) {
-               case DEPTH_DECOMPRESS:
-                       pipeline_h = meta_state->depth_decomp[samples_log2].decompress_pipeline;
-                       break;
-               case DEPTH_RESUMMARIZE:
-                       pipeline_h = meta_state->depth_decomp[samples_log2].resummarize_pipeline;
-                       break;
-               default:
-                       unreachable("unknown operation");
-               }
-
                emit_depth_decomp(cmd_buffer, &(VkExtent2D){width, height}, pipeline_h);
                radv_CmdEndRenderPass(cmd_buffer_h);