[Mesa-dev] [PATCH 03/16] anv: don't crash if we fail to grow the reloc list
Jason Ekstrand
jason at jlekstrand.net
Tue Mar 7 16:44:40 UTC 2017
On Mon, Mar 6, 2017 at 11:15 PM, Iago Toral Quiroga <itoral at igalia.com>
wrote:
> ---
> src/intel/vulkan/anv_batch_chain.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/src/intel/vulkan/anv_batch_chain.c
> b/src/intel/vulkan/anv_batch_chain.c
> index 3f6039e..4cbfb4d 100644
> --- a/src/intel/vulkan/anv_batch_chain.c
> +++ b/src/intel/vulkan/anv_batch_chain.c
> @@ -151,8 +151,9 @@ anv_reloc_list_add(struct anv_reloc_list *list,
> const uint32_t domain =
> target_bo->is_winsys_bo ? I915_GEM_DOMAIN_RENDER : 0;
>
> - anv_reloc_list_grow(list, alloc, 1);
> - /* TODO: Handle failure */
> + VkResult result = anv_reloc_list_grow(list, alloc, 1);
> + if (result != VK_SUCCESS)
> + return 0;
>
This prevents crashes, yes, but it doesn't flag the failure anywhere so it
gets lost and you now have command buffer that references something but
doesn't have a relocaiton.
I think the right thing to do would be to add an
anv_batch_emit_surface_reloc helper and then we have a more central place
to handle it.
Would it make sense to put the VkResult status in the anv_batch? This can
get called from either batch building or pipeline building.
>
> /* XXX: Can we use I915_EXEC_HANDLE_LUT? */
> index = list->num_relocs++;
> @@ -174,8 +175,9 @@ anv_reloc_list_append(struct anv_reloc_list *list,
> const VkAllocationCallbacks *alloc,
> struct anv_reloc_list *other, uint32_t offset)
> {
> - anv_reloc_list_grow(list, alloc, other->num_relocs);
> - /* TODO: Handle failure */
> + VkResult result = anv_reloc_list_grow(list, alloc, other->num_relocs);
> + if (result != VK_SUCCESS)
> + return;
>
Similarly, this one should handle failure.
>
> memcpy(&list->relocs[list->num_relocs], &other->relocs[0],
> other->num_relocs * sizeof(other->relocs[0]));
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170307/deb66c3d/attachment.html>
More information about the mesa-dev
mailing list