X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fbroadcom%2Fcompiler%2Fnir_to_vir.c;h=8d805a97ea019ef0cae4fcede546388611449d7e;hb=1c8167da612e8710aae8ea797b6bc0f22eac7f6a;hp=8f568d4779ade6d76ccd3c2483fdfedbd84f3579;hpb=deefebc55be4478afbfd98e0d5094f09d7739640;p=mesa.git diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index 8f568d4779a..8d805a97ea0 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -2014,10 +2014,12 @@ emit_store_output_gs(struct v3d_compile *c, nir_intrinsic_instr *instr) { assert(instr->num_components == 1); + struct qreg offset = ntq_get_src(c, instr->src[1], 0); + uint32_t base_offset = nir_intrinsic_base(instr); - struct qreg src_offset = ntq_get_src(c, instr->src[1], 0); - struct qreg offset = - vir_ADD(c, vir_uniform_ui(c, base_offset), src_offset); + + if (base_offset) + offset = vir_ADD(c, vir_uniform_ui(c, base_offset), offset); /* Usually, for VS or FS, we only emit outputs once at program end so * our VPM writes are never in non-uniform control flow, but this @@ -3016,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; }