rusticl/formats: support cl_ext_image_unorm_int_2_101010

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35469>
This commit is contained in:
Karol Herbst
2025-06-11 14:26:33 +02:00
committed by Marge Bot
parent 54b11069d1
commit 9c47461889
4 changed files with 152 additions and 131 deletions
+1
View File
@@ -857,6 +857,7 @@ Rusticl extensions that are not part of any OpenCL version:
cl_khr_throttle_hints not started
cl_khr_work_group_uniform_arithmetic not started
cl_ext_buffer_device_address DONE (iris, llvmpipe, radeonsi, zink)
cl_ext_image_unorm_int_2_101010 DONE
cl_arm_non_uniform_work_group_size not started
cl_arm_shared_virtual_memory in progress (nvc0)
cl_intel_required_subgroup_size in progress (available with RUSTICL_FEATURES=intel)
+1 -1
View File
@@ -58,4 +58,4 @@ GL_EXT_shader_realtime_clock on panfrost/v6+
VK_KHR_shader_float8 on RADV (RDNA4+)
GL_EXT_window_rectangles on r600
GL_EXT_shader_image_load_store on r600/evergreen+
CL_UNORM_INT_101010_2
CL_UNORM_INT_101010_2 and cl_ext_image_unorm_int_2_101010
@@ -73,6 +73,7 @@ impl Deref for Device {
pub struct DeviceCaps {
pub has_3d_image_writes: bool,
pub has_depth_images: bool,
pub has_image_unorm_int_2_101010: bool,
pub has_images: bool,
pub has_rw_images: bool,
pub has_timestamp: bool,
@@ -343,6 +344,16 @@ impl DeviceBase {
.flatten()
.any(|mask| *mask != 0);
// Got added to clang with 20.1
self.caps.has_image_unorm_int_2_101010 = self
.formats
.iter()
.filter_map(|(format, v)| {
(format.image_channel_data_type == CL_UNORM_INT_2_101010_EXT).then_some(v.values())
})
.flatten()
.any(|mask| *mask != 0);
// if we can't advertize 3d image write ext, we have to disable them all
if !self.caps.has_3d_image_writes {
self.formats
@@ -704,6 +715,11 @@ impl DeviceBase {
if self.caps.has_depth_images {
add_ext(1, 0, 0, "cl_khr_depth_images");
}
if self.caps.has_image_unorm_int_2_101010 {
add_ext(1, 0, 0, "cl_ext_image_unorm_int_2_101010");
add_feat(1, 0, 0, "__opencl_c_ext_image_unorm_int_2_101010");
}
}
if self.pci_info().is_some() {
@@ -1222,6 +1238,7 @@ impl DeviceBase {
int64: self.int64_supported(),
images: self.caps.has_images,
images_depth: self.caps.has_depth_images,
images_unorm_int_2_101010: self.caps.has_image_unorm_int_2_101010,
images_read_write: self.caps.has_rw_images,
images_write_3d: self.caps.has_3d_image_writes,
integer_dot_product: true,
+133 -130
View File
@@ -62,155 +62,156 @@ macro_rules! cl_format_table {
cl_format_table!([
// broken on iris/gen12
// (CL_A, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_A16_FLOAT,
// (CL_A, CL_FLOAT) => pipe_format::PIPE_FORMAT_A32_FLOAT,
// (CL_A, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_A8_SINT,
// (CL_A, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_A16_SINT,
(CL_A, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_A32_SINT,
// (CL_A, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_A16_FLOAT,
// (CL_A, CL_FLOAT) => pipe_format::PIPE_FORMAT_A32_FLOAT,
// (CL_A, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_A8_SINT,
// (CL_A, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_A16_SINT,
(CL_A, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_A32_SINT,
// broken on iris/gen12
// (CL_A, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_A8_UINT,
// (CL_A, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_A16_UINT,
(CL_A, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_A32_UINT,
(CL_A, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_A8_SNORM,
(CL_A, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_A16_SNORM,
(CL_A, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_A8_UNORM,
(CL_A, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_A16_UNORM,
// (CL_A, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_A8_UINT,
// (CL_A, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_A16_UINT,
(CL_A, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_A32_UINT,
(CL_A, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_A8_SNORM,
(CL_A, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_A16_SNORM,
(CL_A, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_A8_UNORM,
(CL_A, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_A16_UNORM,
(CL_R, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16_FLOAT,
(CL_R, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32_FLOAT,
(CL_R, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8_SINT,
(CL_R, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16_SINT,
(CL_R, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32_SINT,
(CL_R, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8_UINT,
(CL_R, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16_UINT,
(CL_R, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32_UINT,
(CL_R, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8_SNORM,
(CL_R, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16_SNORM,
(CL_R, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8_UNORM,
(CL_R, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16_UNORM,
(CL_R, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16_FLOAT,
(CL_R, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32_FLOAT,
(CL_R, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8_SINT,
(CL_R, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16_SINT,
(CL_R, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32_SINT,
(CL_R, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8_UINT,
(CL_R, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16_UINT,
(CL_R, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32_UINT,
(CL_R, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8_SNORM,
(CL_R, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16_SNORM,
(CL_R, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8_UNORM,
(CL_R, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16_UNORM,
(CL_RA, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16A16_FLOAT,
(CL_RA, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32A32_FLOAT,
(CL_RA, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8A8_SINT,
(CL_RA, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16A16_SINT,
(CL_RA, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32A32_SINT,
(CL_RA, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8A8_UINT,
(CL_RA, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16A16_UINT,
(CL_RA, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32A32_UINT,
(CL_RA, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8A8_SNORM,
(CL_RA, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16A16_SNORM,
(CL_RA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8A8_UNORM,
(CL_RA, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16A16_UNORM,
(CL_RA, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16A16_FLOAT,
(CL_RA, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32A32_FLOAT,
(CL_RA, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8A8_SINT,
(CL_RA, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16A16_SINT,
(CL_RA, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32A32_SINT,
(CL_RA, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8A8_UINT,
(CL_RA, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16A16_UINT,
(CL_RA, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32A32_UINT,
(CL_RA, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8A8_SNORM,
(CL_RA, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16A16_SNORM,
(CL_RA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8A8_UNORM,
(CL_RA, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16A16_UNORM,
(CL_RG, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16G16_FLOAT,
(CL_RG, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32G32_FLOAT,
(CL_RG, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8_SINT,
(CL_RG, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16_SINT,
(CL_RG, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32_SINT,
(CL_RG, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8_UINT,
(CL_RG, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16_UINT,
(CL_RG, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32_UINT,
(CL_RG, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8_SNORM,
(CL_RG, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16_SNORM,
(CL_RG, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8_UNORM,
(CL_RG, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16_UNORM,
(CL_RG, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16G16_FLOAT,
(CL_RG, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32G32_FLOAT,
(CL_RG, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8_SINT,
(CL_RG, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16_SINT,
(CL_RG, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32_SINT,
(CL_RG, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8_UINT,
(CL_RG, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16_UINT,
(CL_RG, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32_UINT,
(CL_RG, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8_SNORM,
(CL_RG, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16_SNORM,
(CL_RG, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8_UNORM,
(CL_RG, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16_UNORM,
(CL_RGB, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16G16B16_FLOAT,
(CL_RGB, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32G32B32_FLOAT,
(CL_RGB, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8_SINT,
(CL_RGB, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16_SINT,
(CL_RGB, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32_SINT,
(CL_RGB, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8_UINT,
(CL_RGB, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16_UINT,
(CL_RGB, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32_UINT,
(CL_RGB, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8_SNORM,
(CL_RGB, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16_SNORM,
(CL_RGB, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8_UNORM,
(CL_RGB, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16_UNORM,
(CL_RGB, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16G16B16_FLOAT,
(CL_RGB, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32G32B32_FLOAT,
(CL_RGB, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8_SINT,
(CL_RGB, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16_SINT,
(CL_RGB, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32_SINT,
(CL_RGB, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8_UINT,
(CL_RGB, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16_UINT,
(CL_RGB, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32_UINT,
(CL_RGB, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8_SNORM,
(CL_RGB, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16_SNORM,
(CL_RGB, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8_UNORM,
(CL_RGB, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16_UNORM,
// broken
// (CL_RGB, CL_UNORM_SHORT_565) => pipe_format::PIPE_FORMAT_R5G6B5_UNORM,
// (CL_RGB, CL_UNORM_SHORT_565) => pipe_format::PIPE_FORMAT_B5G6R5_UNORM,
(CL_ABGR, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_A8B8G8R8_SINT,
(CL_ABGR, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_A8B8G8R8_UINT,
(CL_ABGR, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_A8B8G8R8_SNORM,
(CL_ABGR, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_A8B8G8R8_UNORM,
(CL_ABGR, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_A8B8G8R8_SINT,
(CL_ABGR, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_A8B8G8R8_UINT,
(CL_ABGR, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_A8B8G8R8_SNORM,
(CL_ABGR, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_A8B8G8R8_UNORM,
(CL_ABGR, CL_UNORM_INT_2_101010_EXT) => pipe_format::PIPE_FORMAT_R10G10B10A2_UNORM,
(CL_ARGB, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_A8R8G8B8_SINT,
(CL_ARGB, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_A8R8G8B8_UINT,
(CL_ARGB, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_A8R8G8B8_SNORM,
(CL_ARGB, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_A8R8G8B8_UNORM,
(CL_ARGB, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_A8R8G8B8_SINT,
(CL_ARGB, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_A8R8G8B8_UINT,
(CL_ARGB, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_A8R8G8B8_SNORM,
(CL_ARGB, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_A8R8G8B8_UNORM,
(CL_BGRA, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_SINT,
(CL_BGRA, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_UINT,
(CL_BGRA, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_SNORM,
(CL_BGRA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_UNORM,
(CL_BGRA, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_SINT,
(CL_BGRA, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_UINT,
(CL_BGRA, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_SNORM,
(CL_BGRA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_UNORM,
(CL_RGBA, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16G16B16A16_FLOAT,
(CL_RGBA, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32G32B32A32_FLOAT,
(CL_RGBA, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_SINT,
(CL_RGBA, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_SINT,
(CL_RGBA, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32A32_SINT,
(CL_RGBA, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_UINT,
(CL_RGBA, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_UINT,
(CL_RGBA, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32A32_UINT,
(CL_RGBA, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_SNORM,
(CL_RGBA, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_SNORM,
(CL_RGBA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_UNORM,
(CL_RGBA, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_UNORM,
(CL_RGBA, CL_UNORM_INT_101010_2) => pipe_format::PIPE_FORMAT_A2B10G10R10_UNORM,
(CL_RGBA, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16G16B16A16_FLOAT,
(CL_RGBA, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32G32B32A32_FLOAT,
(CL_RGBA, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_SINT,
(CL_RGBA, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_SINT,
(CL_RGBA, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32A32_SINT,
(CL_RGBA, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_UINT,
(CL_RGBA, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_UINT,
(CL_RGBA, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32A32_UINT,
(CL_RGBA, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_SNORM,
(CL_RGBA, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_SNORM,
(CL_RGBA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_UNORM,
(CL_RGBA, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_UNORM,
(CL_RGBA, CL_UNORM_INT_101010_2) => pipe_format::PIPE_FORMAT_A2B10G10R10_UNORM,
// broken
// (CL_RGBx, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16G16B16X16_FLOAT,
// (CL_RGBx, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32G32B32X32_FLOAT,
// (CL_RGBx, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8X8_SINT,
// (CL_RGBx, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16X16_SINT,
// (CL_RGBx, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32X32_SINT,
// (CL_RGBx, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8X8_UINT,
// (CL_RGBx, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16X16_UINT,
// (CL_RGBx, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32X32_UINT,
// (CL_RGBx, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8X8_SNORM,
// (CL_RGBx, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16X16_SNORM,
// (CL_RGBx, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8X8_UNORM,
// (CL_RGBx, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16X16_UNORM,
// (CL_RGBx, CL_UNORM_SHORT_555) => pipe_format::PIPE_FORMAT_R5G5B5X1_UNORM,
// (CL_RGBx, CL_UNORM_INT_101010) => pipe_format::PIPE_FORMAT_R10G10B10X2_UNORM,
// (CL_RGBx, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16G16B16X16_FLOAT,
// (CL_RGBx, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32G32B32X32_FLOAT,
// (CL_RGBx, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8X8_SINT,
// (CL_RGBx, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16X16_SINT,
// (CL_RGBx, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32X32_SINT,
// (CL_RGBx, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8X8_UINT,
// (CL_RGBx, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16X16_UINT,
// (CL_RGBx, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32X32_UINT,
// (CL_RGBx, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8X8_SNORM,
// (CL_RGBx, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16X16_SNORM,
// (CL_RGBx, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8X8_UNORM,
// (CL_RGBx, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16X16_UNORM,
// (CL_RGBx, CL_UNORM_SHORT_555) => pipe_format::PIPE_FORMAT_R5G5B5X1_UNORM,
// (CL_RGBx, CL_UNORM_INT_101010) => pipe_format::PIPE_FORMAT_R10G10B10X2_UNORM,
(CL_sRGBA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_SRGB,
(CL_sBGRA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_SRGB,
(CL_sRGBA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_SRGB,
(CL_sBGRA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_SRGB,
// broken
// (CL_sRGBx, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8X8_SRGB,
// (CL_sRGBx, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8X8_SRGB,
// yes, we use non depth formats for CL_DEPTH, because OpenCL requires normal pixel semantics
// and not implicit depth format semantics (e.g. implicit value clamping). Intel NEO does the
// same.
(CL_DEPTH, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32_FLOAT,
(CL_DEPTH, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16_UNORM,
(CL_DEPTH, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32_FLOAT,
(CL_DEPTH, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16_UNORM,
(CL_LUMINANCE, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_L16_FLOAT,
(CL_LUMINANCE, CL_FLOAT) => pipe_format::PIPE_FORMAT_L32_FLOAT,
(CL_LUMINANCE, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_L8_SINT,
(CL_LUMINANCE, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_L16_SINT,
(CL_LUMINANCE, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_L32_SINT,
(CL_LUMINANCE, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_L8_UINT,
(CL_LUMINANCE, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_L16_UINT,
(CL_LUMINANCE, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_L32_UINT,
(CL_LUMINANCE, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_L8_SNORM,
(CL_LUMINANCE, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_L16_SNORM,
(CL_LUMINANCE, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_L8_UNORM,
(CL_LUMINANCE, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_L16_UNORM,
(CL_LUMINANCE, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_L16_FLOAT,
(CL_LUMINANCE, CL_FLOAT) => pipe_format::PIPE_FORMAT_L32_FLOAT,
(CL_LUMINANCE, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_L8_SINT,
(CL_LUMINANCE, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_L16_SINT,
(CL_LUMINANCE, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_L32_SINT,
(CL_LUMINANCE, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_L8_UINT,
(CL_LUMINANCE, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_L16_UINT,
(CL_LUMINANCE, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_L32_UINT,
(CL_LUMINANCE, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_L8_SNORM,
(CL_LUMINANCE, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_L16_SNORM,
(CL_LUMINANCE, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_L8_UNORM,
(CL_LUMINANCE, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_L16_UNORM,
(CL_INTENSITY, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_I16_FLOAT,
(CL_INTENSITY, CL_FLOAT) => pipe_format::PIPE_FORMAT_I32_FLOAT,
(CL_INTENSITY, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_I8_SINT,
(CL_INTENSITY, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_I16_SINT,
(CL_INTENSITY, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_I32_SINT,
(CL_INTENSITY, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_I8_UINT,
(CL_INTENSITY, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_I16_UINT,
(CL_INTENSITY, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_I32_UINT,
(CL_INTENSITY, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_I8_SNORM,
(CL_INTENSITY, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_I16_SNORM,
(CL_INTENSITY, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_I8_UNORM,
(CL_INTENSITY, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_I16_UNORM,
(CL_INTENSITY, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_I16_FLOAT,
(CL_INTENSITY, CL_FLOAT) => pipe_format::PIPE_FORMAT_I32_FLOAT,
(CL_INTENSITY, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_I8_SINT,
(CL_INTENSITY, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_I16_SINT,
(CL_INTENSITY, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_I32_SINT,
(CL_INTENSITY, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_I8_UINT,
(CL_INTENSITY, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_I16_UINT,
(CL_INTENSITY, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_I32_UINT,
(CL_INTENSITY, CL_SNORM_INT8) => pipe_format::PIPE_FORMAT_I8_SNORM,
(CL_INTENSITY, CL_SNORM_INT16) => pipe_format::PIPE_FORMAT_I16_SNORM,
(CL_INTENSITY, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_I8_UNORM,
(CL_INTENSITY, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_I16_UNORM,
]);
#[rustfmt::skip]
@@ -416,7 +417,9 @@ impl CLFormatInfo for cl_image_format {
| CL_HALF_FLOAT => Some((2, false)),
CL_SIGNED_INT32 | CL_UNSIGNED_INT32 | CL_FLOAT => Some((4, false)),
CL_UNORM_SHORT_555 | CL_UNORM_SHORT_565 => Some((2, true)),
CL_UNORM_INT_101010 | CL_UNORM_INT_101010_2 => Some((4, true)),
CL_UNORM_INT_101010 | CL_UNORM_INT_101010_2 | CL_UNORM_INT_2_101010_EXT => {
Some((4, true))
}
_ => None,
}
}