From 402bc111fc18b32fec9fc75f94db09c67484e15d Mon Sep 17 00:00:00 2001 From: Jonathan Marek Date: Thu, 12 Dec 2019 16:55:15 -0500 Subject: [PATCH] turnip: fix tile layout logic Use DIV_ROUND_UP and stop trying to increase the tile_count width/height once tile_align_w/tile_align_h are reached. Signed-off-by: Jonathan Marek Reviewed-by: Eric Anholt --- src/freedreno/vulkan/tu_cmd_buffer.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index c0c308ed31b..3af7c13ed09 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -170,14 +170,16 @@ tu_tiling_config_update_tile_layout(struct tu_tiling_config *tiling, /* do not exceed gmem size */ while (tu_tiling_config_update_gmem_layout(tiling, dev) != VK_SUCCESS) { - if (tiling->tile0.extent.width > tiling->tile0.extent.height) { + if (tiling->tile0.extent.width > MAX2(tile_align_w, tiling->tile0.extent.height)) { tiling->tile_count.width++; tiling->tile0.extent.width = - align(ra_width / tiling->tile_count.width, tile_align_w); + align(DIV_ROUND_UP(ra_width, tiling->tile_count.width), tile_align_w); } else { + /* if this assert fails then layout is impossible.. */ + assert(tiling->tile0.extent.height > tile_align_h); tiling->tile_count.height++; tiling->tile0.extent.height = - align(ra_height / tiling->tile_count.height, tile_align_h); + align(DIV_ROUND_UP(ra_height, tiling->tile_count.height), tile_align_h); } } }