Mesa (master): nvc0: emit tessellation mode and patch size in TCP/ TEP validation

Christoph Bumiller chrisbmr at kemper.freedesktop.org
Wed Sep 14 14:22:46 UTC 2011


Module: Mesa
Branch: master
Commit: c57c7a86ae55897167e345832366d42af0903cca
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c57c7a86ae55897167e345832366d42af0903cca

Author: Christoph Bumiller <e0425955 at student.tuwien.ac.at>
Date:   Thu Aug 25 13:02:18 2011 +0200

nvc0: emit tessellation mode and patch size in TCP/TEP validation

---

 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 0a55812..097e7c1 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);




More information about the mesa-commit mailing list