add_ext(1, 0, 0, "cl_khr_fp64");
}
+ if !FORMATS
+ .iter()
+ .filter(|f| f.req_for_3d_image_write_ext)
+ .map(|f| self.formats.get(&f.cl_image_format).unwrap())
+ .map(|f| f.get(&CL_MEM_OBJECT_IMAGE3D).unwrap())
+ .any(|f| *f & cl_mem_flags::from(CL_MEM_WRITE_ONLY) == 0)
+ {
+ add_ext(1, 0, 0, "cl_khr_3d_image_writes");
+ }
+
if self.embedded {
if self.long_supported() {
add_ext(1, 0, 0, "cles_khr_int64");
pub req_for_full_read_or_write: bool,
pub req_for_embeded_read_or_write: bool,
pub req_for_full_read_and_write: bool,
+ pub req_for_3d_image_write_ext: bool,
pub pipe: pipe_format,
}
req_for_full_read_or_write: bool,
req_for_embeded_read_or_write: bool,
req_for_full_read_and_write: bool,
+ req_for_3d_image_write_ext: bool,
pipe: pipe_format,
) -> RusticlImageFormat {
RusticlImageFormat {
req_for_full_read_or_write: req_for_full_read_or_write,
req_for_embeded_read_or_write: req_for_embeded_read_or_write,
req_for_full_read_and_write: req_for_full_read_and_write,
+ req_for_3d_image_write_ext: req_for_3d_image_write_ext,
pipe: pipe,
}
}
false,
false,
true,
+ false,
pipe_format::PIPE_FORMAT_R16_FLOAT,
),
rusticl_image_format(
false,
false,
true,
+ false,
pipe_format::PIPE_FORMAT_R32_FLOAT,
),
rusticl_image_format(
false,
false,
true,
+ false,
pipe_format::PIPE_FORMAT_R8_SINT,
),
rusticl_image_format(
false,
false,
true,
+ false,
pipe_format::PIPE_FORMAT_R16_SINT,
),
rusticl_image_format(
false,
false,
true,
+ false,
pipe_format::PIPE_FORMAT_R32_SINT,
),
rusticl_image_format(
false,
false,
true,
+ false,
pipe_format::PIPE_FORMAT_R8_UNORM,
),
rusticl_image_format(
false,
false,
false,
+ false,
pipe_format::PIPE_FORMAT_R16_UNORM,
),
rusticl_image_format(
false,
false,
true,
+ false,
pipe_format::PIPE_FORMAT_R8_UINT,
),
rusticl_image_format(
false,
false,
true,
+ false,
pipe_format::PIPE_FORMAT_R16_UINT,
),
rusticl_image_format(
false,
false,
true,
+ false,
pipe_format::PIPE_FORMAT_R32_UINT,
),
rusticl_image_format(
true,
true,
true,
+ true,
pipe_format::PIPE_FORMAT_R16G16B16A16_FLOAT,
),
rusticl_image_format(
true,
true,
true,
+ true,
pipe_format::PIPE_FORMAT_R32G32B32A32_FLOAT,
),
rusticl_image_format(
true,
true,
true,
+ true,
pipe_format::PIPE_FORMAT_R8G8B8A8_SINT,
),
rusticl_image_format(
true,
true,
true,
+ true,
pipe_format::PIPE_FORMAT_R16G16B16A16_SINT,
),
rusticl_image_format(
true,
true,
true,
+ true,
pipe_format::PIPE_FORMAT_R32G32B32A32_SINT,
),
rusticl_image_format(
true,
true,
true,
+ true,
pipe_format::PIPE_FORMAT_R8G8B8A8_UNORM,
),
rusticl_image_format(
true,
true,
false,
+ true,
pipe_format::PIPE_FORMAT_R16G16B16A16_UNORM,
),
rusticl_image_format(
true,
true,
true,
+ true,
pipe_format::PIPE_FORMAT_R8G8B8A8_UINT,
),
rusticl_image_format(
true,
true,
true,
+ true,
pipe_format::PIPE_FORMAT_R16G16B16A16_UINT,
),
rusticl_image_format(
true,
true,
true,
+ true,
pipe_format::PIPE_FORMAT_R32G32B32A32_UINT,
),
rusticl_image_format(
true,
false,
false,
+ true,
pipe_format::PIPE_FORMAT_B8G8R8A8_UNORM,
),
];