mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-11-30 21:54:16 +08:00
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:
parent
d94625d110
commit
20ba9b9faa
@ -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_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) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
vk_get_physical_device_features(pFeatures, &features);
|
||||
}
|
||||
|
||||
uint32_t
|
||||
|
Loading…
Reference in New Issue
Block a user