From cfda314e47d10a3cf9b1c89196bd3d1e0de15ae4 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Sun, 2 May 2021 17:55:15 -0500 Subject: anv: Support pushing shader constants Usually, nir_opt_constant_folding will get rid of any load_constant intrinsics which might possibly be pushed but there are rare cases where we can still end up with them. Better to handle them. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Kenneth Graunke Part-of: (cherry picked from commit c01354d5c4433452164e70a54e7bbfabf2443b50) --- .pick_status.json | 2 +- src/intel/vulkan/genX_cmd_buffer.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 40c87275bd1..cefc380a2e5 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -202,7 +202,7 @@ "description": "anv: Support pushing shader constants", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index e88069e4cbd..0b4bbe328d2 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -3023,6 +3023,13 @@ get_push_range_address(struct anv_cmd_buffer *cmd_buffer, }; } + case ANV_DESCRIPTOR_SET_SHADER_CONSTANTS: + return (struct anv_address) { + .bo = cmd_buffer->device->instruction_state_pool.block_pool.bo, + .offset = shader->kernel.offset + + shader->prog_data->const_data_offset, + }; + default: { assert(range->set < MAX_SETS); struct anv_descriptor_set *set = @@ -3085,6 +3092,9 @@ get_push_range_bound_size(struct anv_cmd_buffer *cmd_buffer, case ANV_DESCRIPTOR_SET_PUSH_CONSTANTS: return (range->start + range->length) * 32; + case ANV_DESCRIPTOR_SET_SHADER_CONSTANTS: + return ALIGN(shader->prog_data->const_data_size, ANV_UBO_ALIGNMENT); + default: { assert(range->set < MAX_SETS); struct anv_descriptor_set *set = -- cgit v1.2.1