From: Ilia Mirkin Date: Fri, 18 Nov 2016 03:40:29 +0000 (-0500) Subject: swr: [rasterizer memory] minify texture width before alignment X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ee0b6597a9579342029e46bf2bc4a8dd887f7896;p=mesa.git swr: [rasterizer memory] minify texture width before alignment The minification should happen before alignment, not after. See similar logic on ComputeLODOffsetY. The current logic requires unnecessarily large textures when there's an initial NPOT size. Signed-off-by: Ilia Mirkin Reviewed-by: Tim Rowley --- diff --git a/src/gallium/drivers/swr/rasterizer/memory/TilingFunctions.h b/src/gallium/drivers/swr/rasterizer/memory/TilingFunctions.h index 11ed4518f2e..350e44b37b5 100644 --- a/src/gallium/drivers/swr/rasterizer/memory/TilingFunctions.h +++ b/src/gallium/drivers/swr/rasterizer/memory/TilingFunctions.h @@ -284,8 +284,8 @@ INLINE void ComputeLODOffset1D( offset = GFX_ALIGN(curWidth, hAlign); for (uint32_t l = 1; l < lod; ++l) { - curWidth = GFX_ALIGN(std::max(curWidth >> 1, 1U), hAlign); - offset += curWidth; + curWidth = std::max(curWidth >> 1, 1U); + offset += GFX_ALIGN(curWidth, hAlign); } if (info.isSubsampled || info.isBC)