r600: handle SIMD allocation issue with HS/LS
authorDave Airlie <airlied@redhat.com>
Mon, 30 Nov 2015 06:00:02 +0000 (16:00 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 6 Dec 2015 23:59:01 +0000 (09:59 +1000)
At least one SIMD must be kept away from the HS/LS
stages in order to avoid a hw issue on evergreen/cayman.

This patch implements this workaround.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/evergreen_state.c

index 229baab8cba525184219416ce5c2e71e55118a09..355179cd407ffc6fd1278952425b8885b4ee5e08 100644 (file)
@@ -2861,6 +2861,11 @@ void evergreen_init_atom_start_cs(struct r600_context *rctx)
        r600_store_config_reg(cb, R_008E2C_SQ_LDS_RESOURCE_MGMT,
                              S_008E2C_NUM_PS_LDS(0x1000) | S_008E2C_NUM_LS_LDS(0x1000));
 
+       r600_store_config_reg_seq(cb, R_008E20_SQ_STATIC_THREAD_MGMT1, 3);
+       r600_store_value(cb, 0xffffffff);
+       r600_store_value(cb, 0xffffffff);
+       r600_store_value(cb, 0xfffffffe);
+
        r600_store_config_reg(cb, R_009100_SPI_CONFIG_CNTL, 0);
        r600_store_config_reg(cb, R_00913C_SPI_CONFIG_CNTL_1, S_00913C_VTX_DONE_DELAY(4));