From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Subject: [PATCH 0/6] Radeon memory management improvements Date: Mon, 24 Feb 2014 16:20:40 +0100 Message-ID: <1393255246-8296-1-git-send-email-maraeo@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-ee0-f52.google.com (mail-ee0-f52.google.com [74.125.83.52]) by gabe.freedesktop.org (Postfix) with ESMTP id 82306FAADF for ; Mon, 24 Feb 2014 07:21:00 -0800 (PST) Received: by mail-ee0-f52.google.com with SMTP id c41so2327901eek.11 for ; Mon, 24 Feb 2014 07:20:59 -0800 (PST) Received: from localhost.localdomain ([194.228.11.204]) by mx.google.com with ESMTPSA id o43sm64864402eef.12.2014.02.24.07.20.56 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 24 Feb 2014 07:20:58 -0800 (PST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org This series improves performance for the cases when there is not enough VRAM for all buffers. First of all, I'd like to mention that if you set both VRAM and GTT domains for a buffer, you pretty much say you don't care where the buffer ends up. It usually makes the performance even worse. This work was largely benchmark-driven and I tried a lot of ideas before I found out which ones work. The patches describe what they do and they're quite simple, so I'll just share the results here. Card: Evergreen Redwood (HD 5670), 512 MB of VRAM Test: Unigine Heaven 4.0, High settings 1) 1280x720, 4x MSAA, need 525 MB of VRAM Without patches: 16.6 FPS With patches: 16.6 FPS Improvement: 0 % 2) 1600x900, 4x MSAA, need 642 MB of VRAM Without patches: 7.1 FPS With patches: 9.7 FPS Improvement: 36 % 3) 1920x1080, 4x MSAA, need 743 MB of VRAM Without patches: 3.7 FPS With patches: 5.6 FPS Improvement: 51 % 4) 1600x900, 8x MSAA, need 838 MB of VRAM Without patches: 2.9 FPS With patches: 4.6 FPS Improvement: 58 % These results don't change if you run the benchmark several times, which proves the improvement is stable. To conclude this, here are ideas for future work: 1) Add virtual memory support for VRAM. Our GPUs support virtual memory, which not only solves fragmentation issues, but it also allows each buffer to be partially in VRAM and partially in GTT, which becomes more important with large buffers like 100 MB. Moving whole buffers back and forth between VRAM and GTT is inefficient if you can do it at page granularity. Also, due to fragmentation, we can never really use all of VRAM, but only about 90-95%. 2) Add support for uncached GTT. I think it should improve performance for dGPUs under memory pressure, but some testing needs to be done to confirm that. Uncached GTT doesn't seem to work for me on Evergreen, but it's said to be working on some later chips. The patches for Mesa will follow later today. Please review. Marek