anv: Don't over-advertise descriptor indexing features

We should only advertise sub-features if we advertise the extension.

Fixes: 6e230d7607 "anv: Implement VK_EXT_descriptor_indexing"
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3369>
This commit is contained in:
Jason Ekstrand
2020-01-13 12:55:41 -06:00
committed by Marge Bot
parent d7ff137445
commit d36eed3e69

View File

@@ -1058,26 +1058,28 @@ void anv_GetPhysicalDeviceFeatures2(
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT: { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT: {
VkPhysicalDeviceDescriptorIndexingFeaturesEXT *features = VkPhysicalDeviceDescriptorIndexingFeaturesEXT *features =
(VkPhysicalDeviceDescriptorIndexingFeaturesEXT *)ext; (VkPhysicalDeviceDescriptorIndexingFeaturesEXT *)ext;
bool descIndexing = pdevice->has_a64_buffer_access &&
pdevice->has_bindless_images;
features->shaderInputAttachmentArrayDynamicIndexing = false; features->shaderInputAttachmentArrayDynamicIndexing = false;
features->shaderUniformTexelBufferArrayDynamicIndexing = true; features->shaderUniformTexelBufferArrayDynamicIndexing = descIndexing;
features->shaderStorageTexelBufferArrayDynamicIndexing = true; features->shaderStorageTexelBufferArrayDynamicIndexing = descIndexing;
features->shaderUniformBufferArrayNonUniformIndexing = false; features->shaderUniformBufferArrayNonUniformIndexing = false;
features->shaderSampledImageArrayNonUniformIndexing = true; features->shaderSampledImageArrayNonUniformIndexing = descIndexing;
features->shaderStorageBufferArrayNonUniformIndexing = true; features->shaderStorageBufferArrayNonUniformIndexing = descIndexing;
features->shaderStorageImageArrayNonUniformIndexing = true; features->shaderStorageImageArrayNonUniformIndexing = descIndexing;
features->shaderInputAttachmentArrayNonUniformIndexing = false; features->shaderInputAttachmentArrayNonUniformIndexing = false;
features->shaderUniformTexelBufferArrayNonUniformIndexing = true; features->shaderUniformTexelBufferArrayNonUniformIndexing = descIndexing;
features->shaderStorageTexelBufferArrayNonUniformIndexing = true; features->shaderStorageTexelBufferArrayNonUniformIndexing = descIndexing;
features->descriptorBindingUniformBufferUpdateAfterBind = false; features->descriptorBindingUniformBufferUpdateAfterBind = false;
features->descriptorBindingSampledImageUpdateAfterBind = true; features->descriptorBindingSampledImageUpdateAfterBind = descIndexing;
features->descriptorBindingStorageImageUpdateAfterBind = true; features->descriptorBindingStorageImageUpdateAfterBind = descIndexing;
features->descriptorBindingStorageBufferUpdateAfterBind = true; features->descriptorBindingStorageBufferUpdateAfterBind = descIndexing;
features->descriptorBindingUniformTexelBufferUpdateAfterBind = true; features->descriptorBindingUniformTexelBufferUpdateAfterBind = descIndexing;
features->descriptorBindingStorageTexelBufferUpdateAfterBind = true; features->descriptorBindingStorageTexelBufferUpdateAfterBind = descIndexing;
features->descriptorBindingUpdateUnusedWhilePending = true; features->descriptorBindingUpdateUnusedWhilePending = descIndexing;
features->descriptorBindingPartiallyBound = true; features->descriptorBindingPartiallyBound = descIndexing;
features->descriptorBindingVariableDescriptorCount = false; features->descriptorBindingVariableDescriptorCount = false;
features->runtimeDescriptorArray = true; features->runtimeDescriptorArray = descIndexing;
break; break;
} }