llvmpipe: do late init for llvm builder

this avoids doing any llvm work during lavapipe enumeration which
might otherwise explode if lavapipe is not the actual driver that
gets used

cc: mesa-stable

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22600>
(cherry picked from commit 6d5462658a)
This commit is contained in:
Mike Blumenkrantz 2023-04-20 10:33:27 -04:00 committed by Eric Engestrom
parent 34a8362025
commit a1016ce65c
3 changed files with 13 additions and 7 deletions

View File

@ -1030,7 +1030,7 @@
"description": "llvmpipe: do late init for llvm builder",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null
},

View File

@ -1036,6 +1036,13 @@ llvmpipe_screen_late_init(struct llvmpipe_screen *screen)
goto out;
}
if (!lp_jit_screen_init(screen)) {
ret = false;
goto out;
}
lp_build_init(); /* get lp_native_vector_width initialised */
lp_disk_cache_create(screen);
screen->late_init_done = true;
out:
@ -1063,11 +1070,6 @@ llvmpipe_create_screen(struct sw_winsys *winsys)
if (!screen)
return NULL;
if (!lp_jit_screen_init(screen)) {
FREE(screen);
return NULL;
}
screen->winsys = winsys;
screen->base.destroy = llvmpipe_destroy_screen;
@ -1108,7 +1110,6 @@ llvmpipe_create_screen(struct sw_winsys *winsys)
screen->num_threads);
screen->num_threads = MIN2(screen->num_threads, LP_MAX_THREADS);
lp_build_init(); /* get lp_native_vector_width initialised */
snprintf(screen->renderer_string, sizeof(screen->renderer_string),
"llvmpipe (LLVM " MESA_LLVM_VERSION_STRING ", %u bits)",

View File

@ -12,3 +12,8 @@ dEQP-VK.texture.explicit_lod.2d.sizes.128x128_linear_nearest_mipmap_linear_repea
dEQP-VK.binding_model.buffer_device_address.*
dEQP-VK.binding_model.shader_access.*
dEQP-VK.spirv_assembly.instruction.*
# unknown lvp issues since !22600
dEQP-VK.subgroups.*.compute.*
dEQP-VK.subgroups.builtin_var.graphics.subgroupsize