anv: add anv_batch_set_error() and anv_batch_has_error() helpers

The anv_batch_set_error() helper will track the first error that happened
while recording a command buffer. The helper returns the currently tracked
error to help the job of internal functions that may generate errors that
need to be tracked and return a VkResult to the caller.

We will use the anv_batch_has_error() helper to guard parts of the driver
that are not safe to execute if an error has been generated while recording
a particular command buffer.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
Iago Toral Quiroga
2017-03-08 12:59:58 +01:00
parent d0195bd067
commit a8ce8e3542

View File

@@ -722,6 +722,21 @@ uint64_t anv_batch_emit_reloc(struct anv_batch *batch,
VkResult anv_device_submit_simple_batch(struct anv_device *device,
struct anv_batch *batch);
static inline VkResult
anv_batch_set_error(struct anv_batch *batch, VkResult error)
{
assert(error != VK_SUCCESS);
if (batch->status == VK_SUCCESS)
batch->status = error;
return batch->status;
}
static inline bool
anv_batch_has_error(struct anv_batch *batch)
{
return batch->status != VK_SUCCESS;
}
struct anv_address {
struct anv_bo *bo;
uint32_t offset;