Commit 522f135d authored by Rhys Perry's avatar Rhys Perry Committed by Marge Bot
Browse files

radv: expose VK_KHR_shader_integer_dot_product


Signed-off-by: Rhys Perry's avatarRhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Samuel Pitoiset's avatarSamuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <!12617>
parent 8037b215
Pipeline #394523 waiting for manual action with stages
in 4 minutes and 16 seconds
......@@ -491,6 +491,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_KHR_pipeline_executable_properties DONE (anv, radv, tu)
VK_KHR_push_descriptor DONE (anv, lvp, radv, tu)
VK_KHR_shader_clock DONE (anv, radv)
VK_KHR_shader_integer_dot_product DONE (radv)
VK_KHR_shader_non_semantic_info DONE (anv, radv)
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, radv)
VK_KHR_shader_terminate_invocation DONE (anv, radv, tu)
......
......@@ -9,3 +9,4 @@ GL 4.5 compatibility on llvmpipe
VK_EXT_primitive_topology_list_restart on RADV and lavapipe.
ES 3.2 on zink
VK_KHR_depth_stencil_resolve on lavapipe
VK_KHR_shader_integer_dot_product on RADV.
......@@ -437,6 +437,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device
.KHR_shader_draw_parameters = true,
.KHR_shader_float16_int8 = true,
.KHR_shader_float_controls = true,
.KHR_shader_integer_dot_product = true,
.KHR_shader_non_semantic_info = true,
.KHR_shader_subgroup_extended_types = true,
.KHR_shader_subgroup_uniform_control_flow = true,
......@@ -1706,6 +1707,12 @@ radv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
features->primitiveTopologyPatchListRestart = false;
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR: {
VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR *features =
(VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR *)ext;
features->shaderIntegerDotProduct = true;
break;
}
default:
break;
}
......@@ -2418,6 +2425,45 @@ radv_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
props->maxMultiDrawCount = 2048;
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR: {
VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR *props =
(VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR *)ext;
bool accel = pdevice->rad_info.has_accelerated_dot_product;
props->integerDotProduct8BitUnsignedAccelerated = accel;
props->integerDotProduct8BitSignedAccelerated = accel;
props->integerDotProduct8BitMixedSignednessAccelerated = false;
props->integerDotProduct4x8BitPackedUnsignedAccelerated = accel;
props->integerDotProduct4x8BitPackedSignedAccelerated = accel;
props->integerDotProduct4x8BitPackedMixedSignednessAccelerated = false;
props->integerDotProduct16BitUnsignedAccelerated = accel;
props->integerDotProduct16BitSignedAccelerated = accel;
props->integerDotProduct16BitMixedSignednessAccelerated = false;
props->integerDotProduct32BitUnsignedAccelerated = false;
props->integerDotProduct32BitSignedAccelerated = false;
props->integerDotProduct32BitMixedSignednessAccelerated = false;
props->integerDotProduct64BitUnsignedAccelerated = false;
props->integerDotProduct64BitSignedAccelerated = false;
props->integerDotProduct64BitMixedSignednessAccelerated = false;
props->integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = accel;
props->integerDotProductAccumulatingSaturating8BitSignedAccelerated = accel;
props->integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = false;
props->integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = accel;
props->integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = accel;
props->integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated =
false;
props->integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = accel;
props->integerDotProductAccumulatingSaturating16BitSignedAccelerated = accel;
props->integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = false;
props->integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = false;
props->integerDotProductAccumulatingSaturating32BitSignedAccelerated = false;
props->integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = false;
props->integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = false;
props->integerDotProductAccumulatingSaturating64BitSignedAccelerated = false;
props->integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = false;
break;
}
default:
break;
}
......
......@@ -84,6 +84,8 @@ radv_get_nir_options(struct radv_physical_device *device)
.lower_iadd_sat = device->rad_info.chip_class <= GFX8,
.has_fsub = true,
.has_isub = true,
.has_dot_4x8 = device->rad_info.has_accelerated_dot_product,
.has_dot_2x16 = device->rad_info.has_accelerated_dot_product,
.use_scoped_barrier = true,
.max_unroll_iterations = 32,
.max_unroll_iterations_aggressive = 128,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment