diff --git a/opencl/source/api/api.cpp b/opencl/source/api/api.cpp index 55567cba10..4570cce5c6 100644 --- a/opencl/source/api/api.cpp +++ b/opencl/source/api/api.cpp @@ -577,7 +577,7 @@ cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue commandQueue) { cl_int retVal = CL_INVALID_COMMAND_QUEUE; API_ENTER(&retVal); DBG_LOG_INPUTS("commandQueue", commandQueue); - retainQueue(commandQueue, retVal); + retainQueue(commandQueue, retVal); if (retVal == CL_SUCCESS) { TRACING_EXIT(clRetainCommandQueue, &retVal); return retVal; @@ -593,7 +593,7 @@ cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue commandQueue) { API_ENTER(&retVal); DBG_LOG_INPUTS("commandQueue", commandQueue); - releaseQueue(commandQueue, retVal); + releaseQueue(commandQueue, retVal); if (retVal == CL_SUCCESS) { TRACING_EXIT(clReleaseCommandQueue, &retVal); return retVal; @@ -617,7 +617,7 @@ cl_int CL_API_CALL clGetCommandQueueInfo(cl_command_queue commandQueue, "paramValue", NEO::FileLoggerInstance().infoPointerToString(paramValue, paramValueSize), "paramValueSizeRet", paramValueSizeRet); - getQueueInfo(commandQueue, paramName, paramValueSize, paramValue, paramValueSizeRet, retVal); + getQueueInfo(commandQueue, paramName, paramValueSize, paramValue, paramValueSizeRet, retVal); // if host queue not found - try to query device queue if (retVal == CL_SUCCESS) { TRACING_EXIT(clGetCommandQueueInfo, &retVal); diff --git a/opencl/source/command_queue/command_queue.cpp b/opencl/source/command_queue/command_queue.cpp index 01a04665c0..0c5b0cedbf 100644 --- a/opencl/source/command_queue/command_queue.cpp +++ b/opencl/source/command_queue/command_queue.cpp @@ -303,7 +303,7 @@ cl_int CommandQueue::getCommandQueueInfo(cl_command_queue_info paramName, size_t paramValueSize, void *paramValue, size_t *paramValueSizeRet) { - return getQueueInfo(this, paramName, paramValueSize, paramValue, paramValueSizeRet); + return getQueueInfo(this, paramName, paramValueSize, paramValue, paramValueSizeRet); } uint32_t CommandQueue::getTaskLevelFromWaitList(uint32_t taskLevel, diff --git a/opencl/source/helpers/queue_helpers.h b/opencl/source/helpers/queue_helpers.h index 6cfeffd6dd..fb5266761b 100644 --- a/opencl/source/helpers/queue_helpers.h +++ b/opencl/source/helpers/queue_helpers.h @@ -11,6 +11,7 @@ #include "opencl/source/cl_device/cl_device.h" #include "opencl/source/command_queue/command_queue.h" +#include "opencl/source/context/context.h" #include "opencl/source/helpers/get_info_status_mapper.h" namespace NEO { @@ -32,29 +33,16 @@ inline bool isCommandWithoutKernel(uint32_t commandType) { (commandType == CL_COMMAND_SVM_UNMAP)); } -template -void retainQueue(cl_command_queue commandQueue, cl_int &retVal) { - using BaseType = typename QueueType::BaseType; - auto queue = castToObject(static_cast(commandQueue)); +inline void retainQueue(cl_command_queue commandQueue, cl_int &retVal) { + using BaseType = typename CommandQueue::BaseType; + auto queue = castToObject(static_cast(commandQueue)); if (queue) { queue->retain(); retVal = CL_SUCCESS; } } -template -void releaseQueue(cl_command_queue commandQueue, cl_int &retVal) { - using BaseType = typename QueueType::BaseType; - auto queue = castToObject(static_cast(commandQueue)); - if (queue) { - releaseVirtualEvent(*queue); - queue->release(); - retVal = CL_SUCCESS; - } -} - -template <> -inline void releaseQueue(cl_command_queue commandQueue, cl_int &retVal) { +inline void releaseQueue(cl_command_queue commandQueue, cl_int &retVal) { using BaseType = typename CommandQueue::BaseType; auto queue = castToObject(static_cast(commandQueue)); if (queue) { @@ -79,19 +67,18 @@ inline void getHostQueueInfo(CommandQueue *queue, cl_command_queue_info paramNam } } -template -cl_int getQueueInfo(QueueType *queue, - cl_command_queue_info paramName, - size_t paramValueSize, - void *paramValue, - size_t *paramValueSizeRet) { +inline cl_int getQueueInfo(CommandQueue *queue, + cl_command_queue_info paramName, + size_t paramValueSize, + void *paramValue, + size_t *paramValueSizeRet) { cl_int retVal = CL_SUCCESS; GetInfoHelper getInfoHelper(paramValue, paramValueSize, paramValueSizeRet); switch (paramName) { case CL_QUEUE_CONTEXT: - retVal = changeGetInfoStatusToCLResultType(getInfoHelper.set(&queue->getContext())); + retVal = changeGetInfoStatusToCLResultType(getInfoHelper.set(queue->getContextPtr())); break; case CL_QUEUE_DEVICE: { Device &device = queue->getDevice(); @@ -120,29 +107,23 @@ cl_int getQueueInfo(QueueType *queue, break; } default: - if (std::is_same::value) { - auto cmdQ = reinterpret_cast(queue); - getHostQueueInfo(cmdQ, paramName, getInfoHelper, retVal); - break; - } - retVal = CL_INVALID_VALUE; + getHostQueueInfo(queue, paramName, getInfoHelper, retVal); break; } return retVal; } -template -void getQueueInfo(cl_command_queue commandQueue, - cl_command_queue_info paramName, - size_t paramValueSize, - void *paramValue, - size_t *paramValueSizeRet, - cl_int &retVal) { - using BaseType = typename QueueType::BaseType; - auto queue = castToObject(static_cast(commandQueue)); +inline void getQueueInfo(cl_command_queue commandQueue, + cl_command_queue_info paramName, + size_t paramValueSize, + void *paramValue, + size_t *paramValueSizeRet, + cl_int &retVal) { + using BaseType = typename CommandQueue::BaseType; + auto queue = castToObject(static_cast(commandQueue)); if (queue) { - retVal = getQueueInfo(queue, paramName, paramValueSize, paramValue, paramValueSizeRet); + retVal = getQueueInfo(queue, paramName, paramValueSize, paramValue, paramValueSizeRet); } } diff --git a/opencl/test/unit_test/api/cl_release_command_queue_tests.inl b/opencl/test/unit_test/api/cl_release_command_queue_tests.inl index 87ba43de27..eaaa344bc7 100644 --- a/opencl/test/unit_test/api/cl_release_command_queue_tests.inl +++ b/opencl/test/unit_test/api/cl_release_command_queue_tests.inl @@ -8,7 +8,6 @@ #include "shared/test/common/helpers/unit_test_helper.h" #include "opencl/source/context/context.h" -#include "opencl/test/unit_test/fixtures/device_host_queue_fixture.h" #include "opencl/test/unit_test/mocks/mock_kernel.h" #include "cl_api_tests.h" diff --git a/opencl/test/unit_test/api/cl_retain_release_command_queue_tests.inl b/opencl/test/unit_test/api/cl_retain_release_command_queue_tests.inl index 4ef3469a2a..f40c7faaac 100644 --- a/opencl/test/unit_test/api/cl_retain_release_command_queue_tests.inl +++ b/opencl/test/unit_test/api/cl_retain_release_command_queue_tests.inl @@ -7,24 +7,36 @@ #include "shared/test/common/helpers/unit_test_helper.h" +#include "opencl/source/command_queue/command_queue.h" #include "opencl/source/context/context.h" -#include "opencl/test/unit_test/fixtures/device_host_queue_fixture.h" +#include "opencl/test/unit_test/api/cl_api_tests.h" using namespace NEO; -namespace DeviceHostQueue { -typedef ::testing::Types QueueTypes; +namespace ULT { -template -class clRetainReleaseCommandQueueTests : public DeviceHostQueueFixture {}; +class clRetainReleaseCommandQueueTests : public ApiFixture<>, + public ::testing::Test { + public: + void SetUp() override { + ApiFixture::SetUp(); + } + void TearDown() override { + ApiFixture::TearDown(); + } -TYPED_TEST_CASE(clRetainReleaseCommandQueueTests, QueueTypes); + cl_command_queue createClQueue() { + return clCreateCommandQueueWithProperties(pContext, testedClDevice, noProperties, &retVal); + } -TYPED_TEST(clRetainReleaseCommandQueueTests, GivenValidCommandQueueWhenRetainingAndReleasingThenReferenceCountIsUpdatedCorrectly) { - using BaseType = typename TypeParam::BaseType; + protected: + cl_queue_properties noProperties[5] = {0}; +}; + +TEST_F(clRetainReleaseCommandQueueTests, GivenValidCommandQueueWhenRetainingAndReleasingThenReferenceCountIsUpdatedCorrectly) { auto queue = this->createClQueue(); ASSERT_EQ(CL_SUCCESS, this->retVal); - auto qObject = castToObject(static_cast(queue)); + auto qObject = castToObject(queue); ASSERT_NE(qObject, nullptr); cl_uint refCount; @@ -52,4 +64,4 @@ TYPED_TEST(clRetainReleaseCommandQueueTests, GivenValidCommandQueueWhenRetaining this->retVal = clReleaseCommandQueue(queue); EXPECT_EQ(CL_SUCCESS, this->retVal); } -} // namespace DeviceHostQueue +} // namespace ULT diff --git a/opencl/test/unit_test/command_queue/command_queue_hw_tests.cpp b/opencl/test/unit_test/command_queue/command_queue_hw_tests.cpp index c27092a7fe..c15df3280b 100644 --- a/opencl/test/unit_test/command_queue/command_queue_hw_tests.cpp +++ b/opencl/test/unit_test/command_queue/command_queue_hw_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2021 Intel Corporation + * Copyright (C) 2018-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -560,7 +560,7 @@ HWTEST_F(CommandQueueHwTest, whenReleaseQueueCalledThenFlushIsCalled) { cl_int retVal = 0; auto mockCmdQ = new MockCommandQueueHw(context, pClDevice, 0); mockCmdQ->incRefInternal(); - releaseQueue(mockCmdQ, retVal); + releaseQueue(mockCmdQ, retVal); EXPECT_TRUE(mockCmdQ->flushCalled); //this call will release the queue mockCmdQ->decRefInternal(); @@ -703,7 +703,7 @@ HWTEST_F(CommandQueueHwRefCountTest, givenBlockedCmdQWhenNewBlockedEnqueueReplac EXPECT_EQ(2, mockCmdQ->getRefInternalCount()); //this call will release the queue - releaseQueue(mockCmdQ, retVal); + releaseQueue(mockCmdQ, retVal); } HWTEST_F(CommandQueueHwRefCountTest, givenBlockedCmdQWithOutputEventAsVirtualEventWhenNewBlockedEnqueueReplacesVirtualEventCreatedFromOutputEventThenPreviousVirtualEventDoesntDecrementRefCount) { @@ -748,7 +748,7 @@ HWTEST_F(CommandQueueHwRefCountTest, givenBlockedCmdQWithOutputEventAsVirtualEve EXPECT_EQ(2, mockCmdQ->getRefInternalCount()); mockCmdQ->isQueueBlocked(); - releaseQueue(mockCmdQ, retVal); + releaseQueue(mockCmdQ, retVal); } HWTEST_F(CommandQueueHwRefCountTest, givenSeriesOfBlockedEnqueuesWhenEveryEventIsDeletedAndCmdQIsReleasedThenCmdQIsDeleted) { @@ -798,7 +798,7 @@ HWTEST_F(CommandQueueHwRefCountTest, givenSeriesOfBlockedEnqueuesWhenEveryEventI EXPECT_EQ(1, mockCmdQ->getRefInternalCount()); - releaseQueue(mockCmdQ, retVal); + releaseQueue(mockCmdQ, retVal); } HWTEST_F(CommandQueueHwRefCountTest, givenSeriesOfBlockedEnqueuesWhenCmdQIsReleasedBeforeOutputEventThenOutputEventDeletesCmdQ) { @@ -838,7 +838,7 @@ HWTEST_F(CommandQueueHwRefCountTest, givenSeriesOfBlockedEnqueuesWhenCmdQIsRelea // releasing UserEvent doesn't change the queue refCount EXPECT_EQ(3, mockCmdQ->getRefInternalCount()); - releaseQueue(mockCmdQ, retVal); + releaseQueue(mockCmdQ, retVal); // releasing cmdQ decrements refCount EXPECT_EQ(1, mockCmdQ->getRefInternalCount()); diff --git a/opencl/test/unit_test/fixtures/CMakeLists.txt b/opencl/test/unit_test/fixtures/CMakeLists.txt index 675ea05b7d..4dac1eef05 100644 --- a/opencl/test/unit_test/fixtures/CMakeLists.txt +++ b/opencl/test/unit_test/fixtures/CMakeLists.txt @@ -13,8 +13,6 @@ set(IGDRCL_SRCS_tests_fixtures ${CMAKE_CURRENT_SOURCE_DIR}/context_fixture.h ${CMAKE_CURRENT_SOURCE_DIR}/d3d_test_fixture.h ${CMAKE_CURRENT_SOURCE_DIR}/dispatch_flags_fixture.h - ${CMAKE_CURRENT_SOURCE_DIR}/device_host_queue_fixture.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/device_host_queue_fixture.h ${CMAKE_CURRENT_SOURCE_DIR}/device_info_fixture.h ${CMAKE_CURRENT_SOURCE_DIR}/device_instrumentation_fixture.cpp ${CMAKE_CURRENT_SOURCE_DIR}/device_instrumentation_fixture.h diff --git a/opencl/test/unit_test/fixtures/device_host_queue_fixture.cpp b/opencl/test/unit_test/fixtures/device_host_queue_fixture.cpp deleted file mode 100644 index c4a0ce2681..0000000000 --- a/opencl/test/unit_test/fixtures/device_host_queue_fixture.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2018-2022 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#include "opencl/test/unit_test/fixtures/device_host_queue_fixture.h" - -using namespace NEO; - -namespace DeviceHostQueue { -cl_queue_properties deviceQueueProperties::minimumProperties[5] = { - CL_QUEUE_PROPERTIES, - CL_QUEUE_ON_DEVICE | CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, - 0, 0, 0}; - -cl_queue_properties deviceQueueProperties::minimumPropertiesWithProfiling[5] = { - CL_QUEUE_PROPERTIES, - CL_QUEUE_ON_DEVICE | CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_PROFILING_ENABLE, - 0, 0, 0}; - -cl_queue_properties deviceQueueProperties::noProperties[5] = {0}; - -cl_queue_properties deviceQueueProperties::allProperties[5] = { - CL_QUEUE_PROPERTIES, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_PROFILING_ENABLE | CL_QUEUE_ON_DEVICE, - CL_QUEUE_SIZE, 128 * 1024, - 0}; - -template <> -cl_command_queue DeviceHostQueueFixture::create(cl_context ctx, cl_device_id device, cl_int &retVal, - cl_queue_properties properties[5]) { - return clCreateCommandQueueWithProperties(ctx, device, properties, &retVal); -} -} // namespace DeviceHostQueue diff --git a/opencl/test/unit_test/fixtures/device_host_queue_fixture.h b/opencl/test/unit_test/fixtures/device_host_queue_fixture.h deleted file mode 100644 index 397320cd71..0000000000 --- a/opencl/test/unit_test/fixtures/device_host_queue_fixture.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2018-2022 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#pragma once -#include "shared/test/common/test_macros/test.h" - -#include "opencl/source/cl_device/cl_device.h" -#include "opencl/source/command_queue/command_queue.h" -#include "opencl/test/unit_test/api/cl_api_tests.h" -#include "opencl/test/unit_test/test_macros/test_checks_ocl.h" - -using namespace NEO; - -namespace DeviceHostQueue { -struct deviceQueueProperties { - static cl_queue_properties minimumProperties[5]; - static cl_queue_properties minimumPropertiesWithProfiling[5]; - static cl_queue_properties noProperties[5]; - static cl_queue_properties allProperties[5]; -}; - -template -class DeviceHostQueueFixture : public ApiFixture<>, - public ::testing::Test { - public: - void SetUp() override { - ApiFixture::SetUp(); - } - void TearDown() override { - ApiFixture::TearDown(); - } - - cl_command_queue createClQueue(cl_queue_properties properties[5] = deviceQueueProperties::noProperties) { - return create(pContext, testedClDevice, retVal, properties); - } - - T *createQueueObject(cl_queue_properties properties[5] = deviceQueueProperties::noProperties) { - using BaseType = typename T::BaseType; - cl_context context = (cl_context)(pContext); - auto clQueue = create(context, testedClDevice, retVal, properties); - return castToObject(static_cast(clQueue)); - } - - cl_command_queue create(cl_context ctx, cl_device_id device, cl_int &retVal, - cl_queue_properties properties[5] = deviceQueueProperties::noProperties); -}; - -} // namespace DeviceHostQueue diff --git a/opencl/test/unit_test/helpers/queue_helpers_tests.cpp b/opencl/test/unit_test/helpers/queue_helpers_tests.cpp index 960478c6d0..fe3e9f3bd1 100644 --- a/opencl/test/unit_test/helpers/queue_helpers_tests.cpp +++ b/opencl/test/unit_test/helpers/queue_helpers_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2021 Intel Corporation + * Copyright (C) 2018-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -24,7 +24,7 @@ TEST(QueueHelpersTest, givenCommandQueueWithoutVirtualEventWhenReleaseQueueIsCal cmdQ->incRefInternal(); EXPECT_EQ(2, cmdQ->getRefInternalCount()); - releaseQueue(cmdQ, retVal); + releaseQueue(cmdQ, retVal); EXPECT_EQ(1, cmdQ->getRefInternalCount()); cmdQ->decRefInternal(); diff --git a/opencl/test/unit_test/kernel/kernel_tests.cpp b/opencl/test/unit_test/kernel/kernel_tests.cpp index 20a0c462d9..d4b27f0195 100644 --- a/opencl/test/unit_test/kernel/kernel_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_tests.cpp @@ -33,7 +33,6 @@ #include "opencl/source/kernel/kernel.h" #include "opencl/source/mem_obj/image.h" #include "opencl/test/unit_test/fixtures/cl_device_fixture.h" -#include "opencl/test/unit_test/fixtures/device_host_queue_fixture.h" #include "opencl/test/unit_test/fixtures/multi_root_device_fixture.h" #include "opencl/test/unit_test/helpers/gtest_helpers.h" #include "opencl/test/unit_test/mocks/mock_command_queue.h" @@ -47,7 +46,6 @@ #include using namespace NEO; -using namespace DeviceHostQueue; using KernelTest = ::testing::Test;