radv: Possible on-demand compilation fix.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Wed, 15 Aug 2018 14:00:02 +0000 (16:00 +0200)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Thu, 16 Aug 2018 09:13:19 +0000 (11:13 +0200)
Seems that in a single case we use the renderpass before checking
the pipeline, so check the renderpass before we use it.

Fixes: fbcd1673144 "radv: Add on-demand compilation of built-in shaders."
Tested-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/amd/vulkan/radv_meta_resolve_fs.c

index 21a5922f5df438c17eefe7cff5bfb42449b38b5b..af4a6fe7a66be032d806d0c8af96f3eb6092f11a 100644 (file)
@@ -463,6 +463,14 @@ void radv_meta_resolve_fragment_image(struct radv_cmd_buffer *cmd_buffer,
        radv_decompress_resolve_src(cmd_buffer, src_image, src_image_layout,
                                    region_count, regions);
 
+       if (!device->meta_state.resolve_fragment.rc[samples_log2].render_pass[fs_key][dst_layout]) {
+               VkResult ret = create_resolve_pipeline(device, samples_log2, radv_fs_key_format_exemplars[fs_key]);
+               if (ret != VK_SUCCESS) {
+                       cmd_buffer->record_result = ret;
+                       return;
+               }
+       }
+
        rp = device->meta_state.resolve_fragment.rc[samples_log2].render_pass[fs_key][dst_layout];
 
        radv_meta_save(&saved_state, cmd_buffer,