diff --git a/opencl/source/api/api.cpp b/opencl/source/api/api.cpp index 858b4fa740..0fdcdb0e25 100644 --- a/opencl/source/api/api.cpp +++ b/opencl/source/api/api.cpp @@ -1543,7 +1543,10 @@ cl_program CL_API_CALL clLinkProgram(cl_context context, pContext = castToObject(context); } if (pContext != nullptr) { - program = new Program(*pContext->getDevice(0)->getExecutionEnvironment(), pContext, false, &pContext->getDevice(0)->getDevice()); + + ClDeviceVector deviceVector; + deviceVector.push_back(pContext->getDevice(0)); + program = new Program(pContext, false, deviceVector); retVal = program->link(numDevices, deviceList, options, numInputPrograms, inputPrograms, funcNotify, userData); diff --git a/opencl/source/program/create.inl b/opencl/source/program/create.inl index 61cc8f4aa6..95126a6fde 100644 --- a/opencl/source/program/create.inl +++ b/opencl/source/program/create.inl @@ -32,7 +32,9 @@ T *Program::create( DEBUG_BREAK_IF(!pContext); auto device = pContext->getDevice(0); - auto program = new T(*device->getExecutionEnvironment(), pContext, false, &device->getDevice()); + ClDeviceVector deviceVector; + deviceVector.push_back(device); + auto program = new T(pContext, false, deviceVector); auto retVal = program->createProgramFromBinary(binaries[0], lengths[0], device->getRootDeviceIndex()); @@ -73,7 +75,9 @@ T *Program::create( lengths); if (CL_SUCCESS == retVal) { - program = new T(*pContext->getDevice(0)->getExecutionEnvironment(), pContext, false, &pContext->getDevice(0)->getDevice()); + ClDeviceVector deviceVector; + deviceVector.push_back(pContext->getDevice(0)); + program = new T(pContext, false, deviceVector); program->sourceCode.swap(combinedString); program->createdFrom = CreatedFrom::SOURCE; } @@ -97,7 +101,9 @@ T *Program::create( } if (retVal == CL_SUCCESS) { - program = new T(*device.getExecutionEnvironment(), context, isBuiltIn, &device.getDevice()); + ClDeviceVector deviceVector; + deviceVector.push_back(&device); + program = new T(context, isBuiltIn, deviceVector); program->sourceCode = nullTerminatedString; program->createdFrom = CreatedFrom::SOURCE; } @@ -136,7 +142,10 @@ T *Program::createFromGenBinary( } if (CL_SUCCESS == retVal) { - program = new T(executionEnvironment, context, isBuiltIn, device); + + ClDeviceVector deviceVector; + deviceVector.push_back(device->getSpecializedDevice()); + program = new T(context, isBuiltIn, deviceVector); program->numDevices = 1; program->replaceDeviceBinary(makeCopy(binary, size), size, device->getRootDeviceIndex()); program->isCreatedFromBinary = true; @@ -165,7 +174,10 @@ T *Program::createFromIL(Context *context, } auto device = context->getDevice(0); - T *program = new T(*device->getExecutionEnvironment(), context, false, &device->getDevice()); + + ClDeviceVector deviceVector; + deviceVector.push_back(device); + T *program = new T(context, false, deviceVector); errcodeRet = program->createProgramFromBinary(il, length, device->getRootDeviceIndex()); program->createdFrom = CreatedFrom::IL; diff --git a/opencl/source/program/program.cpp b/opencl/source/program/program.cpp index 5bb2a4938d..67bdfbf8c7 100644 --- a/opencl/source/program/program.cpp +++ b/opencl/source/program/program.cpp @@ -34,76 +34,62 @@ namespace NEO { -Program::Program(ExecutionEnvironment &executionEnvironment, Context *context, bool isBuiltIn, Device *device) : executionEnvironment(executionEnvironment), - context(context), - pDevice(device), - isBuiltIn(isBuiltIn) { +Program::Program(Context *context, bool isBuiltIn, const ClDeviceVector &clDevicesIn) : executionEnvironment(*clDevicesIn[0]->getExecutionEnvironment()), + context(context), + pDevice(&clDevicesIn[0]->getDevice()), + clDevices(clDevicesIn), + isBuiltIn(isBuiltIn) { if (this->context && !this->isBuiltIn) { this->context->incRefInternal(); } blockKernelManager = new BlockKernelManager(); - ClDevice *pClDevice = nullptr; - if (context != nullptr) { - pClDevice = context->getDevice(0); - if (pDevice == nullptr) { - pDevice = &pClDevice->getDevice(); - } - } else if (pDevice != nullptr) { - auto pSpecializedDevice = castToObject(pDevice->getSpecializedDevice()); - if (pSpecializedDevice != nullptr) { - pClDevice = pSpecializedDevice; - } - } + ClDevice *pClDevice = castToObject(pDevice->getSpecializedDevice()); numDevices = 1; bool force32BitAddressess = false; - uint32_t maxRootDeviceIndex = 0u; - if (device) { - maxRootDeviceIndex = device->getRootDeviceIndex(); - } + uint32_t maxRootDeviceIndex = pDevice->getRootDeviceIndex(); + buildInfos.resize(maxRootDeviceIndex + 1); - if (pClDevice) { - auto enabledClVersion = pClDevice->getEnabledClVersion(); - if (enabledClVersion == 30) { - internalOptions = "-ocl-version=300 "; - } else if (enabledClVersion == 21) { - internalOptions = "-ocl-version=210 "; - } else { - internalOptions = "-ocl-version=120 "; - } - force32BitAddressess = pClDevice->getSharedDeviceInfo().force32BitAddressess; + auto enabledClVersion = pClDevice->getEnabledClVersion(); + if (enabledClVersion == 30) { + internalOptions = "-ocl-version=300 "; + } else if (enabledClVersion == 21) { + internalOptions = "-ocl-version=210 "; + } else { + internalOptions = "-ocl-version=120 "; + } + force32BitAddressess = pClDevice->getSharedDeviceInfo().force32BitAddressess; - if (force32BitAddressess && !isBuiltIn) { - CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::arch32bit); - } + if (force32BitAddressess && !isBuiltIn) { + CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::arch32bit); + } - if ((isBuiltIn && is32bit) || pClDevice->areSharedSystemAllocationsAllowed() || - DebugManager.flags.DisableStatelessToStatefulOptimization.get()) { - CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::greaterThan4gbBuffersRequired); - } + if ((isBuiltIn && is32bit) || pClDevice->areSharedSystemAllocationsAllowed() || + DebugManager.flags.DisableStatelessToStatefulOptimization.get()) { + CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::greaterThan4gbBuffersRequired); + } - if (ApiSpecificConfig::getBindlessConfiguration()) { - CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::bindlessBuffers); - CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::bindlessImages); - } + if (ApiSpecificConfig::getBindlessConfiguration()) { + CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::bindlessBuffers); + CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::bindlessImages); + } - kernelDebugEnabled = pClDevice->isDebuggerActive(); + kernelDebugEnabled = pClDevice->isDebuggerActive(); - auto enableStatelessToStatefullWithOffset = pClDevice->getHardwareCapabilities().isStatelesToStatefullWithOffsetSupported; - if (DebugManager.flags.EnableStatelessToStatefulBufferOffsetOpt.get() != -1) { - enableStatelessToStatefullWithOffset = DebugManager.flags.EnableStatelessToStatefulBufferOffsetOpt.get() != 0; - } + auto enableStatelessToStatefullWithOffset = pClDevice->getHardwareCapabilities().isStatelesToStatefullWithOffsetSupported; + if (DebugManager.flags.EnableStatelessToStatefulBufferOffsetOpt.get() != -1) { + enableStatelessToStatefullWithOffset = DebugManager.flags.EnableStatelessToStatefulBufferOffsetOpt.get() != 0; + } - if (enableStatelessToStatefullWithOffset) { - CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::hasBufferOffsetArg); - } + if (enableStatelessToStatefullWithOffset) { + CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::hasBufferOffsetArg); + } - auto &hwHelper = HwHelper::get(pClDevice->getHardwareInfo().platform.eRenderCoreFamily); - if (hwHelper.isForceEmuInt32DivRemSPWARequired(pClDevice->getHardwareInfo())) { - CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::forceEmuInt32DivRemSP); - } + auto &hwHelper = HwHelper::get(pClDevice->getHardwareInfo().platform.eRenderCoreFamily); + if (hwHelper.isForceEmuInt32DivRemSPWARequired(pClDevice->getHardwareInfo())) { + CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::forceEmuInt32DivRemSP); } CompilerOptions::concatenateAppend(internalOptions, CompilerOptions::preserveVec3Type); diff --git a/opencl/source/program/program.h b/opencl/source/program/program.h index 5dc8ab3040..1ee6b0d8d4 100644 --- a/opencl/source/program/program.h +++ b/opencl/source/program/program.h @@ -14,6 +14,7 @@ #include "shared/source/utilities/const_stringref.h" #include "opencl/source/api/cl_types.h" +#include "opencl/source/cl_device/cl_device_vector.h" #include "opencl/source/helpers/base_object.h" #include "opencl/source/helpers/destructor_callback.h" @@ -131,7 +132,7 @@ class Program : public BaseObject<_cl_program> { size_t length, cl_int &errcodeRet); - Program(ExecutionEnvironment &executionEnvironment, Context *context, bool isBuiltIn, Device *device); + Program(Context *context, bool isBuiltIn, const ClDeviceVector &clDevices); ~Program() override; Program(const Program &) = delete; @@ -350,6 +351,7 @@ class Program : public BaseObject<_cl_program> { Context *context = nullptr; Device *pDevice = nullptr; cl_uint numDevices = 0U; + ClDeviceVector clDevices; bool isBuiltIn = false; bool kernelDebugEnabled = false; diff --git a/opencl/test/unit_test/accelerators/media_image_arg_tests.cpp b/opencl/test/unit_test/accelerators/media_image_arg_tests.cpp index 5ec4fd1313..b261f4e132 100644 --- a/opencl/test/unit_test/accelerators/media_image_arg_tests.cpp +++ b/opencl/test/unit_test/accelerators/media_image_arg_tests.cpp @@ -30,7 +30,7 @@ class MediaImageSetArgTest : public ClDeviceFixture, ClDeviceFixture::SetUp(); pKernelInfo = std::make_unique(); - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); pKernelInfo->heapInfo.SurfaceStateHeapSize = sizeof(surfaceStateHeap); pKernelInfo->heapInfo.pSsh = surfaceStateHeap; diff --git a/opencl/test/unit_test/api/cl_api_tests.cpp b/opencl/test/unit_test/api/cl_api_tests.cpp index 40ff7b6001..d18a811529 100644 --- a/opencl/test/unit_test/api/cl_api_tests.cpp +++ b/opencl/test/unit_test/api/cl_api_tests.cpp @@ -28,7 +28,7 @@ void api_fixture_using_aligned_memory_manager::SetUp() { commandQueue = new MockCommandQueue(context, device, 0); - program = new MockProgram(*device->getExecutionEnvironment(), ctxPtr, false, &device->getDevice()); + program = new MockProgram(ctxPtr, false, toClDeviceVector(*device)); Program *prgPtr = reinterpret_cast(program); kernel = new MockKernel(prgPtr, program->mockKernelInfo, *device); diff --git a/opencl/test/unit_test/api/cl_api_tests.h b/opencl/test/unit_test/api/cl_api_tests.h index a0ca9532b9..0979e7f458 100644 --- a/opencl/test/unit_test/api/cl_api_tests.h +++ b/opencl/test/unit_test/api/cl_api_tests.h @@ -48,7 +48,7 @@ struct ApiFixture { pCommandQueue = new MockCommandQueue(pContext, pDevice, nullptr); - pProgram = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, &pDevice->getDevice()); + pProgram = new MockProgram(pContext, false, toClDeviceVector(*pDevice)); pKernel = new MockKernel(pProgram, pProgram->mockKernelInfo, *pDevice); ASSERT_NE(nullptr, pKernel); diff --git a/opencl/test/unit_test/api/cl_create_kernel_tests.inl b/opencl/test/unit_test/api/cl_create_kernel_tests.inl index eaedf2ed70..30838b8d4b 100644 --- a/opencl/test/unit_test/api/cl_create_kernel_tests.inl +++ b/opencl/test/unit_test/api/cl_create_kernel_tests.inl @@ -141,7 +141,7 @@ TEST_F(clCreateKernelTests, GivenNullKernelNameWhenCreatingNewKernelThenInvalidV cl_kernel kernel = nullptr; KernelInfo *pKernelInfo = new KernelInfo(); - std::unique_ptr pMockProg = std::make_unique(*pDevice->getExecutionEnvironment(), pContext, false, nullptr); + std::unique_ptr pMockProg = std::make_unique(pContext, false, toClDeviceVector(*pDevice)); pMockProg->addKernelInfo(pKernelInfo); kernel = clCreateKernel( @@ -167,7 +167,7 @@ TEST_F(clCreateKernelTests, GivenInvalidProgramWhenCreatingNewKernelThenInvalidP TEST_F(clCreateKernelTests, GivenProgramWithBuildErrorWhenCreatingNewKernelThenInvalidProgramExecutableErrorIsReturned) { cl_kernel kernel = nullptr; - std::unique_ptr pMockProg = std::make_unique(*pDevice->getExecutionEnvironment(), pContext, false, nullptr); + std::unique_ptr pMockProg = std::make_unique(pContext, false, toClDeviceVector(*pDevice)); pMockProg->setBuildStatus(CL_BUILD_ERROR); kernel = clCreateKernel( diff --git a/opencl/test/unit_test/api/cl_link_program_tests.inl b/opencl/test/unit_test/api/cl_link_program_tests.inl index 3c7b7ec585..a9b3311274 100644 --- a/opencl/test/unit_test/api/cl_link_program_tests.inl +++ b/opencl/test/unit_test/api/cl_link_program_tests.inl @@ -175,7 +175,7 @@ TEST_F(clLinkProgramTests, GivenProgramsWithSpecConstantsThenSpecConstantsAreEmb uint32_t prog2Keys[1] = {11}; uint64_t prog2Values[1] = {13}; - auto progSrc1 = clUniquePtr(new MockProgram(*pProgram->getDevice().getExecutionEnvironment(), pContext, false, pProgram->pDevice)); + auto progSrc1 = clUniquePtr(new MockProgram(pContext, false, toClDeviceVector(*pDevice))); progSrc1->pDevice = pProgram->pDevice; progSrc1->specConstantsValues[prog1Keys[0]] = prog1Values[0]; progSrc1->specConstantsValues[prog1Keys[1]] = prog1Values[1]; @@ -184,7 +184,7 @@ TEST_F(clLinkProgramTests, GivenProgramsWithSpecConstantsThenSpecConstantsAreEmb progSrc1->irBinarySize = sizeof(ir1); progSrc1->isSpirV = true; - auto progSrc2 = clUniquePtr(new MockProgram(*pProgram->getDevice().getExecutionEnvironment(), pContext, false, pProgram->pDevice)); + auto progSrc2 = clUniquePtr(new MockProgram(pContext, false, toClDeviceVector(*pDevice))); progSrc2->pDevice = pProgram->pDevice; progSrc2->specConstantsValues[prog2Keys[0]] = prog2Values[0]; progSrc2->areSpecializationConstantsInitialized = true; @@ -192,13 +192,13 @@ TEST_F(clLinkProgramTests, GivenProgramsWithSpecConstantsThenSpecConstantsAreEmb progSrc2->irBinarySize = sizeof(ir2); progSrc2->isSpirV = true; - auto progSrc3 = clUniquePtr(new MockProgram(*pProgram->getDevice().getExecutionEnvironment(), pContext, false, pProgram->pDevice)); + auto progSrc3 = clUniquePtr(new MockProgram(pContext, false, toClDeviceVector(*pDevice))); progSrc3->pDevice = pProgram->pDevice; progSrc3->irBinary = makeCopy(ir3, sizeof(ir3)); progSrc3->irBinarySize = sizeof(ir3); progSrc3->isSpirV = true; - auto progDst = clUniquePtr(new MockProgram(*pProgram->getDevice().getExecutionEnvironment(), pContext, false, pProgram->pDevice)); + auto progDst = clUniquePtr(new MockProgram(pContext, false, toClDeviceVector(*pDevice))); progDst->pDevice = pProgram->pDevice; cl_program inputPrograms[3] = {progSrc1.get(), progSrc2.get(), progSrc3.get()}; diff --git a/opencl/test/unit_test/built_ins/built_in_tests.cpp b/opencl/test/unit_test/built_ins/built_in_tests.cpp index f64481fcaf..6f9638e981 100644 --- a/opencl/test/unit_test/built_ins/built_in_tests.cpp +++ b/opencl/test/unit_test/built_ins/built_in_tests.cpp @@ -427,7 +427,7 @@ HWTEST_F(BuiltInTests, givenKernelWithAuxTranslationRequiredWhenEnqueueCalledThe auto mockAuxBuiltInOp = new MockAuxBuilInOp(*pBuiltIns, *pContext, *pDevice); pBuiltIns->BuiltinOpsBuilders[static_cast(EBuiltInOps::AuxTranslation)].first.reset(mockAuxBuiltInOp); - auto mockProgram = clUniquePtr(new MockProgram(*pDevice->getExecutionEnvironment())); + auto mockProgram = clUniquePtr(new MockProgram(toClDeviceVector(*pClDevice))); auto mockBuiltinKernel = MockKernel::create(*pDevice, mockProgram.get()); mockAuxBuiltInOp->usedKernels.at(0).reset(mockBuiltinKernel); diff --git a/opencl/test/unit_test/command_queue/blit_enqueue_tests.cpp b/opencl/test/unit_test/command_queue/blit_enqueue_tests.cpp index 0c5c148486..9d33792fe7 100644 --- a/opencl/test/unit_test/command_queue/blit_enqueue_tests.cpp +++ b/opencl/test/unit_test/command_queue/blit_enqueue_tests.cpp @@ -1686,7 +1686,7 @@ HWTEST_TEMPLATED_F(BlitCopyTests, givenLocalMemoryAccessNotAllowedWhenGlobalCons mockLinkerInput->traits.exportsGlobalConstants = true; programInfo.linkerInput = std::move(mockLinkerInput); - MockProgram program(*device->getExecutionEnvironment(), bcsMockContext.get(), false, &device->getDevice()); + MockProgram program(bcsMockContext.get(), false, toClDeviceVector(*device)); EXPECT_EQ(0u, bcsMockContext->bcsCsr->peekTaskCount()); diff --git a/opencl/test/unit_test/command_queue/command_queue_tests.cpp b/opencl/test/unit_test/command_queue/command_queue_tests.cpp index 432a4c3e5f..82e918b506 100644 --- a/opencl/test/unit_test/command_queue/command_queue_tests.cpp +++ b/opencl/test/unit_test/command_queue/command_queue_tests.cpp @@ -1026,7 +1026,7 @@ TEST(CommandQueue, givenEnqueueAcquireSharedObjectsCallWhenAcquireFailsThenCorre HWTEST_F(CommandQueueCommandStreamTest, givenDebugKernelWhenSetupDebugSurfaceIsCalledThenSurfaceStateIsCorrectlySet) { using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE; - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); program.enableKernelDebug(); std::unique_ptr kernel(MockKernel::create(*pDevice, &program)); MockCommandQueue cmdQ(context.get(), pClDevice, 0); @@ -1046,7 +1046,7 @@ HWTEST_F(CommandQueueCommandStreamTest, givenDebugKernelWhenSetupDebugSurfaceIsC HWTEST_F(CommandQueueCommandStreamTest, givenCsrWithDebugSurfaceAllocatedWhenSetupDebugSurfaceIsCalledThenDebugSurfaceIsReused) { using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE; - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); program.enableKernelDebug(); std::unique_ptr kernel(MockKernel::create(*pDevice, &program)); MockCommandQueue cmdQ(context.get(), pClDevice, 0); diff --git a/opencl/test/unit_test/command_queue/dispatch_walker_tests.cpp b/opencl/test/unit_test/command_queue/dispatch_walker_tests.cpp index d131708e63..e7c68c6fdb 100644 --- a/opencl/test/unit_test/command_queue/dispatch_walker_tests.cpp +++ b/opencl/test/unit_test/command_queue/dispatch_walker_tests.cpp @@ -41,7 +41,7 @@ struct DispatchWalkerTest : public CommandQueueFixture, public ClDeviceFixture, context = std::make_unique(pClDevice); CommandQueueFixture::SetUp(context.get(), pClDevice, 0); - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); memset(&kernelHeader, 0, sizeof(kernelHeader)); kernelHeader.KernelHeapSize = sizeof(kernelIsa); diff --git a/opencl/test/unit_test/command_queue/enqueue_debug_kernel_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_debug_kernel_tests.cpp index bfece2293d..bf201efd92 100644 --- a/opencl/test/unit_test/command_queue/enqueue_debug_kernel_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_debug_kernel_tests.cpp @@ -153,7 +153,7 @@ class GMockCommandQueueHw : public CommandQueueHw { }; HWTEST_F(EnqueueDebugKernelSimpleTest, givenKernelFromProgramWithDebugEnabledWhenEnqueuedThenDebugSurfaceIsSetup) { - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); program.enableKernelDebug(); std::unique_ptr kernel(MockKernel::create(*pDevice, &program)); kernel->setContext(context); @@ -172,7 +172,7 @@ HWTEST_F(EnqueueDebugKernelSimpleTest, givenKernelFromProgramWithDebugEnabledWhe } HWTEST_F(EnqueueDebugKernelSimpleTest, givenKernelWithoutSystemThreadSurfaceWhenEnqueuedThenDebugSurfaceIsNotSetup) { - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); program.enableKernelDebug(); std::unique_ptr kernel(MockKernel::create(*pDevice, &program)); kernel->setContext(context); @@ -191,7 +191,7 @@ HWTEST_F(EnqueueDebugKernelSimpleTest, givenKernelWithoutSystemThreadSurfaceWhen } HWTEST_F(EnqueueDebugKernelSimpleTest, givenKernelFromProgramWithoutDebugEnabledWhenEnqueuedThenDebugSurfaceIsNotSetup) { - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); std::unique_ptr kernel(MockKernel::create(*pDevice, &program)); kernel->setContext(context); std::unique_ptr>> mockCmdQ(new NiceMock>(context, pClDevice, nullptr)); @@ -208,7 +208,7 @@ HWTEST_F(EnqueueDebugKernelSimpleTest, givenKernelFromProgramWithoutDebugEnabled using ActiveDebuggerTest = EnqueueDebugKernelTest; HWTEST_F(ActiveDebuggerTest, givenKernelFromProgramWithoutDebugEnabledAndActiveDebuggerWhenEnqueuedThenDebugSurfaceIsSetup) { - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); std::unique_ptr kernel(MockKernel::create(*pDevice, &program)); kernel->setContext(&context); std::unique_ptr> cmdQ(new CommandQueueHw(&context, pClDevice, nullptr, false)); diff --git a/opencl/test/unit_test/command_stream/aub_subcapture_tests.cpp b/opencl/test/unit_test/command_stream/aub_subcapture_tests.cpp index c2d6949227..93251e0460 100644 --- a/opencl/test/unit_test/command_stream/aub_subcapture_tests.cpp +++ b/opencl/test/unit_test/command_stream/aub_subcapture_tests.cpp @@ -21,7 +21,7 @@ struct AubSubCaptureTest : public ClDeviceFixture, public ::testing::Test { void SetUp() override { ClDeviceFixture::SetUp(); - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); kernelInfo.name = "kernel_name"; dbgRestore = new DebugManagerStateRestore(); } diff --git a/opencl/test/unit_test/command_stream/command_stream_receiver_flush_task_3_tests.cpp b/opencl/test/unit_test/command_stream/command_stream_receiver_flush_task_3_tests.cpp index 54b1ca8ab8..c995fbd541 100644 --- a/opencl/test/unit_test/command_stream/command_stream_receiver_flush_task_3_tests.cpp +++ b/opencl/test/unit_test/command_stream/command_stream_receiver_flush_task_3_tests.cpp @@ -1620,7 +1620,7 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, GivenBlockedKernelWhenItIsUnblocke uint32_t numGrfRequired = 666u; auto pCmdQ = std::make_unique(&mockContext, pClDevice, nullptr); - auto mockProgram = std::make_unique(*pDevice->getExecutionEnvironment(), &mockContext, false, pDevice); + auto mockProgram = std::make_unique(&mockContext, false, toClDeviceVector(*pClDevice)); std::unique_ptr pKernel(MockKernel::create(*pDevice, mockProgram.get(), numGrfRequired)); auto event = std::make_unique>(pCmdQ.get(), CL_COMMAND_MARKER, 0, 0); diff --git a/opencl/test/unit_test/device_queue/device_queue_tests.cpp b/opencl/test/unit_test/device_queue/device_queue_tests.cpp index 9cdf8c9358..b05710603b 100644 --- a/opencl/test/unit_test/device_queue/device_queue_tests.cpp +++ b/opencl/test/unit_test/device_queue/device_queue_tests.cpp @@ -288,7 +288,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, DeviceQueueTest, WhenDeviceQueueIsCreatedThenDshBuff HWCMDTEST_F(IGFX_GEN8_CORE, DeviceQueueTest, WhenDispatchingSchedulerThenNoAssertsOccur) { DeviceQueue devQueue; MockContext context; - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); MockCommandQueue cmdQ(nullptr, nullptr, 0); KernelInfo info; MockSchedulerKernel *kernel = new MockSchedulerKernel(&program, info, *device); diff --git a/opencl/test/unit_test/fixtures/cl_preemption_fixture.cpp b/opencl/test/unit_test/fixtures/cl_preemption_fixture.cpp index fcb74f0614..0419290684 100644 --- a/opencl/test/unit_test/fixtures/cl_preemption_fixture.cpp +++ b/opencl/test/unit_test/fixtures/cl_preemption_fixture.cpp @@ -42,7 +42,7 @@ void DevicePreemptionTests::SetUp() { executionEnvironment.reset(new SPatchExecutionEnvironment); memset(executionEnvironment.get(), 0, sizeof(SPatchExecutionEnvironment)); kernelInfo->patchInfo.executionEnvironment = executionEnvironment.get(); - program = std::make_unique(*device->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*device)); kernel.reset(new MockKernel(program.get(), *kernelInfo, *device)); dispatchInfo.reset(new DispatchInfo(kernel.get(), 1, Vec3(1, 1, 1), Vec3(1, 1, 1), Vec3(0, 0, 0))); diff --git a/opencl/test/unit_test/fixtures/kernel_arg_fixture.cpp b/opencl/test/unit_test/fixtures/kernel_arg_fixture.cpp index 488f990c1e..aaabec17d2 100644 --- a/opencl/test/unit_test/fixtures/kernel_arg_fixture.cpp +++ b/opencl/test/unit_test/fixtures/kernel_arg_fixture.cpp @@ -56,7 +56,7 @@ void KernelImageArgTest::SetUp() { pKernelInfo->kernelArgInfo[0].isImage = true; ClDeviceFixture::SetUp(); - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); pKernel.reset(new MockKernel(program.get(), *pKernelInfo, *pClDevice)); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/fixtures/kernel_data_fixture.h b/opencl/test/unit_test/fixtures/kernel_data_fixture.h index de9c1abf5a..67c35fca0e 100644 --- a/opencl/test/unit_test/fixtures/kernel_data_fixture.h +++ b/opencl/test/unit_test/fixtures/kernel_data_fixture.h @@ -53,7 +53,7 @@ class KernelDataTest : public testing::Test { void SetUp() override { kernelBinaryHeader.KernelNameSize = kernelNameSize; pContext = new MockContext; - program = std::make_unique(*pContext->getDevice(0)->getExecutionEnvironment(), pContext, false, nullptr); + program = std::make_unique(pContext, false, toClDeviceVector(*pContext->getDevice(0))); } void TearDown() override { diff --git a/opencl/test/unit_test/fixtures/scenario_test_fixture.h b/opencl/test/unit_test/fixtures/scenario_test_fixture.h index caa059e77e..b2497b9562 100644 --- a/opencl/test/unit_test/fixtures/scenario_test_fixture.h +++ b/opencl/test/unit_test/fixtures/scenario_test_fixture.h @@ -33,7 +33,7 @@ class ScenarioTest : public ::testing::Test, cl_device_id clDevice = pDevice; context = Context::create(nullptr, ClDeviceVector(&clDevice, 1), nullptr, nullptr, retVal); commandQueue = new MockCommandQueue(context, pDevice, 0); - program = new MockProgram(*pDevice->getExecutionEnvironment(), context, false, &pDevice->getDevice()); + program = new MockProgram(context, false, toClDeviceVector(*pDevice)); kernelInternals = new MockKernelWithInternals(*pDevice, context); kernel = kernelInternals->mockKernel; diff --git a/opencl/test/unit_test/gen12lp/gpgpu_walker_tests_gen12lp.cpp b/opencl/test/unit_test/gen12lp/gpgpu_walker_tests_gen12lp.cpp index 938118d0ef..776263fa30 100644 --- a/opencl/test/unit_test/gen12lp/gpgpu_walker_tests_gen12lp.cpp +++ b/opencl/test/unit_test/gen12lp/gpgpu_walker_tests_gen12lp.cpp @@ -51,7 +51,7 @@ struct HardwareInterfaceTests : public ClDeviceFixture, public LinearStreamFixtu pContext = new NEO::MockContext(pClDevice); pCommandQueue = new MockCommandQueue(pContext, pClDevice, nullptr); - pProgram = new MockProgram(*pClDevice->getExecutionEnvironment(), pContext, false, &pClDevice->getDevice()); + pProgram = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); pKernel = new MockKernelWithApplicableWa(static_cast(pProgram), pProgram->mockKernelInfo, *pClDevice); } diff --git a/opencl/test/unit_test/gtpin/gtpin_tests.cpp b/opencl/test/unit_test/gtpin/gtpin_tests.cpp index ff8eeb4af3..4ba7294ecf 100644 --- a/opencl/test/unit_test/gtpin/gtpin_tests.cpp +++ b/opencl/test/unit_test/gtpin/gtpin_tests.cpp @@ -2385,7 +2385,7 @@ TEST_F(GTPinTests, givenInitializedGTPinInterfaceWhenOnKernelSubitIsCalledThenCo pKernelInfo->heapInfo.SurfaceStateHeapSize = sizeof(surfaceStateHeap); pKernelInfo->usesSsh = true; - auto pProgramm = std::make_unique(*pDevice->getExecutionEnvironment(), context.get(), false, nullptr); + auto pProgramm = std::make_unique(context.get(), false, toClDeviceVector(*pDevice)); std::unique_ptr cmdQ(new MockCommandQueue(context.get(), pDevice, nullptr)); std::unique_ptr pKernel(new MockKernel(pProgramm.get(), *pKernelInfo, *pDevice)); diff --git a/opencl/test/unit_test/helpers/base_object_tests.cpp b/opencl/test/unit_test/helpers/base_object_tests.cpp index 908aab15ed..bae9b117da 100644 --- a/opencl/test/unit_test/helpers/base_object_tests.cpp +++ b/opencl/test/unit_test/helpers/base_object_tests.cpp @@ -23,6 +23,7 @@ #include "opencl/test/unit_test/mocks/mock_buffer.h" #include "opencl/test/unit_test/mocks/mock_command_queue.h" #include "opencl/test/unit_test/mocks/mock_platform.h" +#include "opencl/test/unit_test/mocks/mock_program.h" #include "gmock/gmock.h" @@ -85,11 +86,10 @@ class MockObject : public MockObjectBase { template <> class MockObject : public MockObjectBase { public: - MockObject() : MockObjectBase(*new ExecutionEnvironment(), nullptr, false, nullptr), - executionEnvironment(&this->peekExecutionEnvironment()) {} + MockObject() : MockObjectBase(nullptr, false, toClDeviceVector(*(new MockClDevice(new MockDevice())))), device(this->clDevices[0]) {} private: - std::unique_ptr executionEnvironment; + std::unique_ptr device; }; typedef ::testing::Types< diff --git a/opencl/test/unit_test/helpers/dispatch_info_builder_tests.cpp b/opencl/test/unit_test/helpers/dispatch_info_builder_tests.cpp index 0c8216e005..f3baca7ee9 100644 --- a/opencl/test/unit_test/helpers/dispatch_info_builder_tests.cpp +++ b/opencl/test/unit_test/helpers/dispatch_info_builder_tests.cpp @@ -65,7 +65,7 @@ class DispatchInfoBuilderFixture : public ContextFixture, public ClDeviceFixture pKernelInfo->kernelArgInfo[2].kernelArgPatchInfoVector[0].crossthreadOffset = 0x50; pKernelInfo->kernelArgInfo[2].kernelArgPatchInfoVector[0].size = (uint32_t)sizeof(void *); - pProgram = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + pProgram = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); pKernel = new MockKernel(pProgram, *pKernelInfo, *pClDevice); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/helpers/dispatch_info_tests.cpp b/opencl/test/unit_test/helpers/dispatch_info_tests.cpp index 04a61eb85c..bfe3eb0195 100644 --- a/opencl/test/unit_test/helpers/dispatch_info_tests.cpp +++ b/opencl/test/unit_test/helpers/dispatch_info_tests.cpp @@ -37,7 +37,7 @@ class DispatchInfoFixture : public ContextFixture, public ClDeviceFixture { pKernelInfo->patchInfo.mediavfestate = pMediaVFEstate; pPrintfSurface = new SPatchAllocateStatelessPrintfSurface(); pKernelInfo->patchInfo.pAllocateStatelessPrintfSurface = pPrintfSurface; - pProgram = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + pProgram = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); pKernel = new MockKernel(pProgram, *pKernelInfo, *pClDevice); pKernel->slmTotalSize = 128; diff --git a/opencl/test/unit_test/helpers/hardware_commands_helper_tests.cpp b/opencl/test/unit_test/helpers/hardware_commands_helper_tests.cpp index cc1aeefb8a..296ed404a2 100644 --- a/opencl/test/unit_test/helpers/hardware_commands_helper_tests.cpp +++ b/opencl/test/unit_test/helpers/hardware_commands_helper_tests.cpp @@ -177,7 +177,7 @@ HWTEST_F(HardwareCommandsTest, givenSendCrossThreadDataWhenWhenAddPatchInfoComme MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); auto kernelInfo = std::make_unique(); std::unique_ptr kernel(new MockKernel(&program, *kernelInfo, *pClDevice)); @@ -243,7 +243,7 @@ HWTEST_F(HardwareCommandsTest, givenSendCrossThreadDataWhenWhenAddPatchInfoComme MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); auto kernelInfo = std::make_unique(); std::unique_ptr kernel(new MockKernel(&program, *kernelInfo, *pClDevice)); @@ -711,7 +711,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, WhenGettingBindingTableStateTh // create program with valid context MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); // setup global memory char globalBuffer[16]; @@ -838,7 +838,7 @@ HWTEST_F(HardwareCommandsTest, GivenBuffersNotRequiringSshWhenSettingBindingTabl // create program with valid context MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); // create kernel MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); @@ -893,7 +893,7 @@ HWTEST_F(HardwareCommandsTest, GivenZeroSurfaceStatesWhenSettingBindingTableStat // create program with valid context MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); // create kernel MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); diff --git a/opencl/test/unit_test/kernel/clone_kernel_tests.cpp b/opencl/test/unit_test/kernel/clone_kernel_tests.cpp index 582f304783..3d20f49cbd 100644 --- a/opencl/test/unit_test/kernel/clone_kernel_tests.cpp +++ b/opencl/test/unit_test/kernel/clone_kernel_tests.cpp @@ -81,7 +81,7 @@ class CloneKernelFixture : public ContextFixture, public ClDeviceFixture { pKernelInfo->kernelArgInfo[0].offsetVmeSadAdjustMode = 0x14; pKernelInfo->kernelArgInfo[0].offsetVmeSearchPathType = 0x1c; - pProgram = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + pProgram = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); pSourceKernel = new MockKernel(pProgram, *pKernelInfo, *pClDevice); ASSERT_EQ(CL_SUCCESS, pSourceKernel->initialize()); diff --git a/opencl/test/unit_test/kernel/debug_kernel_tests.cpp b/opencl/test/unit_test/kernel/debug_kernel_tests.cpp index 3d77b71bec..0c6de1dcf3 100644 --- a/opencl/test/unit_test/kernel/debug_kernel_tests.cpp +++ b/opencl/test/unit_test/kernel/debug_kernel_tests.cpp @@ -18,7 +18,7 @@ using namespace NEO; TEST(DebugKernelTest, givenKernelCompiledForDebuggingWhenGetDebugSurfaceBtiIsCalledThenCorrectValueIsReturned) { auto device = std::make_unique(new MockDevice); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); program.enableKernelDebug(); std::unique_ptr kernel(MockKernel::create(device->getDevice(), &program)); @@ -27,7 +27,7 @@ TEST(DebugKernelTest, givenKernelCompiledForDebuggingWhenGetDebugSurfaceBtiIsCal TEST(DebugKernelTest, givenKernelCompiledForDebuggingWhenGetPerThreadSystemThreadSurfaceSizeIsCalledThenCorrectValueIsReturned) { auto device = std::make_unique(new MockDevice); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); program.enableKernelDebug(); std::unique_ptr kernel(MockKernel::create(device->getDevice(), &program)); @@ -36,7 +36,7 @@ TEST(DebugKernelTest, givenKernelCompiledForDebuggingWhenGetPerThreadSystemThrea TEST(DebugKernelTest, givenKernelCompiledForDebuggingWhenQueryingIsKernelDebugEnabledThenTrueIsReturned) { auto device = std::make_unique(new MockDevice); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); program.enableKernelDebug(); std::unique_ptr kernel(MockKernel::create(device->getDevice(), &program)); kernel->initialize(); @@ -46,7 +46,7 @@ TEST(DebugKernelTest, givenKernelCompiledForDebuggingWhenQueryingIsKernelDebugEn TEST(DebugKernelTest, givenKernelWithoutDebugFlagWhenQueryingIsKernelDebugEnabledThenFalseIsReturned) { auto device = std::make_unique(new MockDevice); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); program.enableKernelDebug(); std::unique_ptr kernel(MockKernel::create(device->getDevice(), &program)); kernel->initialize(); @@ -56,7 +56,7 @@ TEST(DebugKernelTest, givenKernelWithoutDebugFlagWhenQueryingIsKernelDebugEnable TEST(DebugKernelTest, givenKernelWithoutDebugFlagWhenGetDebugSurfaceBtiIsCalledThenInvalidIndexValueIsReturned) { auto device = std::make_unique(new MockDevice); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); program.enableKernelDebug(); std::unique_ptr kernel(MockKernel::create(device->getDevice(), &program)); @@ -65,7 +65,7 @@ TEST(DebugKernelTest, givenKernelWithoutDebugFlagWhenGetDebugSurfaceBtiIsCalledT TEST(DebugKernelTest, givenKernelWithoutDebugFlagWhenGetPerThreadSystemThreadSurfaceSizeIsCalledThenZeroIsReturned) { auto device = std::make_unique(new MockDevice); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); program.enableKernelDebug(); std::unique_ptr kernel(MockKernel::create(device->getDevice(), &program)); diff --git a/opencl/test/unit_test/kernel/kernel_accelerator_arg_tests.cpp b/opencl/test/unit_test/kernel/kernel_accelerator_arg_tests.cpp index e2f66a9a6e..a0ae603a30 100644 --- a/opencl/test/unit_test/kernel/kernel_accelerator_arg_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_accelerator_arg_tests.cpp @@ -60,7 +60,7 @@ class KernelArgAcceleratorFixture : public ContextFixture, public ClDeviceFixtur pKernelInfo->kernelArgInfo[0].offsetVmeSadAdjustMode = 0x14; pKernelInfo->kernelArgInfo[0].offsetVmeSearchPathType = 0x1c; - pProgram = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, nullptr); + pProgram = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); pKernel = new MockKernel(pProgram, *pKernelInfo, *pClDevice); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/kernel/kernel_arg_buffer_fixture.cpp b/opencl/test/unit_test/kernel/kernel_arg_buffer_fixture.cpp index 37f02f50d4..827195637a 100644 --- a/opencl/test/unit_test/kernel/kernel_arg_buffer_fixture.cpp +++ b/opencl/test/unit_test/kernel/kernel_arg_buffer_fixture.cpp @@ -46,7 +46,7 @@ void KernelArgBufferFixture::SetUp() { pKernelInfo->kernelArgInfo[0].kernelArgPatchInfoVector[0].crossthreadOffset = 0x30; pKernelInfo->kernelArgInfo[0].kernelArgPatchInfoVector[0].size = (uint32_t)sizeof(void *); - pProgram = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, nullptr); + pProgram = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); pKernel = new MockKernel(pProgram, *pKernelInfo, *pClDevice); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/kernel/kernel_arg_dev_queue_tests.cpp b/opencl/test/unit_test/kernel/kernel_arg_dev_queue_tests.cpp index a0f536742a..a9c6093c3d 100644 --- a/opencl/test/unit_test/kernel/kernel_arg_dev_queue_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_arg_dev_queue_tests.cpp @@ -32,7 +32,7 @@ struct KernelArgDevQueueTest : public DeviceHostQueueFixture { pKernelInfo->kernelArgInfo[0].kernelArgPatchInfoVector.push_back(kernelArgPatchInfo); - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pDevice)); pKernel = new MockKernel(program.get(), *pKernelInfo, *pDevice); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/kernel/kernel_arg_pipe_tests.cpp b/opencl/test/unit_test/kernel/kernel_arg_pipe_tests.cpp index 3b560b9849..45a878ad61 100644 --- a/opencl/test/unit_test/kernel/kernel_arg_pipe_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_arg_pipe_tests.cpp @@ -54,7 +54,7 @@ class KernelArgPipeFixture : public ContextFixture, public ClDeviceFixture { pKernelInfo->kernelArgInfo[0].kernelArgPatchInfoVector[0].crossthreadOffset = 0x30; pKernelInfo->kernelArgInfo[0].kernelArgPatchInfoVector[0].size = (uint32_t)sizeof(void *); - pProgram = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + pProgram = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); pKernel = new MockKernel(pProgram, *pKernelInfo, *pClDevice); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/kernel/kernel_arg_svm_tests.cpp b/opencl/test/unit_test/kernel/kernel_arg_svm_tests.cpp index be844db1b5..0618e810be 100644 --- a/opencl/test/unit_test/kernel/kernel_arg_svm_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_arg_svm_tests.cpp @@ -53,7 +53,7 @@ class KernelArgSvmFixture_ : public ContextFixture, public ClDeviceFixture { pKernelInfo->kernelArgInfo[0].kernelArgPatchInfoVector[0].crossthreadOffset = 0x30; pKernelInfo->kernelArgInfo[0].kernelArgPatchInfoVector[0].size = (uint32_t)sizeof(void *); - pProgram = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + pProgram = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); pKernel = new MockKernel(pProgram, *pKernelInfo, *pClDevice); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/kernel/kernel_immediate_arg_tests.cpp b/opencl/test/unit_test/kernel/kernel_immediate_arg_tests.cpp index 56fcb00d45..fe16f933c0 100644 --- a/opencl/test/unit_test/kernel/kernel_immediate_arg_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_immediate_arg_tests.cpp @@ -27,7 +27,7 @@ class KernelArgImmediateTest : public Test { void SetUp() override { ClDeviceFixture::SetUp(); memset(pCrossThreadData, 0xfe, sizeof(pCrossThreadData)); - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); // define kernel info pKernelInfo = std::make_unique(); @@ -56,7 +56,7 @@ class KernelArgImmediateTest : public Test { pKernelInfo->kernelArgInfo[1].kernelArgPatchInfoVector[0].size = sizeof(T); pKernelInfo->kernelArgInfo[0].kernelArgPatchInfoVector[0].size = sizeof(T); - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); pKernel = new MockKernel(program.get(), *pKernelInfo, *pClDevice); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); pKernel->setCrossThreadData(pCrossThreadData, sizeof(pCrossThreadData)); diff --git a/opencl/test/unit_test/kernel/kernel_reflection_surface_tests.cpp b/opencl/test/unit_test/kernel/kernel_reflection_surface_tests.cpp index 707f9ee0c0..daced862b7 100644 --- a/opencl/test/unit_test/kernel/kernel_reflection_surface_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_reflection_surface_tests.cpp @@ -604,7 +604,7 @@ TEST_P(KernelReflectionSurfaceTest, WhenGettingCurbeParamsThenTokenMaskIsCorrect TEST(KernelReflectionSurfaceTestSingle, GivenNonParentKernelWhenCreatingKernelReflectionSurfaceThenKernelReflectionSurfaceIsNotCreated) { MockClDevice device{new MockDevice}; - MockProgram program(*device.getExecutionEnvironment()); + MockProgram program(toClDeviceVector(device)); KernelInfo info; MockKernel kernel(&program, info, device); @@ -622,7 +622,7 @@ TEST(KernelReflectionSurfaceTestSingle, GivenNonSchedulerKernelWithForcedSchedul DebugManager.flags.ForceDispatchScheduler.set(true); MockClDevice device{new MockDevice}; - MockProgram program(*device.getExecutionEnvironment()); + MockProgram program(toClDeviceVector(device)); KernelInfo info; MockKernel kernel(&program, info, device); @@ -639,7 +639,7 @@ TEST(KernelReflectionSurfaceTestSingle, GivenNoKernelArgsWhenObtainingKernelRefl REQUIRE_DEVICE_ENQUEUE_OR_SKIP(defaultHwInfo); MockContext context; auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); KernelInfo *blockInfo = new KernelInfo; KernelInfo &info = *blockInfo; cl_queue_properties properties[1] = {0}; @@ -688,7 +688,7 @@ TEST(KernelReflectionSurfaceTestSingle, GivenDeviceQueueKernelArgWhenObtainingKe REQUIRE_DEVICE_ENQUEUE_OR_SKIP(defaultHwInfo); MockContext context; auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); KernelInfo *blockInfo = new KernelInfo; KernelInfo &info = *blockInfo; @@ -2109,7 +2109,7 @@ using KernelReflectionMultiDeviceTest = MultiRootDeviceFixture; TEST_F(KernelReflectionMultiDeviceTest, GivenNoKernelArgsWhenObtainingKernelReflectionSurfaceThenParamsAreCorrect) { REQUIRE_DEVICE_ENQUEUE_OR_SKIP(device.get()); - MockProgram program(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice()); + MockProgram program(context.get(), false, toClDeviceVector(*device)); KernelInfo *blockInfo = new KernelInfo; KernelInfo &info = *blockInfo; cl_queue_properties properties[1] = {0}; @@ -2158,7 +2158,7 @@ TEST_F(KernelReflectionMultiDeviceTest, GivenNoKernelArgsWhenObtainingKernelRefl TEST_F(KernelReflectionMultiDeviceTest, GivenDeviceQueueKernelArgWhenObtainingKernelReflectionSurfaceThenParamsAreCorrect) { REQUIRE_DEVICE_ENQUEUE_OR_SKIP(device.get()); - MockProgram program(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice()); + MockProgram program(context.get(), false, toClDeviceVector(*device)); KernelInfo *blockInfo = new KernelInfo; KernelInfo &info = *blockInfo; diff --git a/opencl/test/unit_test/kernel/kernel_slm_arg_tests.cpp b/opencl/test/unit_test/kernel/kernel_slm_arg_tests.cpp index 77fb033fe8..0d767eae72 100644 --- a/opencl/test/unit_test/kernel/kernel_slm_arg_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_slm_arg_tests.cpp @@ -39,7 +39,7 @@ class KernelSlmArgTest : public Test { pKernelInfo->kernelArgInfo[2].slmAlignment = 0x400; pKernelInfo->workloadInfo.slmStaticSize = 3 * KB; - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); pKernel = new MockKernel(program.get(), *pKernelInfo, *pClDevice); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/kernel/kernel_slm_tests.cpp b/opencl/test/unit_test/kernel/kernel_slm_tests.cpp index e3da4e5c64..acb37dfaef 100644 --- a/opencl/test/unit_test/kernel/kernel_slm_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_slm_tests.cpp @@ -20,7 +20,7 @@ struct KernelSLMAndBarrierTest : public ClDeviceFixture, public ::testing::TestWithParam { void SetUp() override { ClDeviceFixture::SetUp(); - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); memset(&dataParameterStream, 0, sizeof(dataParameterStream)); dataParameterStream.DataParameterStreamSize = sizeof(crossThreadData); diff --git a/opencl/test/unit_test/kernel/kernel_tests.cpp b/opencl/test/unit_test/kernel/kernel_tests.cpp index 5a62449300..fff4ae4f6a 100644 --- a/opencl/test/unit_test/kernel/kernel_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_tests.cpp @@ -579,7 +579,7 @@ TEST_F(KernelPrivateSurfaceTest, WhenChangingResidencyThenCsrResidencySizeIsUpda // create kernel MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); @@ -617,7 +617,7 @@ TEST_F(KernelPrivateSurfaceTest, givenKernelWithPrivateSurfaceThatIsInUseByGpuWh pKernelInfo->patchInfo.executionEnvironment = &tokenEE; MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); std::unique_ptr pKernel(new MockKernel(&program, *pKernelInfo, *pClDevice)); pKernel->initialize(); @@ -661,7 +661,7 @@ TEST_F(KernelPrivateSurfaceTest, WhenPrivateSurfaceAllocationFailsThenOutOfResou // create kernel MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); MemoryManagementFixture::InjectedFunction method = [&](size_t failureIndex) { MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); @@ -706,7 +706,7 @@ TEST_F(KernelPrivateSurfaceTest, given32BitDeviceWhenKernelIsCreatedThenPrivateS // create kernel MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); @@ -738,7 +738,7 @@ HWTEST_F(KernelPrivateSurfaceTest, givenStatefulKernelWhenKernelIsCreatedThenPri pKernelInfo->patchInfo.pAllocateStatelessPrivateSurface = &AllocateStatelessPrivateMemorySurface; MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); // create kernel MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); @@ -785,7 +785,7 @@ TEST_F(KernelPrivateSurfaceTest, givenStatelessKernelWhenKernelIsCreatedThenPriv MockGraphicsAllocation gfxAlloc(buffer, sizeof(buffer)); MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); program.setConstantSurface(&gfxAlloc); // create kernel @@ -830,7 +830,7 @@ TEST_F(KernelPrivateSurfaceTest, GivenKernelWhenPrivateSurfaceTooBigAndGpuPointe pKernelInfo->patchInfo.pAllocateStatelessPrivateSurface = pAllocateStatelessPrivateSurface.get(); pKernelInfo->patchInfo.executionEnvironment = executionEnvironment.get(); MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); std::unique_ptr pKernel(new MockKernel(&program, *pKernelInfo, *pClDevice)); pKernelInfo->gpuPointerSize = 4; pDevice->getMemoryManager()->setForce32BitAllocations(false); @@ -849,7 +849,7 @@ TEST_F(KernelPrivateSurfaceTest, GivenKernelWhenPrivateSurfaceTooBigAndGpuPointe pKernelInfo->patchInfo.pAllocateStatelessPrivateSurface = pAllocateStatelessPrivateSurface.get(); pKernelInfo->patchInfo.executionEnvironment = executionEnvironment.get(); MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); std::unique_ptr pKernel(new MockKernel(&program, *pKernelInfo, *pClDevice)); pKernelInfo->gpuPointerSize = 4; pDevice->getMemoryManager()->setForce32BitAllocations(true); @@ -868,7 +868,7 @@ TEST_F(KernelPrivateSurfaceTest, GivenKernelWhenPrivateSurfaceTooBigAndGpuPointe pKernelInfo->patchInfo.pAllocateStatelessPrivateSurface = pAllocateStatelessPrivateSurface.get(); pKernelInfo->patchInfo.executionEnvironment = executionEnvironment.get(); MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); std::unique_ptr pKernel(new MockKernel(&program, *pKernelInfo, *pClDevice)); pKernelInfo->gpuPointerSize = 8; pDevice->getMemoryManager()->setForce32BitAllocations(true); @@ -906,7 +906,7 @@ TEST_F(KernelGlobalSurfaceTest, givenBuiltInKernelWhenKernelIsCreatedThenGlobalS // create kernel MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); program.setGlobalSurface(&gfxAlloc); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); @@ -948,7 +948,7 @@ TEST_F(KernelGlobalSurfaceTest, givenNDRangeKernelWhenKernelIsCreatedThenGlobalS uint64_t bufferAddress = gfxAlloc.getGpuAddress(); // create kernel - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); program.setGlobalSurface(&gfxAlloc); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); @@ -985,7 +985,7 @@ HWTEST_F(KernelGlobalSurfaceTest, givenStatefulKernelWhenKernelIsCreatedThenGlob auto bufferAddress = gfxAlloc.getGpuAddress(); MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); program.setGlobalSurface(&gfxAlloc); // create kernel @@ -1031,7 +1031,7 @@ TEST_F(KernelGlobalSurfaceTest, givenStatelessKernelWhenKernelIsCreatedThenGloba char buffer[16]; MockGraphicsAllocation gfxAlloc(buffer, sizeof(buffer)); - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); program.setGlobalSurface(&gfxAlloc); // create kernel @@ -1078,7 +1078,7 @@ TEST_F(KernelConstantSurfaceTest, givenBuiltInKernelWhenKernelIsCreatedThenConst uint64_t bufferAddress = (uint64_t)gfxAlloc.getUnderlyingBuffer(); // create kernel - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); program.setConstantSurface(&gfxAlloc); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); @@ -1120,7 +1120,7 @@ TEST_F(KernelConstantSurfaceTest, givenNDRangeKernelWhenKernelIsCreatedThenConst uint64_t bufferAddress = gfxAlloc.getGpuAddress(); // create kernel - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); program.setConstantSurface(&gfxAlloc); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); @@ -1157,7 +1157,7 @@ HWTEST_F(KernelConstantSurfaceTest, givenStatefulKernelWhenKernelIsCreatedThenCo auto bufferAddress = gfxAlloc.getGpuAddress(); MockContext context; - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); program.setConstantSurface(&gfxAlloc); // create kernel @@ -1203,7 +1203,7 @@ TEST_F(KernelConstantSurfaceTest, givenStatelessKernelWhenKernelIsCreatedThenCon char buffer[16]; MockGraphicsAllocation gfxAlloc(buffer, sizeof(buffer)); - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); program.setConstantSurface(&gfxAlloc); // create kernel @@ -1242,7 +1242,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelEventPoolSurfaceTest, givenStatefulKernelWhenK pKernelInfo->patchInfo.pAllocateStatelessEventPoolSurface = &AllocateStatelessEventPoolSurface; // create kernel - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); // setup surface state heap @@ -1291,7 +1291,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelEventPoolSurfaceTest, givenStatefulKernelWhenE pKernelInfo->patchInfo.pAllocateStatelessEventPoolSurface = &AllocateStatelessEventPoolSurface; // create kernel - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); // setup surface state heap @@ -1334,7 +1334,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelEventPoolSurfaceTest, givenKernelWithNullEvent pKernelInfo->patchInfo.pAllocateStatelessEventPoolSurface = nullptr; // create kernel - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); // define stateful path @@ -1372,7 +1372,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelEventPoolSurfaceTest, givenStatelessKernelWhen pKernelInfo->patchInfo.pAllocateStatelessEventPoolSurface = &AllocateStatelessEventPoolSurface; // create kernel - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); // define stateful path @@ -1408,7 +1408,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelEventPoolSurfaceTest, givenStatelessKernelWhen pKernelInfo->patchInfo.pAllocateStatelessEventPoolSurface = &AllocateStatelessEventPoolSurface; // create kernel - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); // define stateful path @@ -1446,7 +1446,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelDefaultDeviceQueueSurfaceTest, givenStatefulKe pKernelInfo->patchInfo.pAllocateStatelessDefaultDeviceQueueSurface = &AllocateStatelessDefaultDeviceQueueSurface; // create kernel - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); // setup surface state heap @@ -1495,7 +1495,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelDefaultDeviceQueueSurfaceTest, givenStatefulKe pKernelInfo->patchInfo.pAllocateStatelessDefaultDeviceQueueSurface = &AllocateStatelessDefaultDeviceQueueSurface; // create kernel - MockProgram program(*pDevice->getExecutionEnvironment(), &context, false, pDevice); + MockProgram program(&context, false, toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); // setup surface state heap @@ -1546,7 +1546,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelDefaultDeviceQueueSurfaceTest, givenStatelessK pKernelInfo->patchInfo.pAllocateStatelessDefaultDeviceQueueSurface = &AllocateStatelessDefaultDeviceQueueSurface; // create kernel - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); // define stateful path @@ -1574,7 +1574,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelDefaultDeviceQueueSurfaceTest, givenKernelWith pKernelInfo->patchInfo.pAllocateStatelessDefaultDeviceQueueSurface = nullptr; // create kernel - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); // define stateful path @@ -1612,7 +1612,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelDefaultDeviceQueueSurfaceTest, givenStatelessK pKernelInfo->patchInfo.pAllocateStatelessDefaultDeviceQueueSurface = &AllocateStatelessDefaultDeviceQueueSurface; // create kernel - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); MockKernel *pKernel = new MockKernel(&program, *pKernelInfo, *pClDevice); // define stateful path @@ -1656,7 +1656,7 @@ HWTEST_F(KernelResidencyTest, givenKernelWhenMakeResidentIsCalledThenKernelIsaIs pKernelInfo->kernelArgInfo[1].kernelArgPatchInfoVector[0].crossthreadOffset = 0x20; pKernelInfo->kernelArgInfo[0].kernelArgPatchInfoVector[0].crossthreadOffset = 0x30; - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); MockContext ctx; program.setContext(&ctx); std::unique_ptr pKernel(new MockKernel(&program, *pKernelInfo, *pClDevice)); @@ -1679,7 +1679,7 @@ HWTEST_F(KernelResidencyTest, givenKernelWhenMakeResidentIsCalledThenExportedFun auto memoryManager = commandStreamReceiver.getMemoryManager(); pKernelInfo->kernelAllocation = memoryManager->allocateGraphicsMemoryWithProperties(MockAllocationProperties{pDevice->getRootDeviceIndex(), MemoryConstants::pageSize}); - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); auto exportedFunctionsSurface = std::make_unique(); program.buildInfos[pDevice->getRootDeviceIndex()].exportedFunctionsSurface = exportedFunctionsSurface.get(); MockContext ctx; @@ -1717,7 +1717,7 @@ HWTEST_F(KernelResidencyTest, givenKernelWhenMakeResidentIsCalledThenGlobalBuffe auto memoryManager = commandStreamReceiver.getMemoryManager(); pKernelInfo->kernelAllocation = memoryManager->allocateGraphicsMemoryWithProperties(MockAllocationProperties{pDevice->getRootDeviceIndex(), MemoryConstants::pageSize}); - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); MockContext ctx; program.setContext(&ctx); program.buildInfos[pDevice->getRootDeviceIndex()].globalSurface = new MockGraphicsAllocation(); @@ -2059,7 +2059,7 @@ TEST(KernelImageDetectionTests, givenKernelWithImagesOnlyWhenItIsAskedIfItHasIma auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = clUniquePtr(new MockKernel(program.get(), *pKernelInfo, *device)); EXPECT_FALSE(kernel->usesOnlyImages()); kernel->initialize(); @@ -2075,7 +2075,7 @@ TEST(KernelImageDetectionTests, givenKernelWithImagesAndBuffersWhenItIsAskedIfIt auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = clUniquePtr(new MockKernel(program.get(), *pKernelInfo, *device)); EXPECT_FALSE(kernel->usesOnlyImages()); kernel->initialize(); @@ -2089,7 +2089,7 @@ TEST(KernelImageDetectionTests, givenKernelWithNoImagesWhenItIsAskedIfItHasImage auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = clUniquePtr(new MockKernel(program.get(), *pKernelInfo, *device)); EXPECT_FALSE(kernel->usesOnlyImages()); kernel->initialize(); @@ -2142,7 +2142,7 @@ HWTEST_F(KernelResidencyTest, WhenMakingArgsResidentThenImageFromImageCheckIsCor pKernelInfo->kernelArgInfo.push_back(std::move(kernelArgInfo)); - auto program = std::make_unique(*pDevice->getExecutionEnvironment()); + auto program = std::make_unique(toClDeviceVector(*pClDevice)); program->setContext(&context); std::unique_ptr pKernel(new MockKernel(program.get(), *pKernelInfo, *pClDevice)); @@ -2161,7 +2161,7 @@ struct KernelExecutionEnvironmentTest : public Test { void SetUp() override { ClDeviceFixture::SetUp(); - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); pKernelInfo = std::make_unique(); executionEnvironment.CompiledSIMD32 = 1; pKernelInfo->patchInfo.executionEnvironment = &executionEnvironment; @@ -2298,7 +2298,7 @@ struct KernelCrossThreadTests : Test { void SetUp() override { ClDeviceFixture::SetUp(); - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); patchDataParameterStream.DataParameterStreamSize = 64 * sizeof(uint8_t); pKernelInfo = std::make_unique(); @@ -2689,7 +2689,7 @@ TEST(KernelTest, givenKernelWithKernelInfoWith32bitPointerSizeThenReport32bit) { MockContext context; auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment(), &context, false, &device->getDevice()); + MockProgram program(&context, false, toClDeviceVector(*device)); std::unique_ptr kernel(new MockKernel(&program, info, *device.get())); EXPECT_TRUE(kernel->is32Bit()); @@ -2701,7 +2701,7 @@ TEST(KernelTest, givenKernelWithKernelInfoWith64bitPointerSizeThenReport64bit) { MockContext context; auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment(), &context, false, &device->getDevice()); + MockProgram program(&context, false, toClDeviceVector(*device)); std::unique_ptr kernel(new MockKernel(&program, info, *device.get())); EXPECT_FALSE(kernel->is32Bit()); @@ -3244,7 +3244,7 @@ TEST_F(KernelMultiRootDeviceTest, WhenGettingRootDeviceIndexThenCorrectRootDevic tokenSPS.PerThreadPrivateMemorySize = 112; kernelInfo->patchInfo.pAllocateStatelessPrivateSurface = &tokenSPS; - MockProgram program(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice()); + MockProgram program(context.get(), false, toClDeviceVector(*device)); std::unique_ptr kernel(new MockKernel(&program, *kernelInfo, *device.get())); kernel->initialize(); diff --git a/opencl/test/unit_test/kernel/kernel_transformable_tests.cpp b/opencl/test/unit_test/kernel/kernel_transformable_tests.cpp index 4fc2b5d871..2c878028b3 100644 --- a/opencl/test/unit_test/kernel/kernel_transformable_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_transformable_tests.cpp @@ -44,7 +44,7 @@ class KernelTransformableTest : public ::testing::Test { pKernelInfo->kernelArgInfo[3].isImage = true; pKernelInfo->argumentsToPatchNum = 4; - program = std::make_unique(*context.getDevice(0)->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*context.getDevice(0))); pKernel.reset(new MockKernel(program.get(), *pKernelInfo, *context.getDevice(0))); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/kernel/parent_kernel_tests.cpp b/opencl/test/unit_test/kernel/parent_kernel_tests.cpp index d245de0fe4..e9858aaf42 100644 --- a/opencl/test/unit_test/kernel/parent_kernel_tests.cpp +++ b/opencl/test/unit_test/kernel/parent_kernel_tests.cpp @@ -38,7 +38,7 @@ class MockKernelWithArgumentAccess : public Kernel { TEST(ParentKernelTest, WhenArgsAddedThenObjectCountsAreIncremented) { KernelInfo info; MockClDevice *device = new MockClDevice{new MockDevice}; - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); SPatchExecutionEnvironment environment = {}; environment.HasDeviceEnqueue = 1; diff --git a/opencl/test/unit_test/mem_obj/buffer_set_arg_tests.cpp b/opencl/test/unit_test/mem_obj/buffer_set_arg_tests.cpp index 46a2858ca0..f296b941f2 100644 --- a/opencl/test/unit_test/mem_obj/buffer_set_arg_tests.cpp +++ b/opencl/test/unit_test/mem_obj/buffer_set_arg_tests.cpp @@ -68,7 +68,7 @@ class BufferSetArgTest : public ContextFixture, pKernelInfo->heapInfo.SurfaceStateHeapSize = sizeof(surfaceStateHeap); pKernelInfo->usesSsh = true; - pProgram = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + pProgram = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); pKernel = new MockKernel(pProgram, *pKernelInfo, *pClDevice); ASSERT_NE(nullptr, pKernel); diff --git a/opencl/test/unit_test/mem_obj/image_set_arg_tests.cpp b/opencl/test/unit_test/mem_obj/image_set_arg_tests.cpp index 361b4599f8..6a1d12127e 100644 --- a/opencl/test/unit_test/mem_obj/image_set_arg_tests.cpp +++ b/opencl/test/unit_test/mem_obj/image_set_arg_tests.cpp @@ -78,7 +78,7 @@ class ImageSetArgTest : public ClDeviceFixture, pKernelInfo->kernelArgInfo[1].isImage = true; pKernelInfo->kernelArgInfo[0].isImage = true; - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); pKernel = new MockKernel(program.get(), *pKernelInfo, *pClDevice); ASSERT_NE(nullptr, pKernel); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); @@ -935,7 +935,7 @@ class ImageMediaBlockSetArgTest : public ImageSetArgTest { pKernelInfo->kernelArgInfo[1].isMediaBlockImage = true; pKernelInfo->kernelArgInfo[0].isMediaBlockImage = true; - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); pKernel = new MockKernel(program.get(), *pKernelInfo, *pClDevice); ASSERT_NE(nullptr, pKernel); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/mocks/mock_kernel.h b/opencl/test/unit_test/mocks/mock_kernel.h index c765a17253..575a983258 100644 --- a/opencl/test/unit_test/mocks/mock_kernel.h +++ b/opencl/test/unit_test/mocks/mock_kernel.h @@ -254,7 +254,7 @@ class MockKernel : public Kernel { //class below have enough internals to service Enqueue operation. class MockKernelWithInternals { public: - MockKernelWithInternals(const ClDevice &deviceArg, Context *context = nullptr, bool addDefaultArg = false, SPatchExecutionEnvironment newExecutionEnvironment = {}) { + MockKernelWithInternals(ClDevice &deviceArg, Context *context = nullptr, bool addDefaultArg = false, SPatchExecutionEnvironment newExecutionEnvironment = {}) { memset(&kernelHeader, 0, sizeof(SKernelBinaryHeaderCommon)); memset(&threadPayload, 0, sizeof(SPatchThreadPayload)); memcpy(&executionEnvironment, &newExecutionEnvironment, sizeof(SPatchExecutionEnvironment)); @@ -285,8 +285,10 @@ class MockKernelWithInternals { context->incRefInternal(); mockContext = context; } + ClDeviceVector deviceVector; + deviceVector.push_back(&deviceArg); - mockProgram = new MockProgram(*deviceArg.getExecutionEnvironment(), context, false, &deviceArg.getDevice()); + mockProgram = new MockProgram(context, false, deviceVector); mockKernel = new MockKernel(mockProgram, kernelInfo, deviceArg); mockKernel->setCrossThreadData(&crossThreadData, sizeof(crossThreadData)); mockKernel->setSshLocal(&sshLocal, sizeof(sshLocal)); @@ -321,7 +323,7 @@ class MockKernelWithInternals { } } - MockKernelWithInternals(const ClDevice &deviceArg, SPatchExecutionEnvironment newExecutionEnvironment) : MockKernelWithInternals(deviceArg, nullptr, false, newExecutionEnvironment) { + MockKernelWithInternals(ClDevice &deviceArg, SPatchExecutionEnvironment newExecutionEnvironment) : MockKernelWithInternals(deviceArg, nullptr, false, newExecutionEnvironment) { mockKernel->initialize(); } @@ -362,7 +364,7 @@ class MockParentKernel : public Kernel { using Kernel::sshLocalSize; static MockParentKernel *create(Context &context, bool addChildSimdSize = false, bool addChildGlobalMemory = false, bool addChildConstantMemory = false, bool addPrintfForParent = true, bool addPrintfForBlock = true) { - Device &device = context.getDevice(0)->getDevice(); + auto clDevice = context.getDevice(0); auto info = new KernelInfo(); const size_t crossThreadSize = 160; @@ -415,9 +417,9 @@ class MockParentKernel : public Kernel { crossThreadOffset += 8; } - MockProgram *mockProgram = new MockProgram(*device.getExecutionEnvironment()); - mockProgram->setContext(&context); - mockProgram->setDevice(&device); + ClDeviceVector deviceVector; + deviceVector.push_back(clDevice); + MockProgram *mockProgram = new MockProgram(&context, false, deviceVector); if (addChildSimdSize) { info->childrenKernelsIdOffset.push_back({0, crossThreadOffset}); @@ -426,9 +428,6 @@ class MockParentKernel : public Kernel { UNRECOVERABLE_IF(crossThreadSize < crossThreadOffset + 8); info->crossThreadData = new char[crossThreadSize]; - auto clDevice = device.getSpecializedDevice(); - DEBUG_BREAK_IF(clDevice == nullptr); - auto parent = new MockParentKernel(mockProgram, *info, *clDevice); parent->crossThreadData = new char[crossThreadSize]; memset(parent->crossThreadData, 0, crossThreadSize); diff --git a/opencl/test/unit_test/mocks/mock_program.cpp b/opencl/test/unit_test/mocks/mock_program.cpp index 77e858cef5..26a4110d67 100644 --- a/opencl/test/unit_test/mocks/mock_program.cpp +++ b/opencl/test/unit_test/mocks/mock_program.cpp @@ -23,6 +23,11 @@ #include "opencl/test/unit_test/mocks/mock_graphics_allocation.h" namespace NEO { +ClDeviceVector toClDeviceVector(ClDevice &clDevice) { + ClDeviceVector deviceVector; + deviceVector.push_back(&clDevice); + return deviceVector; +} ProgramInfo *GlobalMockSipProgram::globalSipProgramInfo; Device *MockProgram::getDevicePtr() { return this->pDevice; } diff --git a/opencl/test/unit_test/mocks/mock_program.h b/opencl/test/unit_test/mocks/mock_program.h index 7504ee8a47..11ef4bc91b 100644 --- a/opencl/test/unit_test/mocks/mock_program.h +++ b/opencl/test/unit_test/mocks/mock_program.h @@ -21,7 +21,7 @@ namespace NEO { class GraphicsAllocation; - +ClDeviceVector toClDeviceVector(ClDevice &clDevice); //////////////////////////////////////////////////////////////////////////////// // Program - Core implementation //////////////////////////////////////////////////////////////////////////////// @@ -57,7 +57,7 @@ class MockProgram : public Program { using Program::specConstantsSizes; using Program::specConstantsValues; - MockProgram(ExecutionEnvironment &executionEnvironment) : Program(executionEnvironment, nullptr, false, nullptr) { + MockProgram(const ClDeviceVector &deviceVector) : Program(nullptr, false, deviceVector) { } ~MockProgram() override { diff --git a/opencl/test/unit_test/profiling/profiling_tests.cpp b/opencl/test/unit_test/profiling/profiling_tests.cpp index dbd6f694c9..3d4da2ca55 100644 --- a/opencl/test/unit_test/profiling/profiling_tests.cpp +++ b/opencl/test/unit_test/profiling/profiling_tests.cpp @@ -33,7 +33,7 @@ struct ProfilingTests : public CommandEnqueueFixture, void SetUp() override { CommandEnqueueFixture::SetUp(CL_QUEUE_PROFILING_ENABLE); - program = ReleaseableObjectPtr(new MockProgram(*pDevice->getExecutionEnvironment())); + program = ReleaseableObjectPtr(new MockProgram(toClDeviceVector(*pClDevice))); program->setContext(&ctx); memset(&dataParameterStream, 0, sizeof(dataParameterStream)); diff --git a/opencl/test/unit_test/program/kernel_data.cpp b/opencl/test/unit_test/program/kernel_data.cpp index ab3c1496e2..b0326bcd00 100644 --- a/opencl/test/unit_test/program/kernel_data.cpp +++ b/opencl/test/unit_test/program/kernel_data.cpp @@ -795,7 +795,7 @@ TEST_F(KernelDataTest, givenFlatImageDataParamTokenWhenDecodingThenSetAllOffsets if (pKernelData) { alignedFree(pKernelData); } - program = std::make_unique(*pContext->getDevice(0)->getExecutionEnvironment(), pContext, false, nullptr); + program = std::make_unique(pContext, false, toClDeviceVector(*pContext->getDevice(0))); } SPatchDataParameterBuffer dataParameterToken; diff --git a/opencl/test/unit_test/program/printf_handler_tests.cpp b/opencl/test/unit_test/program/printf_handler_tests.cpp index ddc6ae9897..6200441cdd 100644 --- a/opencl/test/unit_test/program/printf_handler_tests.cpp +++ b/opencl/test/unit_test/program/printf_handler_tests.cpp @@ -30,7 +30,7 @@ TEST(PrintfHandlerTest, givenNotPreparedPrintfHandlerWhenGetSurfaceIsCalledThenR auto pKernelInfo = std::make_unique(); pKernelInfo->patchInfo.pAllocateStatelessPrintfSurface = pPrintfSurface; - MockProgram *pProgram = new MockProgram(*device->getExecutionEnvironment(), &context, false, &device->getDevice()); + MockProgram *pProgram = new MockProgram(&context, false, toClDeviceVector(*device)); MockKernel *pKernel = new MockKernel(pProgram, *pKernelInfo, *device); MockMultiDispatchInfo multiDispatchInfo(pKernel); @@ -56,7 +56,7 @@ TEST(PrintfHandlerTest, givenPreparedPrintfHandlerWhenGetSurfaceIsCalledThenResu auto pKernelInfo = std::make_unique(); pKernelInfo->patchInfo.pAllocateStatelessPrintfSurface = pPrintfSurface; - MockProgram *pProgram = new MockProgram(*device->getExecutionEnvironment(), &context, false, &device->getDevice()); + MockProgram *pProgram = new MockProgram(&context, false, toClDeviceVector(*device)); uint64_t crossThread[10]; MockKernel *pKernel = new MockKernel(pProgram, *pKernelInfo, *device); @@ -116,7 +116,7 @@ TEST(PrintfHandlerTest, givenParentKernelWithPrintfAndBlockKernelWithoutPrintfWh TEST(PrintfHandlerTest, givenMultiDispatchInfoWithMultipleKernelsWhenCreatingAndDispatchingPrintfHandlerThenPickMainKernel) { MockContext context; auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - auto program = std::make_unique(*device->getExecutionEnvironment(), &context, false, &device->getDevice()); + auto program = std::make_unique(&context, false, toClDeviceVector(*device)); auto mainKernelInfo = std::make_unique(); auto kernelInfo = std::make_unique(); @@ -196,7 +196,7 @@ TEST(PrintfHandlerTest, GivenAllocationInLocalMemoryWhichRequiresBlitterWhenPrep auto kernelInfo = std::make_unique(); kernelInfo->patchInfo.pAllocateStatelessPrintfSurface = printfSurface.get(); - auto program = std::make_unique(*pClDevice->getExecutionEnvironment(), &context, false, &pClDevice->getDevice()); + auto program = std::make_unique(&context, false, toClDeviceVector(*pClDevice)); uint64_t crossThread[10]; auto kernel = std::make_unique(program.get(), *kernelInfo, *pClDevice); kernel->setCrossThreadData(&crossThread, sizeof(uint64_t) * 8); @@ -224,7 +224,7 @@ TEST_F(PrintfHandlerMultiRootDeviceTests, printfSurfaceHasCorrectRootDeviceIndex auto kernelInfo = std::make_unique(); kernelInfo->patchInfo.pAllocateStatelessPrintfSurface = printfSurface.get(); - auto program = std::make_unique(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice()); + auto program = std::make_unique(context.get(), false, toClDeviceVector(*device)); uint64_t crossThread[10]; auto kernel = std::make_unique(program.get(), *kernelInfo, *device); diff --git a/opencl/test/unit_test/program/printf_helper_tests.cpp b/opencl/test/unit_test/program/printf_helper_tests.cpp index d0227d4266..1bf85b001b 100644 --- a/opencl/test/unit_test/program/printf_helper_tests.cpp +++ b/opencl/test/unit_test/program/printf_helper_tests.cpp @@ -49,7 +49,7 @@ class PrintFormatterTest : public testing::Test { kernelInfo = std::make_unique(); device = new MockClDevice{MockDevice::createWithNewExecutionEnvironment(nullptr)}; - program = std::make_unique(*device->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*device)); kernel = new MockKernel(program.get(), *kernelInfo, *device); printFormatter = std::unique_ptr(new PrintFormatter(static_cast(data->getUnderlyingBuffer()), PrintFormatter::maxPrintfOutputLength, is32bit, kernelInfo->patchInfo.stringDataMap)); diff --git a/opencl/test/unit_test/program/process_debug_data_tests.cpp b/opencl/test/unit_test/program/process_debug_data_tests.cpp index f4eba54599..d0bac3d6cd 100644 --- a/opencl/test/unit_test/program/process_debug_data_tests.cpp +++ b/opencl/test/unit_test/program/process_debug_data_tests.cpp @@ -28,7 +28,7 @@ TEST_F(ProgramTests, GivenProgramWithDebugDataForTwoKernelsWhenPorcessedThenDebu kernelInfo1->name = kernelName1; auto kernelInfo2 = new KernelInfo(); kernelInfo2->name = kernelName2; - auto program = std::make_unique(*pDevice->getExecutionEnvironment()); + auto program = std::make_unique(toClDeviceVector(*pClDevice)); SProgramDebugDataHeaderIGC *programDebugHeader = reinterpret_cast(debugData.get()); programDebugHeader->NumberOfKernels = 2; @@ -84,7 +84,7 @@ TEST_F(ProgramTests, GivenProgramWithoutDebugDataWhenPorcessedThenDebugDataIsNot auto kernelInfo1 = new KernelInfo(); kernelInfo1->name = kernelName1; - auto program = std::make_unique(*pDevice->getExecutionEnvironment()); + auto program = std::make_unique(toClDeviceVector(*pClDevice)); program->addKernelInfo(kernelInfo1); program->processDebugData(); diff --git a/opencl/test/unit_test/program/process_elf_binary_tests.cpp b/opencl/test/unit_test/program/process_elf_binary_tests.cpp index f7013d9ebd..94a8f8b8eb 100644 --- a/opencl/test/unit_test/program/process_elf_binary_tests.cpp +++ b/opencl/test/unit_test/program/process_elf_binary_tests.cpp @@ -29,7 +29,7 @@ class ProcessElfBinaryTests : public ::testing::Test { public: void SetUp() override { device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr, rootDeviceIndex)); - program = std::make_unique(*device->getExecutionEnvironment(), nullptr, false, &device->getDevice()); + program = std::make_unique(nullptr, false, toClDeviceVector(*device)); } std::unique_ptr program; @@ -116,7 +116,7 @@ class ProcessElfBinaryTestsWithBinaryType : public ::testing::TestWithParam(MockDevice::createWithNewExecutionEnvironment(nullptr, rootDeviceIndex)); - program = std::make_unique(*device->getExecutionEnvironment(), nullptr, false, &device->getDevice()); + program = std::make_unique(nullptr, false, toClDeviceVector(*device)); } std::unique_ptr program; diff --git a/opencl/test/unit_test/program/process_spir_binary_tests.cpp b/opencl/test/unit_test/program/process_spir_binary_tests.cpp index 40d156cd6e..aff2954082 100644 --- a/opencl/test/unit_test/program/process_spir_binary_tests.cpp +++ b/opencl/test/unit_test/program/process_spir_binary_tests.cpp @@ -8,6 +8,7 @@ #include "shared/source/device/device.h" #include "shared/source/helpers/string.h" +#include "opencl/test/unit_test/mocks/mock_cl_device.h" #include "opencl/test/unit_test/mocks/mock_program.h" #include "gtest/gtest.h" @@ -17,11 +18,11 @@ using namespace NEO; class ProcessSpirBinaryTests : public ::testing::Test { public: void SetUp() override { - executionEnvironment = std::make_unique(); - program = std::make_unique(*executionEnvironment); + device = std::make_unique(new MockDevice()); + program = std::make_unique(toClDeviceVector(*device)); } - std::unique_ptr executionEnvironment; + std::unique_ptr device; std::unique_ptr program; }; diff --git a/opencl/test/unit_test/program/program_data_tests.cpp b/opencl/test/unit_test/program/program_data_tests.cpp index cda78d6753..ed182d5399 100644 --- a/opencl/test/unit_test/program/program_data_tests.cpp +++ b/opencl/test/unit_test/program/program_data_tests.cpp @@ -424,7 +424,8 @@ TEST_F(ProgramDataTest, Given32BitDeviceWhenGlobalMemorySurfaceIsPresentThenItHa TEST(ProgramScopeMetadataTest, WhenPatchingGlobalSurfaceThenPickProperSourceBuffer) { MockExecutionEnvironment execEnv; - MockClDevice device{new MockDevice}; + execEnv.incRefInternal(); + MockClDevice device{new MockDevice(&execEnv, 0)}; execEnv.memoryManager = std::make_unique(); PatchTokensTestData::ValidProgramWithMixedGlobalVarAndConstSurfacesAndPointers decodedProgram; decodedProgram.globalPointerMutable->GlobalPointerOffset = 0U; @@ -432,8 +433,7 @@ TEST(ProgramScopeMetadataTest, WhenPatchingGlobalSurfaceThenPickProperSourceBuff memset(decodedProgram.globalSurfMutable + 1, 0U, sizeof(uintptr_t)); memset(decodedProgram.constSurfMutable + 1, 0U, sizeof(uintptr_t)); ProgramInfo programInfo; - MockProgram program(execEnv); - program.pDevice = &device.getDevice(); + MockProgram program(toClDeviceVector(device)); NEO::populateProgramInfo(programInfo, decodedProgram); program.processProgramInfo(programInfo); auto &buildInfo = program.buildInfos[device.getRootDeviceIndex()]; @@ -540,8 +540,8 @@ TEST_F(ProgramDataTest, givenSymbolTablePatchTokenThenLinkerInputIsCreated) { TEST(ProgramLinkBinaryTest, whenLinkerInputEmptyThenLinkSuccessful) { auto linkerInput = std::make_unique>(); - auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); - MockProgram program{*device->getExecutionEnvironment(), nullptr, false, device.get()}; + auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); + MockProgram program{nullptr, false, toClDeviceVector(*device)}; program.setLinkerInput(device->getRootDeviceIndex(), std::move(linkerInput)); auto ret = program.linkBinary(program.pDevice, nullptr, nullptr); EXPECT_EQ(CL_SUCCESS, ret); @@ -554,8 +554,8 @@ TEST(ProgramLinkBinaryTest, whenLinkerUnresolvedExternalThenLinkFailedAndBuildLo relocation.offset = 0; linkerInput->relocations.push_back(NEO::LinkerInput::Relocations{relocation}); linkerInput->traits.requiresPatchingOfInstructionSegments = true; - auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); - MockProgram program{*device->getExecutionEnvironment(), nullptr, false, device.get()}; + auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); + MockProgram program{nullptr, false, toClDeviceVector(*device)}; KernelInfo kernelInfo = {}; kernelInfo.name = "onlyKernel"; std::vector kernelHeap; @@ -590,8 +590,8 @@ TEST_F(ProgramDataTest, whenLinkerInputValidThenIsaIsProperlyPatched) { NEO::LinkerInput::RelocationInfo{"C", 24U, relocationType}}); linkerInput->traits.requiresPatchingOfInstructionSegments = true; linkerInput->exportedFunctionsSegmentId = 0; - auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); - MockProgram program{*device->getExecutionEnvironment(), nullptr, false, device.get()}; + auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); + MockProgram program{nullptr, false, toClDeviceVector(*device)}; auto &buildInfo = program.buildInfos[device->getRootDeviceIndex()]; KernelInfo kernelInfo = {}; kernelInfo.name = "onlyKernel"; @@ -640,8 +640,8 @@ TEST_F(ProgramDataTest, whenRelocationsAreNotNeededThenIsaIsPreserved) { linkerInput->symbols["A"] = NEO::SymbolInfo{4U, 4U, NEO::SegmentType::GlobalVariables}; linkerInput->symbols["B"] = NEO::SymbolInfo{8U, 4U, NEO::SegmentType::GlobalConstants}; - auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); - MockProgram program{*device->getExecutionEnvironment(), nullptr, false, device.get()}; + auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); + MockProgram program{nullptr, false, toClDeviceVector(*device)}; auto &buildInfo = program.buildInfos[device->getRootDeviceIndex()]; KernelInfo kernelInfo = {}; kernelInfo.name = "onlyKernel"; diff --git a/opencl/test/unit_test/program/program_nonuniform.cpp b/opencl/test/unit_test/program/program_nonuniform.cpp index 139bf1b4b5..8107430db2 100644 --- a/opencl/test/unit_test/program/program_nonuniform.cpp +++ b/opencl/test/unit_test/program/program_nonuniform.cpp @@ -35,10 +35,10 @@ using namespace NEO; class MyMockProgram : public MockProgram { public: - MyMockProgram() : MockProgram(*new ExecutionEnvironment()), executionEnvironment(&this->peekExecutionEnvironment()) {} + MyMockProgram() : MockProgram(toClDeviceVector(*(new MockClDevice(new MockDevice())))), device(this->clDevices[0]) {} private: - std::unique_ptr executionEnvironment; + std::unique_ptr device; }; TEST(ProgramNonUniform, GivenNoBuildOptionsWhenUpdatingAllowNonUniformThenNonUniformNotAllowed) { @@ -102,51 +102,52 @@ TEST(ProgramNonUniform, GivenBuildOptionsCl21AndUniformFlagWhenUpdatingAllowNonU } TEST(KernelNonUniform, WhenSettingAllowNonUniformThenGettingAllowNonUniformReturnsCorrectValue) { - KernelInfo ki; - MockClDevice d{new MockDevice}; - MockProgram pm(*d.getExecutionEnvironment()); + KernelInfo kernelInfo; + MockClDevice device{new MockDevice()}; + MockProgram program(toClDeviceVector(device)); struct KernelMock : Kernel { KernelMock(Program *p, KernelInfo &ki, ClDevice &d) : Kernel(p, ki, d) { } }; - KernelMock k{&pm, ki, d}; - pm.setAllowNonUniform(false); + KernelMock k{&program, kernelInfo, device}; + program.setAllowNonUniform(false); EXPECT_FALSE(k.getAllowNonUniform()); - pm.setAllowNonUniform(true); + program.setAllowNonUniform(true); EXPECT_TRUE(k.getAllowNonUniform()); - pm.setAllowNonUniform(false); + program.setAllowNonUniform(false); EXPECT_FALSE(k.getAllowNonUniform()); } TEST(ProgramNonUniform, WhenSettingAllowNonUniformThenGettingAllowNonUniformReturnsCorrectValue) { - ExecutionEnvironment executionEnvironment; - MockProgram pm(executionEnvironment); - MockProgram pm1(executionEnvironment); - MockProgram pm2(executionEnvironment); - const MockProgram *inputPrograms[] = {&pm1, &pm2}; + MockClDevice device{new MockDevice()}; + auto deviceVector = toClDeviceVector(device); + MockProgram program(deviceVector); + MockProgram program1(deviceVector); + MockProgram program2(deviceVector); + const MockProgram *inputPrograms[] = {&program1, &program2}; cl_uint numInputPrograms = 2; - pm1.setAllowNonUniform(false); - pm2.setAllowNonUniform(false); - pm.updateNonUniformFlag((const Program **)inputPrograms, numInputPrograms); - EXPECT_FALSE(pm.getAllowNonUniform()); + program1.setAllowNonUniform(false); + program2.setAllowNonUniform(false); + program.updateNonUniformFlag((const Program **)inputPrograms, numInputPrograms); + EXPECT_FALSE(program.getAllowNonUniform()); - pm1.setAllowNonUniform(false); - pm2.setAllowNonUniform(true); - pm.updateNonUniformFlag((const Program **)inputPrograms, numInputPrograms); - EXPECT_FALSE(pm.getAllowNonUniform()); + program1.setAllowNonUniform(false); + program2.setAllowNonUniform(true); + program.updateNonUniformFlag((const Program **)inputPrograms, numInputPrograms); + EXPECT_FALSE(program.getAllowNonUniform()); - pm1.setAllowNonUniform(true); - pm2.setAllowNonUniform(false); - pm.updateNonUniformFlag((const Program **)inputPrograms, numInputPrograms); - EXPECT_FALSE(pm.getAllowNonUniform()); + program1.setAllowNonUniform(true); + program2.setAllowNonUniform(false); + program.updateNonUniformFlag((const Program **)inputPrograms, numInputPrograms); + EXPECT_FALSE(program.getAllowNonUniform()); - pm1.setAllowNonUniform(true); - pm2.setAllowNonUniform(true); - pm.updateNonUniformFlag((const Program **)inputPrograms, numInputPrograms); - EXPECT_TRUE(pm.getAllowNonUniform()); + program1.setAllowNonUniform(true); + program2.setAllowNonUniform(true); + program.updateNonUniformFlag((const Program **)inputPrograms, numInputPrograms); + EXPECT_TRUE(program.getAllowNonUniform()); } class ProgramNonUniformTest : public ContextFixture, diff --git a/opencl/test/unit_test/program/program_spec_constants_tests.cpp b/opencl/test/unit_test/program/program_spec_constants_tests.cpp index 02f8026be2..3cd77ee446 100644 --- a/opencl/test/unit_test/program/program_spec_constants_tests.cpp +++ b/opencl/test/unit_test/program/program_spec_constants_tests.cpp @@ -9,6 +9,7 @@ #include "shared/source/compiler_interface/compiler_interface.inl" #include "opencl/test/unit_test/mocks/mock_cif.h" +#include "opencl/test/unit_test/mocks/mock_cl_device.h" #include "opencl/test/unit_test/mocks/mock_compilers.h" #include "opencl/test/unit_test/mocks/mock_program.h" @@ -20,7 +21,7 @@ using namespace NEO; struct UpdateSpecConstantsTest : public ::testing::Test { void SetUp() override { - mockProgram.reset(new MockProgram(executionEnvironment)); + mockProgram.reset(new MockProgram(toClDeviceVector(device))); mockProgram->specConstantsIds.reset(new MockCIFBuffer()); mockProgram->specConstantsSizes.reset(new MockCIFBuffer()); @@ -44,7 +45,7 @@ struct UpdateSpecConstantsTest : public ::testing::Test { EXPECT_EQ(val2, static_cast(values->at(id2))); EXPECT_EQ(val3, static_cast(values->at(id3))); } - ExecutionEnvironment executionEnvironment; + MockClDevice device{new MockDevice()}; std::unique_ptr mockProgram; uint32_t id1 = 1u; diff --git a/opencl/test/unit_test/program/program_tests.cpp b/opencl/test/unit_test/program/program_tests.cpp index cebb52e9ee..c85ea2fc48 100644 --- a/opencl/test/unit_test/program/program_tests.cpp +++ b/opencl/test/unit_test/program/program_tests.cpp @@ -94,6 +94,7 @@ std::vector KernelNames{ class NoCompilerInterfaceRootDeviceEnvironment : public RootDeviceEnvironment { public: NoCompilerInterfaceRootDeviceEnvironment(ExecutionEnvironment &executionEnvironment) : RootDeviceEnvironment(executionEnvironment) { + *hwInfo = *defaultHwInfo; } CompilerInterface *getCompilerInterface() override { @@ -103,13 +104,13 @@ class NoCompilerInterfaceRootDeviceEnvironment : public RootDeviceEnvironment { class FailingGenBinaryProgram : public MockProgram { public: - FailingGenBinaryProgram(ExecutionEnvironment &executionEnvironment) : MockProgram(executionEnvironment) {} + using MockProgram::MockProgram; cl_int processGenBinary(uint32_t rootDeviceIndex) override { return CL_INVALID_BINARY; } }; class SucceedingGenBinaryProgram : public MockProgram { public: - SucceedingGenBinaryProgram(ExecutionEnvironment &executionEnvironment) : MockProgram(executionEnvironment) {} + using MockProgram::MockProgram; cl_int processGenBinary(uint32_t rootDeviceIndex) override { return CL_SUCCESS; } }; @@ -767,7 +768,7 @@ TEST_P(ProgramFromSourceTest, GivenSpecificParamatersWhenBuildingProgramThenSucc auto executionEnvironment = device->getExecutionEnvironment(); std::unique_ptr rootDeviceEnvironment = std::make_unique(*executionEnvironment); std::swap(rootDeviceEnvironment, executionEnvironment->rootDeviceEnvironments[device->getRootDeviceIndex()]); - auto p2 = std::make_unique(*executionEnvironment); + auto p2 = std::make_unique(toClDeviceVector(*device)); p2->setDevice(&device->getDevice()); retVal = p2->build(0, nullptr, nullptr, nullptr, nullptr, false); EXPECT_EQ(CL_OUT_OF_HOST_MEMORY, retVal); @@ -779,7 +780,7 @@ TEST_P(ProgramFromSourceTest, GivenSpecificParamatersWhenBuildingProgramThenSucc EXPECT_EQ(CL_BUILD_PROGRAM_FAILURE, retVal); // fail build - linked code is corrupted and cannot be postprocessed - auto p3 = std::make_unique(*executionEnvironment); + auto p3 = std::make_unique(toClDeviceVector(*device)); p3->setDevice(&device->getDevice()); std::string testFile; size_t sourceSize; @@ -880,7 +881,7 @@ TEST_P(ProgramFromSourceTest, WhenBuildingProgramWithOpenClC30ThenFeaturesOption auto cip = new MockCompilerInterfaceCaptureBuildOptions(); auto pClDevice = pContext->getDevice(0); pClDevice->getExecutionEnvironment()->rootDeviceEnvironments[pClDevice->getRootDeviceIndex()]->compilerInterface.reset(cip); - auto pProgram = std::make_unique(*pClDevice->getExecutionEnvironment()); + auto pProgram = std::make_unique(toClDeviceVector(*pClDevice)); pProgram->setDevice(&pClDevice->getDevice()); pProgram->sourceCode = "__kernel mock() {}"; pProgram->createdFrom = Program::CreatedFrom::SOURCE; @@ -894,7 +895,7 @@ TEST_P(ProgramFromSourceTest, WhenBuildingProgramWithOpenClC30ThenFeaturesOption auto cip = new MockCompilerInterfaceCaptureBuildOptions(); auto pClDevice = pContext->getDevice(0); pClDevice->getExecutionEnvironment()->rootDeviceEnvironments[pClDevice->getRootDeviceIndex()]->compilerInterface.reset(cip); - auto pProgram = std::make_unique(*pClDevice->getExecutionEnvironment()); + auto pProgram = std::make_unique(toClDeviceVector(*pClDevice)); pProgram->setDevice(&pClDevice->getDevice()); pProgram->sourceCode = "__kernel mock() {}"; pProgram->createdFrom = Program::CreatedFrom::SOURCE; @@ -929,7 +930,7 @@ TEST_P(ProgramFromSourceTest, WhenCompilingProgramWithOpenClC30ThenFeaturesOptio auto pCompilerInterface = new MockCompilerInterfaceCaptureBuildOptions(); auto pClDevice = pContext->getDevice(0); pClDevice->getExecutionEnvironment()->rootDeviceEnvironments[pClDevice->getRootDeviceIndex()]->compilerInterface.reset(pCompilerInterface); - auto pProgram = std::make_unique(*pClDevice->getExecutionEnvironment()); + auto pProgram = std::make_unique(toClDeviceVector(*pClDevice)); pProgram->setDevice(&pClDevice->getDevice()); pProgram->sourceCode = "__kernel mock() {}"; pProgram->createdFrom = Program::CreatedFrom::SOURCE; @@ -1128,7 +1129,7 @@ TEST_P(ProgramFromSourceTest, GivenSpecificParamatersWhenCompilingProgramThenSuc auto executionEnvironment = device->getExecutionEnvironment(); std::unique_ptr rootDeviceEnvironment = std::make_unique(*executionEnvironment); std::swap(rootDeviceEnvironment, executionEnvironment->rootDeviceEnvironments[device->getRootDeviceIndex()]); - auto p2 = std::make_unique(*executionEnvironment); + auto p2 = std::make_unique(toClDeviceVector(*device)); p2->setDevice(&device->getDevice()); retVal = p2->compile(0, nullptr, nullptr, 0, nullptr, nullptr, nullptr, nullptr); EXPECT_EQ(CL_OUT_OF_HOST_MEMORY, retVal); @@ -1154,7 +1155,7 @@ TEST_P(ProgramFromSourceTest, GivenFlagsWhenCompilingProgramThenBuildOptionsHave auto cip = new MockCompilerInterfaceCaptureBuildOptions(); auto pDevice = pContext->getDevice(0); pDevice->getExecutionEnvironment()->rootDeviceEnvironments[pDevice->getRootDeviceIndex()]->compilerInterface.reset(cip); - auto program = std::make_unique(*pDevice->getExecutionEnvironment()); + auto program = std::make_unique(toClDeviceVector(*pDevice)); program->setDevice(&pDevice->getDevice()); program->sourceCode = "__kernel mock() {}"; @@ -1165,7 +1166,9 @@ TEST_P(ProgramFromSourceTest, GivenFlagsWhenCompilingProgramThenBuildOptionsHave // Check build options that were applied EXPECT_TRUE(CompilerOptions::contains(cip->buildOptions, CompilerOptions::fastRelaxedMath)) << cip->buildOptions; EXPECT_FALSE(CompilerOptions::contains(cip->buildInternalOptions, CompilerOptions::gtpinRera)) << cip->buildInternalOptions; - EXPECT_FALSE(CompilerOptions::contains(cip->buildInternalOptions, CompilerOptions::greaterThan4gbBuffersRequired)) << cip->buildInternalOptions; + if (!pDevice->areSharedSystemAllocationsAllowed()) { + EXPECT_FALSE(CompilerOptions::contains(cip->buildInternalOptions, CompilerOptions::greaterThan4gbBuffersRequired)) << cip->buildInternalOptions; + } EXPECT_TRUE(CompilerOptions::contains(cip->buildInternalOptions, pPlatform->getClDevice(0)->peekCompilerExtensions())) << cip->buildInternalOptions; // Ask to build created program with NEO::CompilerOptions::gtpinRera and NEO::CompilerOptions::greaterThan4gbBuffersRequired flags. @@ -1186,7 +1189,7 @@ TEST_P(ProgramFromSourceTest, GivenFlagsWhenCompilingProgramThenBuildOptionsHave TEST_F(ProgramTests, GivenFlagsWhenLinkingProgramThenBuildOptionsHaveBeenApplied) { auto cip = new MockCompilerInterfaceCaptureBuildOptions(); - auto pProgram = std::make_unique(*pDevice->getExecutionEnvironment()); + auto pProgram = std::make_unique(toClDeviceVector(*pClDevice)); pProgram->setDevice(pDevice); pProgram->sourceCode = "__kernel mock() {}"; pProgram->createdFrom = Program::CreatedFrom::SOURCE; @@ -1342,7 +1345,7 @@ TEST_P(ProgramFromSourceTest, GivenSpecificParamatersWhenLinkingProgramThenSucce // fail linking - linked code is corrupted and cannot be postprocessed auto device = static_cast(usedDevice); - auto p2 = std::make_unique(*device->getExecutionEnvironment()); + auto p2 = std::make_unique(toClDeviceVector(*device)); p2->setDevice(&device->getDevice()); retVal = p2->link(0, nullptr, nullptr, 1, &program, nullptr, nullptr); EXPECT_EQ(CL_INVALID_BINARY, retVal); @@ -1381,7 +1384,7 @@ TEST_P(ProgramFromSourceTest, GivenInvalidOptionsWhenCreatingLibraryThenCorrectE auto executionEnvironment = device->getExecutionEnvironment(); std::unique_ptr rootDeviceEnvironment = std::make_unique(*executionEnvironment); std::swap(rootDeviceEnvironment, executionEnvironment->rootDeviceEnvironments[device->getRootDeviceIndex()]); - auto failingProgram = std::make_unique(*executionEnvironment); + auto failingProgram = std::make_unique(toClDeviceVector(*device)); failingProgram->setDevice(&device->getDevice()); // fail library creation - CompilerInterface cannot be obtained @@ -1772,7 +1775,7 @@ TEST_F(ProgramTests, WhenProgramIsCreatedThenCorrectOclVersionIsInOptions) { DebugManagerStateRestore restorer; DebugManager.flags.DisableStatelessToStatefulOptimization.set(false); - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); if (pClDevice->getEnabledClVersion() == 30) { EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=300")) << program.getInternalOptions(); } else if (pClDevice->getEnabledClVersion() == 21) { @@ -1791,7 +1794,7 @@ TEST_F(ProgramTests, GivenForcedClVersionWhenProgramIsCreatedThenCorrectOclOptio for (auto &testedValue : testedValues) { pClDevice->enabledClVersion = testedValue.first; - MockProgram program{*pDevice->getExecutionEnvironment(), pContext, false, pDevice}; + MockProgram program{pContext, false, toClDeviceVector(*pClDevice)}; EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), testedValue.second)); } } @@ -1800,7 +1803,7 @@ TEST_F(ProgramTests, GivenStatelessToStatefulIsDisabledWhenProgramIsCreatedThenG DebugManagerStateRestore restorer; DebugManager.flags.DisableStatelessToStatefulOptimization.set(true); - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), NEO::CompilerOptions::greaterThan4gbBuffersRequired)); } @@ -1811,14 +1814,14 @@ TEST_F(ProgramTests, WhenCreatingProgramThenBindlessIsEnabledOnlyIfDebugFlagIsEn { DebugManager.flags.UseBindlessMode.set(0); - MockProgram programNoBindless(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram programNoBindless(pContext, false, toClDeviceVector(*pClDevice)); EXPECT_FALSE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessBuffers)) << programNoBindless.getInternalOptions(); EXPECT_FALSE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessImages)) << programNoBindless.getInternalOptions(); } { DebugManager.flags.UseBindlessMode.set(1); - MockProgram programNoBindless(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram programNoBindless(pContext, false, toClDeviceVector(*pClDevice)); EXPECT_TRUE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessBuffers)) << programNoBindless.getInternalOptions(); EXPECT_TRUE(CompilerOptions::contains(programNoBindless.getInternalOptions(), CompilerOptions::bindlessImages)) << programNoBindless.getInternalOptions(); } @@ -1827,7 +1830,7 @@ TEST_F(ProgramTests, WhenCreatingProgramThenBindlessIsEnabledOnlyIfDebugFlagIsEn TEST_F(ProgramTests, givenDeviceThatSupportsSharedSystemMemoryAllocationWhenProgramIsCompiledThenItForcesStatelessCompilation) { pClDevice->deviceInfo.sharedSystemMemCapabilities = CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL | CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL | CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL | CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL; pClDevice->sharedDeviceInfo.sharedSystemAllocationsSupport = true; - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions().c_str(), CompilerOptions::greaterThan4gbBuffersRequired)) << program.getInternalOptions(); } @@ -1838,7 +1841,7 @@ TEST_F(ProgramTests, GivenForce32BitAddressessWhenProgramIsCreatedThenGreaterTha DebugManager.flags.DisableStatelessToStatefulOptimization.set(false); if (pDevice) { const_cast(&pDevice->getDeviceInfo())->force32BitAddressess = true; - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); if (pDevice->areSharedSystemAllocationsAllowed()) { EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), CompilerOptions::greaterThan4gbBuffersRequired)) << program.getInternalOptions(); } else { @@ -1924,7 +1927,7 @@ TEST_F(ProgramTests, GivenContextWhenCreateProgramThenIncrementContextRefCount) auto initialApiRefCount = pContext->getReference(); auto initialInternalRefCount = pContext->getRefInternalCount(); - MockProgram *program = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram *program = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); EXPECT_EQ(pContext->getReference(), initialApiRefCount); EXPECT_EQ(pContext->getRefInternalCount(), initialInternalRefCount + 1); @@ -2065,7 +2068,7 @@ TEST_F(ProgramTests, givenProgramFromGenBinaryWhenSLMSizeIsBiggerThenDeviceLimit PatchTokensTestData::ValidProgramWithKernelUsingSlm patchtokensProgram; patchtokensProgram.slmMutable->TotalInlineLocalMemorySize = static_cast(pDevice->getDeviceInfo().localMemSize * 2); patchtokensProgram.recalcTokPtr(); - auto program = std::make_unique(*pDevice->getExecutionEnvironment(), nullptr, false, pDevice); + auto program = std::make_unique(nullptr, false, toClDeviceVector(*pClDevice)); program->buildInfos[rootDeviceIndex].unpackedDeviceBinary = makeCopy(patchtokensProgram.storage.data(), patchtokensProgram.storage.size()); program->buildInfos[rootDeviceIndex].unpackedDeviceBinarySize = patchtokensProgram.storage.size(); auto retVal = program->processGenBinary(rootDeviceIndex); @@ -2079,7 +2082,7 @@ TEST_F(ProgramTests, GivenNoCompilerInterfaceRootDeviceEnvironmentWhenRebuilding std::unique_ptr rootDeviceEnvironment = std::make_unique(*executionEnvironment); rootDeviceEnvironment->setHwInfo(&pDevice->getHardwareInfo()); std::swap(rootDeviceEnvironment, executionEnvironment->rootDeviceEnvironments[pDevice->getRootDeviceIndex()]); - auto program = std::make_unique(*executionEnvironment); + auto program = std::make_unique(toClDeviceVector(*pDevice)); EXPECT_NE(nullptr, program); program->setDevice(&pDevice->getDevice()); @@ -2104,7 +2107,7 @@ TEST_F(ProgramTests, GivenGtpinReraFlagWhenBuildingProgramThenCorrectOptionsAreS auto cip = new MockCompilerInterfaceCaptureBuildOptions(); auto pDevice = pContext->getDevice(0); pDevice->getExecutionEnvironment()->rootDeviceEnvironments[pDevice->getRootDeviceIndex()]->compilerInterface.reset(cip); - auto program = std::make_unique(*pDevice->getExecutionEnvironment()); + auto program = std::make_unique(toClDeviceVector(*pDevice)); program->setDevice(&pDevice->getDevice()); program->sourceCode = "__kernel mock() {}"; program->createdFrom = Program::CreatedFrom::SOURCE; @@ -2133,7 +2136,7 @@ TEST_F(ProgramTests, GivenFailingGenBinaryProgramWhenRebuildingBinaryThenInvalid cl_int retVal; - auto program = std::make_unique(*pDevice->getExecutionEnvironment()); + auto program = std::make_unique(toClDeviceVector(*pClDevice)); EXPECT_NE(nullptr, program); cl_device_id deviceId = pContext->getDevice(0); ClDevice *pDevice = castToObject(deviceId); @@ -2156,7 +2159,7 @@ TEST_F(ProgramTests, GivenFailingGenBinaryProgramWhenRebuildingBinaryThenInvalid } TEST_F(ProgramTests, GivenZeroPrivateSizeInBlockWhenAllocateBlockProvateSurfacesCalledThenNoSurfaceIsCreated) { - MockProgram *program = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram *program = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); uint32_t crossThreadOffsetBlock = 0; @@ -2182,7 +2185,7 @@ TEST_F(ProgramTests, GivenZeroPrivateSizeInBlockWhenAllocateBlockProvateSurfaces } TEST_F(ProgramTests, GivenNonZeroPrivateSizeInBlockWhenAllocateBlockProvateSurfacesCalledThenSurfaceIsCreated) { - MockProgram *program = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram *program = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); uint32_t crossThreadOffsetBlock = 0; @@ -2208,7 +2211,7 @@ TEST_F(ProgramTests, GivenNonZeroPrivateSizeInBlockWhenAllocateBlockProvateSurfa } TEST_F(ProgramTests, GivenNonZeroPrivateSizeInBlockWhenAllocateBlockProvateSurfacesCalledThenSecondSurfaceIsNotCreated) { - MockProgram *program = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram *program = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); uint32_t crossThreadOffsetBlock = 0; @@ -2242,7 +2245,7 @@ TEST_F(ProgramTests, GivenNonZeroPrivateSizeInBlockWhenAllocateBlockProvateSurfa } TEST_F(ProgramTests, givenProgramWithBlockKernelsWhenfreeBlockResourcesisCalledThenFreeGraphhicsAllocationsFromBlockKernelManagerIsCalled) { - MockProgram *program = new MockProgram(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram *program = new MockProgram(pContext, false, toClDeviceVector(*pClDevice)); uint32_t crossThreadOffsetBlock = 0; @@ -2283,13 +2286,13 @@ class Program32BitTests : public ProgramTests { }; TEST_F(Program32BitTests, givenDeviceWithForce32BitAddressingOnWhenBuiltinIsCreatedThenNoFlagsArePassedAsInternalOptions) { - MockProgram program(*pDevice->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*pClDevice)); auto &internalOptions = program.getInternalOptions(); EXPECT_THAT(internalOptions, testing::HasSubstr(std::string(""))); } TEST_F(Program32BitTests, givenDeviceWithForce32BitAddressingOnWhenProgramIsCreatedThen32bitFlagIsPassedAsInternalOption) { - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); auto &internalOptions = program.getInternalOptions(); std::string s1 = internalOptions; size_t pos = s1.find(NEO::CompilerOptions::arch32bit.data()); @@ -2301,7 +2304,7 @@ TEST_F(Program32BitTests, givenDeviceWithForce32BitAddressingOnWhenProgramIsCrea } TEST_F(ProgramTests, givenNewProgramTheStatelessToStatefulBufferOffsetOtimizationIsMatchingThePlatformEnablingStatus) { - MockProgram prog(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram prog(pContext, false, toClDeviceVector(*pClDevice)); auto &internalOpts = prog.getInternalOptions(); HardwareCapabilities hwCaps = {0}; @@ -2315,9 +2318,7 @@ TEST_F(ProgramTests, givenNewProgramTheStatelessToStatefulBufferOffsetOtimizatio template struct CreateProgramFromBinaryMock : public MockProgram { - CreateProgramFromBinaryMock(ExecutionEnvironment &executionEnvironment, Context *context, bool isBuiltIn, Device *device) - : MockProgram(executionEnvironment, context, isBuiltIn, nullptr) { - } + using MockProgram::MockProgram; cl_int createProgramFromBinary(const void *pBinary, size_t binarySize, uint32_t rootDeviceIndex) override { @@ -2484,7 +2485,7 @@ TEST_F(ProgramTests, WhenLinkingTwoValidSpirvProgramsThenValidProgramIsReturned) } TEST_F(ProgramTests, givenSeparateBlockKernelsWhenNoParentAndSubgroupKernelsThenSeparateNoneKernel) { - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); EXPECT_EQ(0u, program.getKernelInfoArray().size()); EXPECT_EQ(0u, program.getParentKernelInfoArray().size()); @@ -2497,7 +2498,7 @@ TEST_F(ProgramTests, givenSeparateBlockKernelsWhenNoParentAndSubgroupKernelsThen } TEST_F(ProgramTests, givenSeparateBlockKernelsWhenRegularKernelsThenSeparateNoneKernel) { - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); auto pRegularKernel1Info = new KernelInfo(); pRegularKernel1Info->name = "regular_kernel_1"; @@ -2519,7 +2520,7 @@ TEST_F(ProgramTests, givenSeparateBlockKernelsWhenRegularKernelsThenSeparateNone } TEST_F(ProgramTests, givenSeparateBlockKernelsWhenChildLikeKernelWithoutParentKernelThenSeparateNoneKernel) { - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); auto pParentKernelInfo = new KernelInfo(); pParentKernelInfo->name = "another_parent_kernel"; @@ -2543,7 +2544,7 @@ TEST_F(ProgramTests, givenSeparateBlockKernelsWhenChildLikeKernelWithoutParentKe } TEST_F(ProgramTests, givenSeparateBlockKernelsWhenChildLikeKernelWithoutSubgroupKernelThenSeparateNoneKernel) { - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); auto pSubgroupKernelInfo = new KernelInfo(); pSubgroupKernelInfo->name = "another_subgroup_kernel"; @@ -2567,7 +2568,7 @@ TEST_F(ProgramTests, givenSeparateBlockKernelsWhenChildLikeKernelWithoutSubgroup } TEST_F(ProgramTests, givenSeparateBlockKernelsWhenParentKernelWithChildKernelThenSeparateChildKernel) { - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); auto pParentKernelInfo = new KernelInfo(); pParentKernelInfo->name = "parent_kernel"; @@ -2591,7 +2592,7 @@ TEST_F(ProgramTests, givenSeparateBlockKernelsWhenParentKernelWithChildKernelThe } TEST_F(ProgramTests, givenSeparateBlockKernelsWhenSubgroupKernelWithChildKernelThenSeparateChildKernel) { - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); auto pSubgroupKernelInfo = new KernelInfo(); pSubgroupKernelInfo->name = "subgroup_kernel"; @@ -2614,22 +2615,11 @@ TEST_F(ProgramTests, givenSeparateBlockKernelsWhenSubgroupKernelWithChildKernelT EXPECT_EQ(0, strcmp("subgroup_kernel_dispatch_0", program.getBlockKernelManager()->getBlockKernelInfo(0)->name.c_str())); } -TEST(SimpleProgramTests, givenDefaultProgramWhenSetDeviceIsCalledThenDeviceIsSet) { - ExecutionEnvironment executionEnvironment; - MockProgram program(executionEnvironment); - EXPECT_EQ(nullptr, program.getDevicePtr()); - auto dummyDevice = (Device *)0x1337; - program.setDevice(dummyDevice); - EXPECT_EQ(dummyDevice, program.getDevicePtr()); - program.setDevice(nullptr); - EXPECT_EQ(nullptr, program.getDevicePtr()); -} - TEST(ProgramDestructionTests, givenProgramUsingDeviceWhenItIsDestroyedAfterPlatfromCleanupThenItIsCleanedUpProperly) { initPlatform(); auto device = platform()->getClDevice(0); MockContext *context = new MockContext(device, false); - MockProgram *pProgram = new MockProgram(*device->getExecutionEnvironment(), context, false, &device->getDevice()); + MockProgram *pProgram = new MockProgram(context, false, toClDeviceVector(*device)); auto globalAllocation = device->getMemoryManager()->allocateGraphicsMemoryWithProperties(MockAllocationProperties{device->getRootDeviceIndex(), MemoryConstants::pageSize}); pProgram->setGlobalSurface(globalAllocation); @@ -2641,8 +2631,6 @@ TEST(ProgramDestructionTests, givenProgramUsingDeviceWhenItIsDestroyedAfterPlatf } TEST_F(ProgramTests, givenProgramWithSpirvWhenRebuildProgramIsCalledThenSpirvPathIsTaken) { - auto device = castToObject(pContext->getDevice(0)); - auto compilerInterface = new MockCompilerInterface(); auto compilerMain = new MockCIFMain(); compilerInterface->setFclMain(compilerMain); @@ -2659,8 +2647,7 @@ TEST_F(ProgramTests, givenProgramWithSpirvWhenRebuildProgramIsCalledThenSpirvPat gEnvironment->igcPushDebugVars(debugVars); std::unique_ptr igcDebugVarsAutoPop{&gEnvironment, [](void *) { gEnvironment->igcPopDebugVars(); }}; - auto program = clUniquePtr(new MockProgram(*pDevice->getExecutionEnvironment())); - program->setDevice(&device->getDevice()); + auto program = clUniquePtr(new MockProgram(toClDeviceVector(*pClDevice))); uint32_t spirv[16] = {0x03022307, 0x23471113, 0x17192329}; program->irBinary = makeCopy(spirv, sizeof(spirv)); program->irBinarySize = sizeof(spirv); @@ -2690,7 +2677,7 @@ TEST_F(ProgramTests, whenRebuildingProgramThenStoreDeviceBinaryProperly) { gEnvironment->igcPushDebugVars(debugVars); std::unique_ptr igcDebugVarsAutoPop{&gEnvironment, [](void *) { gEnvironment->igcPopDebugVars(); }}; - auto program = clUniquePtr(new MockProgram(*pDevice->getExecutionEnvironment())); + auto program = clUniquePtr(new MockProgram(toClDeviceVector(*pClDevice))); program->setDevice(&device->getDevice()); uint32_t ir[16] = {0x03022307, 0x23471113, 0x17192329}; program->irBinary = makeCopy(ir, sizeof(ir)); @@ -2704,20 +2691,16 @@ TEST_F(ProgramTests, whenRebuildingProgramThenStoreDeviceBinaryProperly) { } TEST_F(ProgramTests, givenProgramWhenInternalOptionsArePassedThenTheyAreAddedToProgramInternalOptions) { - ExecutionEnvironment executionEnvironment; - MockProgram program(executionEnvironment); + MockProgram program(toClDeviceVector(*pClDevice)); program.getInternalOptions().erase(); - EXPECT_EQ(nullptr, program.getDevicePtr()); std::string buildOptions = NEO::CompilerOptions::gtpinRera.str(); program.extractInternalOptions(buildOptions); EXPECT_STREQ(program.getInternalOptions().c_str(), NEO::CompilerOptions::gtpinRera.data()); } TEST_F(ProgramTests, givenProgramWhenUnknownInternalOptionsArePassedThenTheyAreNotAddedToProgramInternalOptions) { - ExecutionEnvironment executionEnvironment; - MockProgram program(executionEnvironment); + MockProgram program(toClDeviceVector(*pClDevice)); program.getInternalOptions().erase(); - EXPECT_EQ(nullptr, program.getDevicePtr()); const char *internalOption = "-unknown-internal-options-123"; std::string buildOptions(internalOption); program.extractInternalOptions(buildOptions); @@ -2725,10 +2708,8 @@ TEST_F(ProgramTests, givenProgramWhenUnknownInternalOptionsArePassedThenTheyAreN } TEST_F(ProgramTests, givenProgramWhenAllInternalOptionsArePassedMixedWithUnknownInputThenTheyAreParsedCorrectly) { - ExecutionEnvironment executionEnvironment; - MockProgram program(executionEnvironment); + MockProgram program(toClDeviceVector(*pClDevice)); program.getInternalOptions().erase(); - EXPECT_EQ(nullptr, program.getDevicePtr()); std::string buildOptions = CompilerOptions::concatenate("###", CompilerOptions::gtpinRera, "###", CompilerOptions::greaterThan4gbBuffersRequired, "###"); std::string expectedOutput = CompilerOptions::concatenate(CompilerOptions::gtpinRera, CompilerOptions::greaterThan4gbBuffersRequired); program.extractInternalOptions(buildOptions); @@ -2736,10 +2717,8 @@ TEST_F(ProgramTests, givenProgramWhenAllInternalOptionsArePassedMixedWithUnknown } TEST_F(ProgramTests, givenProgramWhenInternalOptionsArePassedWithValidValuesThenTheyAreAddedToProgramInternalOptions) { - ExecutionEnvironment executionEnvironment; - MockProgram program(executionEnvironment); + MockProgram program(toClDeviceVector(*pClDevice)); program.getInternalOptions().erase(); - EXPECT_EQ(nullptr, program.getDevicePtr()); program.isFlagOptionOverride = false; program.isOptionValueValidOverride = true; @@ -2749,9 +2728,7 @@ TEST_F(ProgramTests, givenProgramWhenInternalOptionsArePassedWithValidValuesThen } TEST_F(ProgramTests, givenProgramWhenInternalOptionsArePassedWithInvalidValuesThenTheyAreNotAddedToProgramInternalOptions) { - ExecutionEnvironment executionEnvironment; - MockProgram program(executionEnvironment); - EXPECT_EQ(nullptr, program.getDevicePtr()); + MockProgram program(toClDeviceVector(*pClDevice)); program.isFlagOptionOverride = false; std::string buildOptions = CompilerOptions::concatenate(CompilerOptions::gtpinRera, "someValue"); @@ -2769,13 +2746,13 @@ TEST_F(ProgramTests, givenProgramWhenInternalOptionsArePassedWithInvalidValuesTh class AdditionalOptionsMockProgram : public MockProgram { public: - AdditionalOptionsMockProgram() : MockProgram(executionEnvironment) {} + AdditionalOptionsMockProgram() : MockProgram(toClDeviceVector(*(new MockClDevice(new MockDevice())))), device(this->clDevices[0]) {} void applyAdditionalOptions() override { applyAdditionalOptionsCalled++; MockProgram::applyAdditionalOptions(); } uint32_t applyAdditionalOptionsCalled = 0; - ExecutionEnvironment executionEnvironment; + std::unique_ptr device; }; TEST_F(ProgramTests, givenProgramWhenBuiltThenAdditionalOptionsAreApplied) { @@ -2787,38 +2764,6 @@ TEST_F(ProgramTests, givenProgramWhenBuiltThenAdditionalOptionsAreApplied) { EXPECT_EQ(1u, program.applyAdditionalOptionsCalled); } -TEST_F(ProgramTests, WhenProgramIsCreatedThenItsDeviceIsProperlySet) { - auto wasValidClDeviceUsed = [](MockProgram &program) -> bool { - return (program.getInternalOptions().find(CompilerOptions::arch32bit.data()) != std::string::npos); - }; - - MockExecutionEnvironment executionEnvironment; - MockDevice mockDevice; - mockDevice.deviceInfo.force32BitAddressess = true; - auto pContextMockDevice = new MockDevice; - MockClDevice contextMockClDevice{pContextMockDevice}; - MockContext mockContext{&contextMockClDevice}; - - MockProgram programWithDeviceGiven{executionEnvironment, &mockContext, false, &mockDevice}; - EXPECT_EQ(&mockDevice, programWithDeviceGiven.pDevice); - - MockProgram programWithDeviceFromContext{executionEnvironment, &mockContext, false, nullptr}; - EXPECT_EQ(pContextMockDevice, programWithDeviceFromContext.pDevice); - - MockProgram programWithDeviceWithoutSpecializedDevice{executionEnvironment, nullptr, false, &mockDevice}; - EXPECT_FALSE(wasValidClDeviceUsed(programWithDeviceWithoutSpecializedDevice)); - - MockDevice invalidClDevice; - mockDevice.setSpecializedDevice(&invalidClDevice); - MockProgram programWithDeviceWithInvalidSpecializedDevice{executionEnvironment, nullptr, false, &mockDevice}; - EXPECT_FALSE(wasValidClDeviceUsed(programWithDeviceWithInvalidSpecializedDevice)); - - MockClDevice validClDevice{new MockDevice}; - validClDevice.sharedDeviceInfo.force32BitAddressess = true; - MockProgram programWithDeviceWithValidSpecializedDevice{executionEnvironment, nullptr, false, &validClDevice.getDevice()}; - EXPECT_TRUE(wasValidClDeviceUsed(programWithDeviceWithValidSpecializedDevice)); -} - TEST(CreateProgramFromBinaryTests, givenBinaryProgramWhenKernelRebulildIsForcedThenDeviceBinaryIsNotUsed) { DebugManagerStateRestore dbgRestorer; DebugManager.flags.RebuildPrecompiledKernels.set(true); @@ -2892,13 +2837,13 @@ struct SpecializationConstantRootDeviceEnvironemnt : public RootDeviceEnvironmen }; struct setProgramSpecializationConstantTests : public ::testing::Test { + setProgramSpecializationConstantTests() : device(new MockDevice()) {} void SetUp() override { mockCompiler = new SpecializationConstantCompilerInterfaceMock(); auto rootDeviceEnvironment = device.getExecutionEnvironment()->rootDeviceEnvironments[0].get(); rootDeviceEnvironment->compilerInterface.reset(mockCompiler); - mockProgram.reset(new SpecializationConstantProgramMock(*device.getExecutionEnvironment())); + mockProgram.reset(new SpecializationConstantProgramMock(toClDeviceVector(device))); mockProgram->isSpirV = true; - mockProgram->setDevice(&device); EXPECT_FALSE(mockProgram->areSpecializationConstantsInitialized); EXPECT_EQ(0, mockCompiler->counter); @@ -2906,7 +2851,7 @@ struct setProgramSpecializationConstantTests : public ::testing::Test { SpecializationConstantCompilerInterfaceMock *mockCompiler = nullptr; std::unique_ptr mockProgram; - MockDevice device; + MockClDevice device; int specValue = 1; }; @@ -2948,9 +2893,8 @@ TEST(setProgramSpecializationConstantTest, givenUninitializedCompilerinterfaceWh auto executionEnvironment = new MockExecutionEnvironment(); executionEnvironment->rootDeviceEnvironments[0] = std::make_unique(*executionEnvironment); executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get()); - MockDevice mockDevice(executionEnvironment, 0); - SpecializationConstantProgramMock mockProgram(*executionEnvironment); - mockProgram.setDevice(&mockDevice); + MockClDevice mockDevice(new MockDevice{executionEnvironment, 0}); + SpecializationConstantProgramMock mockProgram(toClDeviceVector(mockDevice)); mockProgram.isSpirV = true; int specValue = 1; @@ -3088,7 +3032,7 @@ TEST_F(ProgramBinTest, GivenDebugDataAvailableWhenLinkingProgramThenDebugDataIsS using ProgramMultiRootDeviceTests = MultiRootDeviceFixture; TEST_F(ProgramMultiRootDeviceTests, WhenPrivateSurfaceIsCreatedThenItHasCorrectRootDeviceIndex) { - auto program = std::make_unique(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice()); + auto program = std::make_unique(context.get(), false, toClDeviceVector(*device)); auto privateSurfaceBlock = std::make_unique(); privateSurfaceBlock->DataParamOffset = 0; @@ -3149,9 +3093,9 @@ TEST(ProgramReplaceDeviceBinary, GivenBinaryZebinThenUseAsBothPackedAndUnpackedB ZebinTestData::ValidEmptyProgram zebin; std::unique_ptr src = makeCopy(zebin.storage.data(), zebin.storage.size()); MockContext context; - auto device = &context.getDevice(0)->getDevice(); + auto device = context.getDevice(0); auto rootDeviceIndex = device->getRootDeviceIndex(); - MockProgram program{*device->getExecutionEnvironment(), &context, false, device}; + MockProgram program{&context, false, toClDeviceVector(*device)}; program.replaceDeviceBinary(std::move(src), zebin.storage.size(), rootDeviceIndex); ASSERT_EQ(zebin.storage.size(), program.buildInfos[rootDeviceIndex].packedDeviceBinarySize); ASSERT_EQ(zebin.storage.size(), program.buildInfos[rootDeviceIndex].unpackedDeviceBinarySize); diff --git a/opencl/test/unit_test/program/program_with_block_kernels_tests.cpp b/opencl/test/unit_test/program/program_with_block_kernels_tests.cpp index 2a1543e6bf..fbdac6dd95 100644 --- a/opencl/test/unit_test/program/program_with_block_kernels_tests.cpp +++ b/opencl/test/unit_test/program/program_with_block_kernels_tests.cpp @@ -101,7 +101,7 @@ TEST_F(ProgramWithBlockKernelsTest, GivenKernelWithBlockKernelsWhenProgramIsLink ASSERT_NE(nullptr, pProgram); EXPECT_EQ(CL_SUCCESS, retVal); - Program *programLinked = new Program(*pPlatform->peekExecutionEnvironment(), pContext, false, nullptr); + Program *programLinked = new Program(pContext, false, toClDeviceVector(*pPlatform->getClDevice(0))); cl_program program = pProgram; retVal = pProgram->compile(1, &device, buildOptions, 0, nullptr, nullptr, nullptr, nullptr); diff --git a/opencl/test/unit_test/program/program_with_kernel_debug_tests.cpp b/opencl/test/unit_test/program/program_with_kernel_debug_tests.cpp index 1f41478edc..09d30085df 100644 --- a/opencl/test/unit_test/program/program_with_kernel_debug_tests.cpp +++ b/opencl/test/unit_test/program/program_with_kernel_debug_tests.cpp @@ -25,12 +25,12 @@ using namespace NEO; TEST_F(ProgramTests, givenDeafultProgramObjectWhenKernelDebugEnabledIsQueriedThenFalseIsReturned) { - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); EXPECT_FALSE(program.isKernelDebugEnabled()); } TEST_F(ProgramTests, givenProgramObjectWhenEnableKernelDebugIsCalledThenProgramHasKernelDebugEnabled) { - MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); + MockProgram program(pContext, false, toClDeviceVector(*pClDevice)); program.enableKernelDebug(); EXPECT_TRUE(program.isKernelDebugEnabled()); } @@ -43,7 +43,7 @@ TEST(ProgramFromBinary, givenBinaryWithDebugDataWhenCreatingProgramFromBinaryThe retrieveBinaryKernelFilename(filePath, "-cl-kernel-debug-enable_", ".bin"); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - auto program = std::make_unique(*device->getExecutionEnvironment()); + auto program = std::make_unique(toClDeviceVector(*device)); program->pDevice = &device->getDevice(); program->enableKernelDebug(); @@ -187,7 +187,7 @@ TEST_F(ProgramWithKernelDebuggingTest, givenEnabledKernelDebugWhenProgramIsLinke cl_int retVal = pProgram->compile(1, &device, nullptr, 0, nullptr, nullptr, nullptr, nullptr); EXPECT_EQ(CL_SUCCESS, retVal); - auto program = std::unique_ptr(new GMockProgram(*pContext->getDevice(0)->getExecutionEnvironment(), pContext, false, &pContext->getDevice(0)->getDevice())); + auto program = std::unique_ptr(new GMockProgram(pContext, false, toClDeviceVector(*pClDevice))); program->enableKernelDebug(); EXPECT_CALL(*program, appendKernelDebugOptions()).Times(1); diff --git a/opencl/test/unit_test/sampler/sampler_set_arg_tests.cpp b/opencl/test/unit_test/sampler/sampler_set_arg_tests.cpp index 4142d55bd9..d7bdc8b9a4 100644 --- a/opencl/test/unit_test/sampler/sampler_set_arg_tests.cpp +++ b/opencl/test/unit_test/sampler/sampler_set_arg_tests.cpp @@ -54,7 +54,7 @@ class SamplerSetArgFixture : public ClDeviceFixture { pKernelInfo->kernelArgInfo[1].offsetHeap = 0x40; pKernelInfo->kernelArgInfo[1].isSampler = true; - program = std::make_unique(*pDevice->getExecutionEnvironment()); + program = std::make_unique(toClDeviceVector(*pClDevice)); pKernel = new MockKernel(program.get(), *pKernelInfo, *pClDevice); ASSERT_NE(nullptr, pKernel); ASSERT_EQ(CL_SUCCESS, pKernel->initialize()); diff --git a/opencl/test/unit_test/scheduler/scheduler_kernel_tests.cpp b/opencl/test/unit_test/scheduler/scheduler_kernel_tests.cpp index 6e38baf8d6..86c3288fcd 100644 --- a/opencl/test/unit_test/scheduler/scheduler_kernel_tests.cpp +++ b/opencl/test/unit_test/scheduler/scheduler_kernel_tests.cpp @@ -59,7 +59,7 @@ class MockSchedulerKernel : public SchedulerKernel { TEST(SchedulerKernelTest, WhenSchedulerKernelIsCreatedThenLwsIs24) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); KernelInfo info; MockSchedulerKernel kernel(&program, info, *device); @@ -69,7 +69,7 @@ TEST(SchedulerKernelTest, WhenSchedulerKernelIsCreatedThenLwsIs24) { TEST(SchedulerKernelTest, WhenSchedulerKernelIsCreatedThenGwsIs24) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); KernelInfo info; MockSchedulerKernel kernel(&program, info, *device); @@ -85,7 +85,7 @@ TEST(SchedulerKernelTest, WhenSchedulerKernelIsCreatedThenGwsIs24) { TEST(SchedulerKernelTest, WhenSettingGwsThenGetGwsReturnedSetValue) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); KernelInfo info; MockSchedulerKernel kernel(&program, info, *device); @@ -98,7 +98,7 @@ TEST(SchedulerKernelTest, WhenSettingGwsThenGetGwsReturnedSetValue) { TEST(SchedulerKernelTest, WhenSchedulerKernelIsCreatedThenCurbeSizeIsCorrect) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); KernelInfo info; uint32_t crossTrheadDataSize = 32; uint32_t dshSize = 48; @@ -118,7 +118,7 @@ TEST(SchedulerKernelTest, WhenSchedulerKernelIsCreatedThenCurbeSizeIsCorrect) { TEST(SchedulerKernelTest, WhenSettingArgsForSchedulerKernelThenAllocationsAreCorrect) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); program->setDevice(&device->getDevice()); std::unique_ptr info(nullptr); KernelInfo *infoPtr = nullptr; @@ -148,7 +148,7 @@ TEST(SchedulerKernelTest, WhenSettingArgsForSchedulerKernelThenAllocationsAreCor TEST(SchedulerKernelTest, GivenNullDebugQueueWhenSettingArgsForSchedulerKernelThenAllocationsAreCorrect) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); program->setDevice(&device->getDevice()); std::unique_ptr info(nullptr); @@ -179,8 +179,7 @@ TEST(SchedulerKernelTest, GivenNullDebugQueueWhenSettingArgsForSchedulerKernelTh TEST(SchedulerKernelTest, givenGraphicsAllocationWithDifferentCpuAndGpuAddressesWhenCallSetArgsThenGpuAddressesAreTaken) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); - program->setDevice(&device->getDevice()); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); std::unique_ptr info(nullptr); KernelInfo *infoPtr = nullptr; @@ -214,7 +213,7 @@ TEST(SchedulerKernelTest, GivenForceDispatchSchedulerWhenCreatingKernelReflectio DebugManager.flags.ForceDispatchScheduler.set(true); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); program->setDevice(&device->getDevice()); std::unique_ptr info(nullptr); @@ -233,7 +232,7 @@ TEST(SchedulerKernelTest, GivenForceDispatchSchedulerWhenCreatingKernelReflectio DebugManager.flags.ForceDispatchScheduler.set(true); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); program->setDevice(&device->getDevice()); std::unique_ptr info(nullptr); @@ -256,7 +255,7 @@ TEST(SchedulerKernelTest, GivenNoForceDispatchSchedulerWhenCreatingKernelReflect DebugManager.flags.ForceDispatchScheduler.set(false); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); program->setDevice(&device->getDevice()); std::unique_ptr info(nullptr); @@ -271,7 +270,7 @@ TEST(SchedulerKernelTest, GivenNoForceDispatchSchedulerWhenCreatingKernelReflect TEST(SchedulerKernelTest, GivenNullKernelInfoWhenGettingCurbeSizeThenSizeIsCorrect) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); KernelInfo info; info.patchInfo.dataParameterStream = nullptr; @@ -287,7 +286,7 @@ TEST(SchedulerKernelTest, givenForcedSchedulerGwsByDebugVariableWhenSchedulerKer DebugManager.flags.SchedulerGWS.set(48); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); KernelInfo info; MockSchedulerKernel kernel(&program, info, *device); @@ -300,7 +299,7 @@ TEST(SchedulerKernelTest, givenSimulationModeWhenSchedulerKernelIsCreatedThenGws hwInfo.featureTable.ftrSimulationMode = true; auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(&hwInfo)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); KernelInfo info; MockSchedulerKernel kernel(&program, info, *device); @@ -316,7 +315,7 @@ TEST(SchedulerKernelTest, givenForcedSchedulerGwsByDebugVariableAndSimulationMod hwInfo.featureTable.ftrSimulationMode = true; auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(&hwInfo)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); KernelInfo info; MockSchedulerKernel kernel(&program, info, *device); diff --git a/opencl/test/unit_test/utilities/file_logger_tests.cpp b/opencl/test/unit_test/utilities/file_logger_tests.cpp index 7485051459..1d33286f69 100644 --- a/opencl/test/unit_test/utilities/file_logger_tests.cpp +++ b/opencl/test/unit_test/utilities/file_logger_tests.cpp @@ -347,7 +347,7 @@ TEST(FileLogger, GivenNullMdiWhenDumpingKernelsThenFileIsNotCreated) { TEST(FileLogger, GivenDebugFunctionalityWhenDebugFlagIsDisabledThenDoNotDumpKernelArgsForMdi) { auto kernelInfo = std::make_unique(); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); auto kernel = std::unique_ptr(new MockKernel(&program, *kernelInfo, *device)); auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(kernel.get())); @@ -382,7 +382,7 @@ TEST(FileLogger, GivenDebugFunctionalityWhenDebugFlagIsDisabledThenDoNotDumpKern TEST(FileLogger, GivenMdiWhenDumpingKernelArgsThenFileIsCreated) { auto kernelInfo = std::make_unique(); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); auto kernel = std::unique_ptr(new MockKernel(&program, *kernelInfo, *device)); auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(kernel.get())); @@ -427,7 +427,7 @@ TEST(FileLogger, GivenNullWhenDumpingKernelArgsThenFileIsNotCreated) { TEST(FileLogger, GivenEmptyKernelWhenDumpingKernelArgsThenFileIsNotCreated) { auto kernelInfo = std::make_unique(); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); auto kernel = std::unique_ptr(new MockKernel(&program, *kernelInfo, *device)); std::string testFile = "testfile"; @@ -443,7 +443,7 @@ TEST(FileLogger, GivenEmptyKernelWhenDumpingKernelArgsThenFileIsNotCreated) { TEST(FileLogger, GivenImmediateWhenDumpingKernelArgsThenFileIsCreated) { auto kernelInfo = std::make_unique(); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); auto kernel = std::unique_ptr(new MockKernel(&program, *kernelInfo, *device)); KernelArgPatchInfo kernelArgPatchInfo; @@ -477,7 +477,7 @@ TEST(FileLogger, GivenImmediateZeroSizeWhenDumpingKernelArgsThenFileIsNotCreated auto kernelInfo = std::make_unique(); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); auto kernel = std::unique_ptr(new MockKernel(&program, *kernelInfo, *device)); KernelArgPatchInfo kernelArgPatchInfo; @@ -507,7 +507,7 @@ TEST(FileLogger, GivenLocalBufferWhenDumpingKernelArgsThenFileIsNotCreated) { auto kernelInfo = std::make_unique(); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); - MockProgram program(*device->getExecutionEnvironment()); + MockProgram program(toClDeviceVector(*device)); auto kernel = std::unique_ptr(new MockKernel(&program, *kernelInfo, *device)); KernelArgPatchInfo kernelArgPatchInfo; @@ -530,7 +530,7 @@ TEST(FileLogger, GivenBufferNotSetWhenDumpingKernelArgsThenFileIsNotCreated) { auto kernelInfo = std::make_unique(); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = clUniquePtr(new MockKernel(program.get(), *kernelInfo, *device)); KernelArgPatchInfo kernelArgPatchInfo; @@ -564,7 +564,7 @@ TEST(FileLogger, GivenBufferWhenDumpingKernelArgsThenFileIsCreated) { cl_mem clObj = buffer; auto kernelInfo = std::make_unique(); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = clUniquePtr(new MockKernel(program.get(), *kernelInfo, *device)); KernelArgPatchInfo kernelArgPatchInfo; @@ -603,7 +603,7 @@ TEST(FileLogger, GivenSamplerWhenDumpingKernelArgsThenFileIsNotCreated) { auto kernelInfo = std::make_unique(); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = clUniquePtr(new MockKernel(program.get(), *kernelInfo, *device)); KernelArgPatchInfo kernelArgPatchInfo; @@ -631,7 +631,7 @@ TEST(FileLogger, GivenImageNotSetWhenDumpingKernelArgsThenFileIsNotCreated) { auto kernelInfo = std::make_unique(); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); auto context = clUniquePtr(new MockContext(device.get())); - auto program = clUniquePtr(new MockProgram(*device->getExecutionEnvironment(), context.get(), false, &device->getDevice())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = clUniquePtr(new MockKernel(program.get(), *kernelInfo, *device)); char surfaceStateHeap[0x80]; diff --git a/shared/test/unit_test/compiler_interface/compiler_cache_tests.cpp b/shared/test/unit_test/compiler_interface/compiler_cache_tests.cpp index 96477bafc6..3238b29e16 100644 --- a/shared/test/unit_test/compiler_interface/compiler_cache_tests.cpp +++ b/shared/test/unit_test/compiler_interface/compiler_cache_tests.cpp @@ -314,7 +314,6 @@ TEST(CompilerInterfaceCachedTests, GivenCachedBinaryWhenBuildingThenSuccessIsRet TEST(CompilerInterfaceCachedTests, givenKernelWithoutIncludesAndBinaryInCacheWhenCompilationRequestedThenFCLIsNotCalled) { MockClDevice device{new MockDevice}; MockContext context(&device, true); - MockProgram program(*device.getExecutionEnvironment(), &context, false, nullptr); TranslationInput inputArgs{IGC::CodeType::oclC, IGC::CodeType::oclGenBin}; auto src = "__kernel k() {}"; @@ -347,7 +346,6 @@ TEST(CompilerInterfaceCachedTests, givenKernelWithoutIncludesAndBinaryInCacheWhe TEST(CompilerInterfaceCachedTests, givenKernelWithIncludesAndBinaryInCacheWhenCompilationRequestedThenFCLIsCalled) { MockClDevice device{new MockDevice}; MockContext context(&device, true); - MockProgram program(*device.getExecutionEnvironment(), &context, false, nullptr); TranslationInput inputArgs{IGC::CodeType::oclC, IGC::CodeType::oclGenBin}; auto src = "#include \"file.h\"\n__kernel k() {}"; diff --git a/shared/test/unit_test/fixtures/preemption_fixture.cpp b/shared/test/unit_test/fixtures/preemption_fixture.cpp index 39686d1ca1..211c141d1f 100644 --- a/shared/test/unit_test/fixtures/preemption_fixture.cpp +++ b/shared/test/unit_test/fixtures/preemption_fixture.cpp @@ -31,7 +31,6 @@ void DevicePreemptionTests::SetUp() { device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(nullptr)); executionEnvironment.reset(new SPatchExecutionEnvironment); memset(executionEnvironment.get(), 0, sizeof(SPatchExecutionEnvironment)); - program = std::make_unique(*device->getExecutionEnvironment()); ASSERT_NE(nullptr, device); diff --git a/shared/test/unit_test/fixtures/preemption_fixture.h b/shared/test/unit_test/fixtures/preemption_fixture.h index 69504c3ac3..a461bc3222 100644 --- a/shared/test/unit_test/fixtures/preemption_fixture.h +++ b/shared/test/unit_test/fixtures/preemption_fixture.h @@ -45,7 +45,6 @@ class DevicePreemptionTests : public ::testing::Test { std::unique_ptr device; std::unique_ptr dbgRestore; std::unique_ptr executionEnvironment; - std::unique_ptr program; }; struct PreemptionTestHwDetails {