v3dv: expose VK_KHR_shader_integer_dot_product

NIR will automatically lower all of these opcodes unless the driver
specifies that it can handle them natively. We don't have any hardware
support for any of these opcodes though, so we just let NIR lower
all of them.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20639>
This commit is contained in:
Iago Toral Quiroga 2023-01-11 11:25:59 +01:00 committed by Marge Bot
parent 22ef66bcc9
commit c2200a410b
3 changed files with 34 additions and 1 deletions

View File

@ -477,7 +477,7 @@ Vulkan 1.3 -- all DONE: anv, radv, tu, lvp, vn
VK_KHR_dynamic_rendering DONE (anv, dzn, lvp, radv, tu, vn)
VK_KHR_format_feature_flags2 DONE (anv, lvp, radv, tu, v3dv, vn)
VK_KHR_maintenance4 DONE (anv, lvp, radv, tu, v3dv, vn)
VK_KHR_shader_integer_dot_product DONE (anv, lvp, radv, tu, vn)
VK_KHR_shader_integer_dot_product DONE (anv, lvp, radv, tu, v3dv, vn)
VK_KHR_shader_non_semantic_info DONE (anv, radv, tu, v3dv, vn)
VK_KHR_shader_terminate_invocation DONE (anv, lvp, radv, tu, vn)
VK_KHR_synchronization2 DONE (anv, lvp, panvk, radv, v3dv, tu, vn)

View File

@ -6,3 +6,4 @@ Enabled VK_EXT_mesh_shader by default on RADV/RDNA2
Implemented more VK_EXT_dynamic_state3 features on RADV
Various raytracing, graphics pipeline library and RDNA3 improvements on RADV
Radeon Memory Visualizer support with RADV.
VK_KHR_shader_integer_dot_product on V3DV

View File

@ -155,6 +155,7 @@ get_device_extensions(const struct v3dv_physical_device *device,
.KHR_storage_buffer_storage_class = true,
.KHR_timeline_semaphore = true,
.KHR_uniform_buffer_standard_layout = true,
.KHR_shader_integer_dot_product = true,
.KHR_synchronization2 = true,
.KHR_workgroup_memory_explicit_layout = true,
#ifdef V3DV_USE_WSI_PLATFORM
@ -1169,6 +1170,7 @@ v3dv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
.shaderZeroInitializeWorkgroupMemory = true,
.synchronization2 = true,
.robustImageAccess = true,
.shaderIntegerDotProduct = true,
};
VkPhysicalDeviceVulkan12Features vk12 = {
@ -1622,6 +1624,36 @@ v3dv_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
.storageTexelBufferOffsetSingleTexelAlignment = false,
.uniformTexelBufferOffsetAlignmentBytes = V3D_TMU_TEXEL_ALIGN,
.uniformTexelBufferOffsetSingleTexelAlignment = false,
/* No native acceleration for integer dot product. We use NIR lowering. */
.integerDotProduct8BitUnsignedAccelerated = false,
.integerDotProduct8BitMixedSignednessAccelerated = false,
.integerDotProduct4x8BitPackedUnsignedAccelerated = false,
.integerDotProduct4x8BitPackedSignedAccelerated = false,
.integerDotProduct4x8BitPackedMixedSignednessAccelerated = false,
.integerDotProduct16BitUnsignedAccelerated = false,
.integerDotProduct16BitSignedAccelerated = false,
.integerDotProduct16BitMixedSignednessAccelerated = false,
.integerDotProduct32BitUnsignedAccelerated = false,
.integerDotProduct32BitSignedAccelerated = false,
.integerDotProduct32BitMixedSignednessAccelerated = false,
.integerDotProduct64BitUnsignedAccelerated = false,
.integerDotProduct64BitSignedAccelerated = false,
.integerDotProduct64BitMixedSignednessAccelerated = false,
.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = false,
.integerDotProductAccumulatingSaturating8BitSignedAccelerated = false,
.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = false,
.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = false,
.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = false,
.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = false,
.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = false,
.integerDotProductAccumulatingSaturating16BitSignedAccelerated = false,
.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = false,
.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = false,
.integerDotProductAccumulatingSaturating32BitSignedAccelerated = false,
.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = false,
.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = false,
.integerDotProductAccumulatingSaturating64BitSignedAccelerated = false,
.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = false,
};
VkPhysicalDeviceVulkan12Properties vk12 = {