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 = {

Reply via email to