rusticl/api: add integer_dot_product api
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23011>
This commit is contained in:
parent
8ca0a41f18
commit
40f1f25f56
2 changed files with 42 additions and 1 deletions
|
|
@ -1,4 +1,5 @@
|
|||
use crate::api::icd::*;
|
||||
use crate::api::types::IdpAccelProps;
|
||||
use crate::api::util::*;
|
||||
use crate::core::device::*;
|
||||
use crate::core::platform::*;
|
||||
|
|
@ -22,10 +23,13 @@ const SPIRV_SUPPORT: [cl_name_version; 5] = [
|
|||
mk_cl_version_ext(1, 3, 0, "SPIR-V"),
|
||||
mk_cl_version_ext(1, 4, 0, "SPIR-V"),
|
||||
];
|
||||
|
||||
type ClDevIdpAccelProps = cl_device_integer_dot_product_acceleration_properties_khr;
|
||||
impl CLInfo<cl_device_info> for cl_device_id {
|
||||
fn query(&self, q: cl_device_info, _: &[u8]) -> CLResult<Vec<u8>> {
|
||||
let dev = self.get_ref()?;
|
||||
|
||||
// curses you CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED_KHR
|
||||
#[allow(non_upper_case_globals)]
|
||||
Ok(match q {
|
||||
CL_DEVICE_ADDRESS_BITS => cl_prop::<cl_uint>(dev.address_bits()),
|
||||
CL_DEVICE_ATOMIC_FENCE_CAPABILITIES => cl_prop::<cl_device_atomic_capabilities>(
|
||||
|
|
@ -91,6 +95,42 @@ impl CLInfo<cl_device_info> for cl_device_id {
|
|||
CL_DEVICE_IMAGE3D_MAX_HEIGHT => cl_prop::<usize>(dev.image_3d_size()),
|
||||
CL_DEVICE_IMAGE3D_MAX_WIDTH => cl_prop::<usize>(dev.image_3d_size()),
|
||||
CL_DEVICE_IMAGE3D_MAX_DEPTH => cl_prop::<usize>(dev.image_3d_size()),
|
||||
CL_DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES_KHR => {
|
||||
cl_prop::<cl_device_integer_dot_product_capabilities_khr>(
|
||||
(CL_DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_PACKED_KHR
|
||||
| CL_DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_KHR)
|
||||
.into(),
|
||||
)
|
||||
}
|
||||
CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT_KHR => {
|
||||
cl_prop::<ClDevIdpAccelProps>({
|
||||
let pack = dev.pack_32_4x8_supported();
|
||||
let sdot = dev.sdot_4x8_supported() && pack;
|
||||
let udot = dev.udot_4x8_supported() && pack;
|
||||
let sudot = dev.sudot_4x8_supported() && pack;
|
||||
IdpAccelProps::new(
|
||||
sdot.into(),
|
||||
udot.into(),
|
||||
sudot.into(),
|
||||
sdot.into(),
|
||||
udot.into(),
|
||||
sudot.into(),
|
||||
)
|
||||
})
|
||||
}
|
||||
CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED_KHR => {
|
||||
cl_prop::<ClDevIdpAccelProps>({
|
||||
IdpAccelProps::new(
|
||||
dev.sdot_4x8_supported().into(),
|
||||
dev.udot_4x8_supported().into(),
|
||||
dev.sudot_4x8_supported().into(),
|
||||
dev.sdot_4x8_supported().into(),
|
||||
dev.udot_4x8_supported().into(),
|
||||
dev.sudot_4x8_supported().into(),
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED => {
|
||||
cl_prop::<&CStr>(dev.screen().cl_cts_version())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,6 +124,7 @@ cl_prop_for_type!(cl_ulong);
|
|||
cl_prop_for_type!(isize);
|
||||
cl_prop_for_type!(usize);
|
||||
|
||||
cl_prop_for_struct!(cl_device_integer_dot_product_acceleration_properties_khr);
|
||||
cl_prop_for_struct!(cl_device_pci_bus_info_khr);
|
||||
cl_prop_for_struct!(cl_image_format);
|
||||
cl_prop_for_struct!(cl_name_version);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue