tu: Move core features definitions to a helper function.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12944>
This commit is contained in:
Eric Anholt 2020-11-12 13:47:15 -08:00 committed by Marge Bot
parent 895cfca641
commit 14eb5ca3cd

View file

@ -429,7 +429,80 @@ tu_EnumeratePhysicalDeviceGroups(
return vk_outarray_status(&out);
}
VKAPI_ATTR void VKAPI_CALL
static void
tu_get_physical_device_features_1_1(struct tu_physical_device *pdevice,
VkPhysicalDeviceVulkan11Features *features)
{
features->storageBuffer16BitAccess = pdevice->info->a6xx.storage_16bit;
features->uniformAndStorageBuffer16BitAccess = false;
features->storagePushConstant16 = false;
features->storageInputOutput16 = false;
features->multiview = true;
features->multiviewGeometryShader = false;
features->multiviewTessellationShader = false;
features->variablePointersStorageBuffer = true;
features->variablePointers = true;
features->protectedMemory = false;
features->samplerYcbcrConversion = true;
features->shaderDrawParameters = true;
}
static void
tu_get_physical_device_features_1_2(struct tu_physical_device *pdevice,
VkPhysicalDeviceVulkan12Features *features)
{
features->samplerMirrorClampToEdge = true;
features->drawIndirectCount = true;
features->storageBuffer8BitAccess = false;
features->uniformAndStorageBuffer8BitAccess = false;
features->storagePushConstant8 = false;
features->shaderBufferInt64Atomics = false;
features->shaderSharedInt64Atomics = false;
features->shaderFloat16 = true;
features->shaderInt8 = false;
features->descriptorIndexing = true;
features->shaderInputAttachmentArrayDynamicIndexing = false;
features->shaderUniformTexelBufferArrayDynamicIndexing = true;
features->shaderStorageTexelBufferArrayDynamicIndexing = true;
features->shaderUniformBufferArrayNonUniformIndexing = true;
features->shaderSampledImageArrayNonUniformIndexing = true;
features->shaderStorageBufferArrayNonUniformIndexing = true;
features->shaderStorageImageArrayNonUniformIndexing = true;
features->shaderInputAttachmentArrayNonUniformIndexing = false;
features->shaderUniformTexelBufferArrayNonUniformIndexing = true;
features->shaderStorageTexelBufferArrayNonUniformIndexing = true;
features->descriptorBindingUniformBufferUpdateAfterBind = false;
features->descriptorBindingSampledImageUpdateAfterBind = true;
features->descriptorBindingStorageImageUpdateAfterBind = true;
features->descriptorBindingStorageBufferUpdateAfterBind = true;
features->descriptorBindingUniformTexelBufferUpdateAfterBind = true;
features->descriptorBindingStorageTexelBufferUpdateAfterBind = true;
features->descriptorBindingUpdateUnusedWhilePending = true;
features->descriptorBindingPartiallyBound = true;
features->descriptorBindingVariableDescriptorCount = true;
features->runtimeDescriptorArray = true;
features->samplerFilterMinmax = true;
features->scalarBlockLayout = true;
features->imagelessFramebuffer = false;
features->uniformBufferStandardLayout = true;
features->shaderSubgroupExtendedTypes = false;
features->separateDepthStencilLayouts = false;
features->hostQueryReset = true;
features->timelineSemaphore = true;
features->bufferDeviceAddress = false;
features->bufferDeviceAddressCaptureReplay = false;
features->bufferDeviceAddressMultiDevice = false;
features->vulkanMemoryModel = true;
features->vulkanMemoryModelDeviceScope = true;
features->vulkanMemoryModelAvailabilityVisibilityChains = true;
features->shaderOutputViewportIndex = true;
features->shaderOutputLayer = true;
features->subgroupBroadcastDynamicId = false;
}
void
tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2 *pFeatures)
{
@ -487,72 +560,11 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
{
switch (ext->sType) {
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
VkPhysicalDeviceVulkan11Features *features = (void *) ext;
features->storageBuffer16BitAccess = pdevice->info->a6xx.storage_16bit;
features->uniformAndStorageBuffer16BitAccess = false;
features->storagePushConstant16 = false;
features->storageInputOutput16 = false;
features->multiview = true;
features->multiviewGeometryShader = false;
features->multiviewTessellationShader = false;
features->variablePointersStorageBuffer = true;
features->variablePointers = true;
features->protectedMemory = false;
features->samplerYcbcrConversion = true;
features->shaderDrawParameters = true;
tu_get_physical_device_features_1_1(pdevice, (void *)ext);
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: {
VkPhysicalDeviceVulkan12Features *features = (void *) ext;
features->samplerMirrorClampToEdge = true;
features->drawIndirectCount = true;
features->storageBuffer8BitAccess = false;
features->uniformAndStorageBuffer8BitAccess = false;
features->storagePushConstant8 = false;
features->shaderBufferInt64Atomics = false;
features->shaderSharedInt64Atomics = false;
features->shaderFloat16 = true;
features->shaderInt8 = false;
features->descriptorIndexing = true;
features->shaderInputAttachmentArrayDynamicIndexing = false;
features->shaderUniformTexelBufferArrayDynamicIndexing = true;
features->shaderStorageTexelBufferArrayDynamicIndexing = true;
features->shaderUniformBufferArrayNonUniformIndexing = true;
features->shaderSampledImageArrayNonUniformIndexing = true;
features->shaderStorageBufferArrayNonUniformIndexing = true;
features->shaderStorageImageArrayNonUniformIndexing = true;
features->shaderInputAttachmentArrayNonUniformIndexing = false;
features->shaderUniformTexelBufferArrayNonUniformIndexing = true;
features->shaderStorageTexelBufferArrayNonUniformIndexing = true;
features->descriptorBindingUniformBufferUpdateAfterBind = false;
features->descriptorBindingSampledImageUpdateAfterBind = true;
features->descriptorBindingStorageImageUpdateAfterBind = true;
features->descriptorBindingStorageBufferUpdateAfterBind = true;
features->descriptorBindingUniformTexelBufferUpdateAfterBind = true;
features->descriptorBindingStorageTexelBufferUpdateAfterBind = true;
features->descriptorBindingUpdateUnusedWhilePending = true;
features->descriptorBindingPartiallyBound = true;
features->descriptorBindingVariableDescriptorCount = true;
features->runtimeDescriptorArray = true;
features->samplerFilterMinmax = true;
features->scalarBlockLayout = true;
features->imagelessFramebuffer = false;
features->uniformBufferStandardLayout = false;
features->shaderSubgroupExtendedTypes = false;
features->separateDepthStencilLayouts = false;
features->hostQueryReset = true;
features->timelineSemaphore = true;
features->bufferDeviceAddress = false;
features->bufferDeviceAddressCaptureReplay = false;
features->bufferDeviceAddressMultiDevice = false;
features->vulkanMemoryModel = true;
features->vulkanMemoryModelDeviceScope = true;
features->vulkanMemoryModelAvailabilityVisibilityChains = true;
features->shaderOutputViewportIndex = true;
features->shaderOutputLayer = true;
features->subgroupBroadcastDynamicId = false;
tu_get_physical_device_features_1_2(pdevice, (void *)ext);
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {