radeonsi: enable optimal raster config setting for fiji (v2)
authorAlex Deucher <alexander.deucher@amd.com>
Fri, 13 Nov 2015 18:00:30 +0000 (13:00 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 16 Nov 2015 15:09:47 +0000 (10:09 -0500)
Requires proper kernel tiling configuration so check the tiling
config registers.

v2: send the right version of the patch

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: mesa-stable@lists.freedesktop.org
src/gallium/drivers/radeonsi/si_state.c

index f0f87da46ea58cef7482f3d4b6055b66cf92ccf3..209b940aa116b592718a8716e80c9d7edf2aba97 100644 (file)
@@ -3283,6 +3283,7 @@ si_write_harvested_raster_configs(struct si_context *sctx,
 
 static void si_init_config(struct si_context *sctx)
 {
+       struct si_screen *sscreen = sctx->screen;
        unsigned num_rb = MIN2(sctx->screen->b.info.r600_num_backends, 16);
        unsigned rb_mask = sctx->screen->b.info.si_backend_enabled_mask;
        unsigned raster_config, raster_config_1;
@@ -3353,9 +3354,14 @@ static void si_init_config(struct si_context *sctx)
                raster_config_1 = 0x0000002e;
                break;
        case CHIP_FIJI:
-               /* Fiji should be same as Hawaii, but that causes corruption in some cases */
-               raster_config = 0x16000012; /* 0x3a00161a */
-               raster_config_1 = 0x0000002a; /* 0x0000002e */
+               if (sscreen->b.info.cik_macrotile_mode_array[0] == 0x000000e8) {
+                       /* old kernels with old tiling config */
+                       raster_config = 0x16000012;
+                       raster_config_1 = 0x0000002a;
+               } else {
+                       raster_config = 0x3a00161a;
+                       raster_config_1 = 0x0000002e;
+               }
                break;
        case CHIP_TONGA:
                raster_config = 0x16000012;