mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 09:00:10 +01:00
draw: always call util_cpu_detect() in draw context creation.
Since disabling denorms in draw_vbo() we require the util_cpu_caps to be initialized there. Hence add another util_cpu_detect() call in draw_create_context() which should ensure this. (There is another call in draw_get_option_use_llvm() which only gets called with x86 (not x86_64) but calling it always there wouldn't help since it most likely wouldn't get called when compiling without llvm, so leave it alone there.) This fixes https://bugs.freedesktop.org/show_bug.cgi?id=66806. (Because util_cpu_caps wasn't initialized when first calling util_fpstate_get() hence it returning zero, but it would later get initialized by rtasm translate code hence when draw call returned it unmasked all exceptions by calling util_fpstate_set(). This was happening only with DRAW_USE_LLVM=0 or not compiling with llvm, otherwise the llvm init code was calling it on time too.) Reviewed-by: Jose Fonseca <jfonseca@vmware.com> Reviewed-by: Zack Rusin <zackr@vmware.com> Tested-by: Vinson Lee <vlee@freedesktop.org>
This commit is contained in:
parent
bceb5f36ec
commit
1e003b44e8
1 changed files with 4 additions and 1 deletions
|
|
@ -58,7 +58,7 @@ draw_get_option_use_llvm(void)
|
||||||
|
|
||||||
#ifdef PIPE_ARCH_X86
|
#ifdef PIPE_ARCH_X86
|
||||||
util_cpu_detect();
|
util_cpu_detect();
|
||||||
/* require SSE2 due to LLVM PR6960. */
|
/* require SSE2 due to LLVM PR6960. XXX Might be fixed by now? */
|
||||||
if (!util_cpu_caps.has_sse2)
|
if (!util_cpu_caps.has_sse2)
|
||||||
value = FALSE;
|
value = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -78,6 +78,9 @@ draw_create_context(struct pipe_context *pipe, boolean try_llvm)
|
||||||
if (draw == NULL)
|
if (draw == NULL)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
|
|
||||||
|
/* we need correct cpu caps for disabling denorms in draw_vbo() */
|
||||||
|
util_cpu_detect();
|
||||||
|
|
||||||
#if HAVE_LLVM
|
#if HAVE_LLVM
|
||||||
if (try_llvm && draw_get_option_use_llvm()) {
|
if (try_llvm && draw_get_option_use_llvm()) {
|
||||||
draw->llvm = draw_llvm_create(draw);
|
draw->llvm = draw_llvm_create(draw);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue