panvk: Enable robustBufferAccess

It should already work for UBOs.  This should do everything we need for
SSBOs.  Not sure about vertex and index buffers but we can deal with
those later.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16276>
This commit is contained in:
Jason Ekstrand 2022-05-04 22:59:10 -05:00 committed by Marge Bot
parent 6899cd2b6e
commit d9f9955f9e
4 changed files with 8 additions and 2 deletions

View file

@ -33,6 +33,7 @@ include = [
"dEQP-VK.pipeline.stencil.*",
"dEQP-VK.rasterization.interpolation.*",
"dEQP-VK.rasterization.primitive_size.*",
"dEQP-VK.robustness.buffer_access.*",
"dEQP-VK.spirv_assembly.instruction.compute.opquantize.*",
"dEQP-VK.spirv_assembly.instruction.compute.shader_default_output.*",
"dEQP-VK.spirv_assembly.instruction.compute.workgroup_memory.*",

View file

@ -475,6 +475,7 @@ panvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2 *pFeatures)
{
pFeatures->features = (VkPhysicalDeviceFeatures) {
.robustBufferAccess = true,
.fullDrawIndexUint32 = true,
.independentBlend = true,
.logicOp = true,

View file

@ -486,7 +486,9 @@ panvk_per_arch(nir_lower_descriptors)(nir_shader *nir,
.layout = layout,
.desc_addr_format = nir_address_format_32bit_index_offset,
.ubo_addr_format = nir_address_format_32bit_index_offset,
.ssbo_addr_format = nir_address_format_64bit_global_32bit_offset,
.ssbo_addr_format = dev->vk.enabled_features.robustBufferAccess ?
nir_address_format_64bit_bounded_global :
nir_address_format_64bit_global_32bit_offset,
};
bool progress = nir_shader_instructions_pass(nir, lower_descriptors_instr,

View file

@ -342,7 +342,9 @@ panvk_per_arch(shader_create)(struct panvk_device *dev,
const struct spirv_to_nir_options spirv_options = {
.caps = { false },
.ubo_addr_format = nir_address_format_32bit_index_offset,
.ssbo_addr_format = nir_address_format_64bit_global_32bit_offset,
.ssbo_addr_format = dev->vk.enabled_features.robustBufferAccess ?
nir_address_format_64bit_bounded_global :
nir_address_format_64bit_global_32bit_offset,
};
nir_shader *nir;