From 5cc6bf823770e26f762d2a6c14d22513b8aafd3f Mon Sep 17 00:00:00 2001 From: boazo Date: Thu, 20 Feb 2020 19:19:48 +0200 Subject: [PATCH] Pipes optional (#578) * conditional execution of the pipe test suite * conditional execution of the pipe test suite * make pipes suite optional --- test_conformance/pipes/main.c | 146 +++++++++++++++++++--------------- 1 file changed, 84 insertions(+), 62 deletions(-) diff --git a/test_conformance/pipes/main.c b/test_conformance/pipes/main.c index e4390338..d472db4d 100644 --- a/test_conformance/pipes/main.c +++ b/test_conformance/pipes/main.c @@ -1,6 +1,6 @@ // // Copyright (c) 2017 The Khronos Group Inc. -// +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at @@ -15,72 +15,94 @@ // #include "harness/compat.h" +#include "harness/testHarness.h" +#include "procs.h" #include #include -#include "procs.h" -#include "harness/testHarness.h" + +test_status InitCL(cl_device_id device) { + auto version = get_device_cl_version(device); + if (version < Version(2, 0)) { + return TEST_SKIP; + } + + int error; + cl_uint max_packet_size; + error = clGetDeviceInfo(device, CL_DEVICE_PIPE_MAX_PACKET_SIZE, + sizeof(max_packet_size), &max_packet_size, NULL); + if (error != CL_SUCCESS) { + print_error(error, "Unable to get pipe max packet size"); + return TEST_FAIL; + } + + if ((max_packet_size == 0) && (version > Version(2,2))) { + return TEST_SKIP; + } + + return TEST_PASS; +} test_definition test_list[] = { - ADD_TEST_VERSION( pipe_readwrite_int, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_uint, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_long, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_ulong, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_short, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_ushort, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_float, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_half, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_char, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_uchar, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_double, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_struct, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_int, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_uint, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_long, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_ulong, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_short, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_ushort, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_float, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_half, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_char, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_uchar, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_double, Version(2, 0) ), - ADD_TEST_VERSION( pipe_workgroup_readwrite_struct, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_int, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_uint, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_long, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_ulong, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_short, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_ushort, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_float, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_half, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_char, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_uchar, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_double, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroup_readwrite_struct, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_int, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_uint, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_long, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_ulong, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_short, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_ushort, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_float, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_half, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_char, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_uchar, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_double, Version(2, 0) ), - ADD_TEST_VERSION( pipe_convenience_readwrite_struct, Version(2, 0) ), - ADD_TEST_VERSION( pipe_info, Version(2, 0) ), - ADD_TEST_VERSION( pipe_max_args, Version(2, 0) ), - ADD_TEST_VERSION( pipe_max_packet_size, Version(2, 0) ), - ADD_TEST_VERSION( pipe_max_active_reservations, Version(2, 0) ), - ADD_TEST_VERSION( pipe_query_functions, Version(2, 0) ), - ADD_TEST_VERSION( pipe_readwrite_errors, Version(2, 0) ), - ADD_TEST_VERSION( pipe_subgroups_divergence, Version(2, 0) ), + ADD_TEST(pipe_readwrite_int), + ADD_TEST(pipe_readwrite_uint), + ADD_TEST(pipe_readwrite_long), + ADD_TEST(pipe_readwrite_ulong), + ADD_TEST(pipe_readwrite_short), + ADD_TEST(pipe_readwrite_ushort), + ADD_TEST(pipe_readwrite_float), + ADD_TEST(pipe_readwrite_half), + ADD_TEST(pipe_readwrite_char), + ADD_TEST(pipe_readwrite_uchar), + ADD_TEST(pipe_readwrite_double), + ADD_TEST(pipe_readwrite_struct), + ADD_TEST(pipe_workgroup_readwrite_int), + ADD_TEST(pipe_workgroup_readwrite_uint), + ADD_TEST(pipe_workgroup_readwrite_long), + ADD_TEST(pipe_workgroup_readwrite_ulong), + ADD_TEST(pipe_workgroup_readwrite_short), + ADD_TEST(pipe_workgroup_readwrite_ushort), + ADD_TEST(pipe_workgroup_readwrite_float), + ADD_TEST(pipe_workgroup_readwrite_half), + ADD_TEST(pipe_workgroup_readwrite_char), + ADD_TEST(pipe_workgroup_readwrite_uchar), + ADD_TEST(pipe_workgroup_readwrite_double), + ADD_TEST(pipe_workgroup_readwrite_struct), + ADD_TEST(pipe_subgroup_readwrite_int), + ADD_TEST(pipe_subgroup_readwrite_uint), + ADD_TEST(pipe_subgroup_readwrite_long), + ADD_TEST(pipe_subgroup_readwrite_ulong), + ADD_TEST(pipe_subgroup_readwrite_short), + ADD_TEST(pipe_subgroup_readwrite_ushort), + ADD_TEST(pipe_subgroup_readwrite_float), + ADD_TEST(pipe_subgroup_readwrite_half), + ADD_TEST(pipe_subgroup_readwrite_char), + ADD_TEST(pipe_subgroup_readwrite_uchar), + ADD_TEST(pipe_subgroup_readwrite_double), + ADD_TEST(pipe_subgroup_readwrite_struct), + ADD_TEST(pipe_convenience_readwrite_int), + ADD_TEST(pipe_convenience_readwrite_uint), + ADD_TEST(pipe_convenience_readwrite_long), + ADD_TEST(pipe_convenience_readwrite_ulong), + ADD_TEST(pipe_convenience_readwrite_short), + ADD_TEST(pipe_convenience_readwrite_ushort), + ADD_TEST(pipe_convenience_readwrite_float), + ADD_TEST(pipe_convenience_readwrite_half), + ADD_TEST(pipe_convenience_readwrite_char), + ADD_TEST(pipe_convenience_readwrite_uchar), + ADD_TEST(pipe_convenience_readwrite_double), + ADD_TEST(pipe_convenience_readwrite_struct), + ADD_TEST(pipe_info), + ADD_TEST(pipe_max_args), + ADD_TEST(pipe_max_packet_size), + ADD_TEST(pipe_max_active_reservations), + ADD_TEST(pipe_query_functions), + ADD_TEST(pipe_readwrite_errors), + ADD_TEST(pipe_subgroups_divergence), }; -const int test_num = ARRAY_SIZE( test_list ); +const int test_num = ARRAY_SIZE(test_list); -int main( int argc, const char *argv[] ) -{ - return runTestHarness( argc, argv, test_num, test_list, false, false, 0 ); +int main(int argc, const char *argv[]) { + return runTestHarnessWithCheck(argc, argv, test_num, test_list, false, false, + 0, InitCL); }