[Mesa-dev] [PATCH 06/25] radv/ac: add tess changes to shader keys/info

Dave Airlie airlied at gmail.com
Thu Mar 30 08:00:56 UTC 2017


From: Dave Airlie <airlied at redhat.com>

This adds the tess pieces for shader keys and shader info,
it adds the necessary bits to the vertex key/info as well.

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 src/amd/common/ac_nir_to_llvm.h | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/src/amd/common/ac_nir_to_llvm.h b/src/amd/common/ac_nir_to_llvm.h
index 24eb160..82e8ae1 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;
 	};
 };
 
-- 
2.9.3



More information about the mesa-dev mailing list