nvk: Implement descriptorBufferPushDescriptors

The only thing we really need to do here is to make sure we don't try
to use the EDB path for push descriptors since those aren't really
descriptor buffers.

Backport-to: 25.0
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33589>
This commit is contained in:
Faith Ekstrand 2025-02-17 15:38:17 -06:00 committed by Marge Bot
parent 7d4c91efef
commit 86e217e7df
2 changed files with 6 additions and 4 deletions

View file

@ -964,8 +964,10 @@ is_edb_buffer_view(nir_deref_instr *deref,
nir_variable *var = nir_deref_instr_get_variable(deref);
uint8_t set = var->data.descriptor_set;
return ctx->set_layouts[set]->flags &
VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT;
return (ctx->set_layouts[set]->flags &
VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT) &&
!(ctx->set_layouts[set]->flags &
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT);
}
static nir_def *

View file

@ -552,7 +552,7 @@ nvk_get_device_features(const struct nv_device_info *info,
.descriptorBuffer = true,
.descriptorBufferCaptureReplay = true,
.descriptorBufferImageLayoutIgnored = true,
.descriptorBufferPushDescriptors = false,
.descriptorBufferPushDescriptors = true,
/* VK_EXT_device_generated_commands */
.deviceGeneratedCommands = true,
@ -984,7 +984,7 @@ nvk_get_device_properties(const struct nvk_instance *instance,
/* VK_EXT_descriptor_buffer */
.combinedImageSamplerDescriptorSingleArray = true,
.bufferlessPushDescriptors = false,
.bufferlessPushDescriptors = true,
.allowSamplerImageViewPostSubmitCreation = false,
.descriptorBufferOffsetAlignment = nvk_min_cbuf_alignment(info),
.maxDescriptorBufferBindings = 32,