lavapipe: Advertise vulkan 1.4

Only advertise 1.4 for LLVM_VERSION_MAJOR>=10 because some subgroup
operations were promoted.

Closes: #12241
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32489>
This commit is contained in:
Konstantin Seurer
2024-12-04 21:25:12 +01:00
committed by Marge Bot
parent d09ba36f98
commit 38c4548290
3 changed files with 52 additions and 75 deletions

View File

@@ -505,7 +505,7 @@ Vulkan 1.3 -- all DONE: anv, lvp, nvk, radv, tu, vn, v3dv
VK_EXT_tooling_info DONE (anv, hasvk, nvk, panvk, pvr, radv, tu, v3dv, vn)
VK_EXT_ycbcr_2plane_444_formats DONE (anv, lvp, nvk, vn)
Vulkan 1.4 -- all DONE: anv, nvk, radv/gfx8+, tu/a7xx+
Vulkan 1.4 -- all DONE: anv, lvp, nvk, radv/gfx8+, tu/a7xx+
VK_KHR_dynamic_rendering_local_read DONE (anv, lvp, nvk, radv, tu)
VK_KHR_global_priority DONE (anv, lvp, nvk, panvk, radv, tu)
@@ -514,7 +514,7 @@ Vulkan 1.4 -- all DONE: anv, nvk, radv/gfx8+, tu/a7xx+
VK_KHR_load_store_op_none DONE (anv, lvp, nvk, radv, tu, v3dv)
VK_KHR_maintenance5 DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
VK_KHR_maintenance6 DONE (anv, lvp, nvk, radv, tu)
VK_KHR_map_memory2 DONE (anv, nvk, panvk, radv, tu)
VK_KHR_map_memory2 DONE (anv, lvp, nvk, panvk, radv, tu)
VK_KHR_push_descriptor DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, vn)
VK_KHR_shader_expect_assume DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
VK_KHR_shader_float_controls2 DONE (anv, lvp, nvk, radv, tu)

View File

@@ -61,7 +61,12 @@
defined(VK_USE_PLATFORM_METAL_EXT)
#define LVP_USE_WSI_PLATFORM
#endif
#if LLVM_VERSION_MAJOR >= 10
#define LVP_API_VERSION VK_MAKE_VERSION(1, 4, VK_HEADER_VERSION)
#else
#define LVP_API_VERSION VK_MAKE_VERSION(1, 3, VK_HEADER_VERSION)
#endif
VKAPI_ATTR VkResult VKAPI_CALL lvp_EnumerateInstanceVersion(uint32_t* pApiVersion)
{
@@ -453,6 +458,28 @@ lvp_get_features(const struct lvp_physical_device *pdevice,
.shaderIntegerDotProduct = true,
.maintenance4 = true,
/* Vulkan 1.4 */
.globalPriorityQuery = true,
.shaderSubgroupRotate = true,
.shaderSubgroupRotateClustered = true,
.shaderFloatControls2 = true,
.shaderExpectAssume = true,
.rectangularLines = true,
.bresenhamLines = true,
.smoothLines = true,
.stippledRectangularLines = true,
.stippledBresenhamLines = true,
.stippledSmoothLines = true,
.vertexAttributeInstanceRateDivisor = instance_divisor,
.vertexAttributeInstanceRateZeroDivisor = instance_divisor,
.indexTypeUint8 = true,
.dynamicRenderingLocalRead = true,
.maintenance5 = true,
.maintenance6 = true,
.pipelineRobustness = true,
.hostImageCopy = true,
.pushDescriptor = true,
/* VK_KHR_acceleration_structure */
.accelerationStructure = true,
.accelerationStructureCaptureReplay = false,
@@ -478,9 +505,6 @@ lvp_get_features(const struct lvp_physical_device *pdevice,
/* VK_EXT_non_seamless_cube_map */
.nonSeamlessCubeMap = true,
/* VK_KHR_global_priority */
.globalPriorityQuery = true,
/* VK_EXT_attachment_feedback_loop_layout */
.attachmentFeedbackLoopLayout = true,
@@ -492,27 +516,12 @@ lvp_get_features(const struct lvp_physical_device *pdevice,
.rasterizationOrderDepthAttachmentAccess = true,
.rasterizationOrderStencilAttachmentAccess = true,
/* VK_EXT_line_rasterization */
.rectangularLines = true,
.bresenhamLines = true,
.smoothLines = true,
.stippledRectangularLines = true,
.stippledBresenhamLines = true,
.stippledSmoothLines = true,
/* VK_EXT_vertex_attribute_divisor */
.vertexAttributeInstanceRateZeroDivisor = instance_divisor,
.vertexAttributeInstanceRateDivisor = instance_divisor,
/* VK_EXT_multisampled_render_to_single_sampled */
.multisampledRenderToSingleSampled = true,
/* VK_EXT_mutable_descriptor_type */
.mutableDescriptorType = true,
/* VK_EXT_index_type_uint8 */
.indexTypeUint8 = true,
/* VK_EXT_vertex_input_dynamic_state */
.vertexInputDynamicState = true,
@@ -591,9 +600,6 @@ lvp_get_features(const struct lvp_physical_device *pdevice,
/* VK_EXT_multi_draw */
.multiDraw = true,
/* VK_EXT_pipeline_robustness */
.pipelineRobustness = true,
/* VK_EXT_depth_clip_enable */
.depthClipEnable = (pdevice->pscreen->get_param(pdevice->pscreen, PIPE_CAP_DEPTH_CLAMP_ENABLE) != 0),
@@ -699,9 +705,6 @@ lvp_get_features(const struct lvp_physical_device *pdevice,
.nestedCommandBufferRendering = true,
.nestedCommandBufferSimultaneousUse = true,
/* VK_KHR_dynamic_rendering_local_read */
.dynamicRenderingLocalRead = true,
/* VK_EXT_mesh_shader */
.taskShader = true,
.meshShader = true,
@@ -709,26 +712,15 @@ lvp_get_features(const struct lvp_physical_device *pdevice,
.primitiveFragmentShadingRateMeshShader = false,
.meshShaderQueries = true,
/* host_image_copy */
.hostImageCopy = true,
/* maintenance5 */
.maintenance5 = true,
/* VK_EXT_ycbcr_2plane_444_formats */
.ycbcr2plane444Formats = true,
/* VK_EXT_ycbcr_image_arrays */
.ycbcrImageArrays = true,
/* maintenance6 */
.maintenance6 = true,
/* maintenance7 */
.maintenance7 = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
/* VK_KHR_shader_maximal_reconvergence */
.shaderMaximalReconvergence = true,
@@ -749,9 +741,6 @@ lvp_get_features(const struct lvp_physical_device *pdevice,
.shaderSubgroupRotate = true,
.shaderSubgroupRotateClustered = true,
/* KHR_shader_float_controls2 */
.shaderFloatControls2 = true,
/* VK_KHR_compute_shader_derivatives */
.computeDerivativeGroupQuads = true,
.computeDerivativeGroupLinear = true,
@@ -1030,10 +1019,22 @@ lvp_get_properties(const struct lvp_physical_device *device, struct vk_propertie
.uniformTexelBufferOffsetSingleTexelAlignment = true,
.maxBufferSize = UINT32_MAX,
/* VK_KHR_push_descriptor */
/* Vulkan 1.4 */
.lineSubPixelPrecisionBits = device->pscreen->get_param(device->pscreen, PIPE_CAP_RASTERIZER_SUBPIXEL_BITS),
.maxPushDescriptors = MAX_PUSH_DESCRIPTORS,
/* VK_EXT_host_image_copy */
/* FIXME No idea about most of these ones. */
.earlyFragmentMultisampleCoverageAfterSampleCounting = true,
.earlyFragmentSampleMaskTestBeforeSampleCounting = false,
.depthStencilSwizzleOneSupport = false,
.polygonModePointSize = true, /* This one is correct. */
.nonStrictSinglePixelWideLinesUseParallelogram = false,
.nonStrictWideLinesUseParallelogram = false,
.blockTexelViewCompatibleMultipleLayers = true,
.maxCombinedImageSamplerDescriptorCount = 3,
.defaultRobustnessStorageBuffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT,
.defaultRobustnessUniformBuffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT,
.defaultRobustnessVertexInputs = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT,
.defaultRobustnessImages = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT,
.pCopySrcLayouts = lvp_host_copy_image_layouts,
.copySrcLayoutCount = ARRAY_SIZE(lvp_host_copy_image_layouts),
.pCopyDstLayouts = lvp_host_copy_image_layouts,
@@ -1052,24 +1053,9 @@ lvp_get_properties(const struct lvp_physical_device *device, struct vk_propertie
.transformFeedbackRasterizationStreamSelect = false,
.transformFeedbackDraw = true,
/* VK_KHR_maintenance5 */
/* FIXME No idea about most of these ones. */
.earlyFragmentMultisampleCoverageAfterSampleCounting = true,
.earlyFragmentSampleMaskTestBeforeSampleCounting = false,
.depthStencilSwizzleOneSupport = false,
.polygonModePointSize = true, /* This one is correct. */
.nonStrictSinglePixelWideLinesUseParallelogram = false,
.nonStrictWideLinesUseParallelogram = false,
/* maintenance6 */
.maxCombinedImageSamplerDescriptorCount = 3,
/* VK_EXT_extended_dynamic_state3 */
.dynamicPrimitiveTopologyUnrestricted = VK_TRUE,
/* VK_EXT_line_rasterization */
.lineSubPixelPrecisionBits = device->pscreen->get_param(device->pscreen, PIPE_CAP_RASTERIZER_SUBPIXEL_BITS),
/* VK_NV_device_generated_commands */
.maxGraphicsShaderGroupCount = 1<<12,
.maxIndirectSequenceCount = 1<<20,
@@ -1105,12 +1091,6 @@ lvp_get_properties(const struct lvp_physical_device *device, struct vk_propertie
/* VK_EXT_multi_draw */
.maxMultiDrawCount = 2048,
/* VK_EXT_pipeline_robustness */
.defaultRobustnessStorageBuffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT,
.defaultRobustnessUniformBuffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT,
.defaultRobustnessVertexInputs = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT,
.defaultRobustnessImages = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT,
/* VK_EXT_descriptor_buffer */
.combinedImageSamplerDescriptorSingleArray = VK_TRUE,
.bufferlessPushDescriptors = VK_TRUE,
@@ -1249,20 +1229,17 @@ lvp_get_properties(const struct lvp_physical_device *device, struct vk_propertie
#endif
);
/* VK_EXT_nested_command_buffer */
p->maxCommandBufferNestingLevel = UINT32_MAX;
/* VK_EXT_host_image_copy */
lvp_device_get_cache_uuid(p->optimalTilingLayoutUUID);
/* VK_EXT_vertex_attribute_divisor */
/* Vulkan 1.4 */
if (device->pscreen->get_param(device->pscreen, PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR) != 0)
p->maxVertexAttribDivisor = UINT32_MAX;
else
p->maxVertexAttribDivisor = 1;
/* maintenance6 */
p->blockTexelViewCompatibleMultipleLayers = true,
/* VK_EXT_nested_command_buffer */
p->maxCommandBufferNestingLevel = UINT32_MAX;
/* VK_EXT_host_image_copy */
lvp_device_get_cache_uuid(p->optimalTilingLayoutUUID);
/* maintenance7 */
p->robustFragmentShadingRateAttachmentAccess = false;

View File

@@ -28,7 +28,7 @@ endif
icd_command = [
prog_python, '@INPUT0@',
'--api-version', '1.3', '--xml', '@INPUT1@',
'--api-version', '1.4', '--xml', '@INPUT1@',
'--lib-path', join_paths(icd_lib_path, icd_file_name),
'--out', '@OUTPUT@',
]
@@ -54,7 +54,7 @@ _dev_icd = custom_target(
output : _dev_icdname,
command : [
prog_python, '@INPUT0@',
'--api-version', '1.1', '--xml', '@INPUT1@',
'--api-version', '1.4', '--xml', '@INPUT1@',
'--lib-path', meson.current_build_dir() / icd_file_name,
'--out', '@OUTPUT@',
],