[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