broadcom/compiler: return NULL if we fail to register allocate
authorAlejandro Piñeiro <apinheiro@igalia.com>
Wed, 24 May 2023 08:32:59 +0000 (10:32 +0200)
committerMarge Bot <emma+marge@anholt.net>
Wed, 24 May 2023 14:19:12 +0000 (14:19 +0000)
Right now if we fail to register allocate, we return the qpu_insts
that we had at that point, even if the driver can't really use it.

Also v3dv_pipeline was already assuming that it would return NULL on
failure, returning VK_ERROR_UNKNOWN on that case.

This allows CTS tests with a lot of pressure, that regress now and
then to not being able to allocate, to finish with an error, instead
of blocking forever. For example:
dEQP-VK.graphicsfuzz.spv-stable-maze-flatten-copy-composite

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23203>

src/broadcom/compiler/vir.c

index 5355645..0452cf4 100644 (file)
@@ -1914,6 +1914,9 @@ uint64_t *v3d_compile(const struct v3d_compiler *compiler,
                 fprintf(stderr, "Failed to compile %s prog %d/%d "
                         "with any strategy.\n",
                         vir_get_stage_name(c), c->program_id, c->variant_id);
+
+                vir_compile_destroy(c);
+                return NULL;
         }
 
         struct v3d_prog_data *prog_data;