OSDN Git Service

gallium: Refactor the instruction predicate TGSI token.
authorMichal Krol <michal@vmware.com>
Tue, 24 Nov 2009 07:55:40 +0000 (08:55 +0100)
committerMichal Krol <michal@vmware.com>
Tue, 24 Nov 2009 08:05:26 +0000 (09:05 +0100)
Rename it to tgsi_instruction_predicate -- it's no longer an extended
token. Its presence is indicated by a new flag in tgsi_instruction that
indicates whether an instruction is predicated.

Also, change predicate index representation to match the other
tokens that specify register indices.

src/gallium/include/pipe/p_shader_tokens.h

index d4c8aad..c4c2852 100644 (file)
@@ -293,6 +293,8 @@ union tgsi_immediate_data
  * respectively. For a given operation code, those numbers are fixed and are
  * present here only for convenience.
  *
+ * If Predicate is TRUE, tgsi_instruction_predicate token immediately follows.
+ *
  * If Extended is TRUE, it is now executed.
  *
  * Saturate controls how are final results in destination registers modified.
@@ -306,7 +308,8 @@ struct tgsi_instruction
    unsigned Saturate   : 2;  /* TGSI_SAT_ */
    unsigned NumDstRegs : 2;  /* UINT */
    unsigned NumSrcRegs : 4;  /* UINT */
-   unsigned Padding    : 3;
+   unsigned Predicate  : 1;  /* BOOL */
+   unsigned Padding    : 2;
    unsigned Extended   : 1;  /* BOOL */
 };
 
@@ -323,7 +326,6 @@ struct tgsi_instruction
 
 #define TGSI_INSTRUCTION_EXT_TYPE_LABEL     1
 #define TGSI_INSTRUCTION_EXT_TYPE_TEXTURE   2
-#define TGSI_INSTRUCTION_EXT_TYPE_PREDICATE 3
 
 struct tgsi_instruction_ext
 {
@@ -339,9 +341,6 @@ struct tgsi_instruction_ext
  * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_TEXTURE, it
  * should be cast to tgsi_instruction_ext_texture.
  * 
- * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_PREDICATE, it
- * should be cast to tgsi_instruction_ext_predicate.
- * 
  * If tgsi_instruction_ext::Extended is TRUE, another tgsi_instruction_ext
  * follows.
  */
@@ -382,17 +381,15 @@ struct tgsi_instruction_ext_texture
  * For SM3, the following constraint applies.
  *   - Swizzle is either set to identity or replicate.
  */
-struct tgsi_instruction_ext_predicate
+struct tgsi_instruction_predicate
 {
-   unsigned Type     : 4;  /* TGSI_INSTRUCTION_EXT_TYPE_PREDICATE */
+   int      Index    : 16; /* SINT */
    unsigned SwizzleX : 2;  /* TGSI_SWIZZLE_x */
    unsigned SwizzleY : 2;  /* TGSI_SWIZZLE_x */
    unsigned SwizzleZ : 2;  /* TGSI_SWIZZLE_x */
    unsigned SwizzleW : 2;  /* TGSI_SWIZZLE_x */
    unsigned Negate   : 1;  /* BOOL */
-   unsigned SrcIndex : 8;  /* UINT */
-   unsigned Padding  : 10;
-   unsigned Extended : 1;  /* BOOL */
+   unsigned Padding  : 7;
 };
 
 /**