rusticl/format: enable all trivial to support optional image formats
Signed-off-by: Karol Herbst <git@karolherbst.de> Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Nora Allen <blackcatgames@protonmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23714>
This commit is contained in:
@@ -799,7 +799,7 @@ Clover extensions that are not part of any OpenCL version:
|
||||
Rusticl OpenCL 1.0 -- all DONE:
|
||||
|
||||
Image support DONE
|
||||
- Optional image formats not started
|
||||
- Optional image formats in progress
|
||||
|
||||
|
||||
Rusticl OpenCL 1.1 -- all DONE:
|
||||
@@ -859,10 +859,10 @@ Rusticl OpenCL 2.0 -- all DONE:
|
||||
- Additional queries for clGetDeviceInfo DONE
|
||||
Pipes not started
|
||||
Extended 2D images creation in progress
|
||||
- CL_ABGR not started
|
||||
- CL_ABGR DONE
|
||||
- cl_khr_image2d_from_buffer DONE (iris, llvmpipe)
|
||||
- cl_khr_depth_images not started
|
||||
- from sRGB images not started
|
||||
- from sRGB images in progress
|
||||
clCreateSamplerWithProperties DONE
|
||||
Non-uniform work-group sizes not started
|
||||
cl_khr_3d_image_writes DONE
|
||||
|
@@ -232,22 +232,31 @@ impl Device {
|
||||
) {
|
||||
flags |= CL_MEM_READ_ONLY;
|
||||
}
|
||||
if self.screen.is_format_supported(
|
||||
f.pipe,
|
||||
cl_mem_type_to_texture_target(t),
|
||||
PIPE_BIND_SHADER_IMAGE,
|
||||
) {
|
||||
|
||||
// TODO: cl_khr_srgb_image_writes
|
||||
if !f.is_srgb
|
||||
&& self.screen.is_format_supported(
|
||||
f.pipe,
|
||||
cl_mem_type_to_texture_target(t),
|
||||
PIPE_BIND_SHADER_IMAGE,
|
||||
)
|
||||
{
|
||||
flags |= CL_MEM_WRITE_ONLY;
|
||||
// TODO: enable once we support it
|
||||
// flags |= CL_MEM_KERNEL_READ_AND_WRITE;
|
||||
}
|
||||
if self.screen.is_format_supported(
|
||||
f.pipe,
|
||||
cl_mem_type_to_texture_target(t),
|
||||
PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_SHADER_IMAGE,
|
||||
) {
|
||||
|
||||
// TODO: cl_khr_srgb_image_writes
|
||||
if !f.is_srgb
|
||||
&& self.screen.is_format_supported(
|
||||
f.pipe,
|
||||
cl_mem_type_to_texture_target(t),
|
||||
PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_SHADER_IMAGE,
|
||||
)
|
||||
{
|
||||
flags |= CL_MEM_READ_WRITE;
|
||||
}
|
||||
|
||||
fs.insert(t, flags as cl_mem_flags);
|
||||
}
|
||||
self.formats.insert(f.cl_image_format, fs);
|
||||
|
@@ -7,6 +7,7 @@ pub struct RusticlImageFormat {
|
||||
pub req_for_embeded_read_or_write: bool,
|
||||
pub req_for_full_read_and_write: bool,
|
||||
pub req_for_full_cl2: bool,
|
||||
pub is_srgb: bool,
|
||||
pub pipe: pipe_format,
|
||||
}
|
||||
|
||||
@@ -42,6 +43,7 @@ pub struct RusticlImageFormat {
|
||||
// FLOAT => 32 FLOAT
|
||||
macro_rules! cl_format_table {
|
||||
([$(($order: ident, $type: ident) => $pipe: expr,)+]) => {
|
||||
#[allow(non_upper_case_globals)]
|
||||
const fn cl_format_to_pipe(
|
||||
ch_order: cl_channel_order,
|
||||
ch_type: cl_channel_type
|
||||
@@ -59,30 +61,157 @@ macro_rules! cl_format_table {
|
||||
}
|
||||
|
||||
cl_format_table!([
|
||||
(CL_R, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16_FLOAT,
|
||||
(CL_RGBA, CL_HALF_FLOAT) => pipe_format::PIPE_FORMAT_R16G16B16A16_FLOAT,
|
||||
// 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,
|
||||
// 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_R, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32_FLOAT,
|
||||
(CL_RGBA, CL_FLOAT) => pipe_format::PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(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_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8_SINT,
|
||||
(CL_RGBA, CL_SIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_SINT,
|
||||
(CL_R, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16_SINT,
|
||||
(CL_RGBA, CL_SIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_SINT,
|
||||
(CL_R, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32_SINT,
|
||||
(CL_RGBA, CL_SIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32A32_SINT,
|
||||
(CL_R, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8_UINT,
|
||||
(CL_RGBA, CL_UNSIGNED_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_UINT,
|
||||
(CL_R, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16_UINT,
|
||||
(CL_RGBA, CL_UNSIGNED_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_UINT,
|
||||
(CL_R, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32_UINT,
|
||||
(CL_RGBA, CL_UNSIGNED_INT32) => pipe_format::PIPE_FORMAT_R32G32B32A32_UINT,
|
||||
(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_R, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8_UNORM,
|
||||
(CL_RGBA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8A8_UNORM,
|
||||
(CL_BGRA, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_B8G8R8A8_UNORM,
|
||||
(CL_R, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16_UNORM,
|
||||
(CL_RGBA, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_R16G16B16A16_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,
|
||||
// broken
|
||||
// (CL_RGB, CL_UNORM_SHORT_565) => pipe_format::PIPE_FORMAT_R5G6B5_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_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_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,
|
||||
// broken
|
||||
// (CL_RGBA, CL_UNORM_INT_101010_2) => pipe_format::PIPE_FORMAT_R10G10B10A2_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_sRGB, CL_UNORM_INT8) => pipe_format::PIPE_FORMAT_R8G8B8_SRGB,
|
||||
// broken on iris and radeonsi
|
||||
// (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,
|
||||
|
||||
// broken
|
||||
// (CL_DEPTH, CL_FLOAT) => pipe_format::PIPE_FORMAT_Z32_FLOAT,
|
||||
// (CL_DEPTH, CL_UNORM_INT16) => pipe_format::PIPE_FORMAT_Z16_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,
|
||||
]);
|
||||
|
||||
#[rustfmt::skip]
|
||||
@@ -197,6 +326,11 @@ const fn req_for_full_cl2(
|
||||
| (CL_sRGBA, CL_UNORM_INT8))
|
||||
}
|
||||
|
||||
#[allow(non_upper_case_globals)]
|
||||
const fn is_srgb(ch_order: cl_channel_order) -> bool {
|
||||
matches!(ch_order, CL_sBGRA | CL_sRGB | CL_sRGBA | CL_sRGBx)
|
||||
}
|
||||
|
||||
const fn rusticl_image_format(
|
||||
ch_order: cl_channel_order,
|
||||
ch_type: cl_channel_type,
|
||||
@@ -215,6 +349,7 @@ const fn rusticl_image_format(
|
||||
req_for_embeded_read_or_write: req_for_embedded_r_or_w(ch_order, ch_type),
|
||||
req_for_full_read_and_write: req_for_full_rw(ch_order, ch_type),
|
||||
req_for_full_cl2: req_for_full_cl2(ch_order, ch_type),
|
||||
is_srgb: is_srgb(ch_order),
|
||||
pipe: pipe,
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user