Module: Mesa Branch: main Commit: c2200a410bfa5490d25099572fd548023aac17f3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c2200a410bfa5490d25099572fd548023aac17f3
Author: Iago Toral Quiroga <[email protected]> Date: Wed Jan 11 11:25:59 2023 +0100 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 <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20639> --- docs/features.txt | 2 +- docs/relnotes/new_features.txt | 1 + src/broadcom/vulkan/v3dv_device.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index e92182f1a3c..e5efeb06863 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -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) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 15f8a864627..bbf9e1561fa 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -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 diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index bd81f022dee..994b6d66a76 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -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 = {
