Mesa (main): panvk: Re-arrange GetPhysicalDeviceFeatures2
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Mar 18 08:29:54 UTC 2022
Module: Mesa
Branch: main
Commit: dd03dba7fdb8f4d9fefe8f272aecd08ab27d87c9
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=dd03dba7fdb8f4d9fefe8f272aecd08ab27d87c9
Author: Jason Ekstrand <jason.ekstrand at collabora.com>
Date: Thu Mar 17 14:59:33 2022 -0500
panvk: Re-arrange GetPhysicalDeviceFeatures2
Put the 1.0 features at top followed by 1.1 and then 1.2. For filling
out the actual 1.1 and 1.2 structs, use the helpers.
Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15436>
---
src/panfrost/vulkan/panvk_device.c | 234 ++++++++++++++-----------------------
1 file changed, 86 insertions(+), 148 deletions(-)
diff --git a/src/panfrost/vulkan/panvk_device.c b/src/panfrost/vulkan/panvk_device.c
index c49f9c9b098..336b6ce205b 100644
--- a/src/panfrost/vulkan/panvk_device.c
+++ b/src/panfrost/vulkan/panvk_device.c
@@ -465,144 +465,95 @@ void
panvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2 *pFeatures)
{
+ pFeatures->features = (VkPhysicalDeviceFeatures) {
+ .fullDrawIndexUint32 = true,
+ .independentBlend = true,
+ .wideLines = true,
+ .largePoints = true,
+ .textureCompressionETC2 = true,
+ .textureCompressionASTC_LDR = true,
+ .shaderUniformBufferArrayDynamicIndexing = true,
+ .shaderSampledImageArrayDynamicIndexing = true,
+ .shaderStorageBufferArrayDynamicIndexing = true,
+ .shaderStorageImageArrayDynamicIndexing = true,
+ };
+
+ const VkPhysicalDeviceVulkan11Features core_1_1 = {
+ .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
+ .storageBuffer16BitAccess = false,
+ .uniformAndStorageBuffer16BitAccess = false,
+ .storagePushConstant16 = false,
+ .storageInputOutput16 = false,
+ .multiview = false,
+ .multiviewGeometryShader = false,
+ .multiviewTessellationShader = false,
+ .variablePointersStorageBuffer = true,
+ .variablePointers = true,
+ .protectedMemory = false,
+ .samplerYcbcrConversion = false,
+ .shaderDrawParameters = false,
+ };
+
+ const VkPhysicalDeviceVulkan12Features core_1_2 = {
+ .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
+ .samplerMirrorClampToEdge = false,
+ .drawIndirectCount = false,
+ .storageBuffer8BitAccess = false,
+ .uniformAndStorageBuffer8BitAccess = false,
+ .storagePushConstant8 = false,
+ .shaderBufferInt64Atomics = false,
+ .shaderSharedInt64Atomics = false,
+ .shaderFloat16 = false,
+ .shaderInt8 = false,
+
+ .descriptorIndexing = false,
+ .shaderInputAttachmentArrayDynamicIndexing = false,
+ .shaderUniformTexelBufferArrayDynamicIndexing = false,
+ .shaderStorageTexelBufferArrayDynamicIndexing = false,
+ .shaderUniformBufferArrayNonUniformIndexing = false,
+ .shaderSampledImageArrayNonUniformIndexing = false,
+ .shaderStorageBufferArrayNonUniformIndexing = false,
+ .shaderStorageImageArrayNonUniformIndexing = false,
+ .shaderInputAttachmentArrayNonUniformIndexing = false,
+ .shaderUniformTexelBufferArrayNonUniformIndexing = false,
+ .shaderStorageTexelBufferArrayNonUniformIndexing = false,
+ .descriptorBindingUniformBufferUpdateAfterBind = false,
+ .descriptorBindingSampledImageUpdateAfterBind = false,
+ .descriptorBindingStorageImageUpdateAfterBind = false,
+ .descriptorBindingStorageBufferUpdateAfterBind = false,
+ .descriptorBindingUniformTexelBufferUpdateAfterBind = false,
+ .descriptorBindingStorageTexelBufferUpdateAfterBind = false,
+ .descriptorBindingUpdateUnusedWhilePending = false,
+ .descriptorBindingPartiallyBound = false,
+ .descriptorBindingVariableDescriptorCount = false,
+ .runtimeDescriptorArray = false,
+
+ .samplerFilterMinmax = false,
+ .scalarBlockLayout = false,
+ .imagelessFramebuffer = false,
+ .uniformBufferStandardLayout = false,
+ .shaderSubgroupExtendedTypes = false,
+ .separateDepthStencilLayouts = false,
+ .hostQueryReset = false,
+ .timelineSemaphore = false,
+ .bufferDeviceAddress = false,
+ .bufferDeviceAddressCaptureReplay = false,
+ .bufferDeviceAddressMultiDevice = false,
+ .vulkanMemoryModel = false,
+ .vulkanMemoryModelDeviceScope = false,
+ .vulkanMemoryModelAvailabilityVisibilityChains = false,
+ .shaderOutputViewportIndex = false,
+ .shaderOutputLayer = false,
+ .subgroupBroadcastDynamicId = false,
+ };
+
vk_foreach_struct(ext, pFeatures->pNext)
{
+ if (vk_get_physical_device_core_1_1_feature_ext(ext, &core_1_1))
+ continue;
+ if (vk_get_physical_device_core_1_2_feature_ext(ext, &core_1_2))
+ continue;
switch (ext->sType) {
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
- VkPhysicalDeviceVulkan11Features *features = (void *) ext;
- features->storageBuffer16BitAccess = false;
- features->uniformAndStorageBuffer16BitAccess = false;
- features->storagePushConstant16 = false;
- features->storageInputOutput16 = false;
- features->multiview = false;
- features->multiviewGeometryShader = false;
- features->multiviewTessellationShader = false;
- features->variablePointersStorageBuffer = true;
- features->variablePointers = true;
- features->protectedMemory = false;
- features->samplerYcbcrConversion = false;
- features->shaderDrawParameters = false;
- break;
- }
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: {
- VkPhysicalDeviceVulkan12Features *features = (void *) ext;
- features->samplerMirrorClampToEdge = false;
- features->drawIndirectCount = false;
- features->storageBuffer8BitAccess = false;
- features->uniformAndStorageBuffer8BitAccess = false;
- features->storagePushConstant8 = false;
- features->shaderBufferInt64Atomics = false;
- features->shaderSharedInt64Atomics = false;
- features->shaderFloat16 = false;
- features->shaderInt8 = false;
-
- features->descriptorIndexing = false;
- features->shaderInputAttachmentArrayDynamicIndexing = false;
- features->shaderUniformTexelBufferArrayDynamicIndexing = false;
- features->shaderStorageTexelBufferArrayDynamicIndexing = false;
- features->shaderUniformBufferArrayNonUniformIndexing = false;
- features->shaderSampledImageArrayNonUniformIndexing = false;
- features->shaderStorageBufferArrayNonUniformIndexing = false;
- features->shaderStorageImageArrayNonUniformIndexing = false;
- features->shaderInputAttachmentArrayNonUniformIndexing = false;
- features->shaderUniformTexelBufferArrayNonUniformIndexing = false;
- features->shaderStorageTexelBufferArrayNonUniformIndexing = false;
- features->descriptorBindingUniformBufferUpdateAfterBind = false;
- features->descriptorBindingSampledImageUpdateAfterBind = false;
- features->descriptorBindingStorageImageUpdateAfterBind = false;
- features->descriptorBindingStorageBufferUpdateAfterBind = false;
- features->descriptorBindingUniformTexelBufferUpdateAfterBind = false;
- features->descriptorBindingStorageTexelBufferUpdateAfterBind = false;
- features->descriptorBindingUpdateUnusedWhilePending = false;
- features->descriptorBindingPartiallyBound = false;
- features->descriptorBindingVariableDescriptorCount = false;
- features->runtimeDescriptorArray = false;
-
- features->samplerFilterMinmax = false;
- features->scalarBlockLayout = false;
- features->imagelessFramebuffer = false;
- features->uniformBufferStandardLayout = false;
- features->shaderSubgroupExtendedTypes = false;
- features->separateDepthStencilLayouts = false;
- features->hostQueryReset = false;
- features->timelineSemaphore = false;
- features->bufferDeviceAddress = false;
- features->bufferDeviceAddressCaptureReplay = false;
- features->bufferDeviceAddressMultiDevice = false;
- features->vulkanMemoryModel = false;
- features->vulkanMemoryModelDeviceScope = false;
- features->vulkanMemoryModelAvailabilityVisibilityChains = false;
- features->shaderOutputViewportIndex = false;
- features->shaderOutputLayer = false;
- features->subgroupBroadcastDynamicId = false;
- break;
- }
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
- VkPhysicalDeviceVariablePointersFeatures *features = (void *) ext;
- features->variablePointersStorageBuffer = true;
- features->variablePointers = true;
- break;
- }
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
- VkPhysicalDeviceMultiviewFeatures *features =
- (VkPhysicalDeviceMultiviewFeatures *) ext;
- features->multiview = false;
- features->multiviewGeometryShader = false;
- features->multiviewTessellationShader = false;
- break;
- }
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
- VkPhysicalDeviceShaderDrawParametersFeatures *features =
- (VkPhysicalDeviceShaderDrawParametersFeatures *) ext;
- features->shaderDrawParameters = false;
- break;
- }
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
- VkPhysicalDeviceProtectedMemoryFeatures *features =
- (VkPhysicalDeviceProtectedMemoryFeatures *) ext;
- features->protectedMemory = false;
- break;
- }
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
- VkPhysicalDevice16BitStorageFeatures *features =
- (VkPhysicalDevice16BitStorageFeatures *) ext;
- features->storageBuffer16BitAccess = false;
- features->uniformAndStorageBuffer16BitAccess = false;
- features->storagePushConstant16 = false;
- features->storageInputOutput16 = false;
- break;
- }
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
- VkPhysicalDeviceSamplerYcbcrConversionFeatures *features =
- (VkPhysicalDeviceSamplerYcbcrConversionFeatures *) ext;
- features->samplerYcbcrConversion = false;
- break;
- }
- case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT: {
- VkPhysicalDeviceDescriptorIndexingFeaturesEXT *features =
- (VkPhysicalDeviceDescriptorIndexingFeaturesEXT *) ext;
- features->shaderInputAttachmentArrayDynamicIndexing = false;
- features->shaderUniformTexelBufferArrayDynamicIndexing = false;
- features->shaderStorageTexelBufferArrayDynamicIndexing = false;
- features->shaderUniformBufferArrayNonUniformIndexing = false;
- features->shaderSampledImageArrayNonUniformIndexing = false;
- features->shaderStorageBufferArrayNonUniformIndexing = false;
- features->shaderStorageImageArrayNonUniformIndexing = false;
- features->shaderInputAttachmentArrayNonUniformIndexing = false;
- features->shaderUniformTexelBufferArrayNonUniformIndexing = false;
- features->shaderStorageTexelBufferArrayNonUniformIndexing = false;
- features->descriptorBindingUniformBufferUpdateAfterBind = false;
- features->descriptorBindingSampledImageUpdateAfterBind = false;
- features->descriptorBindingStorageImageUpdateAfterBind = false;
- features->descriptorBindingStorageBufferUpdateAfterBind = false;
- features->descriptorBindingUniformTexelBufferUpdateAfterBind = false;
- features->descriptorBindingStorageTexelBufferUpdateAfterBind = false;
- features->descriptorBindingUpdateUnusedWhilePending = false;
- features->descriptorBindingPartiallyBound = false;
- features->descriptorBindingVariableDescriptorCount = false;
- features->runtimeDescriptorArray = false;
- break;
- }
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: {
VkPhysicalDeviceConditionalRenderingFeaturesEXT *features =
(VkPhysicalDeviceConditionalRenderingFeaturesEXT *) ext;
@@ -658,19 +609,6 @@ panvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
break;
}
}
-
- pFeatures->features = (VkPhysicalDeviceFeatures) {
- .fullDrawIndexUint32 = true,
- .independentBlend = true,
- .wideLines = true,
- .largePoints = true,
- .textureCompressionETC2 = true,
- .textureCompressionASTC_LDR = true,
- .shaderUniformBufferArrayDynamicIndexing = true,
- .shaderSampledImageArrayDynamicIndexing = true,
- .shaderStorageBufferArrayDynamicIndexing = true,
- .shaderStorageImageArrayDynamicIndexing = true,
- };
}
void
More information about the mesa-commit
mailing list