mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-25 08:19:02 +00:00
computeinfo: Attach min version to image types and flags
This is mostly required for OpenCL 1.0 and 1.1 conformance tests, but also avoids testing for CL_MEM_KERNEL_READ_AND_WRITE on OpenCL 1.2.
This commit is contained in:
committed by
Kévin Petit
parent
2d124f61eb
commit
fe12c4e378
@@ -250,33 +250,40 @@ config_info config_infos[] = {
|
|||||||
cl_uint),
|
cl_uint),
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ENTRY(T) \
|
#define ENTRY(major, minor, T) \
|
||||||
{ \
|
{ \
|
||||||
T, #T \
|
{ major, minor }, T, #T \
|
||||||
}
|
}
|
||||||
struct image_type_entry
|
struct image_type_entry
|
||||||
{
|
{
|
||||||
|
version_t
|
||||||
|
version; // Image type is introduced in this version of OpenCL spec.
|
||||||
cl_mem_object_type val;
|
cl_mem_object_type val;
|
||||||
const char* str;
|
const char* str;
|
||||||
};
|
};
|
||||||
static const struct image_type_entry image_types[] = {
|
static const struct image_type_entry image_types[] = {
|
||||||
ENTRY(CL_MEM_OBJECT_IMAGE1D), ENTRY(CL_MEM_OBJECT_IMAGE1D_BUFFER),
|
ENTRY(1, 2, CL_MEM_OBJECT_IMAGE1D),
|
||||||
ENTRY(CL_MEM_OBJECT_IMAGE2D), ENTRY(CL_MEM_OBJECT_IMAGE3D),
|
ENTRY(1, 2, CL_MEM_OBJECT_IMAGE1D_BUFFER),
|
||||||
ENTRY(CL_MEM_OBJECT_IMAGE1D_ARRAY), ENTRY(CL_MEM_OBJECT_IMAGE2D_ARRAY)
|
ENTRY(1, 0, CL_MEM_OBJECT_IMAGE2D),
|
||||||
|
ENTRY(1, 0, CL_MEM_OBJECT_IMAGE3D),
|
||||||
|
ENTRY(1, 2, CL_MEM_OBJECT_IMAGE1D_ARRAY),
|
||||||
|
ENTRY(1, 2, CL_MEM_OBJECT_IMAGE2D_ARRAY)
|
||||||
};
|
};
|
||||||
|
|
||||||
struct supported_flags_entry
|
struct supported_flags_entry
|
||||||
{
|
{
|
||||||
|
version_t
|
||||||
|
version; // Memory flag is introduced in this version of OpenCL spec.
|
||||||
cl_mem_flags val;
|
cl_mem_flags val;
|
||||||
const char* str;
|
const char* str;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct supported_flags_entry supported_flags[] = {
|
static const struct supported_flags_entry supported_flags[] = {
|
||||||
ENTRY(CL_MEM_READ_ONLY), ENTRY(CL_MEM_WRITE_ONLY), ENTRY(CL_MEM_READ_WRITE),
|
ENTRY(1, 0, CL_MEM_READ_ONLY), ENTRY(1, 0, CL_MEM_WRITE_ONLY),
|
||||||
ENTRY(CL_MEM_KERNEL_READ_AND_WRITE)
|
ENTRY(1, 0, CL_MEM_READ_WRITE), ENTRY(2, 0, CL_MEM_KERNEL_READ_AND_WRITE)
|
||||||
};
|
};
|
||||||
|
|
||||||
int getImageInfo(cl_device_id device)
|
int getImageInfo(cl_device_id device, const version_t& version)
|
||||||
{
|
{
|
||||||
cl_context ctx;
|
cl_context ctx;
|
||||||
cl_int err;
|
cl_int err;
|
||||||
@@ -296,9 +303,18 @@ int getImageInfo(cl_device_id device)
|
|||||||
num_errors = 0;
|
num_errors = 0;
|
||||||
for (ii = 0; ii < ni; ++ii)
|
for (ii = 0; ii < ni; ++ii)
|
||||||
{
|
{
|
||||||
|
if (vercmp(version, image_types[ii].version) < 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
log_info("\t%s supported formats:\n", image_types[ii].str);
|
log_info("\t%s supported formats:\n", image_types[ii].str);
|
||||||
for (fi = 0; fi < nf; ++fi)
|
for (fi = 0; fi < nf; ++fi)
|
||||||
{
|
{
|
||||||
|
if (vercmp(version, supported_flags[fi].version) < 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
err = clGetSupportedImageFormats(ctx, supported_flags[fi].val,
|
err = clGetSupportedImageFormats(ctx, supported_flags[fi].val,
|
||||||
image_types[ii].val, 5000, NULL,
|
image_types[ii].val, 5000, NULL,
|
||||||
@@ -945,7 +961,7 @@ int getConfigInfos(cl_device_id device)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
total_errors += getImageInfo(device);
|
total_errors += getImageInfo(device, version);
|
||||||
|
|
||||||
return total_errors;
|
return total_errors;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user