summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2019-03-28 13:33:30 -0400
committerRob Clark <[email protected]>2019-03-28 14:36:24 -0400
commit78825ca2d05357d159ecd4df31bfddf232bc53a1 (patch)
treec72e74a92b19ab78f2a0a5cca2d19426aa7b0077
parent26e2906382054073de7be88c5607a7bafceb1a62 (diff)
freedreno/ir3: align const size to vec4
This is no longer true since PIPE_CAP_PACKED_UNIFORMS was enabled. Fixes: 3c8779af325 freedreno/ir3: Enable PIPE_CAP_PACKED_UNIFORMS Signed-off-by: Rob Clark <[email protected]>
-rw-r--r--src/gallium/drivers/freedreno/ir3/ir3_gallium.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c
index 2d9516ade5c..65fb7565de1 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c
@@ -229,7 +229,11 @@ emit_user_consts(struct fd_context *ctx, const struct ir3_shader_variant *v,
if (constbuf->enabled_mask & (1 << index)) {
struct pipe_constant_buffer *cb = &constbuf->cb[index];
- unsigned size = align(cb->buffer_size, 4) / 4; /* size in dwords */
+ /* size in dwords, aligned to vec4. (This works at least
+ * with mesa/st, which seems to align constant buffer to
+ * 16 bytes)
+ */
+ unsigned size = align(cb->buffer_size, 16) / 4;
/* in particular, with binning shader we may end up with
* unused consts, ie. we could end up w/ constlen that is
@@ -239,9 +243,6 @@ emit_user_consts(struct fd_context *ctx, const struct ir3_shader_variant *v,
*/
uint32_t max_const = MIN2(v->num_uniforms, v->constlen);
- // I expect that size should be a multiple of vec4's:
- assert(size == align(size, 4));
-
/* and even if the start of the const buffer is before
* first_immediate, the end may not be:
*/