diff options
author | Dave Airlie <[email protected]> | 2015-11-30 10:48:14 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2015-12-07 09:59:00 +1000 |
commit | 8849867b8a85b387b0ee113013e18e8cff153bbb (patch) | |
tree | de43dda2d1a99ce43e9f271f8eaea743a2d95dbc /src | |
parent | b1da110b71b20509e4689475e82e88750f69b8fc (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 <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/r600/r600_shader.c | 13 |
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); |