From patchwork Thu Sep 6 10:53:37 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Michel_D=C3=A4nzer?= X-Patchwork-Id: 1413011 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork2.kernel.org (Postfix) with ESMTP id 7DB85DFFCF for ; Thu, 6 Sep 2012 10:54:36 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2C044A08E9 for ; Thu, 6 Sep 2012 03:54:36 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail.gna.ch (darkcity.gna.ch [195.226.6.51]) by gabe.freedesktop.org (Postfix) with ESMTP id 458A7A08EA for ; Thu, 6 Sep 2012 03:53:53 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by darkcity.gna.ch (Postfix) with ESMTP id 68D485E1045 for ; Thu, 6 Sep 2012 12:53:51 +0200 (CEST) X-Virus-Scanned: amavisd-new at gna.ch Received: from mail.gna.ch ([127.0.0.1]) by localhost (darkcity.gna.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8utppm2MOS2p for ; Thu, 6 Sep 2012 12:53:40 +0200 (CEST) Received: from ruby.local (77-56-77-139.dclient.hispeed.ch [77.56.77.139]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by darkcity.gna.ch (Postfix) with ESMTPSA id E28A35E1032 for ; Thu, 6 Sep 2012 12:53:39 +0200 (CEST) Received: from daenzer by ruby.local with local (Exim 4.80) (envelope-from ) id 1T9ZiN-0001MY-B1 for dri-devel@lists.freedesktop.org; Thu, 06 Sep 2012 12:53:39 +0200 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= To: dri-devel@lists.freedesktop.org Subject: [PATCH libdrm 2/3] radeon: Memory footprint of SI mipmap base level is padded to powers of two. Date: Thu, 6 Sep 2012 12:53:37 +0200 Message-Id: <1346928819-5202-2-git-send-email-michel@daenzer.net> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1346928819-5202-1-git-send-email-michel@daenzer.net> References: <1346928819-5202-1-git-send-email-michel@daenzer.net> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org From: Michel Dänzer Signed-off-by: Michel Dänzer --- radeon/radeon_surface.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c index 593c51c..98faa0b 100644 --- a/radeon/radeon_surface.c +++ b/radeon/radeon_surface.c @@ -963,9 +963,16 @@ static void si_surf_minify_linear_aligned(struct radeon_surface *surf, surf->level[level].npix_x = mip_minify(surf->npix_x, level); surf->level[level].npix_y = mip_minify(surf->npix_y, level); surf->level[level].npix_z = mip_minify(surf->npix_z, level); - surf->level[level].nblk_x = (surf->level[level].npix_x + surf->blk_w - 1) / surf->blk_w; - surf->level[level].nblk_y = (surf->level[level].npix_y + surf->blk_h - 1) / surf->blk_h; - surf->level[level].nblk_z = (surf->level[level].npix_z + surf->blk_d - 1) / surf->blk_d; + + if (level == 0 && surf->last_level > 0) { + surf->level[level].nblk_x = (next_power_of_two(surf->level[level].npix_x) + surf->blk_w - 1) / surf->blk_w; + surf->level[level].nblk_y = (next_power_of_two(surf->level[level].npix_y) + surf->blk_h - 1) / surf->blk_h; + surf->level[level].nblk_z = (next_power_of_two(surf->level[level].npix_z) + surf->blk_d - 1) / surf->blk_d; + } else { + surf->level[level].nblk_x = (surf->level[level].npix_x + surf->blk_w - 1) / surf->blk_w; + surf->level[level].nblk_y = (surf->level[level].npix_y + surf->blk_h - 1) / surf->blk_h; + surf->level[level].nblk_z = (surf->level[level].npix_z + surf->blk_d - 1) / surf->blk_d; + } /* XXX: Second smallest level uses larger pitch, not sure of the real reason, * my best guess so far: rows evenly distributed across slice