v3dv: use vk_get_physical_device_features
Signed-off-by: Eric Engestrom <eric@igalia.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21959>
This commit is contained in:

committed by
Marge Bot

parent
d94625d110
commit
20ba9b9faa
@@ -1090,9 +1090,8 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||||||
{
|
{
|
||||||
V3DV_FROM_HANDLE(v3dv_physical_device, physical_device, physicalDevice);
|
V3DV_FROM_HANDLE(v3dv_physical_device, physical_device, physicalDevice);
|
||||||
|
|
||||||
memset(&pFeatures->features, 0, sizeof(pFeatures->features));
|
struct vk_features features = {
|
||||||
|
/* Vulkan 1.0 */
|
||||||
pFeatures->features = (VkPhysicalDeviceFeatures) {
|
|
||||||
.robustBufferAccess = true, /* This feature is mandatory */
|
.robustBufferAccess = true, /* This feature is mandatory */
|
||||||
.fullDrawIndexUint32 = false, /* Only available since V3D 4.4.9.1 */
|
.fullDrawIndexUint32 = false, /* Only available since V3D 4.4.9.1 */
|
||||||
.imageCubeArray = true,
|
.imageCubeArray = true,
|
||||||
@@ -1152,9 +1151,8 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||||||
.sparseResidencyAliased = false,
|
.sparseResidencyAliased = false,
|
||||||
.variableMultisampleRate = false,
|
.variableMultisampleRate = false,
|
||||||
.inheritedQueries = true,
|
.inheritedQueries = true,
|
||||||
};
|
|
||||||
|
|
||||||
VkPhysicalDeviceVulkan11Features vk11 = {
|
/* Vulkan 1.1 */
|
||||||
.storageBuffer16BitAccess = true,
|
.storageBuffer16BitAccess = true,
|
||||||
.uniformAndStorageBuffer16BitAccess = true,
|
.uniformAndStorageBuffer16BitAccess = true,
|
||||||
.storagePushConstant16 = true,
|
.storagePushConstant16 = true,
|
||||||
@@ -1172,9 +1170,8 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||||||
.samplerYcbcrConversion = true,
|
.samplerYcbcrConversion = true,
|
||||||
#endif
|
#endif
|
||||||
.shaderDrawParameters = false,
|
.shaderDrawParameters = false,
|
||||||
};
|
|
||||||
|
|
||||||
VkPhysicalDeviceVulkan12Features vk12 = {
|
/* Vulkan 1.2 */
|
||||||
.hostQueryReset = true,
|
.hostQueryReset = true,
|
||||||
.uniformAndStorageBuffer8BitAccess = true,
|
.uniformAndStorageBuffer8BitAccess = true,
|
||||||
.uniformBufferStandardLayout = true,
|
.uniformBufferStandardLayout = true,
|
||||||
@@ -1226,9 +1223,8 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||||||
.bufferDeviceAddress = true,
|
.bufferDeviceAddress = true,
|
||||||
.bufferDeviceAddressCaptureReplay = false,
|
.bufferDeviceAddressCaptureReplay = false,
|
||||||
.bufferDeviceAddressMultiDevice = false,
|
.bufferDeviceAddressMultiDevice = false,
|
||||||
};
|
|
||||||
|
|
||||||
VkPhysicalDeviceVulkan13Features vk13 = {
|
/* Vulkan 1.3 */
|
||||||
.inlineUniformBlock = true,
|
.inlineUniformBlock = true,
|
||||||
/* Inline buffers work like push constants, so after their are bound
|
/* Inline buffers work like push constants, so after their are bound
|
||||||
* some of their contents may be copied into the uniform stream as soon
|
* some of their contents may be copied into the uniform stream as soon
|
||||||
@@ -1247,158 +1243,77 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||||||
.synchronization2 = true,
|
.synchronization2 = true,
|
||||||
.robustImageAccess = true,
|
.robustImageAccess = true,
|
||||||
.shaderIntegerDotProduct = true,
|
.shaderIntegerDotProduct = true,
|
||||||
|
|
||||||
|
/* VK_EXT_4444_formats */
|
||||||
|
.formatA4R4G4B4 = true,
|
||||||
|
.formatA4B4G4R4 = true,
|
||||||
|
|
||||||
|
/* VK_EXT_custom_border_color */
|
||||||
|
.customBorderColors = true,
|
||||||
|
.customBorderColorWithoutFormat = false,
|
||||||
|
|
||||||
|
/* VK_EXT_index_type_uint8 */
|
||||||
|
.indexTypeUint8 = true,
|
||||||
|
|
||||||
|
/* VK_EXT_line_rasterization */
|
||||||
|
.rectangularLines = true,
|
||||||
|
.bresenhamLines = true,
|
||||||
|
.smoothLines = false,
|
||||||
|
.stippledRectangularLines = false,
|
||||||
|
.stippledBresenhamLines = false,
|
||||||
|
.stippledSmoothLines = false,
|
||||||
|
|
||||||
|
/* VK_EXT_color_write_enable */
|
||||||
|
.colorWriteEnable = true,
|
||||||
|
|
||||||
|
/* VK_KHR_pipeline_executable_properties */
|
||||||
|
.pipelineExecutableInfo = true,
|
||||||
|
|
||||||
|
/* VK_EXT_provoking_vertex */
|
||||||
|
.provokingVertexLast = true,
|
||||||
|
/* FIXME: update when supporting EXT_transform_feedback */
|
||||||
|
.transformFeedbackPreservesProvokingVertex = false,
|
||||||
|
|
||||||
|
/* VK_EXT_vertex_attribute_divisor */
|
||||||
|
.vertexAttributeInstanceRateDivisor = true,
|
||||||
|
.vertexAttributeInstanceRateZeroDivisor = false,
|
||||||
|
|
||||||
|
/* VK_KHR_performance_query */
|
||||||
|
.performanceCounterQueryPools = physical_device->caps.perfmon,
|
||||||
|
.performanceCounterMultipleQueryPools = false,
|
||||||
|
|
||||||
|
/* VK_EXT_texel_buffer_alignment */
|
||||||
|
.texelBufferAlignment = true,
|
||||||
|
|
||||||
|
/* VK_KHR_workgroup_memory_explicit_layout */
|
||||||
|
.workgroupMemoryExplicitLayout = true,
|
||||||
|
.workgroupMemoryExplicitLayoutScalarBlockLayout = false,
|
||||||
|
.workgroupMemoryExplicitLayout8BitAccess = true,
|
||||||
|
.workgroupMemoryExplicitLayout16BitAccess = true,
|
||||||
|
|
||||||
|
/* VK_EXT_border_color_swizzle */
|
||||||
|
.borderColorSwizzle = true,
|
||||||
|
.borderColorSwizzleFromImage = true,
|
||||||
|
|
||||||
|
/* VK_EXT_shader_module_identifier */
|
||||||
|
.shaderModuleIdentifier = true,
|
||||||
|
|
||||||
|
/* VK_EXT_depth_clip_control */
|
||||||
|
.depthClipControl = true,
|
||||||
|
|
||||||
|
/* VK_EXT_attachment_feedback_loop_layout */
|
||||||
|
.attachmentFeedbackLoopLayout = true,
|
||||||
|
|
||||||
|
/* VK_EXT_primitive_topology_list_restart */
|
||||||
|
.primitiveTopologyListRestart = true,
|
||||||
|
/* FIXME: we don't support tessellation shaders yet */
|
||||||
|
.primitiveTopologyPatchListRestart = false,
|
||||||
|
|
||||||
|
/* VK_EXT_pipeline_robustness */
|
||||||
|
.pipelineRobustness = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
vk_foreach_struct(ext, pFeatures->pNext) {
|
vk_get_physical_device_features(pFeatures, &features);
|
||||||
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;
|
|
||||||
|
|
||||||
switch (ext->sType) {
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: {
|
|
||||||
VkPhysicalDevice4444FormatsFeaturesEXT *features =
|
|
||||||
(VkPhysicalDevice4444FormatsFeaturesEXT *)ext;
|
|
||||||
features->formatA4R4G4B4 = true;
|
|
||||||
features->formatA4B4G4R4 = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: {
|
|
||||||
VkPhysicalDeviceCustomBorderColorFeaturesEXT *features =
|
|
||||||
(VkPhysicalDeviceCustomBorderColorFeaturesEXT *)ext;
|
|
||||||
features->customBorderColors = true;
|
|
||||||
features->customBorderColorWithoutFormat = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: {
|
|
||||||
VkPhysicalDeviceIndexTypeUint8FeaturesEXT *features =
|
|
||||||
(VkPhysicalDeviceIndexTypeUint8FeaturesEXT *)ext;
|
|
||||||
features->indexTypeUint8 = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: {
|
|
||||||
VkPhysicalDeviceColorWriteEnableFeaturesEXT *features = (void *) ext;
|
|
||||||
features->colorWriteEnable = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: {
|
|
||||||
VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *features =
|
|
||||||
(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *) ext;
|
|
||||||
features->pipelineExecutableInfo = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: {
|
|
||||||
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *features =
|
|
||||||
(void *) ext;
|
|
||||||
features->vertexAttributeInstanceRateDivisor = true;
|
|
||||||
features->vertexAttributeInstanceRateZeroDivisor = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: {
|
|
||||||
VkPhysicalDevicePerformanceQueryFeaturesKHR *features =
|
|
||||||
(void *) ext;
|
|
||||||
|
|
||||||
features->performanceCounterQueryPools =
|
|
||||||
physical_device->caps.perfmon;
|
|
||||||
features->performanceCounterMultipleQueryPools = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
|
|
||||||
VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *features =
|
|
||||||
(void *) ext;
|
|
||||||
features->texelBufferAlignment = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT: {
|
|
||||||
VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *features =
|
|
||||||
(void *) ext;
|
|
||||||
features->borderColorSwizzle = true;
|
|
||||||
features->borderColorSwizzleFromImage = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT: {
|
|
||||||
VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *features =
|
|
||||||
(VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *)ext;
|
|
||||||
features->shaderModuleIdentifier = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: {
|
|
||||||
VkPhysicalDeviceDepthClipControlFeaturesEXT *features =
|
|
||||||
(VkPhysicalDeviceDepthClipControlFeaturesEXT *)ext;
|
|
||||||
features->depthClipControl = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
|
||||||
v3dv_debug_ignored_stype(ext->sType);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t
|
uint32_t
|
||||||
|
Reference in New Issue
Block a user