panvk: clean up feature-bits

The feature bits have been added a bit willy-nilly, let's clean that up
a bit.

The general structure here is that if something is part of a specific
Vulkan version, we list the feature under there in the order they are
defined in the version-specific structure. If not, we list it under
an extension. Clean up so each version is in it's own block.

Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Christoph Pillmayer <christoph.pillmayer@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37136>
This commit is contained in:
Erik Faye-Lund 2025-09-02 11:48:09 +02:00 committed by Marge Bot
parent 166d650c10
commit bb26502c77

View file

@ -241,23 +241,29 @@ panvk_per_arch(get_physical_device_features)(
{
*features = (struct vk_features){
/* Vulkan 1.0 */
.depthClamp = true,
.depthBiasClamp = true,
.dualSrcBlend = true,
.robustBufferAccess = true,
.fullDrawIndexUint32 = true,
.imageCubeArray = true,
.independentBlend = true,
.sampleRateShading = true,
.dualSrcBlend = true,
.logicOp = true,
.multiDrawIndirect = PAN_ARCH >= 10,
.drawIndirectFirstInstance = true,
.depthClamp = true,
.depthBiasClamp = true,
.wideLines = true,
.largePoints = true,
.occlusionQueryPrecise = true,
.samplerAnisotropy = true,
.textureCompressionETC2 = has_texture_compression_etc2(device),
.textureCompressionASTC_LDR = has_texture_compression_astc_ldr(device),
.textureCompressionBC = has_texture_compression_bc(device),
.occlusionQueryPrecise = true,
/* On v13+, the hardware isn't speculatively referencing to invalid
indices anymore. */
.vertexPipelineStoresAndAtomics =
(PAN_ARCH >= 13 && instance->enable_vertex_pipeline_stores_atomics) ||
instance->force_enable_shader_atomics,
.fragmentStoresAndAtomics = (PAN_ARCH >= 10) ||
instance->force_enable_shader_atomics,
.shaderImageGatherExtended = true,
@ -268,15 +274,8 @@ panvk_per_arch(get_physical_device_features)(
.shaderSampledImageArrayDynamicIndexing = true,
.shaderStorageBufferArrayDynamicIndexing = true,
.shaderStorageImageArrayDynamicIndexing = true,
.shaderInt16 = true,
.shaderInt64 = true,
.drawIndirectFirstInstance = true,
/* On v13+, the hardware isn't speculatively referencing to invalid
indices anymore. */
.vertexPipelineStoresAndAtomics =
(PAN_ARCH >= 13 && instance->enable_vertex_pipeline_stores_atomics) ||
instance->force_enable_shader_atomics,
.shaderInt16 = true,
/* Vulkan 1.1 */
.storageBuffer16BitAccess = true,
@ -302,7 +301,6 @@ panvk_per_arch(get_physical_device_features)(
.shaderSharedInt64Atomics = PAN_ARCH >= 9,
.shaderFloat16 = PAN_ARCH >= 10,
.shaderInt8 = true,
/* In theory, update-after-bind is supported on bifrost, but the
* descriptor limits would be too low for the descriptorIndexing feature.
*/
@ -327,7 +325,6 @@ panvk_per_arch(get_physical_device_features)(
.descriptorBindingPartiallyBound = PAN_ARCH >= 9,
.descriptorBindingVariableDescriptorCount = true,
.runtimeDescriptorArray = true,
.samplerFilterMinmax = PAN_ARCH >= 10,
.scalarBlockLayout = true,
.imagelessFramebuffer = true,
@ -350,10 +347,6 @@ panvk_per_arch(get_physical_device_features)(
.robustImageAccess = true,
.inlineUniformBlock = true,
.descriptorBindingInlineUniformBlockUpdateAfterBind = true,
.extendedDynamicState = true,
.extendedDynamicState2 = true,
.extendedDynamicState2LogicOp = true,
.extendedDynamicState2PatchControlPoints = false,
.pipelineCreationCacheControl = true,
.privateData = true,
.shaderDemoteToHelperInvocation = true,
@ -364,42 +357,42 @@ panvk_per_arch(get_physical_device_features)(
.textureCompressionASTC_HDR = has_texture_compression_astc_hdr(device),
.shaderZeroInitializeWorkgroupMemory = true,
.dynamicRendering = true,
.dynamicRenderingLocalRead = true,
.shaderIntegerDotProduct = true,
.maintenance4 = true,
.maintenance5 = true,
.maintenance6 = true,
.maintenance7 = true,
.maintenance8 = true,
.maintenance9 = true,
/* Vulkan 1.4 */
.globalPriorityQuery = true,
.shaderSubgroupRotate = true,
.shaderSubgroupRotateClustered = true,
.shaderFloatControls2 = true,
.shaderExpectAssume = true,
.rectangularLines = true,
.bresenhamLines = true,
.vertexAttributeInstanceRateDivisor = true,
.vertexAttributeInstanceRateZeroDivisor = true,
.indexTypeUint8 = true,
.dynamicRenderingLocalRead = true,
.maintenance5 = true,
.maintenance6 = true,
.pipelineRobustness = true,
.hostImageCopy = true,
.pushDescriptor = true,
/* VK_KHR_depth_clamp_zero_one */
.depthClampZeroOne = true,
/* VK_KHR_line_rasterization */
.rectangularLines = true,
.bresenhamLines = true,
/* VK_KHR_maintenance7 */
.maintenance7 = true,
/* VK_KHR_maintenance8 */
.maintenance8 = true,
/* VK_KHR_maintenance9 */
.maintenance9 = true,
/* VK_EXT_graphics_pipeline_library */
.graphicsPipelineLibrary = true,
/* VK_KHR_global_priority */
.globalPriorityQuery = true,
/* VK_EXT_host_image_copy */
.hostImageCopy = true,
/* VK_KHR_index_type_uint8 */
.indexTypeUint8 = true,
/* VK_KHR_vertex_attribute_divisor */
.vertexAttributeInstanceRateDivisor = true,
.vertexAttributeInstanceRateZeroDivisor = true,
/* VK_EXT_vertex_input_dynamic_state */
.vertexInputDynamicState = true,
@ -415,6 +408,14 @@ panvk_per_arch(get_physical_device_features)(
/* VK_EXT_depth_clip_enable */
.depthClipEnable = true,
/* VK_EXT_extended_dynamic_state */
.extendedDynamicState = true,
/* VK_EXT_extended_dynamic_state2 */
.extendedDynamicState2 = true,
.extendedDynamicState2LogicOp = true,
.extendedDynamicState2PatchControlPoints = false,
/* VK_EXT_4444_formats */
.formatA4R4G4B4 = true,
.formatA4B4G4R4 = true,
@ -448,9 +449,6 @@ panvk_per_arch(get_physical_device_features)(
/* VK_KHR_pipeline_executable_properties */
.pipelineExecutableInfo = true,
/* VK_EXT_pipeline_robustness */
.pipelineRobustness = true,
/* VK_EXT_robustness2 */
.robustBufferAccess2 = PAN_ARCH >= 11,
.robustImageAccess2 = false,
@ -460,9 +458,6 @@ panvk_per_arch(get_physical_device_features)(
.shaderSubgroupClock = device->kmod.props.gpu_can_query_timestamp,
.shaderDeviceClock = device->kmod.props.gpu_can_query_timestamp,
/* VK_KHR_shader_float_controls2 */
.shaderFloatControls2 = true,
/* VK_KHR_shader_quad_control */
.shaderQuadControl = true,
@ -475,9 +470,6 @@ panvk_per_arch(get_physical_device_features)(
/* VK_KHR_shader_subgroup_uniform_control_flow */
.shaderSubgroupUniformControlFlow = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
/* VK_EXT_shader_module_identifier */
.shaderModuleIdentifier = true,
@ -493,9 +485,6 @@ panvk_per_arch(get_physical_device_features)(
/* VK_EXT_ycbcr_image_arrays */
.ycbcrImageArrays = PAN_ARCH >= 10,
/* VK_KHR_push_descriptor */
.pushDescriptor = true,
/* VK_EXT_non_seamless_cube_map */
.nonSeamlessCubeMap = true,