mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 14:55:24 +08:00
feature: add new API functions for external memory sharing
Related-To: NEO-6757 Signed-off-by: Warchulski, Jaroslaw <jaroslaw.warchulski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
5a5c20f99c
commit
bbf23df6eb
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2018-2022 Intel Corporation
|
||||
# Copyright (C) 2018-2023 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
@@ -65,6 +65,7 @@ set(IGDRCL_SRCS_tests_api
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cl_enqueue_write_buffer_rect_tests.inl
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cl_enqueue_write_buffer_tests.inl
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cl_enqueue_write_image_tests.inl
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cl_external_memory_extension_tests.inl
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cl_finish_tests.inl
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cl_flush_tests.inl
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cl_function_pointers_tests.inl
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2020 Intel Corporation
|
||||
* Copyright (C) 2018-2023 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -35,5 +35,6 @@
|
||||
#include "opencl/test/unit_test/api/cl_enqueue_map_image_tests.inl"
|
||||
#include "opencl/test/unit_test/api/cl_enqueue_marker_tests.inl"
|
||||
#include "opencl/test/unit_test/api/cl_enqueue_marker_with_wait_list_tests.inl"
|
||||
#include "opencl/test/unit_test/api/cl_external_memory_extension_tests.inl"
|
||||
#include "opencl/test/unit_test/api/cl_function_pointers_tests.inl"
|
||||
#include "opencl/test/unit_test/api/cl_unified_shared_memory_tests.inl"
|
||||
|
||||
158
opencl/test/unit_test/api/cl_external_memory_extension_tests.inl
Normal file
158
opencl/test/unit_test/api/cl_external_memory_extension_tests.inl
Normal file
@@ -0,0 +1,158 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "opencl/test/unit_test/api/cl_api_tests.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
using ClExternalMemoryExtensionTests = ApiTests;
|
||||
|
||||
TEST_F(ClExternalMemoryExtensionTests, GivenValidCommandQueueWhenEnqueingAcquireExternalMemObjectsKHRThenSuccessIsReturned) {
|
||||
auto retVal = clEnqueueAcquireExternalMemObjectsKHR(
|
||||
pCommandQueue,
|
||||
0,
|
||||
nullptr,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
}
|
||||
|
||||
TEST_F(ClExternalMemoryExtensionTests, GivenValidCommandQueueWhenEnqueingReleaseExternalMemObjectsKHRThenSuccessIsReturned) {
|
||||
auto retVal = clEnqueueReleaseExternalMemObjectsKHR(
|
||||
pCommandQueue,
|
||||
0,
|
||||
nullptr,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
}
|
||||
|
||||
TEST_F(ClExternalMemoryExtensionTests, GivenInvalidValueWhenEnqueingExternalMemObjectsKHRThenInvalidValueErrorIsReturned) {
|
||||
auto retVal = clEnqueueExternalMemObjectsKHR(
|
||||
pCommandQueue,
|
||||
1,
|
||||
nullptr,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr);
|
||||
EXPECT_EQ(CL_INVALID_VALUE, retVal);
|
||||
|
||||
retVal = clEnqueueExternalMemObjectsKHR(
|
||||
pCommandQueue,
|
||||
0,
|
||||
reinterpret_cast<cl_mem *>(pCommandQueue),
|
||||
0,
|
||||
nullptr,
|
||||
nullptr);
|
||||
EXPECT_EQ(CL_INVALID_VALUE, retVal);
|
||||
}
|
||||
|
||||
TEST_F(ClExternalMemoryExtensionTests, GivenInvalidMemObjectsWhenEnqueingExternalMemObjectsKHRThenInvalidMemObjectErrorIsReturned) {
|
||||
auto retVal = clEnqueueExternalMemObjectsKHR(
|
||||
pCommandQueue,
|
||||
1,
|
||||
reinterpret_cast<cl_mem *>(pCommandQueue),
|
||||
0,
|
||||
nullptr,
|
||||
nullptr);
|
||||
EXPECT_EQ(CL_INVALID_MEM_OBJECT, retVal);
|
||||
}
|
||||
|
||||
TEST_F(ClExternalMemoryExtensionTests, GivenValidInputsWhenEnqueingExternalMemObjectsKHRThenSuccessIsReturned) {
|
||||
auto retVal = CL_SUCCESS;
|
||||
|
||||
auto buffer = clCreateBuffer(
|
||||
pContext,
|
||||
CL_MEM_READ_WRITE,
|
||||
16,
|
||||
nullptr,
|
||||
&retVal);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
EXPECT_NE(nullptr, buffer);
|
||||
|
||||
auto userEvent = clCreateUserEvent(
|
||||
pContext,
|
||||
&retVal);
|
||||
|
||||
retVal = clEnqueueExternalMemObjectsKHR(
|
||||
pCommandQueue,
|
||||
1,
|
||||
&buffer,
|
||||
1,
|
||||
&userEvent,
|
||||
nullptr);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
retVal = clReleaseMemObject(buffer);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
retVal = clReleaseEvent(userEvent);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
}
|
||||
|
||||
TEST_F(ClExternalMemoryExtensionTests, GivenNullCommandQueueWhenEnqueingExternalMemObjectsKHRThenInvalidCommandQueueErrorIsReturned) {
|
||||
auto retVal = clEnqueueExternalMemObjectsKHR(
|
||||
nullptr,
|
||||
0,
|
||||
nullptr,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr);
|
||||
EXPECT_EQ(CL_INVALID_COMMAND_QUEUE, retVal);
|
||||
}
|
||||
|
||||
TEST_F(ClExternalMemoryExtensionTests, GivenInvalidEventWaitListWhenEnqueingExternalMemObjectsKHRThenInvalidEventWaitListErrorIsReturned) {
|
||||
auto retVal = clEnqueueExternalMemObjectsKHR(
|
||||
pCommandQueue,
|
||||
0,
|
||||
nullptr,
|
||||
1,
|
||||
nullptr,
|
||||
nullptr);
|
||||
EXPECT_EQ(CL_INVALID_EVENT_WAIT_LIST, retVal);
|
||||
|
||||
retVal = clEnqueueExternalMemObjectsKHR(
|
||||
pCommandQueue,
|
||||
0,
|
||||
nullptr,
|
||||
0,
|
||||
reinterpret_cast<cl_event *>(pCommandQueue),
|
||||
nullptr);
|
||||
EXPECT_EQ(CL_INVALID_EVENT_WAIT_LIST, retVal);
|
||||
|
||||
retVal = clEnqueueExternalMemObjectsKHR(
|
||||
pCommandQueue,
|
||||
0,
|
||||
nullptr,
|
||||
1,
|
||||
reinterpret_cast<cl_event *>(pCommandQueue),
|
||||
nullptr);
|
||||
EXPECT_EQ(CL_INVALID_EVENT_WAIT_LIST, retVal);
|
||||
}
|
||||
|
||||
TEST_F(ClExternalMemoryExtensionTests, GivenUserEventWithErrorStatusWhenEnqueingExternalMemObjectsKHRThenExecStatusErrorForEventsInWaitListIsReturned) {
|
||||
auto userEvent = clCreateUserEvent(
|
||||
pContext,
|
||||
&retVal);
|
||||
|
||||
retVal = clSetUserEventStatus(userEvent, -1);
|
||||
ASSERT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
retVal = clEnqueueExternalMemObjectsKHR(
|
||||
pCommandQueue,
|
||||
0,
|
||||
nullptr,
|
||||
1,
|
||||
&userEvent,
|
||||
nullptr);
|
||||
ASSERT_EQ(CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST, retVal);
|
||||
|
||||
retVal = clReleaseEvent(userEvent);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
}
|
||||
Reference in New Issue
Block a user