summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2021-10-12 18:09:04 -0700
committerMarge Bot <eric+marge@anholt.net>2021-10-13 18:46:03 +0000
commit02435f1294d6b9163560f1f5d49b4d2c55b83c79 (patch)
tree50af3bcf237fe845ae3451d16bf029ed71cbc3eb
parent94e07058ee5b3ecdbf4b1afe347cd815dc7fe640 (diff)
iris: Require a 4K alignment for extra clear color BOs.21.3-branchpoint
Apparently, we've been requiring a 4K alignment for internally allocated clear color addresses to work around some unknown issues. There's a comment to that effect in iris_resource_create_with_modifiers(). When importing a dmabuf and tacking on an additional clear color BO, we only required an alignment of 1. This wasn't a problem for a long time because all BO allocations were naturally aligned to the 4K page size. However, once we enabled suballocation, we were able to allocate "BOs" at 256B granularity, making this no longer 4K aligned. Increase the alignment requirement to 4K to match the behavior of our normal allocations and also our previous behavior. Fixes Piglit's ext_image_dma_buf_import-intel-modifiers. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5482 Fixes: ce2e2296ab6 ("iris: Suballocate BO using the Gallium pb_slab mechanism") Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Reviewed-by: Nanley Chery <nanley.g.chery@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13326>
-rw-r--r--src/gallium/drivers/iris/iris_resource.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c
index 195f3fe83da..21b32376880 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -941,11 +941,16 @@ iris_resource_finish_aux_import(struct pipe_screen *pscreen,
import_aux_info(r[0], r[1]);
map_aux_addresses(screen, r[0], format, 0);
- /* Add on a clear color BO. */
+ /* Add on a clear color BO.
+ *
+ * Also add some padding to make sure the fast clear color state buffer
+ * starts at a 4K alignment to avoid some unknown issues. See the
+ * matching comment in iris_resource_create_with_modifiers().
+ */
if (iris_get_aux_clear_color_state_size(screen) > 0) {
res->aux.clear_color_bo =
iris_bo_alloc(screen->bufmgr, "clear color_buffer",
- iris_get_aux_clear_color_state_size(screen), 1,
+ iris_get_aux_clear_color_state_size(screen), 4096,
IRIS_MEMZONE_OTHER, BO_ALLOC_ZEROED);
}
break;