---
 src/gallium/auxiliary/util/u_semantics.h |  123 ++++++++++++++++++++++++++++++
 1 files changed, 123 insertions(+), 0 deletions(-)
 create mode 100644 src/gallium/auxiliary/util/u_semantics.h

diff --git a/src/gallium/auxiliary/util/u_semantics.h 
b/src/gallium/auxiliary/util/u_semantics.h
new file mode 100644
index 0000000..d620619
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_semantics.h
@@ -0,0 +1,123 @@
+#ifndef U_SEMANTICS_H_
+#define U_SEMANTICS_H_
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_shader_tokens.h"
+
+/* same as SM3 values */
+#define TGSI_SEMANTIC_BYTE_POSITION 0
+#define TGSI_SEMANTIC_BYTE_PSIZE (4 << 4)
+#define TGSI_SEMANTIC_BYTE_COLOR0 (10 << 4)
+#define TGSI_SEMANTIC_BYTE_COLOR1 (TGSI_SEMANTIC_BYTE_COLOR0 + 1)
+#define TGSI_SEMANTIC_BYTE_FOG (11 << 4)
+#define TGSI_SEMANTIC_BYTE_BCOLOR0 (14 << 4)
+#define TGSI_SEMANTIC_BYTE_BCOLOR1 (TGSI_SEMANTIC_BYTE_BCOLOR0 + 1)
+#define TGSI_SEMANTIC_BYTE_TGSI (15 << 4)
+
+static INLINE unsigned char
+pipe_semantic_to_byte(unsigned name, unsigned index)
+{
+   switch (name)
+   {
+   case TGSI_SEMANTIC_POSITION:
+      return TGSI_SEMANTIC_BYTE_POSITION;
+   case TGSI_SEMANTIC_PSIZE:
+      return TGSI_SEMANTIC_BYTE_PSIZE;
+   case TGSI_SEMANTIC_FOG:
+      return TGSI_SEMANTIC_BYTE_FOG;
+   case TGSI_SEMANTIC_COLOR:
+      return TGSI_SEMANTIC_BYTE_COLOR0 + index;
+   case TGSI_SEMANTIC_GENERIC:
+      ++index;
+      if(index >= TGSI_SEMANTIC_BYTE_PSIZE)
+      {
+        ++index;
+        if(index >= TGSI_SEMANTIC_BYTE_COLOR0)
+        {
+           index += 2;
+           if(index >= TGSI_SEMANTIC_BYTE_FOG)
+              ++index;
+        }
+      }
+      return index;
+   case TGSI_SEMANTIC_BCOLOR:
+      return TGSI_SEMANTIC_BYTE_BCOLOR0 + index;
+   default:
+      return TGSI_SEMANTIC_BYTE_TGSI + name;
+   }
+}
+
+/* this fits BCOLOR in the SM3 range, but is not reversible */
+static INLINE unsigned char
+pipe_semantic_to_byte_sm3(unsigned name, unsigned index)
+{
+   if(name == TGSI_SEMANTIC_BCOLOR)
+      return TGSI_SEMANTIC_BYTE_BCOLOR0 - 1 - index;
+   return pipe_semantic_to_byte(name, index);
+}
+
+static INLINE unsigned
+pipe_semantic_name_from_byte(unsigned char value)
+{
+   switch (value)
+   {
+   case TGSI_SEMANTIC_BYTE_POSITION:
+      return TGSI_SEMANTIC_POSITION;
+   case TGSI_SEMANTIC_BYTE_PSIZE:
+      return TGSI_SEMANTIC_PSIZE;
+   case TGSI_SEMANTIC_BYTE_FOG:
+      return TGSI_SEMANTIC_FOG;
+   case TGSI_SEMANTIC_BYTE_COLOR0:
+   case TGSI_SEMANTIC_BYTE_COLOR1:
+      return TGSI_SEMANTIC_COLOR;
+   case TGSI_SEMANTIC_BYTE_BCOLOR0:
+   case TGSI_SEMANTIC_BYTE_BCOLOR1:
+      return TGSI_SEMANTIC_BCOLOR;
+   default:
+      if(value < TGSI_SEMANTIC_BYTE_TGSI)
+        return TGSI_SEMANTIC_GENERIC;
+      else
+        return value - TGSI_SEMANTIC_BYTE_TGSI;
+   }
+}
+
+static INLINE unsigned
+pipe_semantic_index_from_byte(unsigned char value)
+{
+   if(value == TGSI_SEMANTIC_BYTE_POSITION)
+      return 0;
+
+   if(value <= TGSI_SEMANTIC_BYTE_PSIZE)
+   {
+      if(value < TGSI_SEMANTIC_BYTE_PSIZE)
+        return value - 1;
+      else
+        return 0;
+   }
+
+   if(value < (TGSI_SEMANTIC_BYTE_COLOR0 + 2))
+   {
+      if(value < TGSI_SEMANTIC_BYTE_COLOR0)
+        return value - 2;
+      else
+        return value - TGSI_SEMANTIC_BYTE_COLOR0;
+   }
+
+   if(value <= TGSI_SEMANTIC_BYTE_FOG)
+   {
+      if(value < TGSI_SEMANTIC_BYTE_FOG)
+        return value - 4;
+      else
+        return 0;
+   }
+
+   if(value < TGSI_SEMANTIC_BYTE_BCOLOR0)
+      return value - 5;
+
+   if(value == (TGSI_SEMANTIC_BYTE_BCOLOR1))
+      return 1;
+
+   return 0;
+}
+
+#endif /* U_SEMANTICS_H_ */
-- 
1.7.0.1.147.g6d84b


------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to