vkd3d: Do not put immutable samplers in the push descriptor set.

This was the original intention, but it didn't happen because of a bug:
what we need to know at this point is whether the push descriptor set is
being used in general (which is tracked by the corresponding Vulkan
extension bit), not whether the descriptors we're currently processing
are to be put in the push descriptor set (which is tracked by
`push_descriptor'). Indeed, `push_descriptor' is always false when
processing static samplers, precisely because we want to segregate them
in different sets.

This fixes a rendering bug in "The Dark Pictures Anthology: Man of
Medan".

Fixes: 07b7975d09
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58589
This commit is contained in:
Giovanni Mascellani
2025-10-14 14:09:29 +02:00
committed by Henri Verbeet
parent 8b8ee542d7
commit 40bdaa43af
Notes: Henri Verbeet 2025-10-14 16:33:50 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1789

View File

@@ -843,7 +843,7 @@ static struct vk_binding_array *d3d12_root_signature_vk_binding_array_for_type(
{
if (!context->static_samplers_descriptor_set)
{
if (!context->push_descriptor && context->root_descriptor_set)
if (!root_signature->device->vk_info.KHR_push_descriptor && context->root_descriptor_set)
context->static_samplers_descriptor_set = context->root_descriptor_set;
else
/* The descriptor type is irrelevant here, it will never be used. */