From 03097f30fb095bffffbb432ebe98904474efad84 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 24 Sep 2021 12:26:25 +1000 Subject: [PATCH] lavapipe: move to new shared features/properties Acked-by: Mike Blumenkrantz Part-of: --- src/gallium/frontends/lavapipe/lvp_device.c | 294 +------------------- 1 file changed, 11 insertions(+), 283 deletions(-) diff --git a/src/gallium/frontends/lavapipe/lvp_device.c b/src/gallium/frontends/lavapipe/lvp_device.c index f8aee6a4a10..e9c9bee6ff3 100644 --- a/src/gallium/frontends/lavapipe/lvp_device.c +++ b/src/gallium/frontends/lavapipe/lvp_device.c @@ -541,46 +541,14 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceFeatures2( }; lvp_get_physical_device_features_1_2(pdevice, &core_1_2); -#define CORE_FEATURE(major, minor, feature) \ - features->feature = core_##major##_##minor.feature - 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_VARIABLE_POINTERS_FEATURES: { - VkPhysicalDeviceVariablePointersFeatures *features = (void *)ext; - CORE_FEATURE(1, 1, variablePointersStorageBuffer); - CORE_FEATURE(1, 1, variablePointers); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: { - VkPhysicalDeviceShaderDrawParametersFeatures *features = - (VkPhysicalDeviceShaderDrawParametersFeatures*)ext; - CORE_FEATURE(1, 1, shaderDrawParameters); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: { - VkPhysicalDeviceProtectedMemoryFeatures *features = - (VkPhysicalDeviceProtectedMemoryFeatures*)ext; - CORE_FEATURE(1, 1, protectedMemory); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: { - VkPhysicalDevice8BitStorageFeaturesKHR *features = - (VkPhysicalDevice8BitStorageFeaturesKHR *)ext; - CORE_FEATURE(1, 2, storageBuffer8BitAccess); - CORE_FEATURE(1, 2, uniformAndStorageBuffer8BitAccess); - CORE_FEATURE(1, 2, storagePushConstant8); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: { - VkPhysicalDevice16BitStorageFeatures *features = - (VkPhysicalDevice16BitStorageFeatures*)ext; - CORE_FEATURE(1, 1, storageBuffer16BitAccess); - CORE_FEATURE(1, 1, uniformAndStorageBuffer16BitAccess); - CORE_FEATURE(1, 1, storagePushConstant16); - CORE_FEATURE(1, 1, storageInputOutput16); - break; - } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT: { VkPhysicalDevicePrivateDataFeaturesEXT *features = (VkPhysicalDevicePrivateDataFeaturesEXT *)ext; @@ -631,31 +599,6 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceFeatures2( features->geometryStreams = true; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: { - VkPhysicalDeviceDescriptorIndexingFeatures *features = - (VkPhysicalDeviceDescriptorIndexingFeatures *)ext; - CORE_FEATURE(1, 2, shaderInputAttachmentArrayDynamicIndexing); - CORE_FEATURE(1, 2, shaderUniformTexelBufferArrayDynamicIndexing); - CORE_FEATURE(1, 2, shaderStorageTexelBufferArrayDynamicIndexing); - CORE_FEATURE(1, 2, shaderUniformBufferArrayNonUniformIndexing); - CORE_FEATURE(1, 2, shaderSampledImageArrayNonUniformIndexing); - CORE_FEATURE(1, 2, shaderStorageBufferArrayNonUniformIndexing); - CORE_FEATURE(1, 2, shaderStorageImageArrayNonUniformIndexing); - CORE_FEATURE(1, 2, shaderInputAttachmentArrayNonUniformIndexing); - CORE_FEATURE(1, 2, shaderUniformTexelBufferArrayNonUniformIndexing); - CORE_FEATURE(1, 2, shaderStorageTexelBufferArrayNonUniformIndexing); - CORE_FEATURE(1, 2, descriptorBindingUniformBufferUpdateAfterBind); - CORE_FEATURE(1, 2, descriptorBindingSampledImageUpdateAfterBind); - CORE_FEATURE(1, 2, descriptorBindingStorageImageUpdateAfterBind); - CORE_FEATURE(1, 2, descriptorBindingStorageBufferUpdateAfterBind); - CORE_FEATURE(1, 2, descriptorBindingUniformTexelBufferUpdateAfterBind); - CORE_FEATURE(1, 2, descriptorBindingStorageTexelBufferUpdateAfterBind); - CORE_FEATURE(1, 2, descriptorBindingUpdateUnusedWhilePending); - CORE_FEATURE(1, 2, descriptorBindingPartiallyBound); - CORE_FEATURE(1, 2, descriptorBindingVariableDescriptorCount); - CORE_FEATURE(1, 2, runtimeDescriptorArray); - break; - } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: { VkPhysicalDeviceConditionalRenderingFeaturesEXT *features = (VkPhysicalDeviceConditionalRenderingFeaturesEXT*)ext; @@ -663,95 +606,12 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceFeatures2( features->inheritedConditionalRendering = false; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: { - VkPhysicalDeviceTimelineSemaphoreFeatures *features = - (VkPhysicalDeviceTimelineSemaphoreFeatures*)ext; - CORE_FEATURE(1, 2, timelineSemaphore); - break; - } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: { VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *features = (VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*)ext; features->extendedDynamicState = true; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: { - VkPhysicalDeviceMultiviewFeatures *features = (VkPhysicalDeviceMultiviewFeatures*)ext; - CORE_FEATURE(1, 1, multiview); - CORE_FEATURE(1, 1, multiviewGeometryShader); - CORE_FEATURE(1, 1, multiviewTessellationShader); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: { - lvp_get_physical_device_features_1_1(pdevice, (void *)ext); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: { - lvp_get_physical_device_features_1_2(pdevice, (void *)ext); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR: { - VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *features = - (VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *)ext; - CORE_FEATURE(1, 2, uniformBufferStandardLayout); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT: { - VkPhysicalDeviceScalarBlockLayoutFeaturesEXT *features = - (VkPhysicalDeviceScalarBlockLayoutFeaturesEXT *)ext; - CORE_FEATURE(1, 2, scalarBlockLayout); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: { - VkPhysicalDeviceSamplerYcbcrConversionFeatures *features = - (VkPhysicalDeviceSamplerYcbcrConversionFeatures *) ext; - CORE_FEATURE(1, 1, samplerYcbcrConversion); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: { - VkPhysicalDeviceHostQueryResetFeaturesEXT *features = - (VkPhysicalDeviceHostQueryResetFeaturesEXT *)ext; - CORE_FEATURE(1, 2, hostQueryReset); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR: { - VkPhysicalDeviceBufferDeviceAddressFeaturesKHR *features = (void *)ext; - CORE_FEATURE(1, 2, bufferDeviceAddress); - CORE_FEATURE(1, 2, bufferDeviceAddressCaptureReplay); - CORE_FEATURE(1, 2, bufferDeviceAddressMultiDevice); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: { - VkPhysicalDeviceShaderFloat16Int8Features *features = - (VkPhysicalDeviceShaderFloat16Int8Features*)ext; - CORE_FEATURE(1, 2, shaderFloat16); - CORE_FEATURE(1, 2, shaderInt8); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR: { - VkPhysicalDeviceShaderAtomicInt64FeaturesKHR *features = (void *)ext; - CORE_FEATURE(1, 2, shaderBufferInt64Atomics); - CORE_FEATURE(1, 2, shaderSharedInt64Atomics); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: { - VkPhysicalDeviceImagelessFramebufferFeatures *features = - (VkPhysicalDeviceImagelessFramebufferFeatures*)ext; - CORE_FEATURE(1, 2, imagelessFramebuffer); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: { - VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *features = - (VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *)ext; - CORE_FEATURE(1, 2, shaderSubgroupExtendedTypes); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR: { - VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR *features = - (VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR *)ext; - CORE_FEATURE(1, 2, separateDepthStencilLayouts); - break; - } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: { VkPhysicalDeviceCustomBorderColorFeaturesEXT *features = (VkPhysicalDeviceCustomBorderColorFeaturesEXT *)ext; @@ -1078,38 +938,19 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceProperties2( }; lvp_get_physical_device_properties_1_2(pdevice, &core_1_2); -#define CORE_RENAMED_PROPERTY(major, minor, ext_property, core_property) \ - memcpy(&properties->ext_property, &core_##major##_##minor.core_property, \ - sizeof(core_##major##_##minor.core_property)) - -#define CORE_PROPERTY(major, minor, property) \ - CORE_RENAMED_PROPERTY(major, minor, property, property) - vk_foreach_struct(ext, pProperties->pNext) { - switch (ext->sType) { + if (vk_get_physical_device_core_1_1_property_ext(ext, &core_1_1)) + continue; + if (vk_get_physical_device_core_1_2_property_ext(ext, &core_1_2)) + continue; + switch (ext->sType) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: { VkPhysicalDevicePushDescriptorPropertiesKHR *properties = (VkPhysicalDevicePushDescriptorPropertiesKHR *) ext; properties->maxPushDescriptors = MAX_PUSH_DESCRIPTORS; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: { - VkPhysicalDeviceMaintenance3Properties *properties = - (VkPhysicalDeviceMaintenance3Properties*)ext; - CORE_PROPERTY(1, 1, maxPerSetDescriptors); - CORE_PROPERTY(1, 1, maxMemoryAllocationSize); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR: { - VkPhysicalDeviceDriverPropertiesKHR *properties = - (VkPhysicalDeviceDriverPropertiesKHR *) ext; - CORE_PROPERTY(1, 2, driverID); - CORE_PROPERTY(1, 2, driverName); - CORE_PROPERTY(1, 2, driverInfo); - CORE_PROPERTY(1, 2, conformanceVersion); - break; - } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: { VkPhysicalDevicePointClippingProperties *properties = (VkPhysicalDevicePointClippingProperties*)ext; @@ -1140,69 +981,6 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceProperties2( properties->transformFeedbackDraw = true; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: { - VkPhysicalDeviceMultiviewProperties *properties = - (VkPhysicalDeviceMultiviewProperties *)ext; - CORE_PROPERTY(1, 1, maxMultiviewViewCount); - CORE_PROPERTY(1, 1, maxMultiviewInstanceIndex); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: { - VkPhysicalDeviceTimelineSemaphoreProperties *properties = - (VkPhysicalDeviceTimelineSemaphoreProperties *)ext; - CORE_PROPERTY(1, 2, maxTimelineSemaphoreValueDifference); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: { - VkPhysicalDeviceIDProperties *properties = - (VkPhysicalDeviceIDProperties *)ext; - CORE_PROPERTY(1, 1, deviceUUID); - CORE_PROPERTY(1, 1, driverUUID); - CORE_PROPERTY(1, 1, deviceLUID); - CORE_PROPERTY(1, 1, deviceLUIDValid); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: { - VkPhysicalDeviceDescriptorIndexingProperties *properties = - (VkPhysicalDeviceDescriptorIndexingProperties *)ext; - CORE_PROPERTY(1, 2, maxUpdateAfterBindDescriptorsInAllPools); - CORE_PROPERTY(1, 2, shaderUniformBufferArrayNonUniformIndexingNative); - CORE_PROPERTY(1, 2, shaderSampledImageArrayNonUniformIndexingNative); - CORE_PROPERTY(1, 2, shaderStorageBufferArrayNonUniformIndexingNative); - CORE_PROPERTY(1, 2, shaderStorageImageArrayNonUniformIndexingNative); - CORE_PROPERTY(1, 2, shaderInputAttachmentArrayNonUniformIndexingNative); - CORE_PROPERTY(1, 2, robustBufferAccessUpdateAfterBind); - CORE_PROPERTY(1, 2, quadDivergentImplicitLod); - CORE_PROPERTY(1, 2, maxPerStageDescriptorUpdateAfterBindSamplers); - CORE_PROPERTY(1, 2, maxPerStageDescriptorUpdateAfterBindUniformBuffers); - CORE_PROPERTY(1, 2, maxPerStageDescriptorUpdateAfterBindStorageBuffers); - CORE_PROPERTY(1, 2, maxPerStageDescriptorUpdateAfterBindSampledImages); - CORE_PROPERTY(1, 2, maxPerStageDescriptorUpdateAfterBindStorageImages); - CORE_PROPERTY(1, 2, maxPerStageDescriptorUpdateAfterBindInputAttachments); - CORE_PROPERTY(1, 2, maxPerStageUpdateAfterBindResources); - CORE_PROPERTY(1, 2, maxDescriptorSetUpdateAfterBindSamplers); - CORE_PROPERTY(1, 2, maxDescriptorSetUpdateAfterBindUniformBuffers); - CORE_PROPERTY(1, 2, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic); - CORE_PROPERTY(1, 2, maxDescriptorSetUpdateAfterBindStorageBuffers); - CORE_PROPERTY(1, 2, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic); - CORE_PROPERTY(1, 2, maxDescriptorSetUpdateAfterBindSampledImages); - CORE_PROPERTY(1, 2, maxDescriptorSetUpdateAfterBindStorageImages); - CORE_PROPERTY(1, 2, maxDescriptorSetUpdateAfterBindInputAttachments); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: { - VkPhysicalDeviceProtectedMemoryProperties *properties = - (VkPhysicalDeviceProtectedMemoryProperties *)ext; - CORE_PROPERTY(1, 1, protectedNoFault); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT: { - VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT *properties = - (VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT *)ext; - CORE_PROPERTY(1, 2, filterMinmaxImageComponentMapping); - CORE_PROPERTY(1, 2, filterMinmaxSingleComponentFormats); - break; - } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT: { VkPhysicalDeviceLineRasterizationPropertiesEXT *properties = (VkPhysicalDeviceLineRasterizationPropertiesEXT *)ext; @@ -1217,24 +995,6 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceProperties2( properties->minImportedHostPointerAlignment = 4096; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: { - VkPhysicalDeviceSubgroupProperties *properties = - (VkPhysicalDeviceSubgroupProperties*)ext; - CORE_PROPERTY(1, 1, subgroupSize); - CORE_RENAMED_PROPERTY(1, 1, supportedStages, - subgroupSupportedStages); - CORE_RENAMED_PROPERTY(1, 1, supportedOperations, - subgroupSupportedOperations); - CORE_RENAMED_PROPERTY(1, 1, quadOperationsInAllStages, - subgroupQuadOperationsInAllStages); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: - lvp_get_physical_device_properties_1_1(pdevice, (void *)ext); - break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: - lvp_get_physical_device_properties_1_2(pdevice, (void *)ext); - break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: { VkPhysicalDeviceCustomBorderColorPropertiesEXT *properties = (VkPhysicalDeviceCustomBorderColorPropertiesEXT *)ext; @@ -1253,38 +1013,6 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceProperties2( props->maxMultiDrawCount = 2048; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: { - VkPhysicalDeviceDepthStencilResolveProperties *properties = - (VkPhysicalDeviceDepthStencilResolveProperties *)ext; - CORE_PROPERTY(1, 2, supportedDepthResolveModes); - CORE_PROPERTY(1, 2, supportedStencilResolveModes); - CORE_PROPERTY(1, 2, independentResolveNone); - CORE_PROPERTY(1, 2, independentResolve); - break; - } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR : { - VkPhysicalDeviceFloatControlsPropertiesKHR *properties = (VkPhysicalDeviceFloatControlsPropertiesKHR *)ext; - CORE_PROPERTY(1, 2, denormBehaviorIndependence); - CORE_PROPERTY(1, 2, roundingModeIndependence); - CORE_PROPERTY(1, 2, shaderDenormFlushToZeroFloat16); - CORE_PROPERTY(1, 2, shaderDenormPreserveFloat16); - CORE_PROPERTY(1, 2, shaderRoundingModeRTEFloat16); - CORE_PROPERTY(1, 2, shaderRoundingModeRTZFloat16); - CORE_PROPERTY(1, 2, shaderSignedZeroInfNanPreserveFloat16); - - CORE_PROPERTY(1, 2, shaderDenormFlushToZeroFloat32); - CORE_PROPERTY(1, 2, shaderDenormPreserveFloat32); - CORE_PROPERTY(1, 2, shaderRoundingModeRTEFloat32); - CORE_PROPERTY(1, 2, shaderRoundingModeRTZFloat32); - CORE_PROPERTY(1, 2, shaderSignedZeroInfNanPreserveFloat32); - - CORE_PROPERTY(1, 2, shaderDenormFlushToZeroFloat64); - CORE_PROPERTY(1, 2, shaderDenormPreserveFloat64); - CORE_PROPERTY(1, 2, shaderRoundingModeRTEFloat64); - CORE_PROPERTY(1, 2, shaderRoundingModeRTZFloat64); - CORE_PROPERTY(1, 2, shaderSignedZeroInfNanPreserveFloat64); - break; - } default: break; }