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

Iago Toral Quiroga itoral at igalia.com
Fri Mar 10 12:38:13 UTC 2017


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(-)

-- 
2.7.4



More information about the mesa-dev mailing list