[PATCH vkd3d v2 3/3] vkd3d-shader: Emit SPIR-V for descriptor arrays and arrayed bindings.
Conor McCarthy
cmccarthy at codeweavers.com
Tue Jun 15 07:55:29 CDT 2021
June 15, 2021 8:36 PM, "Henri Verbeet" <hverbeet at gmail.com> wrote:
>> Multiple symbols can map to one array variable, and each can have a different base index.
>
> Is that really true? E.g., suppose you have a
> vkd3d_shader_descriptor_binding like this:
You're right, I had it the wrong way around. The base index of the binding can be stored along with the other data in the symbol table.
> That's one possibility, but it would also be possible to just compare
> the "count" field from the vkd3d_shader_descriptor_binding structure
> against 1, instead of comparing "binding_base_idx" against ~0u. (I.e.,
> when storing a vkd3d_shader_descriptor_binding structure in the
> vkd3d_array_variable/vkd3d_symbol_descriptor_binding structure.)
The one potential problem I see is it's possible to declare in a shader an unbounded resource array which maps to a range containing only one descriptor, and then dynamically index it with a variable that's always zero. Unlikely to occur, but the dynamic indexing would fail because with binding.count == 1, a scalar variable is declared.
More information about the wine-devel
mailing list