freedreno/ir3: don't precolor unassigned inputs
authorRob Clark <robdclark@chromium.org>
Wed, 26 Feb 2020 01:17:55 +0000 (17:17 -0800)
committerMarge Bot <eric+marge@anholt.net>
Fri, 28 Feb 2020 16:53:41 +0000 (16:53 +0000)
Fixes crash seen in:
dEQP-VK.glsl.conversions.matrix_to_matrix.mat4_to_mat3x4_vertex

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3989>

src/freedreno/ir3/ir3_ra.c

index cf986e62c1d28118df5bd7ad98cc162bb9b2fbeb..35a95fd1050ddb27977a858d4bd7a718d9bbfb25 100644 (file)
@@ -1273,6 +1273,9 @@ ra_precolor(struct ir3_ra_ctx *ctx, struct ir3_instruction **precolor, unsigned
                if (precolor[i] && !(precolor[i]->flags & IR3_INSTR_UNUSED)) {
                        struct ir3_instruction *instr = precolor[i];
 
+                       if (instr->regs[0]->num == INVALID_REG)
+                               continue;
+
                        struct ir3_ra_instr_data *id = &ctx->instrd[instr->ip];
 
                        debug_assert(!(instr->regs[0]->flags & (IR3_REG_HALF | IR3_REG_HIGH)));