mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
vkd3d-shader/msl: Allow binding to descriptor arrays.
This requires merging adjacent bindings in the Metal shader runner,
mostly like 805a4bc1e8 did for the
d3d12 backend.
This commit is contained in:
committed by
Henri Verbeet
parent
82619e81c3
commit
eaabd2ffd7
Notes:
Henri Verbeet
2025-10-30 20:00:07 +01:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1757
@@ -226,14 +226,22 @@ static bool msl_get_binding(const struct msl_generator *gen, const struct vkd3d_
|
||||
continue;
|
||||
if (binding->register_space != descriptor->register_space)
|
||||
continue;
|
||||
if (binding->register_index != register_idx)
|
||||
if (binding->register_index > descriptor->register_index)
|
||||
continue;
|
||||
if (descriptor->count != ~0u && binding->binding.count < descriptor->count)
|
||||
continue;
|
||||
if (descriptor->count != ~0u
|
||||
&& binding->binding.count - descriptor->count < descriptor->register_index - binding->register_index)
|
||||
continue;
|
||||
if (descriptor->count == ~0u
|
||||
&& binding->binding.count <= descriptor->register_index - binding->register_index)
|
||||
continue;
|
||||
if (!msl_check_shader_visibility(gen, binding->shader_visibility))
|
||||
continue;
|
||||
if ((binding->flags & flags) != flags)
|
||||
continue;
|
||||
|
||||
*idx = binding->binding.binding;
|
||||
*idx = register_idx + binding->binding.binding - binding->register_index;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user