Module: Mesa
Branch: main
Commit: c01354d5c4433452164e70a54e7bbfabf2443b50
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c01354d5c4433452164e70a54e7bbfabf2443b50

Author: Jason Ekstrand <[email protected]>
Date:   Sun May  2 17:55:15 2021 -0500

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: [email protected]
Reviewed-by: Kenneth Graunke <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10571>

---

 src/intel/vulkan/genX_cmd_buffer.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/intel/vulkan/genX_cmd_buffer.c 
b/src/intel/vulkan/genX_cmd_buffer.c
index 17badd5375f..54b76406cfe 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -3013,6 +3013,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 =
@@ -3075,6 +3082,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 =

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to