iris, crocus: Align workaround address to 32B
authorCaio Oliveira <caio.oliveira@intel.com>
Wed, 22 Feb 2023 23:47:54 +0000 (15:47 -0800)
committerMarge Bot <emma+marge@anholt.net>
Fri, 24 Feb 2023 04:57:40 +0000 (04:57 +0000)
The workaround address is used as a source for push constants when
there's no resource available, that address must be 32B aligned.

This fixes invalid address being used for buffers in
3DSTATE_CONSTANT_* packets.

Now that intel_debug_write_identifiers() already add the padding,
there's no need to include extra "+ 8" to the offset.

Thanks to Xiaoming Wang that contributed to find and fix this issue.

Fixes: 2a4c361b069 ("iris: add identifier BO")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21479>

src/gallium/drivers/crocus/crocus_context.c
src/gallium/drivers/iris/iris_screen.c

index 903be35..77ddb2e 100644 (file)
@@ -61,7 +61,7 @@ crocus_init_identifier_bo(struct crocus_context *ice)
 
    ice->workaround_bo->kflags |= EXEC_OBJECT_CAPTURE;
    ice->workaround_offset = ALIGN(
-      intel_debug_write_identifiers(bo_map, 4096, "Crocus") + 8, 8);
+      intel_debug_write_identifiers(bo_map, 4096, "Crocus"), 32);
 
    crocus_bo_unmap(ice->workaround_bo);
 
index ffb78f5..2d8dd55 100644 (file)
@@ -768,7 +768,7 @@ iris_init_identifier_bo(struct iris_screen *screen)
    screen->workaround_address = (struct iris_address) {
       .bo = screen->workaround_bo,
       .offset = ALIGN(
-         intel_debug_write_identifiers(bo_map, 4096, "Iris") + 8, 8),
+         intel_debug_write_identifiers(bo_map, 4096, "Iris"), 32),
    };
 
    iris_bo_unmap(screen->workaround_bo);