[Mesa-dev] [PATCH] ralloc: don't leave out the alignment factor

Jonas Pfeil pfeiljonas at gmx.de
Sat Mar 4 14:36:08 UTC 2017


Tested on the Raspberry Pi, works as intended. So

Tested by: Jonas Pfeil <pfeiljonas at gmx.de>

-----Ursprüngliche Nachricht----- 
From: Grazvydas Ignotas
Sent: Saturday, March 4, 2017 1:49 AM
To: mesa-dev at lists.freedesktop.org
Cc: Grazvydas Ignotas ; Jonas Pfeil
Subject: [PATCH] ralloc: don't leave out the alignment factor

Experimentation shows that without alignment factor gcc and clang choose
a factor of 16 even on IA-32, which doesn't match what malloc() uses (8).
The problem is it makes gcc assume the pointer is 16 byte aligned, so
with -O3 it starts using aligned SSE instructions that later fault,
so always specify a suitable alignment factor.

Cc: Jonas Pfeil <pfeiljonas at gmx.de>
Fixes: cd2b55e5 "ralloc: Make sure ralloc() allocations match malloc()'s 
alignment."
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100049
Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>
---
no commit access

src/util/ralloc.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/util/ralloc.c b/src/util/ralloc.c
index 03283de..7bf192e 100644
--- a/src/util/ralloc.c
+++ b/src/util/ralloc.c
@@ -59,8 +59,10 @@ _CRTIMP int _vscprintf(const char *format, va_list 
argptr);
struct
#ifdef _MSC_VER
  __declspec(align(8))
+#elif defined(__LP64__)
+ __attribute__((aligned(16)))
#else
- __attribute__((aligned))
+ __attribute__((aligned(8)))
#endif
    ralloc_header
{
-- 
2.7.4



More information about the mesa-dev mailing list