try to retrieve all properties, even those not officially supported (e.g. because they require specific extensions), but only show them if the property could be retrieved successfully; see also the Limitations section below; note that even though this may reveal hidden properties, there is no guarantee that the returned values are meaningful, nor that the corresponding feature is actually available at all;

Some floating-point configuration flags may only be meaningful for specific precisions and/or specific OpenCL versions. For example, CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT is only relevant for single precision in OpenCL 1.2 devices.

The implementation-defined behavior for NULL platform or context properties is tested for the following API calls:

Support for cl_khr_subgroup_named_barrier is experimental due to missing definitions in the official OpenCL headers.

Raw (machine-parsable) output is considered experimental, the output format might still undergo changes.

The properties of the ICD loader will also be queried if the clGetICDLoaderInfoOCLICD extension function is found.

Support for the properties exposed by cl_amd_copy_buffer_p2p is experimental.

Support for some (documented and undocumented) properties exposed by cl_amd_device_attribute_query is experimental (see also Limitations).

Support for the interop lists exposed by cl_intel_simultaneous_sharing is experimental.

The highest OpenCL version supported by the ICD loader is detected with some trivial heuristics (symbols found); a notice is output if this is lower than the highest platform OpenCL version, or if the detected version doesn't match the one declared by the ICD loader itself.

OpenCL provides no explicit mean to detect the supported version of any extension exposed by a device, which makes it impossible to determine a priori if it will be possible to successfully query a device about a specific property. Additionally, the actual size and meaning of some properties are not officially declared anywhere.

Most notably, this affects extensions such as cl_amd_device_attribute_query and cl_nv_device_attribute_query. Heuristics based on standard version support are partially used in the code to determine which version may be supported.

Properties which are known to be affected by these limitations include:

documented in v3 of the cl_amd_device_attribute_query extension specification, but not reported by drivers supporting other v3 properties. This has now been enabled for drivers assumed to support v4 of the same extension;