ac/radv/radeonsi: refactor raster_config default values getters.
authorDave Airlie <airlied@redhat.com>
Mon, 23 Apr 2018 00:09:36 +0000 (10:09 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 23 Apr 2018 23:07:51 +0000 (09:07 +1000)
This just makes this common code between the two drivers.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/common/ac_gpu_info.c
src/amd/common/ac_gpu_info.h
src/amd/vulkan/si_cmd_buffer.c
src/gallium/drivers/radeonsi/si_state.c

index 12b03c4..47a8765 100644 (file)
@@ -554,3 +554,96 @@ ac_get_gs_table_depth(enum chip_class chip_class, enum radeon_family family)
                unreachable("Unknown GPU");
        }
 }
+
+void
+ac_get_raster_config(struct radeon_info *info,
+                    uint32_t *raster_config_p,
+                    uint32_t *raster_config_1_p)
+{
+       unsigned num_rb = MIN2(info->num_render_backends, 16);
+       unsigned raster_config, raster_config_1;
+       switch (info->family) {
+       case CHIP_TAHITI:
+       case CHIP_PITCAIRN:
+               raster_config = 0x2a00126a;
+               raster_config_1 = 0x00000000;
+               break;
+       case CHIP_VERDE:
+               raster_config = 0x0000124a;
+               raster_config_1 = 0x00000000;
+               break;
+       case CHIP_OLAND:
+               raster_config = 0x00000082;
+               raster_config_1 = 0x00000000;
+               break;
+       case CHIP_HAINAN:
+               raster_config = 0x00000000;
+               raster_config_1 = 0x00000000;
+               break;
+       case CHIP_BONAIRE:
+               raster_config = 0x16000012;
+               raster_config_1 = 0x00000000;
+               break;
+       case CHIP_HAWAII:
+               raster_config = 0x3a00161a;
+               raster_config_1 = 0x0000002e;
+               break;
+       case CHIP_FIJI:
+               if (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_POLARIS10:
+               raster_config = 0x16000012;
+               raster_config_1 = 0x0000002a;
+               break;
+       case CHIP_POLARIS11:
+       case CHIP_POLARIS12:
+               raster_config = 0x16000012;
+               raster_config_1 = 0x00000000;
+               break;
+       case CHIP_VEGAM:
+               raster_config = 0x3a00161a;
+               raster_config_1 = 0x0000002e;
+               break;
+       case CHIP_TONGA:
+               raster_config = 0x16000012;
+               raster_config_1 = 0x0000002a;
+               break;
+       case CHIP_ICELAND:
+               if (num_rb == 1)
+                       raster_config = 0x00000000;
+               else
+                       raster_config = 0x00000002;
+               raster_config_1 = 0x00000000;
+               break;
+       case CHIP_CARRIZO:
+               raster_config = 0x00000002;
+               raster_config_1 = 0x00000000;
+               break;
+       case CHIP_KAVERI:
+               /* KV should be 0x00000002, but that causes problems with radeon */
+               raster_config = 0x00000000; /* 0x00000002 */
+               raster_config_1 = 0x00000000;
+               break;
+       case CHIP_KABINI:
+       case CHIP_MULLINS:
+       case CHIP_STONEY:
+               raster_config = 0x00000000;
+               raster_config_1 = 0x00000000;
+               break;
+       default:
+               fprintf(stderr,
+                       "ac: Unknown GPU, using 0 for raster_config\n");
+               raster_config = 0x00000000;
+               raster_config_1 = 0x00000000;
+               break;
+       }
+       *raster_config_p = raster_config;
+       *raster_config_1_p = raster_config_1;
+}
index 003d340..9227ff3 100644 (file)
@@ -131,7 +131,9 @@ void ac_compute_driver_uuid(char *uuid, size_t size);
 void ac_compute_device_uuid(struct radeon_info *info, char *uuid, size_t size);
 void ac_print_gpu_info(struct radeon_info *info);
 int ac_get_gs_table_depth(enum chip_class chip_class, enum radeon_family family);
-
+void ac_get_raster_config(struct radeon_info *info,
+                         uint32_t *raster_config_p,
+                         uint32_t *raster_config_1_p);
 #ifdef __cplusplus
 }
 #endif
index 80c819a..b7a2ca2 100644 (file)
@@ -234,88 +234,9 @@ si_set_raster_config(struct radv_physical_device *physical_device,
        unsigned rb_mask = physical_device->rad_info.enabled_rb_mask;
        unsigned raster_config, raster_config_1;
 
-       switch (physical_device->rad_info.family) {
-       case CHIP_TAHITI:
-       case CHIP_PITCAIRN:
-               raster_config = 0x2a00126a;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_VERDE:
-               raster_config = 0x0000124a;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_OLAND:
-               raster_config = 0x00000082;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_HAINAN:
-               raster_config = 0x00000000;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_BONAIRE:
-               raster_config = 0x16000012;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_HAWAII:
-               raster_config = 0x3a00161a;
-               raster_config_1 = 0x0000002e;
-               break;
-       case CHIP_FIJI:
-               if (physical_device->rad_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_POLARIS10:
-               raster_config = 0x16000012;
-               raster_config_1 = 0x0000002a;
-               break;
-       case CHIP_POLARIS11:
-       case CHIP_POLARIS12:
-               raster_config = 0x16000012;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_VEGAM:
-               raster_config = 0x3a00161a;
-               raster_config_1 = 0x0000002e;
-               break;
-       case CHIP_TONGA:
-               raster_config = 0x16000012;
-               raster_config_1 = 0x0000002a;
-               break;
-       case CHIP_ICELAND:
-               if (num_rb == 1)
-                       raster_config = 0x00000000;
-               else
-                       raster_config = 0x00000002;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_CARRIZO:
-               raster_config = 0x00000002;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_KAVERI:
-               /* KV should be 0x00000002, but that causes problems with radeon */
-               raster_config = 0x00000000; /* 0x00000002 */
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_KABINI:
-       case CHIP_MULLINS:
-       case CHIP_STONEY:
-               raster_config = 0x00000000;
-               raster_config_1 = 0x00000000;
-               break;
-       default:
-               fprintf(stderr,
-                       "radv: Unknown GPU, using 0 for raster_config\n");
-               raster_config = 0x00000000;
-               raster_config_1 = 0x00000000;
-               break;
-       }
+       ac_get_raster_config(&physical_device->rad_info,
+                            &raster_config,
+                            &raster_config_1);
 
        /* Always use the default config when all backends are enabled
         * (or when we failed to determine the enabled backends).
index b5fe672..83f4f85 100644 (file)
@@ -4742,92 +4742,13 @@ si_write_harvested_raster_configs(struct si_context *sctx,
 
 static void si_set_raster_config(struct si_context *sctx, struct si_pm4_state *pm4)
 {
-       struct si_screen *sscreen = sctx->screen;
        unsigned num_rb = MIN2(sctx->screen->info.num_render_backends, 16);
        unsigned rb_mask = sctx->screen->info.enabled_rb_mask;
        unsigned raster_config, raster_config_1;
 
-       switch (sctx->family) {
-       case CHIP_TAHITI:
-       case CHIP_PITCAIRN:
-               raster_config = 0x2a00126a;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_VERDE:
-               raster_config = 0x0000124a;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_OLAND:
-               raster_config = 0x00000082;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_HAINAN:
-               raster_config = 0x00000000;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_BONAIRE:
-               raster_config = 0x16000012;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_HAWAII:
-               raster_config = 0x3a00161a;
-               raster_config_1 = 0x0000002e;
-               break;
-       case CHIP_FIJI:
-               if (sscreen->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_VEGAM:
-               raster_config = 0x3a00161a;
-               raster_config_1 = 0x0000002e;
-               break;
-       case CHIP_POLARIS10:
-               raster_config = 0x16000012;
-               raster_config_1 = 0x0000002a;
-               break;
-       case CHIP_POLARIS11:
-       case CHIP_POLARIS12:
-               raster_config = 0x16000012;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_TONGA:
-               raster_config = 0x16000012;
-               raster_config_1 = 0x0000002a;
-               break;
-       case CHIP_ICELAND:
-               if (num_rb == 1)
-                       raster_config = 0x00000000;
-               else
-                       raster_config = 0x00000002;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_CARRIZO:
-               raster_config = 0x00000002;
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_KAVERI:
-               /* KV should be 0x00000002, but that causes problems with radeon */
-               raster_config = 0x00000000; /* 0x00000002 */
-               raster_config_1 = 0x00000000;
-               break;
-       case CHIP_KABINI:
-       case CHIP_MULLINS:
-       case CHIP_STONEY:
-               raster_config = 0x00000000;
-               raster_config_1 = 0x00000000;
-               break;
-       default:
-               fprintf(stderr,
-                       "radeonsi: Unknown GPU, using 0 for raster_config\n");
-               raster_config = 0x00000000;
-               raster_config_1 = 0x00000000;
-       }
+       ac_get_raster_config(&sctx->screen->info,
+                            &raster_config,
+                            &raster_config_1);
 
        if (!rb_mask || util_bitcount(rb_mask) >= num_rb) {
                /* Always use the default config when all backends are enabled