On 15/03/16 04:41, [email protected] wrote:
From: Roland Scheidegger <[email protected]>
Some rasterization code relies (for sse) on the first and third planes
(but not the second for now) being 128bit aligned, and we didn't get that
on 32bit - I mistakenly thought the 64bit number in the struct would get
the thing aligned to 64bit even on 32bit archs.
Stephane Marchesin really figured this out.
This fixes https://bugs.freedesktop.org/show_bug.cgi?id=94522
CC: <[email protected]>
---
src/gallium/drivers/llvmpipe/lp_rast.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/gallium/drivers/llvmpipe/lp_rast.h
b/src/gallium/drivers/llvmpipe/lp_rast.h
index 34008e1..d9be7f3 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast.h
+++ b/src/gallium/drivers/llvmpipe/lp_rast.h
@@ -116,6 +116,12 @@ struct lp_rast_plane {
/* one-pixel sized trivial reject offsets for each plane */
uint32_t eo;
+ /*
+ * We rely on this struct being 64bit aligned (ideally it would be 128bit
+ * but that's quite the waste) and therefore on 32bit we need padding
+ * since otherwise (even with the 64bit number in there) it wouldn't be.
+ */
+ uint32_t pad;
};
/**
Looks good, but lets add
STATIC_ASSERT(sizeof(struct lp_rast_plane) % 8 == 0);
somewhere, and move the comment there (as the "pad" might come and go if
the structure is ever changed again, but the static assertion should
remain.)
Jose
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev