From: Eric Engestrom Date: Thu, 16 Mar 2023 09:38:38 +0000 (+0000) Subject: v3dv: use vk_get_physical_device_features X-Git-Tag: upstream/23.3.3~11402 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=20ba9b9faa683105429a53cbf4ea9e95ddbd66b8;p=platform%2Fupstream%2Fmesa.git v3dv: use vk_get_physical_device_features Signed-off-by: Eric Engestrom Reviewed-by: Iago Toral Quiroga Part-of: --- diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index a44f8e8..f6e8f00 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -1090,9 +1090,8 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, { V3DV_FROM_HANDLE(v3dv_physical_device, physical_device, physicalDevice); - memset(&pFeatures->features, 0, sizeof(pFeatures->features)); - - pFeatures->features = (VkPhysicalDeviceFeatures) { + struct vk_features features = { + /* Vulkan 1.0 */ .robustBufferAccess = true, /* This feature is mandatory */ .fullDrawIndexUint32 = false, /* Only available since V3D 4.4.9.1 */ .imageCubeArray = true, @@ -1152,9 +1151,8 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, .sparseResidencyAliased = false, .variableMultisampleRate = false, .inheritedQueries = true, - }; - VkPhysicalDeviceVulkan11Features vk11 = { + /* Vulkan 1.1 */ .storageBuffer16BitAccess = true, .uniformAndStorageBuffer16BitAccess = true, .storagePushConstant16 = true, @@ -1172,9 +1170,8 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, .samplerYcbcrConversion = true, #endif .shaderDrawParameters = false, - }; - VkPhysicalDeviceVulkan12Features vk12 = { + /* Vulkan 1.2 */ .hostQueryReset = true, .uniformAndStorageBuffer8BitAccess = true, .uniformBufferStandardLayout = true, @@ -1226,9 +1223,8 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, .bufferDeviceAddress = true, .bufferDeviceAddressCaptureReplay = false, .bufferDeviceAddressMultiDevice = false, - }; - VkPhysicalDeviceVulkan13Features vk13 = { + /* Vulkan 1.3 */ .inlineUniformBlock = true, /* Inline buffers work like push constants, so after their are bound * some of their contents may be copied into the uniform stream as soon @@ -1247,158 +1243,77 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, .synchronization2 = true, .robustImageAccess = true, .shaderIntegerDotProduct = true, - }; - vk_foreach_struct(ext, pFeatures->pNext) { - if (vk_get_physical_device_core_1_1_feature_ext(ext, &vk11)) - continue; - if (vk_get_physical_device_core_1_2_feature_ext(ext, &vk12)) - continue; - if (vk_get_physical_device_core_1_3_feature_ext(ext, &vk13)) - continue; + /* VK_EXT_4444_formats */ + .formatA4R4G4B4 = true, + .formatA4B4G4R4 = true, - switch (ext->sType) { - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: { - VkPhysicalDevice4444FormatsFeaturesEXT *features = - (VkPhysicalDevice4444FormatsFeaturesEXT *)ext; - features->formatA4R4G4B4 = true; - features->formatA4B4G4R4 = true; - break; - } + /* VK_EXT_custom_border_color */ + .customBorderColors = true, + .customBorderColorWithoutFormat = false, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: { - VkPhysicalDeviceCustomBorderColorFeaturesEXT *features = - (VkPhysicalDeviceCustomBorderColorFeaturesEXT *)ext; - features->customBorderColors = true; - features->customBorderColorWithoutFormat = false; - break; - } + /* VK_EXT_index_type_uint8 */ + .indexTypeUint8 = true, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: { - VkPhysicalDeviceIndexTypeUint8FeaturesEXT *features = - (VkPhysicalDeviceIndexTypeUint8FeaturesEXT *)ext; - features->indexTypeUint8 = true; - break; - } + /* VK_EXT_line_rasterization */ + .rectangularLines = true, + .bresenhamLines = true, + .smoothLines = false, + .stippledRectangularLines = false, + .stippledBresenhamLines = false, + .stippledSmoothLines = false, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: { - VkPhysicalDeviceLineRasterizationFeaturesEXT *features = - (VkPhysicalDeviceLineRasterizationFeaturesEXT *)ext; - features->rectangularLines = true; - features->bresenhamLines = true; - features->smoothLines = false; - features->stippledRectangularLines = false; - features->stippledBresenhamLines = false; - features->stippledSmoothLines = false; - break; - } + /* VK_EXT_color_write_enable */ + .colorWriteEnable = true, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: { - VkPhysicalDeviceColorWriteEnableFeaturesEXT *features = (void *) ext; - features->colorWriteEnable = true; - break; - } + /* VK_KHR_pipeline_executable_properties */ + .pipelineExecutableInfo = true, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: { - VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *features = - (VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *) ext; - features->pipelineExecutableInfo = true; - break; - } + /* VK_EXT_provoking_vertex */ + .provokingVertexLast = true, + /* FIXME: update when supporting EXT_transform_feedback */ + .transformFeedbackPreservesProvokingVertex = false, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: { - VkPhysicalDeviceProvokingVertexFeaturesEXT *features = (void *) ext; - features->provokingVertexLast = true; - /* FIXME: update when supporting EXT_transform_feedback */ - features->transformFeedbackPreservesProvokingVertex = false; - break; - } + /* VK_EXT_vertex_attribute_divisor */ + .vertexAttributeInstanceRateDivisor = true, + .vertexAttributeInstanceRateZeroDivisor = false, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: { - VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *features = - (void *) ext; - features->vertexAttributeInstanceRateDivisor = true; - features->vertexAttributeInstanceRateZeroDivisor = false; - break; - } + /* VK_KHR_performance_query */ + .performanceCounterQueryPools = physical_device->caps.perfmon, + .performanceCounterMultipleQueryPools = false, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: { - VkPhysicalDevicePerformanceQueryFeaturesKHR *features = - (void *) ext; + /* VK_EXT_texel_buffer_alignment */ + .texelBufferAlignment = true, - features->performanceCounterQueryPools = - physical_device->caps.perfmon; - features->performanceCounterMultipleQueryPools = false; - break; - } + /* VK_KHR_workgroup_memory_explicit_layout */ + .workgroupMemoryExplicitLayout = true, + .workgroupMemoryExplicitLayoutScalarBlockLayout = false, + .workgroupMemoryExplicitLayout8BitAccess = true, + .workgroupMemoryExplicitLayout16BitAccess = true, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: { - VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *features = - (void *) ext; - features->texelBufferAlignment = true; - break; - } + /* VK_EXT_border_color_swizzle */ + .borderColorSwizzle = true, + .borderColorSwizzleFromImage = true, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: { - VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *features = - (VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *)ext; - features->workgroupMemoryExplicitLayout = true; - features->workgroupMemoryExplicitLayoutScalarBlockLayout = false; - features->workgroupMemoryExplicitLayout8BitAccess = true; - features->workgroupMemoryExplicitLayout16BitAccess = true; - break; - } + /* VK_EXT_shader_module_identifier */ + .shaderModuleIdentifier = true, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT: { - VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *features = - (void *) ext; - features->borderColorSwizzle = true; - features->borderColorSwizzleFromImage = true; - break; - } + /* VK_EXT_depth_clip_control */ + .depthClipControl = true, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT: { - VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *features = - (VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *)ext; - features->shaderModuleIdentifier = true; - break; - } + /* VK_EXT_attachment_feedback_loop_layout */ + .attachmentFeedbackLoopLayout = true, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: { - VkPhysicalDeviceDepthClipControlFeaturesEXT *features = - (VkPhysicalDeviceDepthClipControlFeaturesEXT *)ext; - features->depthClipControl = true; - break; - } + /* VK_EXT_primitive_topology_list_restart */ + .primitiveTopologyListRestart = true, + /* FIXME: we don't support tessellation shaders yet */ + .primitiveTopologyPatchListRestart = false, - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT: { - VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *features = - (void *) ext; - features->attachmentFeedbackLoopLayout = true; - break; - } - - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: { - VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *features = - (void *) ext; - features->primitiveTopologyListRestart = true; - /* FIXME: we don't support tessellation shaders yet */ - features->primitiveTopologyPatchListRestart = false; - break; - } - - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT: { - VkPhysicalDevicePipelineRobustnessFeaturesEXT *features = - (void *) ext; - features->pipelineRobustness = true; - break; - } + /* VK_EXT_pipeline_robustness */ + .pipelineRobustness = true, + }; - default: - v3dv_debug_ignored_stype(ext->sType); - break; - } - } + vk_get_physical_device_features(pFeatures, &features); } uint32_t