[Mesa-dev] [PATCH 17/53] r600: update correct hw shaders depending on configuration.

Dave Airlie airlied at gmail.com
Sun Nov 29 22:20:26 PST 2015


From: Dave Airlie <airlied at redhat.com>

This updates the tess hw shaders from the sw ones routing
things correctly.

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 src/gallium/drivers/r600/r600_shader.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 52bff96..d13d2d7 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -209,6 +209,15 @@ int r600_pipe_shader_create(struct pipe_context *ctx,
 
 	/* Build state. */
 	switch (shader->shader.processor_type) {
+	case TGSI_PROCESSOR_TESS_CTRL:
+		evergreen_update_hs_state(ctx, shader);
+		break;
+	case TGSI_PROCESSOR_TESS_EVAL:
+		if (key.tes.as_es)
+			evergreen_update_es_state(ctx, shader);
+		else
+			evergreen_update_vs_state(ctx, shader);
+		break;
 	case TGSI_PROCESSOR_GEOMETRY:
 		if (rctx->b.chip_class >= EVERGREEN) {
 			evergreen_update_gs_state(ctx, shader);
@@ -221,7 +230,9 @@ int r600_pipe_shader_create(struct pipe_context *ctx,
 	case TGSI_PROCESSOR_VERTEX:
 		export_shader = key.vs.as_es;
 		if (rctx->b.chip_class >= EVERGREEN) {
-			if (export_shader)
+			if (key.vs.as_ls)
+				evergreen_update_ls_state(ctx, shader);
+			else if (key.vs.as_es)
 				evergreen_update_es_state(ctx, shader);
 			else
 				evergreen_update_vs_state(ctx, shader);
-- 
2.5.0



More information about the mesa-dev mailing list