From b644c7ca9f3143c400f20abfcd79c5877a880bf5 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 8 Jun 2022 06:11:19 +1000 Subject: [PATCH] radv: move to using common record_result. v2 (Jason Ekstrand): - Handle rename to vk_command_buffer_set_error - Add more instances, especially in device generated commands Reviewed-by: Bas Nieuwenhuizen Reviewed-by: Jason Ekstrand Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 41 +++++++++++-------------- src/amd/vulkan/radv_device_generated_commands.c | 4 +-- src/amd/vulkan/radv_meta_blit.c | 2 +- src/amd/vulkan/radv_meta_blit2d.c | 6 ++-- src/amd/vulkan/radv_meta_clear.c | 4 +-- src/amd/vulkan/radv_meta_copy_vrs_htile.c | 2 +- src/amd/vulkan/radv_meta_dcc_retile.c | 2 +- src/amd/vulkan/radv_meta_decompress.c | 4 +-- src/amd/vulkan/radv_meta_etc_decode.c | 2 +- src/amd/vulkan/radv_meta_fast_clear.c | 4 +-- src/amd/vulkan/radv_meta_resolve.c | 4 +-- src/amd/vulkan/radv_meta_resolve_cs.c | 4 +-- src/amd/vulkan/radv_meta_resolve_fs.c | 4 +-- src/amd/vulkan/radv_private.h | 2 -- src/amd/vulkan/radv_query.c | 2 +- 15 files changed, 40 insertions(+), 47 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 9ca620a..6842ed6 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -432,8 +432,6 @@ radv_reset_cmd_buffer(struct radv_cmd_buffer *cmd_buffer) radv_cs_add_buffer(cmd_buffer->device->ws, cmd_buffer->cs, cmd_buffer->upload.upload_bo); cmd_buffer->upload.offset = 0; - cmd_buffer->record_result = VK_SUCCESS; - memset(cmd_buffer->vertex_binding_buffers, 0, sizeof(struct radv_buffer *) * cmd_buffer->used_vertex_bindings); cmd_buffer->used_vertex_bindings = 0; @@ -447,7 +445,7 @@ radv_reset_cmd_buffer(struct radv_cmd_buffer *cmd_buffer) uint32_t pred_value = 0; uint32_t pred_offset; if (!radv_cmd_buffer_upload_data(cmd_buffer, 4, &pred_value, &pred_offset)) - cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY; + vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); cmd_buffer->mec_inv_pred_emitted = false; cmd_buffer->mec_inv_pred_va = radv_buffer_get_va(cmd_buffer->upload.upload_bo) + pred_offset; @@ -480,7 +478,7 @@ radv_reset_cmd_buffer(struct radv_cmd_buffer *cmd_buffer) cmd_buffer->status = RADV_CMD_BUFFER_STATUS_INITIAL; - return cmd_buffer->record_result; + return vk_command_buffer_get_record_result(&cmd_buffer->vk); } static bool @@ -501,7 +499,7 @@ radv_cmd_buffer_resize_upload_buf(struct radv_cmd_buffer *cmd_buffer, uint64_t m RADV_BO_PRIORITY_UPLOAD_BUFFER, 0, &bo); if (result != VK_SUCCESS) { - cmd_buffer->record_result = result; + vk_command_buffer_set_error(&cmd_buffer->vk, result); return false; } @@ -510,7 +508,7 @@ radv_cmd_buffer_resize_upload_buf(struct radv_cmd_buffer *cmd_buffer, uint64_t m upload = malloc(sizeof(*upload)); if (!upload) { - cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY; + vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); device->ws->buffer_destroy(device->ws, bo); return false; } @@ -525,7 +523,7 @@ radv_cmd_buffer_resize_upload_buf(struct radv_cmd_buffer *cmd_buffer, uint64_t m cmd_buffer->upload.map = device->ws->buffer_map(cmd_buffer->upload.upload_bo); if (!cmd_buffer->upload.map) { - cmd_buffer->record_result = VK_ERROR_OUT_OF_DEVICE_MEMORY; + vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_DEVICE_MEMORY); return false; } @@ -646,7 +644,7 @@ radv_ace_internal_sem_create(struct radv_cmd_buffer *cmd_buffer) uint64_t sem_init = 0; uint32_t va_off = 0; if (!radv_cmd_buffer_upload_data(cmd_buffer, sizeof(uint64_t), &sem_init, &va_off)) { - cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY; + vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); return 0; } @@ -702,9 +700,8 @@ radv_ace_internal_create(struct radv_cmd_buffer *cmd_buffer) struct radv_device *device = cmd_buffer->device; struct radeon_cmdbuf *ace_cs = device->ws->cs_create(device->ws, AMD_IP_COMPUTE); - if (!ace_cs) { - cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY; - } + if (!ace_cs) + vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); return ace_cs; } @@ -2587,7 +2584,7 @@ radv_cmd_buffer_get_vrs_image(struct radv_cmd_buffer *cmd_buffer) /* The global VRS state is initialized on-demand to avoid wasting VRAM. */ result = radv_device_init_vrs_state(device); if (result != VK_SUCCESS) { - cmd_buffer->record_result = result; + vk_command_buffer_set_error(&cmd_buffer->vk, result); return NULL; } } @@ -3193,7 +3190,7 @@ radv_emit_vertex_input(struct radv_cmd_buffer *cmd_buffer, bool pipeline_is_dirt struct radv_shader_part *prolog = lookup_vs_prolog(cmd_buffer, vs_shader, &nontrivial_divisors); if (!prolog) { - cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY; + vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); return; } emit_prolog_regs(cmd_buffer, vs_shader, prolog, pipeline_is_dirty); @@ -4573,8 +4570,7 @@ radv_cmd_state_setup_sample_locations(struct radv_cmd_buffer *cmd_buffer, sample_locs->postSubpassSampleLocationsCount * sizeof(state->subpass_sample_locs[0]), 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); if (state->subpass_sample_locs == NULL) { - cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY; - return cmd_buffer->record_result; + return vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); } state->num_subpass_sample_locs = sample_locs->postSubpassSampleLocationsCount; @@ -4618,8 +4614,7 @@ radv_cmd_state_setup_attachments(struct radv_cmd_buffer *cmd_buffer, struct radv vk_alloc(&cmd_buffer->pool->vk.alloc, pass->attachment_count * sizeof(state->attachments[0]), 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); if (state->attachments == NULL) { - cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY; - return cmd_buffer->record_result; + return vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); } for (uint32_t i = 0; i < pass->attachment_count; ++i) { @@ -4841,7 +4836,7 @@ radv_inherit_dynamic_rendering(struct radv_cmd_buffer *cmd_buffer, result = radv_CreateRenderPass2(radv_device_to_handle(cmd_buffer->device), &rp_create_info, NULL, &rp); if (result != VK_SUCCESS) { - cmd_buffer->record_result = result; + vk_command_buffer_set_error(&cmd_buffer->vk, result); return; } @@ -5151,7 +5146,7 @@ radv_init_push_descriptor_set(struct radv_cmd_buffer *cmd_buffer, struct radv_de if (!set->header.mapped_ptr) { descriptors_state->push_set.capacity = 0; - cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY; + vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); return false; } @@ -5322,7 +5317,7 @@ radv_EndCommandBuffer(VkCommandBuffer commandBuffer) cmd_buffer->status = RADV_CMD_BUFFER_STATUS_EXECUTABLE; - return cmd_buffer->record_result; + return vk_command_buffer_get_record_result(&cmd_buffer->vk); } static void @@ -7051,7 +7046,7 @@ radv_emit_indirect_taskmesh_draw_packets(struct radv_cmd_buffer *cmd_buffer, uint32_t workaround_cond_init = 0; uint32_t workaround_cond_off; if (!radv_cmd_buffer_upload_data(cmd_buffer, 4, &workaround_cond_init, &workaround_cond_off)) - cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY; + vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); workaround_cond_va = radv_buffer_get_va(cmd_buffer->upload.upload_bo) + workaround_cond_off; @@ -8955,7 +8950,7 @@ radv_CmdBeginRendering(VkCommandBuffer commandBuffer, const VkRenderingInfo *pRe result = radv_CreateRenderPass2(radv_device_to_handle(cmd_buffer->device), &rp_create_info, NULL, &rp); if (result != VK_SUCCESS) { - cmd_buffer->record_result = result; + vk_command_buffer_set_error(&cmd_buffer->vk, result); return; } @@ -8985,7 +8980,7 @@ radv_CmdBeginRendering(VkCommandBuffer commandBuffer, const VkRenderingInfo *pRe vk_common_CreateFramebuffer(radv_device_to_handle(cmd_buffer->device), &fb_create_info, NULL, &fb); if (result != VK_SUCCESS) { radv_DestroyRenderPass(radv_device_to_handle(cmd_buffer->device), rp, NULL); - cmd_buffer->record_result = result; + vk_command_buffer_set_error(&cmd_buffer->vk, result); return; } diff --git a/src/amd/vulkan/radv_device_generated_commands.c b/src/amd/vulkan/radv_device_generated_commands.c index 8d402b3..1a4dc0a 100644 --- a/src/amd/vulkan/radv_device_generated_commands.c +++ b/src/amd/vulkan/radv_device_generated_commands.c @@ -1157,7 +1157,7 @@ radv_prepare_dgc(struct radv_cmd_buffer *cmd_buffer, void *upload_data; unsigned upload_offset; if (!radv_cmd_buffer_upload_alloc(cmd_buffer, upload_size, &upload_offset, &upload_data)) { - cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY; + vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); return; } @@ -1382,4 +1382,4 @@ radv_prepare_dgc(struct radv_cmd_buffer *cmd_buffer, cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_CS_PARTIAL_FLUSH | RADV_CMD_FLAG_INV_VCACHE | RADV_CMD_FLAG_INV_L2; -} \ No newline at end of file +} diff --git a/src/amd/vulkan/radv_meta_blit.c b/src/amd/vulkan/radv_meta_blit.c index a95466c..d689ef4 100644 --- a/src/amd/vulkan/radv_meta_blit.c +++ b/src/amd/vulkan/radv_meta_blit.c @@ -332,7 +332,7 @@ meta_emit_blit(struct radv_cmd_buffer *cmd_buffer, struct radv_image *src_image, translate_sampler_dim(src_image->vk.image_type), format, pipeline); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return; } } diff --git a/src/amd/vulkan/radv_meta_blit2d.c b/src/amd/vulkan/radv_meta_blit2d.c index 8a90bfd..2690b4a 100644 --- a/src/amd/vulkan/radv_meta_blit2d.c +++ b/src/amd/vulkan/radv_meta_blit2d.c @@ -245,7 +245,7 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer, VkResult ret = blit2d_init_color_pipeline( device, src_type, radv_fs_key_format_exemplars[fs_key], log2_samples); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); goto fail_pipeline; } } @@ -277,7 +277,7 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer, VK_NULL_HANDLE) { VkResult ret = blit2d_init_depth_only_pipeline(device, src_type, log2_samples); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); goto fail_pipeline; } } @@ -311,7 +311,7 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer, VK_NULL_HANDLE) { VkResult ret = blit2d_init_stencil_only_pipeline(device, src_type, log2_samples); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); goto fail_pipeline; } } diff --git a/src/amd/vulkan/radv_meta_clear.c b/src/amd/vulkan/radv_meta_clear.c index f9d195e..9f6b3e8 100644 --- a/src/amd/vulkan/radv_meta_clear.c +++ b/src/amd/vulkan/radv_meta_clear.c @@ -348,7 +348,7 @@ emit_color_clear(struct radv_cmd_buffer *cmd_buffer, const VkClearAttachment *cl &device->meta_state.color_clear[samples_log2][clear_att->colorAttachment] .color_pipelines[fs_key]); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return; } } @@ -552,7 +552,7 @@ pick_depthstencil_pipeline(struct radv_cmd_buffer *cmd_buffer, struct radv_meta_ VkResult ret = create_depthstencil_pipeline( cmd_buffer->device, aspects, 1u << samples_log2, index, unrestricted, pipeline); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return VK_NULL_HANDLE; } } diff --git a/src/amd/vulkan/radv_meta_copy_vrs_htile.c b/src/amd/vulkan/radv_meta_copy_vrs_htile.c index 871d1c5b..e3b45ac 100644 --- a/src/amd/vulkan/radv_meta_copy_vrs_htile.c +++ b/src/amd/vulkan/radv_meta_copy_vrs_htile.c @@ -224,7 +224,7 @@ radv_copy_vrs_htile(struct radv_cmd_buffer *cmd_buffer, struct radv_image *vrs_i VkResult ret = radv_device_init_meta_copy_vrs_htile_state(cmd_buffer->device, &dst_image->planes[0].surface); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return; } } diff --git a/src/amd/vulkan/radv_meta_dcc_retile.c b/src/amd/vulkan/radv_meta_dcc_retile.c index 1f4aca2..6811087 100644 --- a/src/amd/vulkan/radv_meta_dcc_retile.c +++ b/src/amd/vulkan/radv_meta_dcc_retile.c @@ -199,7 +199,7 @@ radv_retile_dcc(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image) VkResult ret = radv_device_init_meta_dcc_retile_state(cmd_buffer->device, &image->planes[0].surface); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return; } } diff --git a/src/amd/vulkan/radv_meta_decompress.c b/src/amd/vulkan/radv_meta_decompress.c index ea8241a..9926ada 100644 --- a/src/amd/vulkan/radv_meta_decompress.c +++ b/src/amd/vulkan/radv_meta_decompress.c @@ -369,14 +369,14 @@ radv_get_depth_pipeline(struct radv_cmd_buffer *cmd_buffer, struct radv_image *i ret = create_pipeline(cmd_buffer->device, samples, state->depth_decomp[samples_log2].p_layout, DEPTH_DECOMPRESS, &state->depth_decomp[samples_log2].decompress_pipeline); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return NULL; } ret = create_pipeline(cmd_buffer->device, samples, state->depth_decomp[samples_log2].p_layout, DEPTH_RESUMMARIZE, &state->depth_decomp[samples_log2].resummarize_pipeline); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return NULL; } } diff --git a/src/amd/vulkan/radv_meta_etc_decode.c b/src/amd/vulkan/radv_meta_etc_decode.c index 89b3b4f..b65d1ca 100644 --- a/src/amd/vulkan/radv_meta_etc_decode.c +++ b/src/amd/vulkan/radv_meta_etc_decode.c @@ -650,7 +650,7 @@ radv_get_etc_decode_pipeline(struct radv_cmd_buffer *cmd_buffer) ret = create_decode_pipeline(device, pipeline); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return VK_NULL_HANDLE; } } diff --git a/src/amd/vulkan/radv_meta_fast_clear.c b/src/amd/vulkan/radv_meta_fast_clear.c index d901fbd..f2eb896 100644 --- a/src/amd/vulkan/radv_meta_fast_clear.c +++ b/src/amd/vulkan/radv_meta_fast_clear.c @@ -586,7 +586,7 @@ radv_process_color_image(struct radv_cmd_buffer *cmd_buffer, struct radv_image * ret = radv_device_init_meta_fast_clear_flush_state_internal(device); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return; } } @@ -725,7 +725,7 @@ radv_decompress_dcc_compute(struct radv_cmd_buffer *cmd_buffer, struct radv_imag if (!cmd_buffer->device->meta_state.fast_clear_flush.cmask_eliminate_pipeline) { VkResult ret = radv_device_init_meta_fast_clear_flush_state_internal(cmd_buffer->device); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return; } } diff --git a/src/amd/vulkan/radv_meta_resolve.c b/src/amd/vulkan/radv_meta_resolve.c index d3157f2..72f55fb 100644 --- a/src/amd/vulkan/radv_meta_resolve.c +++ b/src/amd/vulkan/radv_meta_resolve.c @@ -415,7 +415,7 @@ radv_meta_resolve_hardware_image(struct radv_cmd_buffer *cmd_buffer, struct radv VkResult ret = build_resolve_pipeline(device, fs_key); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); break; } @@ -635,7 +635,7 @@ radv_cmd_buffer_resolve_subpass_hw(struct radv_cmd_buffer *cmd_buffer) VkResult ret = build_resolve_pipeline( cmd_buffer->device, radv_format_meta_fs_key(cmd_buffer->device, dst_iview->vk.format)); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); continue; } diff --git a/src/amd/vulkan/radv_meta_resolve_cs.c b/src/amd/vulkan/radv_meta_resolve_cs.c index 06ee534..c5d34de 100644 --- a/src/amd/vulkan/radv_meta_resolve_cs.c +++ b/src/amd/vulkan/radv_meta_resolve_cs.c @@ -512,7 +512,7 @@ radv_get_resolve_pipeline(struct radv_cmd_buffer *cmd_buffer, struct radv_image_ ret = create_resolve_pipeline(device, samples, vk_format_is_int(src_iview->vk.format), vk_format_is_srgb(src_iview->vk.format), pipeline); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return NULL; } } @@ -645,7 +645,7 @@ emit_depth_stencil_resolve(struct radv_cmd_buffer *cmd_buffer, struct radv_image ret = create_depth_stencil_resolve_pipeline(device, samples, index, resolve_mode, pipeline); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return; } } diff --git a/src/amd/vulkan/radv_meta_resolve_fs.c b/src/amd/vulkan/radv_meta_resolve_fs.c index ca03e3b..a2561d6 100644 --- a/src/amd/vulkan/radv_meta_resolve_fs.c +++ b/src/amd/vulkan/radv_meta_resolve_fs.c @@ -625,7 +625,7 @@ radv_get_resolve_pipeline(struct radv_cmd_buffer *cmd_buffer, struct radv_image_ ret = create_resolve_pipeline(device, samples_log2, radv_fs_key_format_exemplars[fs_key]); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return NULL; } } @@ -761,7 +761,7 @@ emit_depth_stencil_resolve(struct radv_cmd_buffer *cmd_buffer, struct radv_image ret = create_depth_stencil_resolve_pipeline(device, samples_log2, index, resolve_mode); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return; } } diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index eb25636..3c523fa 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1614,8 +1614,6 @@ struct radv_cmd_buffer { bool gds_oa_needed; /* for GFX10 streamout */ bool sample_positions_needed; - VkResult record_result; - uint64_t gfx9_fence_va; uint32_t gfx9_fence_idx; uint64_t gfx9_eop_bug_va; diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c index eebab10..26017a5 100644 --- a/src/amd/vulkan/radv_query.c +++ b/src/amd/vulkan/radv_query.c @@ -975,7 +975,7 @@ radv_query_shader(struct radv_cmd_buffer *cmd_buffer, VkPipeline *pipeline, if (!*pipeline) { VkResult ret = radv_device_init_meta_query_state_internal(device); if (ret != VK_SUCCESS) { - cmd_buffer->record_result = ret; + vk_command_buffer_set_error(&cmd_buffer->vk, ret); return; } } -- 2.7.4