mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-25 08:19:02 +00:00
Added initial set of tests for the cl_khr_semaphore extension (#1428)
* Added initial set of tests for the cl_khr_semaphore extension * Fixes to address first round of reviews for cl_khr_semaphore tests
This commit is contained in:
@@ -153,6 +153,21 @@ static int vlog_win32(const char *format, ...);
|
|||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#define test_assert_event_status(comparison_operator, event) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
cl_int status; \
|
||||||
|
cl_int err = clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, \
|
||||||
|
sizeof(status), &status, nullptr); \
|
||||||
|
test_error(err, "Could not get " #event " info"); \
|
||||||
|
test_assert_error(status comparison_operator CL_COMPLETE, \
|
||||||
|
"Unexpected status for " #event); \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
#define test_assert_event_inprogress(event) test_assert_event_status(>, event)
|
||||||
|
#define test_assert_event_terminated(event) test_assert_event_status(<, event)
|
||||||
|
#define test_assert_event_complete(event) test_assert_event_status(==, event)
|
||||||
|
|
||||||
extern const char *IGetErrorString(int clErrorCode);
|
extern const char *IGetErrorString(int clErrorCode);
|
||||||
|
|
||||||
extern float Ulp_Error_Half(cl_half test, float reference);
|
extern float Ulp_Error_Half(cl_half test, float reference);
|
||||||
|
|||||||
36
test_common/harness/extensionHelpers.h
Normal file
36
test_common/harness/extensionHelpers.h
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
//
|
||||||
|
// Copyright (c) 2022 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
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
#ifndef _extensionHelpers_h
|
||||||
|
#define _extensionHelpers_h
|
||||||
|
|
||||||
|
// Load a specific function that is part of an OpenCL extension
|
||||||
|
#define GET_PFN(device, fn_name) \
|
||||||
|
fn_name##_fn fn_name = reinterpret_cast<fn_name##_fn>( \
|
||||||
|
clGetExtensionFunctionAddressForPlatform( \
|
||||||
|
getPlatformFromDevice(device), #fn_name)); \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (!fn_name) \
|
||||||
|
{ \
|
||||||
|
log_error( \
|
||||||
|
"ERROR: Failed to get function pointer for %s at %s:%d\n", \
|
||||||
|
#fn_name, __FILE__, __LINE__); \
|
||||||
|
return TEST_FAIL; \
|
||||||
|
} \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _extensionHelpers_h
|
||||||
@@ -35,6 +35,7 @@ set(${MODULE_NAME}_SOURCES
|
|||||||
test_mem_object_properties_queries.cpp
|
test_mem_object_properties_queries.cpp
|
||||||
test_queue_properties_queries.cpp
|
test_queue_properties_queries.cpp
|
||||||
test_pipe_properties_queries.cpp
|
test_pipe_properties_queries.cpp
|
||||||
|
test_semaphores.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
include(../CMakeCommon.txt)
|
include(../CMakeCommon.txt)
|
||||||
|
|||||||
@@ -148,6 +148,20 @@ test_definition test_list[] = {
|
|||||||
ADD_TEST(min_image_formats),
|
ADD_TEST(min_image_formats),
|
||||||
ADD_TEST(negative_get_platform_info),
|
ADD_TEST(negative_get_platform_info),
|
||||||
ADD_TEST(negative_get_platform_ids),
|
ADD_TEST(negative_get_platform_ids),
|
||||||
|
|
||||||
|
ADD_TEST_VERSION(semaphores_simple_1, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_simple_2, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_reuse, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_cross_queues_ooo, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_cross_queues_io, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_multi_signal, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_multi_wait, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_queries, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_order_1, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_order_2, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_order_3, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_import_export_fd, Version(1, 2)),
|
||||||
|
ADD_TEST_VERSION(semaphores_invalid_command, Version(1, 2)),
|
||||||
};
|
};
|
||||||
|
|
||||||
const int test_num = ARRAY_SIZE(test_list);
|
const int test_num = ARRAY_SIZE(test_list);
|
||||||
|
|||||||
@@ -204,3 +204,40 @@ extern int test_negative_get_platform_ids(cl_device_id deviceID,
|
|||||||
int num_elements);
|
int num_elements);
|
||||||
extern int test_kernel_attributes(cl_device_id deviceID, cl_context context,
|
extern int test_kernel_attributes(cl_device_id deviceID, cl_context context,
|
||||||
cl_command_queue queue, int num_elements);
|
cl_command_queue queue, int num_elements);
|
||||||
|
|
||||||
|
extern int test_semaphores_simple_1(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements);
|
||||||
|
extern int test_semaphores_simple_2(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements);
|
||||||
|
extern int test_semaphores_reuse(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements);
|
||||||
|
extern int test_semaphores_cross_queues_ooo(cl_device_id deviceID,
|
||||||
|
cl_context context,
|
||||||
|
cl_command_queue queue,
|
||||||
|
int num_elements);
|
||||||
|
extern int test_semaphores_cross_queues_io(cl_device_id deviceID,
|
||||||
|
cl_context context,
|
||||||
|
cl_command_queue queue,
|
||||||
|
int num_elements);
|
||||||
|
extern int test_semaphores_multi_signal(cl_device_id deviceID,
|
||||||
|
cl_context context,
|
||||||
|
cl_command_queue queue,
|
||||||
|
int num_elements);
|
||||||
|
extern int test_semaphores_multi_wait(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements);
|
||||||
|
extern int test_semaphores_queries(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements);
|
||||||
|
extern int test_semaphores_order_1(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements);
|
||||||
|
extern int test_semaphores_order_2(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements);
|
||||||
|
extern int test_semaphores_order_3(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements);
|
||||||
|
extern int test_semaphores_import_export_fd(cl_device_id deviceID,
|
||||||
|
cl_context context,
|
||||||
|
cl_command_queue queue,
|
||||||
|
int num_elements);
|
||||||
|
extern int test_semaphores_invalid_command(cl_device_id deviceID,
|
||||||
|
cl_context context,
|
||||||
|
cl_command_queue queue,
|
||||||
|
int num_elements);
|
||||||
|
|||||||
1146
test_conformance/api/test_semaphores.cpp
Normal file
1146
test_conformance/api/test_semaphores.cpp
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user