mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 04:30:10 +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,
|
panvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
||||||
VkPhysicalDeviceFeatures2 *pFeatures)
|
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)
|
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) {
|
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: {
|
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: {
|
||||||
VkPhysicalDeviceConditionalRenderingFeaturesEXT *features =
|
VkPhysicalDeviceConditionalRenderingFeaturesEXT *features =
|
||||||
(VkPhysicalDeviceConditionalRenderingFeaturesEXT *) ext;
|
(VkPhysicalDeviceConditionalRenderingFeaturesEXT *) ext;
|
||||||
|
|
@ -658,19 +609,6 @@ panvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
||||||
break;
|
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
|
void
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue