mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 02:20:11 +01:00
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@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15436>
This commit is contained in:
parent
5c1302f47c
commit
dd03dba7fd
1 changed files with 86 additions and 148 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue