[Mesa-dev] [PATCH 5/8] radeonsi: add DRAWID parameter to vertex shaders

Nicolai Hähnle nhaehnle at gmail.com
Mon Aug 8 15:55:50 UTC 2016


From: Nicolai Hähnle <nicolai.haehnle 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
-- 
2.7.4



More information about the mesa-dev mailing list