summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2014-09-17 13:10:51 -0700
committerEric Anholt <[email protected]>2014-09-17 14:21:24 -0700
commitb0256fb75f40a4e428366fcc69ebee47970fd01d (patch)
tree5b4544dbfdaf07894b9bed21a48893c8ebbd289f /src/gallium/drivers/vc4
parentb44a7a32232b509c29a40316dce98780e034e85a (diff)
vc4: Initialize the various qreg arrays when allocating them.
This is particularly important for outputs, where we try to MOV the whole vec4 to the VPM, even if only 1-3 components had been set up. It might also be important for temporaries, if the shader reads components before writing them.
Diffstat (limited to 'src/gallium/drivers/vc4')
-rw-r--r--src/gallium/drivers/vc4/vc4_program.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index a662dc2ce54..539fede50a1 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -73,12 +73,16 @@ resize_qreg_array(struct vc4_compile *c,
if (*size >= decl_size)
return;
+ uint32_t old_size = *size;
*size = MAX2(*size * 2, decl_size);
*regs = reralloc(c, *regs, struct qreg, *size);
if (!*regs) {
fprintf(stderr, "Malloc failure\n");
abort();
}
+
+ for (uint32_t i = old_size; i < *size; i++)
+ (*regs)[i] = c->undef;
}
static struct qreg