From c4219bc6fff4c8fa764fd0b07c0e8ce99277c4c6 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Mon, 14 Dec 2015 15:24:11 -0800 Subject: [PATCH] anv/cmd_buffer: Gen 8 requires 64 byte alignment for push constant data See MEDIA_CURBE_LOAD, CURBE Data Start Address & CURBE Total Data Length Signed-off-by: Jordan Justen --- src/vulkan/anv_cmd_buffer.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/vulkan/anv_cmd_buffer.c b/src/vulkan/anv_cmd_buffer.c index fa6943689d8..4dc3704ebf3 100644 --- a/src/vulkan/anv_cmd_buffer.c +++ b/src/vulkan/anv_cmd_buffer.c @@ -947,10 +947,14 @@ anv_cmd_buffer_cs_push_constants(struct anv_cmd_buffer *cmd_buffer) const unsigned threads = pipeline->cs_thread_width_max; const unsigned total_push_constants_size = reg_aligned_constant_size * threads; + const unsigned push_constant_alignment = + cmd_buffer->device->info.gen < 8 ? 32 : 64; + const unsigned aligned_total_push_constants_size = + ALIGN(total_push_constants_size, push_constant_alignment); struct anv_state state = anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, - total_push_constants_size, - 32 /* bottom 5 bits MBZ */); + aligned_total_push_constants_size, + push_constant_alignment); /* Walk through the param array and fill the buffer with data */ uint32_t *u32_map = state.map; -- 2.30.2