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

Author: Michal Krol <[email protected]>
Date:   Tue Mar 10 10:22:34 2009 +0100

tgsi: Implement CLAMP opcode.

---

 src/gallium/auxiliary/tgsi/tgsi_exec.c |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c 
b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index c5537a3..1a01706 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -2127,7 +2127,7 @@ exec_instruction(
       break;
 
    case TGSI_OPCODE_DOT2ADD:
-      /* TGSI_OPCODE_DP2A */
+   /* TGSI_OPCODE_DP2A */
       FETCH( &r[0], 0, CHAN_X );
       FETCH( &r[1], 1, CHAN_X );
       micro_mul( &r[0], &r[0], &r[1] );
@@ -2165,7 +2165,14 @@ exec_instruction(
       break;
 
    case TGSI_OPCODE_CLAMP:
-      assert (0);
+      FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) {
+         FETCH(&r[0], 0, chan_index);
+         FETCH(&r[1], 1, chan_index);
+         micro_max(&r[0], &r[0], &r[1]);
+         FETCH(&r[1], 2, chan_index);
+         micro_min(&r[0], &r[0], &r[1]);
+         STORE(&r[0], 0, chan_index);
+      }
       break;
 
    case TGSI_OPCODE_ROUND:
@@ -2178,7 +2185,7 @@ exec_instruction(
       break;
 
    case TGSI_OPCODE_EXPBASE2:
-    /* TGSI_OPCODE_EX2 */
+   /* TGSI_OPCODE_EX2 */
       FETCH(&r[0], 0, CHAN_X);
 
 #if FAST_MATH
@@ -2188,7 +2195,7 @@ exec_instruction(
 #endif
 
       FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) {
-        STORE( &r[0], 0, chan_index );
+         STORE( &r[0], 0, chan_index );
       }
       break;
 
@@ -2202,19 +2209,19 @@ exec_instruction(
       break;
 
    case TGSI_OPCODE_POWER:
-      /* TGSI_OPCODE_POW */
+   /* TGSI_OPCODE_POW */
       FETCH(&r[0], 0, CHAN_X);
       FETCH(&r[1], 1, CHAN_X);
 
       micro_pow( &r[0], &r[0], &r[1] );
 
       FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) {
-        STORE( &r[0], 0, chan_index );
+         STORE( &r[0], 0, chan_index );
       }
       break;
 
    case TGSI_OPCODE_CROSSPRODUCT:
-      /* TGSI_OPCODE_XPD */
+   /* TGSI_OPCODE_XPD */
       FETCH(&r[0], 0, CHAN_Y);
       FETCH(&r[1], 1, CHAN_Z);
 

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to