Mesa (master): radeonsi: add DRAWID parameter to vertex shaders

Nicolai Hähnle nh at kemper.freedesktop.org
Tue Aug 9 13:57:15 UTC 2016


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

Author: Nicolai Hähnle <nicolai.haehnle at amd.com>
Date:   Mon Aug  8 15:38:04 2016 +0200

radeonsi: add DRAWID parameter to vertex shaders

Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/drivers/radeonsi/si_shader.c | 8 +++++++-
 src/gallium/drivers/radeonsi/si_shader.h | 4 +++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index 2c00f56..2de20cb 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1668,6 +1668,11 @@ static void declare_system_value(
 				     SI_PARAM_START_INSTANCE);
 		break;
 
+	case TGSI_SEMANTIC_DRAWID:
+		value = LLVMGetParam(radeon_bld->main_fn,
+				     SI_PARAM_DRAWID);
+		break;
+
 	case TGSI_SEMANTIC_INVOCATIONID:
 		if (ctx->type == PIPE_SHADER_TESS_CTRL)
 			value = unpack_param(ctx, SI_PARAM_REL_IDS, 8, 5);
@@ -5460,7 +5465,8 @@ static void create_function(struct si_shader_context *ctx)
 		params[SI_PARAM_VERTEX_BUFFERS] = const_array(ctx->v16i8, SI_NUM_VERTEX_BUFFERS);
 		params[SI_PARAM_BASE_VERTEX] = ctx->i32;
 		params[SI_PARAM_START_INSTANCE] = ctx->i32;
-		num_params = SI_PARAM_START_INSTANCE+1;
+		params[SI_PARAM_DRAWID] = ctx->i32;
+		num_params = SI_PARAM_DRAWID+1;
 
 		if (shader->key.vs.as_es) {
 			params[ctx->param_es2gs_offset = num_params++] = ctx->i32;
diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h
index e856049..fc1b22d 100644
--- a/src/gallium/drivers/radeonsi/si_shader.h
+++ b/src/gallium/drivers/radeonsi/si_shader.h
@@ -96,6 +96,7 @@ enum {
 	SI_SGPR_VERTEX_BUFFERS_HI,
 	SI_SGPR_BASE_VERTEX,
 	SI_SGPR_START_INSTANCE,
+	SI_SGPR_DRAWID,
 	SI_ES_NUM_USER_SGPR,
 
 	/* hw VS only */
@@ -142,10 +143,11 @@ enum {
 	SI_PARAM_VERTEX_BUFFERS	= SI_NUM_RESOURCE_PARAMS,
 	SI_PARAM_BASE_VERTEX,
 	SI_PARAM_START_INSTANCE,
+	SI_PARAM_DRAWID,
 	/* [0] = clamp vertex color, VS as VS only */
 	SI_PARAM_VS_STATE_BITS,
 	/* same value as TCS_IN_LAYOUT, VS as LS only */
-	SI_PARAM_LS_OUT_LAYOUT = SI_PARAM_START_INSTANCE + 1,
+	SI_PARAM_LS_OUT_LAYOUT = SI_PARAM_DRAWID + 1,
 	/* the other VS parameters are assigned dynamically */
 
 	/* Layout of TCS outputs in the offchip buffer




More information about the mesa-commit mailing list