* Initial CTS for external sharing extensions
Initial set of tests for below extensions
with Vulkan as producer
1. cl_khr_external_memory
2. cl_khr_external_memory_win32
3. cl_khr_external_memory_opaque_fd
4. cl_khr_external_semaphore
5. cl_khr_external_semaphore_win32
6. cl_khr_external_semaphore_opaque_fd
* Updates to external sharing CTS
Updates to external sharing CTS
1. Fix some build issues to remove unnecessary, non-existent files
2. Add new tests for platform and device queries.
3. Some added checks for VK Support.
* Update CTS build script for Vulkan Headers
Update CTS build to clone Vulkan Headers
repo and pass it to CTS build
in preparation for external memory
and semaphore tests
* Fix Vulkan header path
Fix Vulkan header include path.
* Add Vulkan loader dependency
Vulkan loader is required to build
test_vulkan of OpenCL-CTS.
Clone and build Vulkan loader as prerequisite
to OpenCL-CTS.
* Fix Vulkan loader path in test_vulkan
Remove arch/os suffix in Vulkan loader path
to match vulkan loader repo build.
* Fix warnings around getHandle API.
Return type of getHandle is defined
differently based on win or linux builds.
Use appropriate guards when using API
at other places.
While at it remove duplicate definition
of ARRAY_SIZE.
* Use ARRAY_SIZE in harness.
Use already defined ARRAY_SIZE macro
from test_harness.
* Fix build issues for test_vulkan
Fix build issues for test_vulkan
1. Add cl_ext.h in common files
2. Replace cl_mem_properties_khr with cl_mem_properties
3. Replace cl_external_mem_handle_type_khr with
cl_external_memory_handle_type_khr
4. Type-cast malloc as required.
* Fix code formatting.
Fix code formatting to
get CTS CI builds clean.
* Fix formatting fixes part-2
Another set of formatting fixes.
* Fix code formatting part-3
Some more code formatting fixes.
* Fix code formatting issues part-4
More code formatting fixes.
* Formatting fixes part-5
Some more formatting fixes
* Fix formatting part-6
More formatting fixes continued.
* Code formatting fixes part-7
Code formatting fixes for image
* Code formatting fixes part-8
Fixes for platform and device query tests.
* Code formatting fixes part-9
More formatting fixes for vulkan_wrapper
* Code formatting fixes part-10
More fixes to wrapper header
* Code formatting fixes part-11
Formatting fixes for api_list
* Code formatting fixes part-12
Formatting fixes for api_list_map.
* Code formatting changes part-13
Code formatting changes for utility.
* Code formatting fixes part-15
Formatting fixes for wrapper.
* Misc Code formatting fixes
Some more misc code formatting fixes.
* Fix build breaks due to code formatting
Fix build issues arised with recent
code formatting issues.
* Fix presubmit script after merge
Fix presubmit script after merge conflicts.
* Fix Vulkan loader build in presubmit script.
Use cmake ninja and appropriate toolchain
for Vulkan loader dependency to fix
linking issue on arm/aarch64.
* Use static array sizes
Use static array sizes to fix
windows builds.
* Some left-out formatting fixes.
Fix remaining formatting issues.
* Fix harness header path
Fix harness header path
While at it, remove Misc and test pragma.
* Add/Fix license information
Add Khronos License info for test_vulkan.
Replace Apple license with Khronos
as applicable.
* Fix headers for Mac OSX builds.
Use appropriate headers for
Mac OSX builds
* Fix Mac OSX builds.
Use appropriate headers for
Mac OSX builds.
Also, fix some build issues
due to type-casting.
* Fix new code formatting issues
Fix new code formatting issues
with recent MacOS fixes.
* Add back missing case statement
Add back missing case statement
that was accidentally removed.
* Disable USE_GAS for Vulkan Loader build.
Disable USE_GAS for Vulkan Loader build
to fix aarch64 build.
* Update Copyright Year.
Update Copyright Year to 2022
for external memory sharing tests.
* Android specific fixes
Android specific fixes to
external sharing tests.
As per the OpenCL Extension Specification § 38.6 Ballots:
If no bits representing predicate values from all work items in
the subgroup are set in the bitfield value then the return value
is undefined.
The case with no bits set is still worth testing, as it does not result
in undefined behavior, but only an undefined return value.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
Test cases where the index/mask/delta is greater than or equal to the
maximum subgroup size. These are cases that return undefined results
but are not undefined behavior.
The index/mask/delta values now include values less than twice the
subgroup size, and 0xffffffff.
Testing for sub_group_shuffle_xor() already allowed inputs that were
greater or equal to the subgroup size for the last subgroup in a
workgroup, but did not properly account for this in the verification
function, potentially resulting in out of bounds accesses.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
This changes compilation of subgroup test kernels so that a separate
compilation is no longer performed for each divergence mask value.
The divergence mask is now passed as a kernel argument.
This also fixes all subgroup_functions_non_uniform_arithmetic testing
and the sub_group_elect and sub_group_any/all_equal subtests of the
subgroup_functions_non_uniform_vote test to use the correct order of
vector components for GPUs with a subgroup size greater than 64.
The conversion of divergence mask bitsets to uint4 vectors has been
corrected to match code comments in WorkGroupParams::load_masks()
in test_conformance/subgroups/subhelpers.h.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
* Set safe input values for half type and mul, add operations
* Set safe values for all data types
* Typo fix
* Set constant seed for shuffle
* Change function name to more specific
* set_value takes an integer value, not a bit pattern
Note that this also corrects the start messages logged for the
sub_group_ballot_bit_count/find_msb/find_lsb tests.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
It seems more intuitive to set only the bits that are required, rather
than to set one more bit than is required, only to clear it again.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
sub_group_ballot_bit_count() and sub_group_ballot_find_msb() mask
their input according to a subgroup size, which is assumed to be the
maximum subgroup size, and not the actual subgroup size excluding
non-existent work-items in the "remainder" subgroup.
Fix this as per the the clarification made to the OpenCL C specification
in revision 3.0.9 for issue KhronosGroup/OpenCL-Docs#626 by pull request
KhronosGroup/OpenCL-Docs#689.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
The tests were logging scalar results as vectors padded with zeroes for
no apparent benefit. Fix this.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
* Extended subgroups - use 128bit masks
* Refactoring to avoid kernels code duplication
* unification kernel names as test_ prefix +subgroups function name
* use string literals that improve readability
* use kernel templates that limit code duplication
* WorkGroupParams allows define default kernel - kernel template for multiple functions
* WorkGroupParams allows define kernel for specific one subgroup function
Co-authored-by: Stuart Brady <stuart.brady@arm.com>
* Report unsupported extended subgroup tests as skipped rather than passed
Also don't check the presence of extensions for each sub-test.
Signed-off-by: Kévin Petit <kpet@free.fr>
* address review comments
* subgroups: Fix setting cl_halfs and progress check.
cl_float testing uses set_value such that a generated cl_ulong of 1 is
stored as 1.0F in a logical sense. However, cl_half values aren't
intrinsic to C++ and generated cl_ulongs less than 1024 in particular
are interpreted bitwise as subnormals. The test fails on compute devices
lacking subnormal support. Perform the logical conversion to cl_half.
Fix independent forward progress check.
* subgroups_half: Address review comments
* subgroups_half: Formatting fixes required by check-format
* subgroups_half: Modified to query and use rounding mode supported by device
Co-authored-by: spauls <spauls@qti.qualcomm.com>
* Fix test_subgroups - test as core feature.
* Fix kernels pragma in case of OpenCL 2.1 core subgroups
* Change global variable names to gVariable convention
* Allow subgroups tests execute 2 paths
- as core feature
- as extension feature
* Fix code formatting.
* Set correct OpenCL version
* Fix code format
* test_subgroups review fixes:
* do not use global variables
* make IFP as separate tests
* use stringstream data type
* use special class to load function pointer for specific API
* Remove not not used variable
* Test subgroups - use common enums
* Test subgroups - set TEST_SKIPPED_ITSELF
* Accept OpenCL 3.0 in version parsing code and use where appropriate
There were a number of tests against 2.2 that are clearer against 3.0.
Fixes#751
Signed-off-by: Kévin Petit <kpet@free.fr>
* Remove CL_EXPERIMENTAL guards
Signed-off-by: Kévin Petit <kpet@free.fr>
* formatting
* Configure the headers for OpenCL 3.0
* more format fixes
* allow conditional execution of subgroups test suite
* make subgroups test suite execution optional
* make execution of subgroups suite optioanl
* allow conditional execution of subgroups test suite
* make subgroups test suite execution optional
* make execution of subgroups suite optioanl
The maintenance of the conformance tests is moving to Github.
This commit contains all the changes that have been done in
Gitlab since the first public release of the conformance tests.
Signed-off-by: Kevin Petit kevin.petit@arm.com