diff options
author | Dave Airlie <airlied@redhat.com> | 2017-03-30 07:55:23 +0100 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2017-04-01 07:15:22 +1000 |
commit | 2b3c4bcc1f69bcb8620d98061309c5286cf952e6 (patch) | |
tree | 5fe9f8c74512bbea4abf9e7125fdd47cddb3cc5b | |
parent | a4b039db04c26e4c35db4a6dfc56552661f1ea0c (diff) |
radv/ac: add tess changes to shader keys/info
This adds the tess pieces for shader keys and shader info,
it adds the necessary bits to the vertex key/info as well.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | src/amd/common/ac_nir_to_llvm.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/amd/common/ac_nir_to_llvm.h b/src/amd/common/ac_nir_to_llvm.h index 24eb16013b..82e8ae12f5 100644 --- a/src/amd/common/ac_nir_to_llvm.h +++ b/src/amd/common/ac_nir_to_llvm.h @@ -30,6 +30,7 @@ #include "amd_family.h" #include "../vulkan/radv_descriptor_set.h" +#include "shader_enums.h" struct ac_shader_binary; struct ac_shader_config; struct nir_shader; @@ -39,6 +40,16 @@ struct radv_pipeline_layout; struct ac_vs_variant_key { uint32_t instance_rate_inputs; uint32_t as_es:1; + uint32_t as_ls:1; +}; + +struct ac_tes_variant_key { + uint32_t as_es:1; +}; + +struct ac_tcs_variant_key { + unsigned primitive_mode; + unsigned input_vertices; }; struct ac_fs_variant_key { @@ -49,6 +60,8 @@ struct ac_fs_variant_key { union ac_shader_variant_key { struct ac_vs_variant_key vs; struct ac_fs_variant_key fs; + struct ac_tes_variant_key tes; + struct ac_tcs_variant_key tcs; }; struct ac_nir_compiler_options { @@ -73,6 +86,7 @@ enum ac_ud_index { AC_UD_SHADER_START = 2, AC_UD_VS_VERTEX_BUFFERS = AC_UD_SHADER_START, AC_UD_VS_BASE_VERTEX_START_INSTANCE, + AC_UD_VS_LS_TCS_IN_LAYOUT, AC_UD_VS_MAX_UD, AC_UD_PS_SAMPLE_POS = AC_UD_SHADER_START, AC_UD_PS_MAX_UD, @@ -80,6 +94,10 @@ enum ac_ud_index { AC_UD_CS_MAX_UD, AC_UD_GS_VS_RING_STRIDE_ENTRIES = AC_UD_SHADER_START, AC_UD_GS_MAX_UD, + AC_UD_TCS_OFFCHIP_LAYOUT = AC_UD_SHADER_START, + AC_UD_TCS_MAX_UD, + AC_UD_TES_OFFCHIP_LAYOUT = AC_UD_SHADER_START, + AC_UD_TES_MAX_UD, AC_UD_MAX_UD = AC_UD_VS_MAX_UD, }; @@ -120,12 +138,15 @@ struct ac_shader_variant_info { unsigned num_user_sgprs; unsigned num_input_sgprs; unsigned num_input_vgprs; + union { struct { struct ac_vs_output_info outinfo; struct ac_es_output_info es_info; unsigned vgpr_comp_cnt; bool as_es; + bool as_ls; + uint64_t outputs_written; } vs; struct { unsigned num_interp; @@ -154,6 +175,25 @@ struct ac_shader_variant_info { unsigned gsvs_vertex_size; unsigned max_gsvs_emit_size; } gs; + struct { + bool uses_prim_id; + unsigned tcs_vertices_out; + /* Which outputs are actually written */ + uint64_t outputs_written; + /* Which patch outputs are actually written */ + uint32_t patch_outputs_written; + + } tcs; + struct { + struct ac_vs_output_info outinfo; + struct ac_es_output_info es_info; + bool as_es; + unsigned primitive_mode; + enum gl_tess_spacing spacing; + bool ccw; + bool point_mode; + bool uses_prim_id; + } tes; }; }; |