mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
add a prefix to OpenCL extension names (#1311)
* add a prefix to OpenCL extension names * fix formatting
This commit is contained in:
@@ -95,8 +95,8 @@ typedef struct _version version_t;
|
|||||||
|
|
||||||
struct _extensions
|
struct _extensions
|
||||||
{
|
{
|
||||||
int cl_khr_fp64;
|
int has_cl_khr_fp64;
|
||||||
int cl_khr_fp16;
|
int has_cl_khr_fp16;
|
||||||
};
|
};
|
||||||
typedef struct _extensions extensions_t;
|
typedef struct _extensions extensions_t;
|
||||||
|
|
||||||
@@ -1069,11 +1069,11 @@ int parseExtensions(char const* str, extensions_t* extensions)
|
|||||||
}
|
}
|
||||||
if (strncmp(begin, "cl_khr_fp64", length) == 0)
|
if (strncmp(begin, "cl_khr_fp64", length) == 0)
|
||||||
{
|
{
|
||||||
extensions->cl_khr_fp64 = 1;
|
extensions->has_cl_khr_fp64 = 1;
|
||||||
}
|
}
|
||||||
if (strncmp(begin, "cl_khr_fp16", length) == 0)
|
if (strncmp(begin, "cl_khr_fp16", length) == 0)
|
||||||
{
|
{
|
||||||
extensions->cl_khr_fp16 = 1;
|
extensions->has_cl_khr_fp16 = 1;
|
||||||
}
|
}
|
||||||
begin += length; // Skip word.
|
begin += length; // Skip word.
|
||||||
if (begin[0] == ' ')
|
if (begin[0] == ' ')
|
||||||
@@ -1112,13 +1112,13 @@ int getConfigInfos(cl_device_id device)
|
|||||||
// version 1.1, we have to check doubles are sopported. In
|
// version 1.1, we have to check doubles are sopported. In
|
||||||
// OpenCL 1.2 CL_DEVICE_DOUBLE_FP_CONFIG should be reported
|
// OpenCL 1.2 CL_DEVICE_DOUBLE_FP_CONFIG should be reported
|
||||||
// unconditionally.
|
// unconditionally.
|
||||||
get = extensions.cl_khr_fp64;
|
get = extensions.has_cl_khr_fp64;
|
||||||
};
|
};
|
||||||
if (info.opcode == CL_DEVICE_HALF_FP_CONFIG)
|
if (info.opcode == CL_DEVICE_HALF_FP_CONFIG)
|
||||||
{
|
{
|
||||||
// CL_DEVICE_HALF_FP_CONFIG should be reported only when cl_khr_fp16
|
// CL_DEVICE_HALF_FP_CONFIG should be reported only when cl_khr_fp16
|
||||||
// extension is available
|
// extension is available
|
||||||
get = extensions.cl_khr_fp16;
|
get = extensions.has_cl_khr_fp16;
|
||||||
};
|
};
|
||||||
if (get)
|
if (get)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -389,6 +389,7 @@ OclExtensions OclExtensions::getDeviceCapabilities(cl_device_id devId)
|
|||||||
{
|
{
|
||||||
ret = ret | OclExtensions::fromString(*it);
|
ret = ret | OclExtensions::fromString(*it);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -399,75 +400,80 @@ OclExtensions OclExtensions::empty()
|
|||||||
|
|
||||||
OclExtensions OclExtensions::fromString(const std::string& e)
|
OclExtensions OclExtensions::fromString(const std::string& e)
|
||||||
{
|
{
|
||||||
std::string s = "OclExtensions::" + e;
|
std::string s = "OclExtensions::has_" + e;
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_int64_base_atomics);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_int64_base_atomics);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_int64_extended_atomics);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_int64_extended_atomics);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_3d_image_writes);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_3d_image_writes);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_fp16);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_fp16);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_gl_sharing);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_gl_sharing);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_gl_event);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_gl_event);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_d3d10_sharing);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_d3d10_sharing);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_dx9_media_sharing);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_dx9_media_sharing);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_d3d11_sharing);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_d3d11_sharing);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_depth_images);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_depth_images);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_gl_depth_images);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_gl_depth_images);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_gl_msaa_sharing);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_gl_msaa_sharing);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_image2d_from_buffer);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_image2d_from_buffer);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_initialize_memory);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_initialize_memory);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_spir);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_spir);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_fp64);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_fp64);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_global_int32_base_atomics);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_global_int32_base_atomics);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_global_int32_extended_atomics);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_global_int32_extended_atomics);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_local_int32_base_atomics);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_local_int32_base_atomics);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_local_int32_extended_atomics);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_local_int32_extended_atomics);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cl_khr_byte_addressable_store);
|
RETURN_IF_ENUM(s, OclExtensions::has_cl_khr_byte_addressable_store);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cles_khr_int64);
|
RETURN_IF_ENUM(s, OclExtensions::has_cles_khr_int64);
|
||||||
RETURN_IF_ENUM(s, OclExtensions::cles_khr_2d_image_array_writes);
|
RETURN_IF_ENUM(s, OclExtensions::has_cles_khr_2d_image_array_writes);
|
||||||
// Unknown KHR string.
|
// Unknown KHR string.
|
||||||
return OclExtensions::empty();
|
return OclExtensions::empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string OclExtensions::toString()
|
std::string OclExtensions::toString()
|
||||||
{
|
{
|
||||||
|
#define APPEND_STR_IF_SUPPORTS(STR, E) \
|
||||||
#define APPEND_STR_IF_SUPPORTS( STR, E) \
|
if (this->supports(E)) \
|
||||||
if ( this->supports(E) ) \
|
{ \
|
||||||
{ \
|
std::string ext_str(#E); \
|
||||||
std::string ext_str( #E ); \
|
std::string prefix = "OclExtensions::has_"; \
|
||||||
std::string prefix = "OclExtensions::"; \
|
size_t pos = ext_str.find(prefix); \
|
||||||
size_t pos = ext_str.find( prefix ); \
|
if (pos != std::string::npos) \
|
||||||
if ( pos != std::string::npos ) \
|
{ \
|
||||||
{ \
|
ext_str.replace(pos, prefix.length(), ""); \
|
||||||
ext_str.replace( pos, prefix.length(), ""); \
|
} \
|
||||||
} \
|
STR += ext_str; \
|
||||||
STR += ext_str; \
|
STR += " "; \
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string s = "";
|
std::string s = "";
|
||||||
|
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_int64_base_atomics );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_int64_base_atomics);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_int64_extended_atomics );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_int64_extended_atomics);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_3d_image_writes );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_3d_image_writes);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_fp16 );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_fp16);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_gl_sharing );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_gl_sharing);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_gl_event );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_gl_event);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_d3d10_sharing );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_d3d10_sharing);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_dx9_media_sharing );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_dx9_media_sharing);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_d3d11_sharing );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_d3d11_sharing);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_depth_images );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_depth_images);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_gl_depth_images );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_gl_depth_images);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_gl_msaa_sharing );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_gl_msaa_sharing);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_image2d_from_buffer );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_image2d_from_buffer);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_initialize_memory );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_initialize_memory);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_spir );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_spir);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_fp64 );
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_fp64);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_global_int32_base_atomics );
|
APPEND_STR_IF_SUPPORTS(s,
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_global_int32_extended_atomics );
|
OclExtensions::has_cl_khr_global_int32_base_atomics);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_local_int32_base_atomics );
|
APPEND_STR_IF_SUPPORTS(
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_local_int32_extended_atomics );
|
s, OclExtensions::has_cl_khr_global_int32_extended_atomics);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cl_khr_byte_addressable_store );
|
APPEND_STR_IF_SUPPORTS(s,
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cles_khr_int64 );
|
OclExtensions::has_cl_khr_local_int32_base_atomics);
|
||||||
APPEND_STR_IF_SUPPORTS( s, OclExtensions::cles_khr_2d_image_array_writes );
|
APPEND_STR_IF_SUPPORTS(
|
||||||
|
s, OclExtensions::has_cl_khr_local_int32_extended_atomics);
|
||||||
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cl_khr_byte_addressable_store);
|
||||||
|
APPEND_STR_IF_SUPPORTS(s, OclExtensions::has_cles_khr_int64);
|
||||||
|
APPEND_STR_IF_SUPPORTS(s,
|
||||||
|
OclExtensions::has_cles_khr_2d_image_array_writes);
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,42 +113,33 @@ private:
|
|||||||
|
|
||||||
OclExtensions(size_t ext) : m_extVector(ext) {}
|
OclExtensions(size_t ext) : m_extVector(ext) {}
|
||||||
|
|
||||||
// Fix a compilation error, since cl_khr_gl_sharing is defined as a macro.
|
|
||||||
#ifdef cl_khr_gl_sharing
|
|
||||||
#undef cl_khr_gl_sharing
|
|
||||||
#endif//cl_khr_gl_sharing
|
|
||||||
|
|
||||||
#ifdef cl_khr_icd
|
|
||||||
#undef cl_khr_icd
|
|
||||||
#endif//cl_khr_icd
|
|
||||||
|
|
||||||
enum ClKhrs
|
enum ClKhrs
|
||||||
{
|
{
|
||||||
no_extensions = KhrValue<0>::Mask,
|
no_extensions = KhrValue<0>::Mask,
|
||||||
cl_khr_int64_base_atomics = KhrValue<1>::Mask,
|
has_cl_khr_int64_base_atomics = KhrValue<1>::Mask,
|
||||||
cl_khr_int64_extended_atomics = KhrValue<2>::Mask,
|
has_cl_khr_int64_extended_atomics = KhrValue<2>::Mask,
|
||||||
cl_khr_3d_image_writes = KhrValue<3>::Mask,
|
has_cl_khr_3d_image_writes = KhrValue<3>::Mask,
|
||||||
cl_khr_fp16 = KhrValue<4>::Mask,
|
has_cl_khr_fp16 = KhrValue<4>::Mask,
|
||||||
cl_khr_gl_sharing = KhrValue<5>::Mask,
|
has_cl_khr_gl_sharing = KhrValue<5>::Mask,
|
||||||
cl_khr_gl_event = KhrValue<6>::Mask,
|
has_cl_khr_gl_event = KhrValue<6>::Mask,
|
||||||
cl_khr_d3d10_sharing = KhrValue<7>::Mask,
|
has_cl_khr_d3d10_sharing = KhrValue<7>::Mask,
|
||||||
cl_khr_dx9_media_sharing = KhrValue<8>::Mask,
|
has_cl_khr_dx9_media_sharing = KhrValue<8>::Mask,
|
||||||
cl_khr_d3d11_sharing = KhrValue<9>::Mask,
|
has_cl_khr_d3d11_sharing = KhrValue<9>::Mask,
|
||||||
cl_khr_depth_images = KhrValue<10>::Mask,
|
has_cl_khr_depth_images = KhrValue<10>::Mask,
|
||||||
cl_khr_gl_depth_images = KhrValue<11>::Mask,
|
has_cl_khr_gl_depth_images = KhrValue<11>::Mask,
|
||||||
cl_khr_gl_msaa_sharing = KhrValue<12>::Mask,
|
has_cl_khr_gl_msaa_sharing = KhrValue<12>::Mask,
|
||||||
cl_khr_image2d_from_buffer = KhrValue<13>::Mask,
|
has_cl_khr_image2d_from_buffer = KhrValue<13>::Mask,
|
||||||
cl_khr_initialize_memory = KhrValue<14>::Mask,
|
has_cl_khr_initialize_memory = KhrValue<14>::Mask,
|
||||||
cl_khr_context_abort = KhrValue<15>::Mask,
|
has_cl_khr_context_abort = KhrValue<15>::Mask,
|
||||||
cl_khr_spir = KhrValue<16>::Mask,
|
has_cl_khr_spir = KhrValue<16>::Mask,
|
||||||
cl_khr_fp64 = KhrValue<17>::Mask,
|
has_cl_khr_fp64 = KhrValue<17>::Mask,
|
||||||
cl_khr_global_int32_base_atomics = KhrValue<18>::Mask,
|
has_cl_khr_global_int32_base_atomics = KhrValue<18>::Mask,
|
||||||
cl_khr_global_int32_extended_atomics = KhrValue<19>::Mask,
|
has_cl_khr_global_int32_extended_atomics = KhrValue<19>::Mask,
|
||||||
cl_khr_local_int32_base_atomics = KhrValue<20>::Mask,
|
has_cl_khr_local_int32_base_atomics = KhrValue<20>::Mask,
|
||||||
cl_khr_local_int32_extended_atomics = KhrValue<21>::Mask,
|
has_cl_khr_local_int32_extended_atomics = KhrValue<21>::Mask,
|
||||||
cl_khr_byte_addressable_store = KhrValue<22>::Mask,
|
has_cl_khr_byte_addressable_store = KhrValue<22>::Mask,
|
||||||
cles_khr_int64 = KhrValue<23>::Mask,
|
has_cles_khr_int64 = KhrValue<23>::Mask,
|
||||||
cles_khr_2d_image_array_writes = KhrValue<24>::Mask,
|
has_cles_khr_2d_image_array_writes = KhrValue<24>::Mask,
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t m_extVector;
|
size_t m_extVector;
|
||||||
|
|||||||
Reference in New Issue
Block a user