zink: properly emit PhysicalStorageBufferAddresses cap

The PhysicalStorageBuffer64 addressing model requires this cap. Fixes
vulkan validation error.

Fixes: ddc5c30489 ("zink: handle global and scratch vars")
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25736>
This commit is contained in:
Karol Herbst 2023-10-15 13:29:24 +02:00 committed by Marge Bot
parent 74363973ff
commit 3fb822dbab

View file

@ -4410,9 +4410,10 @@ nir_to_spirv(struct nir_shader *s, const struct zink_shader_info *sinfo, uint32_
if (gl_shader_stage_is_compute(s->info.stage)) {
if (s->info.cs.ptr_size == 32)
model = SpvAddressingModelPhysical32;
else if (s->info.cs.ptr_size == 64)
else if (s->info.cs.ptr_size == 64) {
spirv_builder_emit_cap(&ctx.builder, SpvCapabilityPhysicalStorageBufferAddresses);
model = SpvAddressingModelPhysicalStorageBuffer64;
else
} else
model = SpvAddressingModelLogical;
}