zink: use lazy descriptors for IMG proprietary drivers

When using Zink with VK_EXT_descriptor_buffer enabled on IMG proprietary
drivers, the rendering behavior is incorrect and uniforms are not
updated properly (the gears of es2gears_x11 become all red and
overlaps).

Use lazy descriptors for IMG proprietary driver unless explicitly
overriden for testing purpose.

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32343>
This commit is contained in:
Icenowy Zheng 2024-11-26 10:50:10 +08:00 committed by Marge Bot
parent 9c1b69a5b5
commit 97412fca25

View file

@ -3671,11 +3671,16 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
}
}
if (zink_descriptor_mode == ZINK_DESCRIPTOR_MODE_AUTO) {
switch(screen->info.driver_props.driverID) {
/* descriptor buffer is not performant with virt yet */
if (screen->info.driver_props.driverID == VK_DRIVER_ID_MESA_VENUS)
case VK_DRIVER_ID_MESA_VENUS:
/* db descriptor mode is known to be broken on IMG proprietary drivers */
case VK_DRIVER_ID_IMAGINATION_PROPRIETARY:
zink_descriptor_mode = ZINK_DESCRIPTOR_MODE_LAZY;
else
break;
default:
zink_descriptor_mode = can_db ? ZINK_DESCRIPTOR_MODE_DB : ZINK_DESCRIPTOR_MODE_LAZY;
}
}
if (zink_descriptor_mode == ZINK_DESCRIPTOR_MODE_DB) {
const uint32_t sampler_size = MAX2(screen->info.db_props.combinedImageSamplerDescriptorSize, screen->info.db_props.robustUniformTexelBufferDescriptorSize);