Mesa (master): turnip: fix tile layout logic
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Dec 13 01:58:25 UTC 2019
Module: Mesa
Branch: master
Commit: 402bc111fc18b32fec9fc75f94db09c67484e15d
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=402bc111fc18b32fec9fc75f94db09c67484e15d
Author: Jonathan Marek <jonathan at marek.ca>
Date: Thu Dec 12 16:55:15 2019 -0500
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 <jonathan at marek.ca>
Reviewed-by: Eric Anholt <eric at anholt.net>
---
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);
}
}
}
More information about the mesa-commit
mailing list