summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2015-11-30 10:48:14 +1000
committerDave Airlie <airlied@redhat.com>2015-12-04 02:57:36 +0000
commit0725f5f5ba7787f59787f857f0ddb9a742ab194f (patch)
treea846c225ae71b03e59cab74d2447480827dcb34a
parent6abbaabeaca4ee39e4448e3d73b2a1621c6457ac (diff)
r600: update correct hw shaders depending on configuration.
This updates the tess hw shaders from the sw ones routing things correctly. Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/gallium/drivers/r600/r600_shader.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 84bacb20368..ef024e626c9 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);