radeonsi: always put persistent buffers into GTT on radeon
authorMarek Olšák <marek.olsak@amd.com>
Sat, 9 Jun 2018 01:48:23 +0000 (21:48 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 19 Jun 2018 16:52:28 +0000 (12:52 -0400)
This improves performance for certain games.

Cc: 18.1 <mesa-stable@lists.freedesktop.org>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
src/gallium/drivers/radeonsi/si_buffer.c

index 2d68edc3404ddf3d418e95c74c8643d26c40f219..0546fa9d336531363c6a441bf46fd33cc44be269 100644 (file)
@@ -151,8 +151,12 @@ void si_init_resource_fields(struct si_screen *sscreen,
                 * Write-combined CPU mappings are fine, the kernel
                 * ensures all CPU writes finish before the GPU
                 * executes a command stream.
+                *
+                * radeon doesn't have good BO move throttling, so put all
+                * persistent buffers into GTT to prevent VRAM CPU page faults.
                 */
-               if (!sscreen->info.kernel_flushes_hdp_before_ib)
+               if (!sscreen->info.kernel_flushes_hdp_before_ib ||
+                   sscreen->info.drm_major == 2)
                        res->domains = RADEON_DOMAIN_GTT;
        }