Commit Graph

1587 Commits

Author SHA1 Message Date
Marcin Hajder
c7abbe57a4 Added test to verify negative result of clSetKernelArg with CL_INVALID_ARG_VALUE (#2445)
Related to #2282, according to work plan with mismatched read/write only
qualifier for image_t objects
2025-08-05 09:09:16 -07:00
Wenju He
e15c6eb760 Fix 'fpclassify: ambiguous call' compile fail in MSVC 2022 (#2426)
Similar to #2219, we see "'fpclassify': ambiguous call" error in
test_conformance\basic\test_fpmath.cpp
due to missing constexpr at
https://github.com/KhronosGroup/OpenCL-CTS/blob/9265cbb2c274/test_conformance/basic/test_fpmath.cpp#L104
This PR fixes the issue by moving utility function isnan_fp in
testHarness.h and use it.
Note this PR doesn't modify use of isnan in many tests where only
float/double values are checked.
2025-08-05 09:08:04 -07:00
Ahmed Hesham
9ca0126c54 Fix warnings treated as errors in Vulkan tests. (#2461)
Unused variables and mismatched sign comparisons.

Signed-off-by: Ahmed Hesham <ahmed.hesham@arm.com>
2025-08-04 11:06:18 +01:00
Ben Ashbaugh
2507f7de84 add cl_khr_spirv_queries to list of known extensions (#2463)
While #2409 is under review, could we please add "cl_khr_spirv_queries"
to the list of known extensions? This will prevent test "failures" for
implementations that support the extension.
2025-08-01 21:37:16 +01:00
Ahmed Hesham
430727cc8d Enable -Wnarrowing in Vulkan test suite (#2469) 2025-07-31 12:24:51 +01:00
Ahmed Hesham
dae998ff9d Enable -Wnarrowing in spirv_new test suite (#2468) 2025-07-31 12:24:30 +01:00
Ahmed Hesham
044e0be653 Enable -Wnarrowing for the basic test suite (#2467)
Fixes #1156

---------

Signed-off-by: Ahmed Hesham <ahmed.hesham@arm.com>
2025-07-31 12:24:03 +01:00
Ahmed Hesham
77a987d547 Enable -Wnarrowing in integer_ops test suite (#2465)
Fixes #1158

---------

Signed-off-by: Ahmed Hesham <ahmed.hesham@arm.com>
2025-07-30 18:51:54 +01:00
Ahmed Hesham
7c530dafa6 Enable -Wnarrowing for conversions test suite (#2466)
No code changes required.

Fixes #1157

Signed-off-by: Ahmed Hesham <ahmed.hesham@arm.com>
2025-07-30 18:51:05 +01:00
Ahmed Hesham
16dfa2217c Enable -Wnarrowing in non_uniform_work_group test suite. (#2464)
Modify the prime numbers generator function to return `size_t` instead
of `int` and use `0` as a sentinal value instead of hardcoded negative
ones. `0` is not a prime number, so it is suitable to use to indicate an
error.

Fixes #1159

---------

Signed-off-by: Ahmed Hesham <ahmed.hesham@arm.com>
2025-07-30 18:49:38 +01:00
Ahmed Hesham
82508f709a Fix test_spir not checking for the required extension (#2454)
`clGetDeviceInfo` should fail with `CL_INVALID_VALUE` when queried for
`CL_DEVICE_SPIR_VERSIONS` on devices that do not claim to support the
extension that provides it, `cl_khr_spir`.

Following this change, the test is skipped instead of failing on devices
that do not support `cl_khr_spir`.

Signed-off-by: Ahmed Hesham <ahmed.hesham@arm.com>
2025-07-24 10:43:03 -07:00
Romaric Jodin
d918b41657 clean unused variables (#2446)
Do not remove calls to `sample_image_pixel_float_offset` as it is using
the `verbose` mode.
2025-07-15 16:36:49 -07:00
Kévin Petit
2fdefbdf34 test_vulkan: fix build flags and warnings (#2443)
- Do not override parent-provided value for CMAKE_CXX_FLAGS
- Stop building with -fpermissive (not required/bad practice)
- Delete unused variables
- Remove unnecessary casts

Signed-off-by: Kévin Petit <kpet@free.fr>
2025-07-15 16:33:37 -07:00
Ben Ashbaugh
8d4a870059 fix correctly rounded behavior for math bruteforce tests (#2397)
fixes #2387 

Corrects the "correctly rounded" behavior for the math bruteforce tests.
Specifically:

* Only applies the `-cl-fp32-correctly-rounded-divide-sqrt` build option
for the `divide_cr` and `sqrt_cr` tests. The other tests do not receive
this build option. This means that there is a difference in the behavior
of the `divide` and `divide_cr` tests and the `sqrt` and `sqrt_cr`
tests, and the "correctly rounded" build option is not applied to the
fp16 or fp64 tests.
* Removes the build option to toggle testing the correctly rounded
divide and square root tests since it no longer needed. Instead, the
test names can be used to choose whether to test the correctly rounded
functions or the non-correctly rounded functions.

Additionally:

* Relaxes the fp16 sqrt accuracy requirements to 1 ULP. This is needed
to pass this test on some of our devices. This part is still under
discussion, so I will keep this PR as a draft until it is settled.
2025-07-15 09:01:19 -07:00
Ben Ashbaugh
933874f070 allow specifying CL_DEVICE_TYPE_ALL as the harness device type (#2421)
Currently, selecting a different device in a platform to test is rather
cumbersome, for two reasons:

1. The default device type tested is the "default" device and there is
at most one default device in a platform. This means that, by itself,
choosing any non-zero device index is by definition out-of-range:

```sh
$ CL_PLATFORM_INDEX=1 CL_DEVICE_INDEX=1 ./test_conformance/basic/test_basic 
 Initializing random seed to 0.
Requesting Default device based on command line for platform index 1 and device index 1
device index out of range -- choosen_device_index (1) >= num_devices (1)
```

2. To choose a non-default device type you therefore need to explicitly
specify another device type also, but "all" is not a valid device type
in the harness. This means that you need to know both the device type
and the index of the device within that device type to choose the device
to test.

```sh
$ CL_DEVICE_TYPE=all CL_PLATFORM_INDEX=1 CL_DEVICE_INDEX=1 ./test_conformance/basic/test_basic 
Unknown CL_DEVICE_TYPE env variable setting: all.
Aborting...
Aborted (core dumped)
```

This PR aims to fix (2), by allowing "all" as a device type. In the
future, we could consider making the default device type "all" vs.
"default", which would fix (1) also, but that will likely need more
discussion and should be done in a separate PR.
2025-07-15 09:00:20 -07:00
Ahmed
08738a6954 Add cl_khr_unified_svm to the list of known extensions in the compiler defines for extension test. (#2433)
Adds cl_khr_unified_svm to the list of known extensions in the compiler
defines for extension test.
v2025-07-11-00
2025-07-08 09:59:47 -07:00
Harald van Dijk
09f43ca916 Avoid some undefined behavior in test_bruteforce. (#2400)
* Ulp_Error*: ilogb(reference) - 1 may overflow if reference is zero.
* binary_i_double Test: DoubleFromUInt32's result is a cl_double and the
attempt is to store it as a cl_double, but p was defined as a pointer to
cl_ulong, resulting in an unintended implicit conversion that is not
valid for out-of-range doubles.
* exp2, tanpi: ensure early exit for NaN.
* shift_right_sticky_128: avoid out-of-range shift if shift value is
exactly 64.
* scalbn: e += n may overflow if n is large, move it after the check for
large n.
2025-07-08 09:59:08 -07:00
Ewan Crawford
5997a00b2f Test releasing a command-buffer after submission but before execution has finished (#2414)
Add cl_khr_command_buffer test that is it valid to release a
command-buffer after it has been enqueued but before execution is
finished.

This stresses the semantics from
[clReleaseCommandBufferKHR](https://registry.khronos.org/OpenCL/sdk/3.0/docs/man/html/clReleaseCommandBufferKHR.html#_description)
that: "After the command_buffer reference count becomes zero **and has
finished execution**, the command-buffer is deleted"
2025-07-07 16:35:20 -07:00
Oskar Hubert Weber
3065a62f77 Fix memory leaks in test_profiling execute_multipass (#2390)
- Fixed leaks caused by missing clRelease calls
- Improved error handling readability

Signed-off-by: Oskar Hubert Weber
[oskar.hubert.weber@intel.com](mailto:oskar.hubert.weber@intel.com)

---------

Signed-off-by: Oskar Hubert Weber <oskar.hubert.weber@intel.com>
2025-07-07 16:34:44 -07:00
Neoming
c4b16940e4 test_subgroups: Update local workgroup size to generate desired input and verify result (#2382)
The `local_workgroup_size` is changed by
`get_max_common_work_group_size`. But the input data still use the
original `local_workgroup_size`, which will cause the check logic to
failed.
2025-07-07 16:34:05 -07:00
Michael Rizkalla
da953699e9 Refactor imagecopy and imagereadwrite tests (#2362)
Refactor the following tests:
1. `test_imagecopy`
2. `test_imagecopy3d`
3. `test_imagereadwrite`
4. `test_imagereadwrite3d`

The change does the following:
1. Use RAII to manage allocated resources
2. For `imagecopy` and `imagecopy3d`, the change allows for a custom src
image memory flags and adjusts how the source image is created according
to the input flags.

Signed-off-by: Michael Rizkalla <michael.rizkalla@arm.com>
2025-07-01 13:01:54 -07:00
cc
9fead88d81 Fix program leaks in test_spir compile_and_link (#2423)
Fixed program leaks caused by missing clRelease calls
2025-07-01 13:01:01 -07:00
Harald van Dijk
73f22aa23f Allow building with cmake --compile-no-warning-as-error. (#2401)
In CMake 3.24+, there is built-in support for adding -Werror that does
not require adding -Werror explicitly, and allows it to be downgraded to
a warning if the user wants that. Use this, to account for warnings that
have false positives.
2025-07-01 13:00:34 -07:00
Michael Rizkalla
9265cbb2c2 Refactor buffer ReadWrite and Copy tests (#2259)
This change refactors the following tests to use RAII to clean-up
allocated resources on exit, and adds additional changes as mentioned
below:

- test_arrayreadwrite
    - Allow different `cl_mem_flags` to be passed to the test.
- test_bufferreadwriterect:
    - Allow different `cl_mem_flags` to be passed to the test.
    - Customisable copy, read and write functions.
- test_buffer_copy
- Fill the destination buffer with `invalid_ptr` instead of `out_ptr` if
created with `CL_MEM_(USE/COPY)_HOST_PTR`.
- test_buffer_partial_copy
- Fill the destination buffer with `invalid_ptr` instead of `out_ptr` if
created with `CL_MEM_(USE/COPY)_HOST_PTR`.

---------

Signed-off-by: Michael Rizkalla <michael.rizkalla@arm.com>
2025-06-24 15:27:37 -07:00
Michael Rizkalla
880bce6047 Fix memory leaks in api test suite (#2363)
This commit fixes three tests that have memory leaks due to unreleased
CL objects.
- `kernel_local_memory_size`
- `multi_queue_flush_on_release`
- `queue_flush_on_release`

Signed-off-by: Michael Rizkalla <michael.rizkalla@arm.com>
2025-06-24 15:27:15 -07:00
Ben Ashbaugh
3345ea5af3 fixes test_opencl_c_versions logic error (#2377)
Found while developing #2376.

Parts of "test_opencl_c_versions" were intending to build programs for
different OpenCL C versions, but unfortunately the helper function the
test was calling only created the program and did not build it. Switch
to a helper function that builds the program, instead.
2025-06-24 15:26:34 -07:00
Marcin Hajder
550b14cd25 Added support for cl_ext_float_atomics in c11_atomics exchange test along with atomic_half type (#2337)
Related to #2142, according to the work plan, extending
CBasicTestExchange with support for atomic_half.
2025-06-24 08:37:50 -07:00
Michael Rizkalla
8701acfa90 Add tests for cl_ext_immutable_memory_objects (#2286)
This change provides partial test coverage for
KhronosGroup/OpenCL-Docs#1280

Adding CTS tests for:
1. clEnqueueMapBuffer, clEnqueueMapImage.
2. Command buffer negative tests.
3. clSetKernelArgs negative tests.

The bulk of the tests is to make sure that the CL driver does not allow
writing to a memory object that is created with `CL_MEM_IMMUTABLE_EXT`
flag when used with the above APIs.

---------

Signed-off-by: Michael Rizkalla <michael.rizkalla@arm.com>
2025-06-17 10:19:11 -07:00
joshqti
e622512301 test_vulkan: switch defaults on device local memory (#2365)
Switch the test_vulkan default to use device local memory
2025-06-17 10:17:26 -07:00
Ben Ashbaugh
26f8b3a7e8 add missing image support checks to a few SPIR-V tests (#2411)
The tests for new image operands should not run on devices that do not
support images.
2025-06-11 09:46:31 -07:00
Marcin Hajder
b79a8a2f42 Added support for cl_ext_float_atomics in c11_atomics load test along with atomic_half type (#2297)
Related to #2142, according to the work plan, extending CBasicTestLoad
with support for atomic_half.
2025-06-10 08:43:02 -07:00
Marcin Hajder
3233d2089f Added comparability verification for GL associated devices query (#2231)
Fixes #1485 according to work plan from issue description.
2025-06-10 08:41:20 -07:00
Ahmed
f209922722 Add cl_khr_external_memory_android_hardware_buffer to the list of known compiler test extensions (#2407)
Fixes compiler_defines_for_extensions failure when the extension is
supported.
2025-06-03 14:38:39 -07:00
Sven van Haastregt
2d165eee74 conversions: remove timing functionality (#2394)
Remove the test timing functionality from the conversions test, because
it

 - is not advertised in the help,

- is not supported on all platforms, triggering warnings during the
build,

 - goes beyond the core purpose of the conformance test suite.

Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
2025-05-30 23:50:17 +01:00
Marcin Hajder
f30a191978 Corrected procedure to collect proper size of image from VkImageCreateInfo (#2289)
Fixes #2155 according to issue description

Additional remark: The image size was previously calculated based on the
memory size, which seems unusual. Due to Vulkan's configuration
capabilities, the size of memory allocated for a specific texture may
differ from what would be expected based on the texture dimensions.
Thus, calculating the image dimensions back from the memory size of a
Vulkan texture can be challenging.
2025-05-27 10:17:14 -07:00
Ahmed Hesham
3ab4d8aab2 Test image formats of cl_ext_image_unsigned_10x6_12x4_14x2 (#2375)
This change add the following image formats to the supported image
formats:
1. CL_UNSIGNED_INT10X6_EXT
2. CL_UNSIGNED_INT12X4_EXT
3. CL_UNSIGNED_INT14X2_EXT
4. CL_UNORM_INT10X6_EXT
5. CL_UNORM_INT12X4_EXT
6. CL_UNORM_INT14X2_EXT

For reference, the specification for
`cl_ext_image_unsigned_10x6_12x4_14x2` can be found here:
https://github.com/KhronosGroup/OpenCL-Docs/pull/1352

Signed-off-by: Michael Rizkalla <michael.rizkalla@arm.com>
Co-authored-by: Michael Rizkalla <michael.rizkalla@arm.com>
2025-05-27 08:57:34 -07:00
Marcin Hajder
dec5644112 Added support for cl_ext_float_atomics in c11_atomics store test along with atomic_half type (#2293)
Related to #2142, according to the work plan extended `CBasicTestStore`
with support for `atomic_half`.

Optimization remark: in tests related to `CBasicTestStore` kernel source
code is mostly composed with arguments following similar pattern:

`__kernel void test_atomic_kernel(uint threadCount, uint numDestItems,
__global int *finalDest, __global int *oldValues, volatile __local
atomic_int *destMemory)`

`oldValues` buffer is initialized with a host pointer, after kernel
execution it is read back to the host pointer but it is unused in
neither of the kernels I verified.
2025-05-27 08:51:36 -07:00
Kévin Petit
110799bb67 Add missing coverage to api::zero_sized_enqueue (#2378)
- Cases with a NULL global_work_size were not tested
- The specification states that zero-sized enqueues behave similarly to
marker commands. Test that events for NDRange kernel commands have the
correct CL_COMMAND_NDRANGE_KERNEL command type to guard against
implementations naively using a marker command.
- Tidy up the code a bit and add missing error checking.

Signed-off-by: Kévin Petit <kpet@free.fr>
2025-05-13 03:51:43 +01:00
Michael Rizkalla
b011fb26d9 Add test_spir installation target (#2359)
`test_spir` and its data are not installed correctly when building the
installation target.
This change makes sure both the binary and the test data are installed
correctly to `${CMAKE_INSTALL_BINDIR}/$<CONFIG>`.

Signed-off-by: Michael Rizkalla <michael.rizkalla@arm.com>
2025-05-06 09:45:01 -07:00
Kévin Petit
455c7b0504 ci: move contents of presubmit.sh to workflow file (#2380)
Signed-off-by: Kévin Petit <kpet@free.fr>
2025-05-06 09:43:38 -07:00
AlexGalazin-IMG
d3b043a891 Update README after PR 2200 (#2381)
PR2200 made the presence of spirv-as and spirv-val mandatory.

Reflect this fact in the Readme and update the example build
instructions
2025-05-06 09:41:41 -07:00
Romaric Jodin
3f7889bdbd Remove CL_DEVICE_HALF_FP_CONFIG when cl_khr_fp16 is not supported (#2354)
Specification does not require to return an error when querying
CL_DEVICE_HALF_FP_CONFIG and cl_khr_fp16 is not supported.

Fix #2339
2025-05-06 09:33:34 -07:00
Sven van Haastregt
9917ed2790 [NFC] math_brute_force: use getAllowedUlpError for double (#2351)
Call `getAllowedUlpError` to obtain the allowed ULP error for all of the
double type (fp64) tests. The aim is to standardise obtaining the
desired ULP requirement and pave the way for adding the Embedded Profile
ULP errors.

Contributes to https://github.com/KhronosGroup/OpenCL-CTS/issues/867

Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
2025-05-06 09:32:31 -07:00
Marcin Hajder
8aa47754de Added object comparability verification for CL_DEVICE_PLATFORM query (#2225)
Fixes #1485 according to work plan, point CL_DEVICE_PLATFORM
2025-05-06 08:40:18 -07:00
Kévin Petit
9fc0d23b4c Define SubDevicesScopeGuarded in the harness and remove duplicate copies (#2379)
Signed-off-by: Kévin Petit <kpet@free.fr>
v2025-04-21-00
2025-04-21 11:16:17 +01:00
Ahmed Hesham
90524879e4 Migrate extensions suites to the new test registration framework (#2334)
This covers:
* cl_ext_cxx_for_opencl
* cl_khr_command_buffer
* cl_khr_command_buffer/cl_khr_command_buffer_mutable_dispatch
* cl_khr_dx9_media_sharing
* cl_khr_external_semaphore
* cl_khr_kernel_clock
* cl_khr_semaphore

Contributes to #2181.

---------

Signed-off-by: Ahmed Hesham <ahmed.hesham@arm.com>
v2025-04-16-00
2025-04-16 11:14:34 +01:00
gorazd-sumkovski-arm
33846e6673 Refactor external semaphore scaffolding (#2300)
Remove the `CREATE_OPENCL_SEMAPHORE` macro and use derived class
instantiations of the `clExternalSemaphore` class, rather than base
pointers to derived class objects.

Remove the default argument for `queryParamName` in
`check_external_semaphore_handle_type()`.

Move `check_external_semaphore_handle_type()` checks to constructors of
`clExternalImportableSemaphore` and `clExternalExportableSemaphore`,
rather than manually making the check before creating an external
semaphore.

---------

Signed-off-by: Gorazd Sumkovski <gorazd.sumkovski@arm.com>
Co-authored-by: Kévin Petit <kpet@free.fr>
Co-authored-by: Kevin Petit <kevin.petit@arm.com>
2025-04-16 09:11:38 +05:30
Sven van Haastregt
4ce3d8968a conversions: use C++17 to avoid Wformat warnings (#2369)
Using C++17's `if constexpr` avoids Wformat warnings in this template
function, as it is now made explicit that the various format strings are
only used with appropriate types.

Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
2025-04-15 18:28:47 +01:00
Kévin Petit
829e91663a Stop using optimally-tiled images in external memory tests (#2349)
Support for optimally-tiled images and tiling inference in general is
implementation-defined. It should not be relied upon in the CTS.

Also build the code base as C++17 for std::optional. Many Khronos
projects are now using C++17 and the transition in the CTS is IMO
overdue.

Signed-off-by: Kevin Petit <kevin.petit@arm.com>
2025-04-15 22:58:35 +05:30
Kévin Petit
e96edaef8b Require C++17 (#2356)
This enables many useful newer C++ features. C++17 is already required
by many components of the Khronos ecosystem.

Signed-off-by: Kevin Petit <kevin.petit@arm.com>
v2025-04-14-00
2025-04-08 09:50:33 -07:00