Mesa (master): radv: gather primitive ID in the shader info pass

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Sep 6 14:20:48 UTC 2019


Module: Mesa
Branch: master
Commit: 3e8bda66aee72360420b3f64bebf5f6deb36a7d7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3e8bda66aee72360420b3f64bebf5f6deb36a7d7

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Tue Sep  3 18:12:33 2019 +0200

radv: gather primitive ID in the shader info pass

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/vulkan/radv_nir_to_llvm.c |  3 ---
 src/amd/vulkan/radv_shader_info.c | 17 +++++++++++++++++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c
index 334ee1883b4..e0503908ee3 100644
--- a/src/amd/vulkan/radv_nir_to_llvm.c
+++ b/src/amd/vulkan/radv_nir_to_llvm.c
@@ -2828,8 +2828,6 @@ handle_vs_outputs_post(struct radv_shader_context *ctx,
 
 	/* Export PrimitiveID. */
 	if (export_prim_id) {
-		outinfo->export_prim_id = true;
-
 		outputs[noutput].slot_name = VARYING_SLOT_PRIMITIVE_ID;
 		outputs[noutput].slot_index = 0;
 		outputs[noutput].usage_mask = 0x1;
@@ -3256,7 +3254,6 @@ handle_ngg_outputs_post(struct radv_shader_context *ctx)
 			radv_export_param(ctx, param_count, values, 0x1);
 
 			outinfo->vs_output_param_offset[VARYING_SLOT_PRIMITIVE_ID] = param_count++;
-			outinfo->export_prim_id = true;
 			outinfo->param_exports = param_count;
 		}
 	}
diff --git a/src/amd/vulkan/radv_shader_info.c b/src/amd/vulkan/radv_shader_info.c
index ce9823f8485..7f2d9752948 100644
--- a/src/amd/vulkan/radv_shader_info.c
+++ b/src/amd/vulkan/radv_shader_info.c
@@ -687,6 +687,23 @@ radv_nir_shader_info_pass(const struct nir_shader *nir,
 		}
 	}
 
+	/* Make sure to export the PrimitiveID if the fragment shader needs it. */
+	if (options->key.vs_common_out.export_prim_id) {
+		switch (nir->info.stage) {
+		case MESA_SHADER_VERTEX:
+			info->vs.outinfo.export_prim_id = true;
+			break;
+		case MESA_SHADER_TESS_EVAL:
+			info->tes.outinfo.export_prim_id = true;
+			break;
+		case MESA_SHADER_GEOMETRY:
+			info->vs.outinfo.export_prim_id = true;
+			break;
+		default:
+			break;
+		}
+	}
+
 	if (nir->info.stage == MESA_SHADER_FRAGMENT)
 		info->ps.num_interp = nir->num_inputs;
 




More information about the mesa-commit mailing list