\r
#define TGSI_DEBUG 1\r
\r
+\r
+/**\r
+ * Convert a VERT_ATTRIB_x to a TGSI_ATTRIB_y\r
+ */\r
+static GLuint\r
+translate_vertex_input(GLuint attrib)\r
+{\r
+ /* XXX these could be implemented with array lookups too.... */\r
+ switch (attrib) {\r
+ case VERT_ATTRIB_POS:\r
+ return TGSI_ATTRIB_POS;\r
+ case VERT_ATTRIB_WEIGHT:\r
+ return TGSI_ATTRIB_WEIGHT;\r
+ case VERT_ATTRIB_NORMAL:\r
+ return TGSI_ATTRIB_NORMAL;\r
+ case VERT_ATTRIB_COLOR0:\r
+ return TGSI_ATTRIB_COLOR0;\r
+ case VERT_ATTRIB_COLOR1:\r
+ return TGSI_ATTRIB_COLOR1;\r
+ case VERT_ATTRIB_FOG:\r
+ return TGSI_ATTRIB_FOG;\r
+ case VERT_ATTRIB_COLOR_INDEX:\r
+ return TGSI_ATTRIB_COLOR_INDEX;\r
+ case VERT_ATTRIB_EDGEFLAG:\r
+ return TGSI_ATTRIB_EDGEFLAG;\r
+ case VERT_ATTRIB_TEX0:\r
+ return TGSI_ATTRIB_TEX0;\r
+ case VERT_ATTRIB_TEX1:\r
+ return TGSI_ATTRIB_TEX1;\r
+ case VERT_ATTRIB_TEX2:\r
+ return TGSI_ATTRIB_TEX2;\r
+ case VERT_ATTRIB_TEX3:\r
+ return TGSI_ATTRIB_TEX3;\r
+ case VERT_ATTRIB_TEX4:\r
+ return TGSI_ATTRIB_TEX4;\r
+ case VERT_ATTRIB_TEX5:\r
+ return TGSI_ATTRIB_TEX5;\r
+ case VERT_ATTRIB_TEX6:\r
+ return TGSI_ATTRIB_TEX6;\r
+ case VERT_ATTRIB_TEX7:\r
+ return TGSI_ATTRIB_TEX7;\r
+ case VERT_ATTRIB_GENERIC0:\r
+ return TGSI_ATTRIB_VAR0;\r
+ case VERT_ATTRIB_GENERIC1:\r
+ return TGSI_ATTRIB_VAR1;\r
+ case VERT_ATTRIB_GENERIC2:\r
+ return TGSI_ATTRIB_VAR2;\r
+ case VERT_ATTRIB_GENERIC3:\r
+ return TGSI_ATTRIB_VAR3;\r
+ case VERT_ATTRIB_GENERIC4:\r
+ return TGSI_ATTRIB_VAR4;\r
+ case VERT_ATTRIB_GENERIC5:\r
+ return TGSI_ATTRIB_VAR5;\r
+ case VERT_ATTRIB_GENERIC6:\r
+ return TGSI_ATTRIB_VAR6;\r
+ case VERT_ATTRIB_GENERIC7:\r
+ return TGSI_ATTRIB_VAR7;\r
+ default:\r
+ assert(0);\r
+ return 0;\r
+ }\r
+}\r
+\r
+\r
+/**\r
+ * Convert VERT_RESULT_x to TGSI_ATTRIB_y\r
+ */\r
+static GLuint\r
+translate_vertex_ouput(GLuint attrib)\r
+{\r
+ switch (attrib) {\r
+ case VERT_RESULT_HPOS:\r
+ return TGSI_ATTRIB_POS;\r
+ case VERT_RESULT_COL0:\r
+ return TGSI_ATTRIB_COLOR0;\r
+ case VERT_RESULT_COL1:\r
+ return TGSI_ATTRIB_COLOR1;\r
+ case VERT_RESULT_FOGC:\r
+ return TGSI_ATTRIB_FOG;\r
+ case VERT_RESULT_TEX0:\r
+ return TGSI_ATTRIB_TEX0;\r
+ case VERT_RESULT_TEX1:\r
+ return TGSI_ATTRIB_TEX1;\r
+ case VERT_RESULT_TEX2:\r
+ return TGSI_ATTRIB_TEX2;\r
+ case VERT_RESULT_TEX3:\r
+ return TGSI_ATTRIB_TEX3;\r
+ case VERT_RESULT_TEX4:\r
+ return TGSI_ATTRIB_TEX4;\r
+ case VERT_RESULT_TEX5:\r
+ return TGSI_ATTRIB_TEX5;\r
+ case VERT_RESULT_TEX6:\r
+ return TGSI_ATTRIB_TEX6;\r
+ case VERT_RESULT_TEX7:\r
+ return TGSI_ATTRIB_TEX7;\r
+ case VERT_RESULT_PSIZ:\r
+ return TGSI_ATTRIB_POINTSIZE;\r
+ case VERT_RESULT_BFC0:\r
+ return TGSI_ATTRIB_BFC0;\r
+ case VERT_RESULT_BFC1:\r
+ return TGSI_ATTRIB_BFC1;\r
+ case VERT_RESULT_VAR0:\r
+ return TGSI_ATTRIB_VAR0;\r
+ case VERT_RESULT_VAR0 + 1:\r
+ return TGSI_ATTRIB_VAR1;\r
+ case VERT_RESULT_VAR0 + 2:\r
+ return TGSI_ATTRIB_VAR2;\r
+ case VERT_RESULT_VAR0 + 3:\r
+ return TGSI_ATTRIB_VAR3;\r
+ case VERT_RESULT_VAR0 + 4:\r
+ return TGSI_ATTRIB_VAR4;\r
+ case VERT_RESULT_VAR0 + 5:\r
+ return TGSI_ATTRIB_VAR5;\r
+ case VERT_RESULT_VAR0 + 6:\r
+ return TGSI_ATTRIB_VAR6;\r
+ case VERT_RESULT_VAR0 + 7:\r
+ return TGSI_ATTRIB_VAR7;\r
+ default:\r
+ assert(0);\r
+ return 0;\r
+ }\r
+}\r
+\r
+\r
+/**\r
+ * Convert a FRAG_ATTRIB_x to a TGSI_ATTRIB_y\r
+ */\r
+static GLuint\r
+translate_fragment_input(GLuint attrib)\r
+{\r
+ switch (attrib) {\r
+ case FRAG_ATTRIB_WPOS:\r
+ return TGSI_ATTRIB_POS;\r
+ case FRAG_ATTRIB_COL0:\r
+ return TGSI_ATTRIB_COLOR0;\r
+ case FRAG_ATTRIB_COL1:\r
+ return TGSI_ATTRIB_COLOR1;\r
+ case FRAG_ATTRIB_FOGC:\r
+ return TGSI_ATTRIB_FOG;\r
+ case FRAG_ATTRIB_TEX0:\r
+ return TGSI_ATTRIB_TEX0;\r
+ case FRAG_ATTRIB_TEX1:\r
+ return TGSI_ATTRIB_TEX1;\r
+ case FRAG_ATTRIB_TEX2:\r
+ return TGSI_ATTRIB_TEX2;\r
+ case FRAG_ATTRIB_TEX3:\r
+ return TGSI_ATTRIB_TEX3;\r
+ case FRAG_ATTRIB_TEX4:\r
+ return TGSI_ATTRIB_TEX4;\r
+ case FRAG_ATTRIB_TEX5:\r
+ return TGSI_ATTRIB_TEX5;\r
+ case FRAG_ATTRIB_TEX6:\r
+ return TGSI_ATTRIB_TEX6;\r
+ case FRAG_ATTRIB_TEX7:\r
+ return TGSI_ATTRIB_TEX7;\r
+ case FRAG_ATTRIB_VAR0:\r
+ return TGSI_ATTRIB_VAR0;\r
+ case FRAG_ATTRIB_VAR0 + 1:\r
+ return TGSI_ATTRIB_VAR1;\r
+ case FRAG_ATTRIB_VAR0 + 2:\r
+ return TGSI_ATTRIB_VAR2;\r
+ case FRAG_ATTRIB_VAR0 + 3:\r
+ return TGSI_ATTRIB_VAR3;\r
+ case FRAG_ATTRIB_VAR0 + 4:\r
+ return TGSI_ATTRIB_VAR4;\r
+ case FRAG_ATTRIB_VAR0 + 5:\r
+ return TGSI_ATTRIB_VAR5;\r
+ case FRAG_ATTRIB_VAR0 + 6:\r
+ return TGSI_ATTRIB_VAR6;\r
+ case FRAG_ATTRIB_VAR0 + 7:\r
+ return TGSI_ATTRIB_VAR7;\r
+ default:\r
+ assert(0);\r
+ return 0;\r
+ }\r
+}\r
+\r
+\r
+/**\r
+ * Convert FRAG_RESULT_x to TGSI_ATTRIB_y\r
+ */\r
+static GLuint\r
+translate_fragment_output(GLuint attrib)\r
+{\r
+ switch (attrib) {\r
+ case FRAG_RESULT_DEPR:\r
+ return TGSI_ATTRIB_POS;\r
+ case FRAG_RESULT_COLR:\r
+ /* fall-through */\r
+ case FRAG_RESULT_COLH:\r
+ /* fall-through */\r
+ case FRAG_RESULT_DATA0:\r
+ return TGSI_ATTRIB_COLOR0;\r
+ case FRAG_RESULT_DATA0 + 1:\r
+ return TGSI_ATTRIB_COLOR0 + 1;\r
+ case FRAG_RESULT_DATA0 + 2:\r
+ return TGSI_ATTRIB_COLOR0 + 2;\r
+ case FRAG_RESULT_DATA0 + 3:\r
+ return TGSI_ATTRIB_COLOR0 + 3;\r
+ default:\r
+ assert(0);\r
+ return 0;\r
+ }\r
+}\r
+\r
+\r
+\r
/*\r
* Map mesa register file to TGSI register file.\r
*/\r