[Mesa-dev] [PATCH v2 00/24] anv: Handle out of memory situations better

Iago Toral itoral at igalia.com
Tue Mar 14 13:15:51 UTC 2017


BTW, in case it is useful, I have the series available here, including
fixes to review feedback obtained so far:

https://github.com/Igalia/mesa/tree/vk-oom

Iago

On Fri, 2017-03-10 at 13:38 +0100, Iago Toral Quiroga wrote:
> I think this series addresses all the issues raised for v1, except
> making similar changes to anv_cmd_buffer_alloc_dynamic_state and
> anv_cmd_buffer_alloc_blorp_binding_table which Jason suggested we
> should
> probably do as well, and that I'd like to cover separately from this.
> The main change from v1 is that we now track errors in anv_batch,
> which
> allows us to track and report errors that occur during batch
> emissions as
> well.
> 
> As discussed during v1, I have dropped the patch
> "anv: ensure that we don't ever try to adjust relocations more than
> once", since
> Jason pointed out that the issue this was trying to address was under
> discussion
> in Khronos. I have also pointed that discussion to the test
> developers so that
> the tests are updated accordingly when a final decision is made.
> 
> Besides addressing review feedback, this series incorporates a bunch
> of
> additional improvements including better reporting of errors for
> pipelines
> (we can do this now because we track out of memory errors in batches)
> and a few other fixes, mostly crash guards that I had missed before
> and
> a few other minor things.
> 
> I have also changed a bit the order of some patches in the series so
> related fixes are closer to each other.
> 
> Iago Toral Quiroga (24):
>   anv: remove unnecessary function prototype.
>   anv: do not try to ref/unref NULL shaders
>   anv/blorp: return early if we failed to create the shader binary
>   anv/cmd_buffer: report errors in vkBeginCommandBuffer()
>   anv/cmd_buffer: add a status field to anv_batch
>   anv: add anv_batch_set_error() and anv_batch_has_error() helpers
>   anv: handle allocation failure in anv_batch_emit_batch()
>   anv: handle allocation failure in anv_batch_emit_dwords()
>   anv: avoid crashes when failing to allocate batches
>   anv: handle failures when growing reloc lists
>   anv/cmd_buffer: report tracked errors in vkEndCommandBuffer()
>   anv/cmd_buffer: skip vkCmdNextSubpass() for broken command buffers
>   anv/cmd_buffer: skip vkCmdEndRenderPass() for broken command
> buffers
>   anv/cmd_buffer: handle allocation errors during
> vkCmdBeginRenderPass()
>   anv/cmd_buffer: handle out of memory during vkCmdPushConstants
>   anv: handle memory allocation errors during queue submissions
>   anv/cmd_buffer: skip vkCmdDraw*() on broken command buffers
>   anv/cmd_buffer: skip vkCmdDispatch() on broken command buffers
>   anv/cmd_buffer: skip vkCmdExecuteCommands() on broken command
> buffers
>   anv/device: assert that commands submitted to a queue are not bogus
>   anv/blorp: make anv_cmd_buffer_alloc_blorp_binding_table() return a
>     VkResult
>   anv: handle errors while allocating new binding table blocks
>   anv: handle errors in emit_binding_table() and emit_samplers()
>   anv: improve error reporting when creating pipelines
> 
>  src/intel/blorp/blorp_genX_exec.h     |  25 +++++---
>  src/intel/vulkan/anv_batch_chain.c    |  62 +++++++++++++------
>  src/intel/vulkan/anv_blorp.c          |  38 +++++++-----
>  src/intel/vulkan/anv_cmd_buffer.c     |  19 +++++-
>  src/intel/vulkan/anv_device.c         |   1 +
>  src/intel/vulkan/anv_pipeline.c       |   1 +
>  src/intel/vulkan/anv_pipeline_cache.c |   5 +-
>  src/intel/vulkan/anv_private.h        |  56 +++++++++++++----
>  src/intel/vulkan/genX_blorp_exec.c    |  18 +++---
>  src/intel/vulkan/genX_cmd_buffer.c    | 113
> +++++++++++++++++++++++++---------
>  src/intel/vulkan/genX_pipeline.c      |   9 ++-
>  11 files changed, 253 insertions(+), 94 deletions(-)
> 


More information about the mesa-dev mailing list