diff options
author | Christoph Bumiller <e0425955@student.tuwien.ac.at> | 2011-08-25 13:02:18 +0200 |
---|---|---|
committer | Christoph Bumiller <e0425955@student.tuwien.ac.at> | 2011-09-14 16:19:52 +0200 |
commit | c57c7a86ae55897167e345832366d42af0903cca (patch) | |
tree | 1c56a820ba7f88fb819447425f1a2a34a043874c | |
parent | d53c49bcd4f1cb179ba83656224272574f89801b (diff) |
nvc0: emit tessellation mode and patch size in TCP/TEP validation
-rw-r--r-- | src/gallium/drivers/nvc0/nvc0_shader_state.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gallium/drivers/nvc0/nvc0_shader_state.c b/src/gallium/drivers/nvc0/nvc0_shader_state.c index 0a5581241d7..097e7c13226 100644 --- a/src/gallium/drivers/nvc0/nvc0_shader_state.c +++ b/src/gallium/drivers/nvc0/nvc0_shader_state.c @@ -138,11 +138,18 @@ nvc0_tctlprog_validate(struct nvc0_context *nvc0) return; nvc0_program_update_context_state(nvc0, tp, 1); + if (tp->tp.tess_mode != ~0) { + BEGIN_RING(chan, RING_3D(TESS_MODE), 1); + OUT_RING (chan, tp->tp.tess_mode); + } BEGIN_RING(chan, RING_3D(SP_SELECT(2)), 2); OUT_RING (chan, 0x21); OUT_RING (chan, tp->code_base); BEGIN_RING(chan, RING_3D(SP_GPR_ALLOC(2)), 1); - OUT_RING (chan, tp->max_gpr); + OUT_RING (chan, tp->max_gpr); + + if (tp->tp.input_patch_size <= 32) + IMMED_RING(chan, RING_3D(PATCH_VERTICES), tp->tp.input_patch_size); } void @@ -160,6 +167,10 @@ nvc0_tevlprog_validate(struct nvc0_context *nvc0) return; nvc0_program_update_context_state(nvc0, tp, 2); + if (tp->tp.tess_mode != ~0) { + BEGIN_RING(chan, RING_3D(TESS_MODE), 1); + OUT_RING (chan, tp->tp.tess_mode); + } BEGIN_RING(chan, RING_3D(TEP_SELECT), 1); OUT_RING (chan, 0x31); BEGIN_RING(chan, RING_3D(SP_START_ID(3)), 1); |