diff options
author | Samuel Pitoiset <[email protected]> | 2019-02-05 20:22:01 +0100 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2019-02-12 17:25:54 +0100 |
commit | bd1186572f6924a15ea10cd72a95c6d451016bae (patch) | |
tree | b2eb501b2d40295a63024c3c23fbd1eac9f938ae /src/amd/vulkan/radv_shader.h | |
parent | 8364ffe82349aee3aab79d0a62f1788752d1325c (diff) |
radv: add support for push constants inlining when possible
This removes some scalar loads from shaders, but it increases
the number of SET_SH_REG packets. This is currently basic but
it could be improved if needed. Inlining dynamic offsets might
also help.
Original idea from Dave Airlie.
29077 shaders in 15096 tests
Totals:
SGPRS: 1321325 -> 1357101 (2.71 %)
VGPRS: 936000 -> 932576 (-0.37 %)
Spilled SGPRs: 24804 -> 24791 (-0.05 %)
Code Size: 49827960 -> 49642232 (-0.37 %) bytes
Max Waves: 242007 -> 242700 (0.29 %)
Totals from affected shaders:
SGPRS: 290989 -> 326765 (12.29 %)
VGPRS: 244680 -> 241256 (-1.40 %)
Spilled SGPRs: 1442 -> 1429 (-0.90 %)
Code Size: 8126688 -> 7940960 (-2.29 %) bytes
Max Waves: 80952 -> 81645 (0.86 %)
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_shader.h')
-rw-r--r-- | src/amd/vulkan/radv_shader.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index c194401c02d..e0d27378724 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -129,10 +129,11 @@ struct radv_nir_compiler_options { enum radv_ud_index { AC_UD_SCRATCH_RING_OFFSETS = 0, AC_UD_PUSH_CONSTANTS = 1, - AC_UD_INDIRECT_DESCRIPTOR_SETS = 2, - AC_UD_VIEW_INDEX = 3, - AC_UD_STREAMOUT_BUFFERS = 4, - AC_UD_SHADER_START = 5, + AC_UD_INLINE_PUSH_CONSTANTS = 2, + AC_UD_INDIRECT_DESCRIPTOR_SETS = 3, + AC_UD_VIEW_INDEX = 4, + AC_UD_STREAMOUT_BUFFERS = 5, + AC_UD_SHADER_START = 6, AC_UD_VS_VERTEX_BUFFERS = AC_UD_SHADER_START, AC_UD_VS_BASE_VERTEX_START_INSTANCE, AC_UD_VS_MAX_UD, @@ -167,6 +168,8 @@ struct radv_shader_info { uint8_t max_push_constant_used; bool has_only_32bit_push_constants; bool has_indirect_push_constants; + uint8_t num_inline_push_consts; + uint8_t base_inline_push_consts; uint32_t desc_set_used_mask; bool needs_multiview_view_index; bool uses_invocation_id; |