llvmpipe: fix native vector width init

this otherwise causes infinite loops in subgroup tests
and kills ci

Fixes: 4a056807bc ("gallivm: break out native vector width calc for reuse")

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22767>
(cherry picked from commit e9864d7f39)
This commit is contained in:
Mike Blumenkrantz 2023-04-28 16:34:44 -04:00 committed by Eric Engestrom
parent 865ff2c5ba
commit 0d37bf2a31
4 changed files with 11 additions and 9 deletions

View file

@ -175,7 +175,7 @@
"description": "llvmpipe: fix native vector width init",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "4a056807bc3b813f390d194bbe382b573761649e"
},

View file

@ -421,18 +421,22 @@ fail:
}
unsigned
lp_build_get_native_width(void)
lp_build_init_native_width(void)
{
// Default to 256 until we're confident llvmpipe with 512 is as correct and not slower than 256
unsigned vector_width = MIN2(util_get_cpu_caps()->max_vector_bits, 256);
lp_native_vector_width = MIN2(util_get_cpu_caps()->max_vector_bits, 256);
assert(lp_native_vector_width);
vector_width = debug_get_num_option("LP_NATIVE_VECTOR_WIDTH", vector_width);
return vector_width;
lp_native_vector_width = debug_get_num_option("LP_NATIVE_VECTOR_WIDTH", lp_native_vector_width);
assert(lp_native_vector_width);
return lp_native_vector_width;
}
boolean
lp_build_init(void)
{
lp_build_init_native_width();
if (gallivm_initialized)
return TRUE;
@ -449,8 +453,6 @@ lp_build_init(void)
lp_set_target_options();
lp_native_vector_width = lp_build_get_native_width();
#if DETECT_ARCH_PPC_64
/* Set the NJ bit in VSCR to 0 so denormalized values are handled as
* specified by IEEE standard (PowerISA 2.06 - Section 6.3). This guarantees

View file

@ -69,7 +69,7 @@ struct gallivm_state
};
unsigned
lp_build_get_native_width(void);
lp_build_init_native_width(void);
boolean
lp_build_init(void);

View file

@ -1113,7 +1113,7 @@ llvmpipe_create_screen(struct sw_winsys *winsys)
snprintf(screen->renderer_string, sizeof(screen->renderer_string),
"llvmpipe (LLVM " MESA_LLVM_VERSION_STRING ", %u bits)",
lp_build_get_native_width() );
lp_build_init_native_width() );
list_inithead(&screen->ctx_list);
(void) mtx_init(&screen->ctx_mutex, mtx_plain);