diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index 671f3dbd2ab..8d805a97ea0 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -3018,7 +3018,8 @@ v3d_nir_to_vir(struct v3d_compile *c) fprintf(stderr, "Failed to register allocate at %d threads:\n", c->threads); vir_dump(c); - c->failed = true; + c->compilation_result = + V3D_COMPILATION_FAILED_REGISTER_ALLOCATION; return; } diff --git a/src/broadcom/compiler/v3d_compiler.h b/src/broadcom/compiler/v3d_compiler.h index 10df1af3ce4..624af49c866 100644 --- a/src/broadcom/compiler/v3d_compiler.h +++ b/src/broadcom/compiler/v3d_compiler.h @@ -489,6 +489,12 @@ vir_after_block(struct qblock *block) return (struct vir_cursor){ vir_cursor_addtail, &block->instructions }; } +enum v3d_compilation_result { + V3D_COMPILATION_SUCCEEDED, + V3D_COMPILATION_FAILED_REGISTER_ALLOCATION, + V3D_COMPILATION_FAILED, +}; + /** * Compiler state saved across compiler invocations, for any expensive global * setup. @@ -666,7 +672,7 @@ struct v3d_compile { bool emitted_tlb_load; bool lock_scoreboard_on_first_thrsw; - bool failed; + enum v3d_compilation_result compilation_result; bool tmu_dirty_rcl; }; diff --git a/src/broadcom/compiler/vir.c b/src/broadcom/compiler/vir.c index fceaafb9e03..a118d2d4c88 100644 --- a/src/broadcom/compiler/vir.c +++ b/src/broadcom/compiler/vir.c @@ -512,6 +512,7 @@ vir_compile_init(const struct v3d_compiler *compiler, c->threads = 4; c->debug_output = debug_output; c->debug_output_data = debug_output_data; + c->compilation_result = V3D_COMPILATION_SUCCEEDED; s = nir_shader_clone(c, s); c->s = s; diff --git a/src/broadcom/compiler/vir_to_qpu.c b/src/broadcom/compiler/vir_to_qpu.c index e6461ff94bb..2d72f2f744d 100644 --- a/src/broadcom/compiler/vir_to_qpu.c +++ b/src/broadcom/compiler/vir_to_qpu.c @@ -417,7 +417,7 @@ v3d_vir_to_qpu(struct v3d_compile *c, struct qpu_reg *temp_registers) fprintf(stderr, "Failed to pack instruction:\n"); vir_dump_inst(c, inst); fprintf(stderr, "\n"); - c->failed = true; + c->compilation_result = V3D_COMPILATION_FAILED; return; } }