diff --git a/Mesa.changes b/Mesa.changes index 27e2194..5198058 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Mar 21 14:55:19 UTC 2012 - sndirsch@suse.com + +- U_gallium-rtasm-properly-detect-SSE-and-SSE2.patch + * gallium/rtasm: properly detect SSE and SSE2; this should fix + crashes on ancient processors. (bnc#728737) + ------------------------------------------------------------------- Thu Mar 1 08:22:41 UTC 2012 - coolo@suse.com diff --git a/Mesa.spec b/Mesa.spec index 266f92b..c65c826 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -86,6 +86,7 @@ Patch1: Mesa-nodate.diff # to be upstreamed Patch11: u_Fix-crash-in-swrast-when-setting-a-texture-for-a-pix.patch # already upstream +Patch12: U_gallium-rtasm-properly-detect-SSE-and-SSE2.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -367,6 +368,7 @@ rm -f include/GL/{glut.h,uglglutshapes.h,glutf90.h} # remove some docs rm -rf docs/README.{VMS,WIN32,OS2} #%patch11 -p1 +%patch12 -p1 %build diff --git a/U_gallium-rtasm-properly-detect-SSE-and-SSE2.patch b/U_gallium-rtasm-properly-detect-SSE-and-SSE2.patch new file mode 100644 index 0000000..e3c6900 --- /dev/null +++ b/U_gallium-rtasm-properly-detect-SSE-and-SSE2.patch @@ -0,0 +1,85 @@ +From 74d303521e6ba41d1cbeb75edb2f834ebbe8c550 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= +Date: Fri, 24 Feb 2012 19:29:48 +0100 +Subject: [PATCH] gallium/rtasm: properly detect SSE and SSE2 + +This should fix crashes on ancient processors. +--- + src/gallium/auxiliary/rtasm/rtasm_cpu.c | 48 +++++++++++++++--------------- + 1 files changed, 24 insertions(+), 24 deletions(-) + +diff --git a/src/gallium/auxiliary/rtasm/rtasm_cpu.c b/src/gallium/auxiliary/rtasm/rtasm_cpu.c +index 0461c81..7afcf14 100644 +--- a/src/gallium/auxiliary/rtasm/rtasm_cpu.c ++++ b/src/gallium/auxiliary/rtasm/rtasm_cpu.c +@@ -25,43 +25,43 @@ + * + **************************************************************************/ + ++#include "pipe/p_config.h" ++#include "rtasm_cpu.h" ++ ++#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) + + #include "util/u_debug.h" +-#include "rtasm_cpu.h" ++#include "util/u_cpu_detect.h" + ++DEBUG_GET_ONCE_BOOL_OPTION(nosse, "GALLIUM_NOSSE", FALSE); + +-#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) +-static boolean rtasm_sse_enabled(void) ++static struct util_cpu_caps *get_cpu_caps(void) + { +- static boolean firsttime = 1; +- static boolean enabled; +- +- /* This gets called quite often at the moment: +- */ +- if (firsttime) { +- enabled = !debug_get_bool_option("GALLIUM_NOSSE", FALSE); +- firsttime = FALSE; +- } +- return enabled; ++ util_cpu_detect(); ++ return &util_cpu_caps; + } +-#endif + + int rtasm_cpu_has_sse(void) + { +- /* FIXME: actually detect this at run-time */ +-#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) +- return rtasm_sse_enabled(); +-#else +- return 0; +-#endif ++ return !debug_get_option_nosse() && get_cpu_caps()->has_sse; + } + + int rtasm_cpu_has_sse2(void) + { +- /* FIXME: actually detect this at run-time */ +-#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) +- return rtasm_sse_enabled(); ++ return !debug_get_option_nosse() && get_cpu_caps()->has_sse2; ++} ++ ++ + #else ++ ++int rtasm_cpu_has_sse(void) ++{ + return 0; +-#endif + } ++ ++int rtasm_cpu_has_sse2(void) ++{ ++ return 0; ++} ++ ++#endif +-- +1.7.3.4 +