Am 28.03.2017 um 15:58 schrieb Alex Deucher: > On Tue, Mar 28, 2017 at 4:29 AM, Christian König > <deathsimple at 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 at lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/amd-gfx