Mesa (master): anv/query: handle out of host memory without crashing in compute_query_result()

Iago Toral Quiroga itoral at kemper.freedesktop.org
Fri Mar 24 08:40:48 UTC 2017


Module: Mesa
Branch: master
Commit: 129fd5813190909ad0ce7086e969b69c4807f21e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=129fd5813190909ad0ce7086e969b69c4807f21e

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Wed Mar 22 10:15:59 2017 +0100

anv/query: handle out of host memory without crashing in compute_query_result()

We don't need to make the caller (CmdCopyQueryPoolResults) aware of the
problem since compute_query_result() only emits state. The caller is also
expected to hit OOM in this scenario right after calling this function, but
it is already handling it safely.

Fixes:
dEQP-VK.api.out_of_host_memory.cmd_copy_query_pool_results

Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>

---

 src/intel/vulkan/genX_query.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/intel/vulkan/genX_query.c b/src/intel/vulkan/genX_query.c
index b1ed4d3854..3610665b6e 100644
--- a/src/intel/vulkan/genX_query.c
+++ b/src/intel/vulkan/genX_query.c
@@ -627,6 +627,11 @@ compute_query_result(struct anv_batch *batch, uint32_t dst_reg,
    /* FIXME: We need to clamp the result for 32 bit. */
 
    uint32_t *dw = anv_batch_emitn(batch, 5, GENX(MI_MATH));
+   if (!dw) {
+      anv_batch_set_error(batch, VK_ERROR_OUT_OF_HOST_MEMORY);
+      return;
+   }
+
    dw[1] = alu(OPCODE_LOAD, OPERAND_SRCA, OPERAND_R1);
    dw[2] = alu(OPCODE_LOAD, OPERAND_SRCB, OPERAND_R0);
    dw[3] = alu(OPCODE_SUB, 0, 0);




More information about the mesa-commit mailing list