llvmpipe: Add get_{driver,device}_uuid implementations

Commit 9da15aa3aa ("llvmpipe: enable EXT_memory_object(_fd)") enabled
the extension, but left this unimplemented.

Leaving this unimplemented causes segfaults for anyone trying to retrieve
the UUIDs, as the calling code in the state tracker does not check if the
function is implemented. This affects e.g. current Wine versions.

Set the UUID to all zeros. Although this slightly violates the vulkan
specification (since 1.2.146), the UUIDs have to match the ones from
lavapipe (lvp_get_physical_device_properties_1_1).

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5865
Fixes: 9da15aa3aa ("llvmpipe: enable EXT_memory_object(_fd)")
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
Reviewed-by: Dave Airlie airlied@redhat.com
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14558>
This commit is contained in:
Stefan Brüns 2022-01-14 13:49:49 +01:00 committed by Marge Bot
parent acd0afdba4
commit 537a0ee3b7

View file

@ -568,6 +568,18 @@ llvmpipe_get_compute_param(struct pipe_screen *_screen,
return 0;
}
static void
llvmpipe_get_driver_uuid(struct pipe_screen *pscreen, char *uuid)
{
memset(uuid, 0, PIPE_UUID_SIZE);
}
static void
llvmpipe_get_device_uuid(struct pipe_screen *pscreen, char *uuid)
{
memset(uuid, 0, PIPE_UUID_SIZE);
}
static const struct nir_shader_compiler_options gallivm_nir_options = {
.lower_scmp = true,
.lower_flrp32 = true,
@ -1049,6 +1061,9 @@ llvmpipe_create_screen(struct sw_winsys *winsys)
screen->base.get_timestamp = llvmpipe_get_timestamp;
screen->base.get_driver_uuid = llvmpipe_get_driver_uuid;
screen->base.get_device_uuid = llvmpipe_get_device_uuid;
screen->base.finalize_nir = llvmpipe_finalize_nir;
screen->base.get_disk_shader_cache = lp_get_disk_shader_cache;