anv/query: handle more cases of 'out of host memory'
authorIago Toral Quiroga <itoral@igalia.com>
Wed, 26 Apr 2017 07:03:43 +0000 (09:03 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Fri, 5 May 2017 06:53:33 +0000 (08:53 +0200)
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
src/intel/vulkan/genX_query.c

index 126431bd82404dc11df19478b034037ba7210938..22de3c3363b74bef3a05bacd8a5ada346b2f878f 100644 (file)
@@ -566,6 +566,11 @@ keep_gpr0_lower_n_bits(struct anv_batch *batch, uint32_t n)
    emit_load_alu_reg_imm64(batch, CS_GPR(1), (1ull << n) - 1);
 
    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] = mi_alu(MI_ALU_LOAD, MI_ALU_SRCA, MI_ALU_REG0);
    dw[2] = mi_alu(MI_ALU_LOAD, MI_ALU_SRCB, MI_ALU_REG1);
    dw[3] = mi_alu(MI_ALU_AND, 0, 0);
@@ -592,6 +597,11 @@ shl_gpr0_by_30_bits(struct anv_batch *batch)
    for (int o = 0; o < outer_count; o++) {
       /* Submit one MI_MATH to shift left by 6 bits */
       uint32_t *dw = anv_batch_emitn(batch, cmd_len, GENX(MI_MATH));
+      if (!dw) {
+         anv_batch_set_error(batch, VK_ERROR_OUT_OF_HOST_MEMORY);
+         return;
+      }
+
       dw++;
       for (int i = 0; i < inner_count; i++, dw += 4) {
          dw[0] = mi_alu(MI_ALU_LOAD, MI_ALU_SRCA, MI_ALU_REG0);