r600g: use SQ_VTX_SEMANTIC_CLEAR to clear the semantic registers
authorMarek Olšák <maraeo@gmail.com>
Mon, 29 Oct 2012 12:18:03 +0000 (13:18 +0100)
committerMarek Olšák <maraeo@gmail.com>
Wed, 31 Oct 2012 01:06:11 +0000 (02:06 +0100)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
src/gallium/drivers/r600/evergreen_state.c
src/gallium/drivers/r600/evergreend.h
src/gallium/drivers/r600/r600_state.c
src/gallium/drivers/r600/r600d.h

index ab9a7a5860353c37d07a5b29f85a5826097be52e..cf3c60fbfc115cea00d90d9975a70a6e95f25a0e 100644 (file)
@@ -2533,39 +2533,9 @@ static void cayman_init_atom_start_cs(struct r600_context *rctx)
        r600_store_value(cb, 0); /* CM_R_0288E8_SQ_LDS_ALLOC */
        r600_store_value(cb, 0); /* R_0288EC_SQ_LDS_ALLOC_PS */
 
-       r600_store_context_reg_seq(cb, R_028380_SQ_VTX_SEMANTIC_0, 34);
-       r600_store_value(cb, 0); /* R_028380_SQ_VTX_SEMANTIC_0 */
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0); /* R_0283FC_SQ_VTX_SEMANTIC_31 */
+        r600_store_context_reg(cb, R_0288F0_SQ_VTX_SEMANTIC_CLEAR, ~0);
+
+        r600_store_context_reg_seq(cb, R_028400_VGT_MAX_VTX_INDX, 2);
        r600_store_value(cb, ~0); /* R_028400_VGT_MAX_VTX_INDX */
        r600_store_value(cb, 0); /* R_028404_VGT_MIN_VTX_INDX */
 
@@ -3011,39 +2981,9 @@ void evergreen_init_atom_start_cs(struct r600_context *rctx)
 
        r600_store_config_reg(cb, R_008A14_PA_CL_ENHANCE, (3 << 1) | 1);
 
-       r600_store_context_reg_seq(cb, R_028380_SQ_VTX_SEMANTIC_0, 34);
-       r600_store_value(cb, 0); /* R_028380_SQ_VTX_SEMANTIC_0 */
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0); /* R_0283FC_SQ_VTX_SEMANTIC_31 */
+        r600_store_context_reg(cb, R_0288F0_SQ_VTX_SEMANTIC_CLEAR, ~0);
+
+        r600_store_context_reg_seq(cb, R_028400_VGT_MAX_VTX_INDX, 2);
        r600_store_value(cb, ~0); /* R_028400_VGT_MAX_VTX_INDX */
        r600_store_value(cb, 0); /* R_028404_VGT_MIN_VTX_INDX */
 
index edb1a55dc8a346ee75ee8d0fbc22ccbb70bc48c3..05206912374e3232f8c06260b30b4be2d1defdd2 100644 (file)
 #define R_0283F4_SQ_VTX_SEMANTIC_29                  0x000283F4
 #define R_0283F8_SQ_VTX_SEMANTIC_30                  0x000283F8
 #define R_0283FC_SQ_VTX_SEMANTIC_31                  0x000283FC
+#define R_0288F0_SQ_VTX_SEMANTIC_CLEAR               0x000288F0
 #define R_0282D0_PA_SC_VPORT_ZMIN_0                  0x000282D0
 #define R_0282D4_PA_SC_VPORT_ZMAX_0                  0x000282D4
 #define R_028400_VGT_MAX_VTX_INDX                    0x00028400
index 607a89e30aa5352b0bf1125af428b9494b3d2585..f3af568725852db489dc610d2e2347c677f18f06 100644 (file)
@@ -2549,39 +2549,9 @@ void r600_init_atom_start_cs(struct r600_context *rctx)
        r600_store_value(cb, 0); /* R_0288CC_SQ_PGM_CF_OFFSET_PS */
        r600_store_value(cb, 0); /* R_0288D0_SQ_PGM_CF_OFFSET_VS */
 
-       r600_store_context_reg_seq(cb, R_028380_SQ_VTX_SEMANTIC_0, 34);
-       r600_store_value(cb, 0); /* R_028380_SQ_VTX_SEMANTIC_0 */
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0);
-       r600_store_value(cb, 0); /* R_0283FC_SQ_VTX_SEMANTIC_31 */
+        r600_store_context_reg(cb, R_0288E0_SQ_VTX_SEMANTIC_CLEAR, ~0);
+
+        r600_store_context_reg_seq(cb, R_028400_VGT_MAX_VTX_INDX, 2);
        r600_store_value(cb, ~0); /* R_028400_VGT_MAX_VTX_INDX */
        r600_store_value(cb, 0); /* R_028404_VGT_MIN_VTX_INDX */
 
index 8cb5fea06dc4a78bb1ab1eae7b53295ae341c6cc..78fa6b689ec66e4e62c6c329523b2426152635b7 100644 (file)
 #define R_0283F4_SQ_VTX_SEMANTIC_29                  0x0283F4
 #define R_0283F8_SQ_VTX_SEMANTIC_30                  0x0283F8
 #define R_0283FC_SQ_VTX_SEMANTIC_31                  0x0283FC
+#define R_0288E0_SQ_VTX_SEMANTIC_CLEAR               0x0288E0
 #define R_028400_VGT_MAX_VTX_INDX                    0x028400
 #define   S_028400_MAX_INDX(x)                         (((x) & 0xFFFFFFFF) << 0)
 #define   G_028400_MAX_INDX(x)                         (((x) >> 0) & 0xFFFFFFFF)