From 29f53d793781b67a92bb95fe66d7d38adc5488bb Mon Sep 17 00:00:00 2001 From: Tim Rowley Date: Wed, 13 Jul 2016 10:30:46 -0500 Subject: [PATCH] Revert "gallium: Force blend color to 16-byte alignment" This reverts commit d8d6091a846ac2a40a011d512d6d57f6c8442e6a. Heap allocations may be only 8-byte aligned on 32-bit system, and so having members with 16-byte alignment (such as in the case where pipe_blend_color is embedded in radeonsi's si_context) is undefined behavior which indeed causes crashes when compiled with gcc -O3. Cc: Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96835 Signed-off-by: Tim Rowley Acked-by: Chuck Atkins --- src/gallium/include/pipe/p_state.h | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index a73a771..a3ae870 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -326,17 +326,7 @@ struct pipe_blend_state struct pipe_blend_color { - /** - * Making the color array explicitly 16-byte aligned provides a hint to - * compilers to make more efficient auto-vectorization optimizations. - * The actual performance gains from vectorizing the blend color array are - * fairly minimal, if any, but the alignment is necessary to work around - * buggy vectorization in some compilers which fail to generate the correct - * unaligned accessors resulting in a segfault. Specifically several - * versions of the Intel compiler are known to be affected but it's likely - * others are as well. - */ - PIPE_ALIGN_VAR(16) float color[4]; + float color[4]; }; -- 2.7.4