Am 28.03.2017 um 15:58 schrieb Alex Deucher:
On Tue, Mar 28, 2017 at 4:29 AM, Christian König
<deathsim...@vodafone.de> wrote:
Am 28.03.2017 um 08:00 schrieb Michel Dänzer:
On 28/03/17 12:50 PM, zhoucm1 wrote:
On 2017年03月28日 10:40, Michel Dänzer wrote:
On 27/03/17 04:53 PM, Zhou, David(ChunMing) wrote:
For APU special case, can we prevent eviction happening between VRAM
<----> GTT?
We can, if we can close the performance gap between VRAM and GTT. We
measured around 30% gap a while ago, though right now I'm only measuring
~5%, but the test system has slower RAM now (still dual channel though).
My impression VRAM and GTT have no much difference for APU case, if I'm
wrong, pls correct me.
The Mesa patch below makes radeonsi use mostly GTT instead of mostly
VRAM, and slows down Unigine Valley by about 5% on my desktop Kaveri.
You can try it for yourself.

Additional to that you still need the stolen VRAM on APUs for page tables
and DCE.
Actually DCE on CZ/BR/ST can use GTT as well, we just don't currently
allow it.  Older APUs did require "vram" however.

I'm not so deep into that, but as far as I understand it at least one DCE fetch unit needs to be contiguous.

So you need 64K pages (or at minimum 8/16K pages) for your GTT implementation to support that if I understood it correctly.

Christian.


Alex

So we need to keep the eviction from VRAM to GTT enabled, but what we don't
do is swapping them back in because Marek added the GTT flags on APUs as
extra domain to look into.

In other word once BOs are removed from VRAM they are only swapped back in
if the hardware needs it.

Regards,
Christian.


diff --git a/src/gallium/drivers/radeon/r600_buffer_common.c
b/src/gallium/drivers/radeon/r600_buffer_common.c
index da6f0206d7..47661cab76 100644
--- a/src/gallium/drivers/radeon/r600_buffer_common.c
+++ b/src/gallium/drivers/radeon/r600_buffer_common.c
@@ -175,9 +175,11 @@ void r600_init_resource_fields(struct
r600_common_screen *rscreen,
           * placements even with a low amount of stolen VRAM.
           */
          if (!rscreen->info.has_dedicated_vram &&
-           (rscreen->info.drm_major < 3 || rscreen->info.drm_minor < 6)
&&
-           res->domains == RADEON_DOMAIN_VRAM)
-               res->domains = RADEON_DOMAIN_VRAM_GTT;
+           res->domains == RADEON_DOMAIN_VRAM &&
+           !(res->b.b.bind & PIPE_BIND_SCANOUT)) {
+          res->domains = RADEON_DOMAIN_GTT;
+          res->flags |= RADEON_FLAG_GTT_WC;
+       }

          if (rscreen->debug_flags & DBG_NO_WC)
                  res->flags &= ~RADEON_FLAG_GTT_WC;



_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to