diff --git a/Jenkinsfile b/Jenkinsfile index 8d58145621..dd734397d3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,4 +1,4 @@ #!groovy neoDependenciesRev='790647-1082' strategy='EQUAL' -allowedCD=271 +allowedCD=272 diff --git a/runtime/api/api.cpp b/runtime/api/api.cpp index 9e6ae35c93..910ab1616c 100644 --- a/runtime/api/api.cpp +++ b/runtime/api/api.cpp @@ -1254,7 +1254,7 @@ cl_program CL_API_CALL clCreateProgramWithBuiltInKernels(cl_context context, auto pDev = castToObject(*deviceList); validateObject(pDev); - program = BuiltIns::getInstance().createBuiltInProgram( + program = pDev->getBuiltIns().createBuiltInProgram( *pContext, *pDev, kernelNames, diff --git a/runtime/built_ins/built_ins.cpp b/runtime/built_ins/built_ins.cpp index 6f291098d4..6a57ba83c0 100644 --- a/runtime/built_ins/built_ins.cpp +++ b/runtime/built_ins/built_ins.cpp @@ -38,7 +38,6 @@ #include namespace OCLRT { -BuiltIns *BuiltIns::pInstance = nullptr; const char *mediaKernelsBuildOptions = { "-D cl_intel_device_side_advanced_vme_enable " @@ -58,24 +57,6 @@ BuiltIns::~BuiltIns() { schedulerBuiltIn.pProgram = nullptr; } -BuiltIns &BuiltIns::getInstance() { - static std::mutex initMutex; - std::lock_guard autolock(initMutex); - - if (pInstance == nullptr) { - pInstance = new BuiltIns(); - } - return *pInstance; -} - -void BuiltIns::shutDown() { - if (pInstance) { - auto inst = pInstance; - pInstance = nullptr; - delete inst; - } -} - SchedulerKernel &BuiltIns::getSchedulerKernel(Context &context) { if (schedulerBuiltIn.pKernel) { return *static_cast(schedulerBuiltIn.pKernel); @@ -84,7 +65,7 @@ SchedulerKernel &BuiltIns::getSchedulerKernel(Context &context) { auto initializeSchedulerProgramAndKernel = [&] { cl_int retVal = CL_SUCCESS; - auto src = getInstance().builtinsLib->getBuiltinCode(EBuiltInOps::Scheduler, BuiltinCode::ECodeType::Any, *context.getDevice(0)); + auto src = context.getDevice(0)->getBuiltIns().builtinsLib->getBuiltinCode(EBuiltInOps::Scheduler, BuiltinCode::ECodeType::Any, *context.getDevice(0)); auto program = Program::createFromGenBinary(*context.getDevice(0)->getExecutionEnvironment(), &context, @@ -209,11 +190,11 @@ Program *BuiltIns::createBuiltInProgram( if (pBuiltInProgram) { std::unordered_map builtinsBuilders; builtinsBuilders["block_motion_estimate_intel"] = - &BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, context, device); + &device.getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, context, device); builtinsBuilders["block_advanced_motion_estimate_check_intel"] = - &BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, context, device); + &device.getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, context, device); builtinsBuilders["block_advanced_motion_estimate_bidirectional_check_intel"] = - &BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, context, device); + &device.getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, context, device); const cl_device_id clDevice = &device; errcodeRet = pBuiltInProgram->build( clDevice, diff --git a/runtime/built_ins/built_ins.h b/runtime/built_ins/built_ins.h index 17f5c81551..65a194583b 100644 --- a/runtime/built_ins/built_ins.h +++ b/runtime/built_ins/built_ins.h @@ -193,9 +193,9 @@ class BuiltIns { BuiltinDispatchInfoBuilder &getBuiltinDispatchInfoBuilder(EBuiltInOps op, Context &context, Device &device); std::unique_ptr setBuiltinDispatchInfoBuilder(EBuiltInOps op, Context &context, Device &device, std::unique_ptr newBuilder); + BuiltIns(); + virtual ~BuiltIns(); - static BuiltIns &getInstance(); - static void shutDown(); Program *createBuiltInProgram( Context &context, Device &device, @@ -220,12 +220,6 @@ class BuiltIns { } protected: - BuiltIns(); - virtual ~BuiltIns(); - - // singleton - static BuiltIns *pInstance; - // scheduler kernel BuiltInKernel schedulerBuiltIn; diff --git a/runtime/command_queue/command_queue.cpp b/runtime/command_queue/command_queue.cpp index 4161f25ed1..40eb4b1bc0 100644 --- a/runtime/command_queue/command_queue.cpp +++ b/runtime/command_queue/command_queue.cpp @@ -596,7 +596,7 @@ void CommandQueue::releaseIndirectHeap(IndirectHeap::Type heapType) { void CommandQueue::dispatchAuxTranslation(MultiDispatchInfo &multiDispatchInfo, BuffersForAuxTranslation &buffersForAuxTranslation, AuxTranslationDirection auxTranslationDirection) { - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::AuxTranslation, getContext(), getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::AuxTranslation, getContext(), getDevice()); BuiltinDispatchInfoBuilder::BuiltinOpParams dispatchParams; dispatchParams.buffersForAuxTranslation = &buffersForAuxTranslation; diff --git a/runtime/command_queue/enqueue_common.h b/runtime/command_queue/enqueue_common.h index bf162e54cd..0970c38be3 100644 --- a/runtime/command_queue/enqueue_common.h +++ b/runtime/command_queue/enqueue_common.h @@ -86,7 +86,7 @@ void CommandQueueHw::enqueueHandler(Surface *(&surfaces)[surfaceCount } else { BuffersForAuxTranslation buffersForAuxTranslation; if (kernel->isAuxTranslationRequired()) { - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::AuxTranslation, getContext(), getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::AuxTranslation, getContext(), getDevice()); builtInLock.takeOwnership(builder, this->context); kernel->fillWithBuffersForAuxTranslation(buffersForAuxTranslation); dispatchAuxTranslation(multiDispatchInfo, buffersForAuxTranslation, AuxTranslationDirection::AuxToNonAux); @@ -122,7 +122,7 @@ void CommandQueueHw::enqueueHandler(Surface *(&surfaces)[surfaceCount template void CommandQueueHw::forceDispatchScheduler(OCLRT::MultiDispatchInfo &multiDispatchInfo) { - BuiltIns &builtIns = BuiltIns::getInstance(); + BuiltIns &builtIns = getDevice().getBuiltIns(); SchedulerKernel &scheduler = builtIns.getSchedulerKernel(this->getContext()); DispatchInfo dispatchInfo(&scheduler, 1, Vec3(scheduler.getGws(), 1, 1), Vec3(scheduler.getLws(), 1, 1), Vec3(0, 0, 0)); @@ -299,7 +299,7 @@ void CommandQueueHw::enqueueHandler(Surface **surfacesForResidency, taskCount, hwTimeStamps); - BuiltIns &builtIns = BuiltIns::getInstance(); + BuiltIns &builtIns = getDevice().getBuiltIns(); SchedulerKernel &scheduler = builtIns.getSchedulerKernel(this->getContext()); scheduler.setArgs(devQueueHw->getQueueBuffer(), diff --git a/runtime/command_queue/enqueue_copy_buffer.h b/runtime/command_queue/enqueue_copy_buffer.h index 7916b7d368..56c6d45890 100644 --- a/runtime/command_queue/enqueue_copy_buffer.h +++ b/runtime/command_queue/enqueue_copy_buffer.h @@ -46,8 +46,8 @@ cl_int CommandQueueHw::enqueueCopyBuffer( MultiDispatchInfo dispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; diff --git a/runtime/command_queue/enqueue_copy_buffer_rect.h b/runtime/command_queue/enqueue_copy_buffer_rect.h index 9cdd694172..a51d21ed6a 100644 --- a/runtime/command_queue/enqueue_copy_buffer_rect.h +++ b/runtime/command_queue/enqueue_copy_buffer_rect.h @@ -48,8 +48,8 @@ cl_int CommandQueueHw::enqueueCopyBufferRect( MultiDispatchInfo dispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); MemObjSurface srcBufferSurf(srcBuffer); diff --git a/runtime/command_queue/enqueue_copy_buffer_to_image.h b/runtime/command_queue/enqueue_copy_buffer_to_image.h index b741557b15..d354b0959a 100644 --- a/runtime/command_queue/enqueue_copy_buffer_to_image.h +++ b/runtime/command_queue/enqueue_copy_buffer_to_image.h @@ -48,8 +48,8 @@ cl_int CommandQueueHw::enqueueCopyBufferToImage( MultiDispatchInfo di; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); MemObjSurface srcBufferSurf(srcBuffer); diff --git a/runtime/command_queue/enqueue_copy_image.h b/runtime/command_queue/enqueue_copy_image.h index dd69627cf8..d90cc99f7e 100644 --- a/runtime/command_queue/enqueue_copy_image.h +++ b/runtime/command_queue/enqueue_copy_image.h @@ -48,8 +48,8 @@ cl_int CommandQueueHw::enqueueCopyImage( MultiDispatchInfo di; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); MemObjSurface srcImgSurf(srcImage); diff --git a/runtime/command_queue/enqueue_copy_image_to_buffer.h b/runtime/command_queue/enqueue_copy_image_to_buffer.h index 55648d5aba..f34a90900c 100644 --- a/runtime/command_queue/enqueue_copy_image_to_buffer.h +++ b/runtime/command_queue/enqueue_copy_image_to_buffer.h @@ -48,8 +48,8 @@ cl_int CommandQueueHw::enqueueCopyImageToBuffer( MultiDispatchInfo di; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); MemObjSurface srcImgSurf(srcImage); diff --git a/runtime/command_queue/enqueue_fill_buffer.h b/runtime/command_queue/enqueue_fill_buffer.h index e2ad5eb2db..9ead6996de 100644 --- a/runtime/command_queue/enqueue_fill_buffer.h +++ b/runtime/command_queue/enqueue_fill_buffer.h @@ -61,8 +61,8 @@ cl_int CommandQueueHw::enqueueFillBuffer( MultiDispatchInfo dispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); diff --git a/runtime/command_queue/enqueue_fill_image.h b/runtime/command_queue/enqueue_fill_image.h index 38e709c85e..a33c9513dd 100644 --- a/runtime/command_queue/enqueue_fill_image.h +++ b/runtime/command_queue/enqueue_fill_image.h @@ -47,8 +47,8 @@ cl_int CommandQueueHw::enqueueFillImage( MultiDispatchInfo di; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillImage3d, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillImage3d, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); MemObjSurface dstImgSurf(image); diff --git a/runtime/command_queue/enqueue_read_buffer.h b/runtime/command_queue/enqueue_read_buffer.h index 07ce43bff0..1df82b3491 100644 --- a/runtime/command_queue/enqueue_read_buffer.h +++ b/runtime/command_queue/enqueue_read_buffer.h @@ -92,8 +92,8 @@ cl_int CommandQueueHw::enqueueReadBuffer( return CL_SUCCESS; } - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); void *dstPtr = ptr; diff --git a/runtime/command_queue/enqueue_read_buffer_rect.h b/runtime/command_queue/enqueue_read_buffer_rect.h index 34bc9a3f60..7cd4aa0c5d 100644 --- a/runtime/command_queue/enqueue_read_buffer_rect.h +++ b/runtime/command_queue/enqueue_read_buffer_rect.h @@ -77,8 +77,8 @@ cl_int CommandQueueHw::enqueueReadBufferRect( return CL_SUCCESS; } - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); size_t hostPtrSize = Buffer::calculateHostPtrSize(hostOrigin, region, hostRowPitch, hostSlicePitch); diff --git a/runtime/command_queue/enqueue_read_image.h b/runtime/command_queue/enqueue_read_image.h index 98cddf0df2..11f3079068 100644 --- a/runtime/command_queue/enqueue_read_image.h +++ b/runtime/command_queue/enqueue_read_image.h @@ -79,8 +79,8 @@ cl_int CommandQueueHw::enqueueReadImage( return CL_SUCCESS; } - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); diff --git a/runtime/command_queue/enqueue_svm.h b/runtime/command_queue/enqueue_svm.h index 6287129004..9039e770e1 100644 --- a/runtime/command_queue/enqueue_svm.h +++ b/runtime/command_queue/enqueue_svm.h @@ -191,8 +191,8 @@ cl_int CommandQueueHw::enqueueSVMMemcpy(cl_bool blockingCopy, MultiDispatchInfo dispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); @@ -259,8 +259,8 @@ cl_int CommandQueueHw::enqueueSVMMemFill(void *svmPtr, MultiDispatchInfo dispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); diff --git a/runtime/command_queue/enqueue_write_buffer.h b/runtime/command_queue/enqueue_write_buffer.h index e681b80a5e..6f645e1b9c 100644 --- a/runtime/command_queue/enqueue_write_buffer.h +++ b/runtime/command_queue/enqueue_write_buffer.h @@ -92,8 +92,8 @@ cl_int CommandQueueHw::enqueueWriteBuffer( return CL_SUCCESS; } - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); diff --git a/runtime/command_queue/enqueue_write_buffer_rect.h b/runtime/command_queue/enqueue_write_buffer_rect.h index bf90da875b..ad59ffa5ac 100644 --- a/runtime/command_queue/enqueue_write_buffer_rect.h +++ b/runtime/command_queue/enqueue_write_buffer_rect.h @@ -76,8 +76,8 @@ cl_int CommandQueueHw::enqueueWriteBufferRect( return CL_SUCCESS; } - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper builtInLock(builder, this->context); size_t hostPtrSize = Buffer::calculateHostPtrSize(hostOrigin, region, hostRowPitch, hostSlicePitch); diff --git a/runtime/command_queue/enqueue_write_image.h b/runtime/command_queue/enqueue_write_image.h index f398cf8fb5..a340fcd33e 100644 --- a/runtime/command_queue/enqueue_write_image.h +++ b/runtime/command_queue/enqueue_write_image.h @@ -76,8 +76,8 @@ cl_int CommandQueueHw::enqueueWriteImage( return CL_SUCCESS; } - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, - this->getContext(), this->getDevice()); + auto &builder = getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, + this->getContext(), this->getDevice()); BuiltInOwnershipWrapper lock(builder, this->context); diff --git a/runtime/command_queue/gpgpu_walker.h b/runtime/command_queue/gpgpu_walker.h index 09bdac2747..8c37754e0d 100644 --- a/runtime/command_queue/gpgpu_walker.h +++ b/runtime/command_queue/gpgpu_walker.h @@ -236,7 +236,7 @@ LinearStream &getCommandStream(CommandQueue &commandQueue, bool reserveProfiling expectedSizeCS += EnqueueOperation::getSizeRequiredCS(eventType, reserveProfilingCmdsSpace, reservePerfCounterCmdsSpace, commandQueue, dispatchInfo.getKernel()); } if (parentKernel) { - SchedulerKernel &scheduler = BuiltIns::getInstance().getSchedulerKernel(parentKernel->getContext()); + SchedulerKernel &scheduler = commandQueue.getDevice().getBuiltIns().getSchedulerKernel(parentKernel->getContext()); expectedSizeCS += EnqueueOperation::getSizeRequiredCS(eventType, reserveProfilingCmdsSpace, reservePerfCounterCmdsSpace, commandQueue, &scheduler); } return commandQueue.getCS(expectedSizeCS); diff --git a/runtime/command_stream/command_stream_receiver_hw.inl b/runtime/command_stream/command_stream_receiver_hw.inl index 46b9ba38d5..ffbef7b7a2 100644 --- a/runtime/command_stream/command_stream_receiver_hw.inl +++ b/runtime/command_stream/command_stream_receiver_hw.inl @@ -366,7 +366,7 @@ CompletionStamp CommandStreamReceiverHw::flushTask( if (dispatchFlags.preemptionMode == PreemptionMode::MidThread || device.isSourceLevelDebuggerActive()) { auto sipType = SipKernel::getSipKernelType(device.getHardwareInfo().pPlatform->eRenderCoreFamily, device.isSourceLevelDebuggerActive()); - makeResident(*BuiltIns::getInstance().getSipKernel(sipType, device).getSipAllocation()); + makeResident(*device.getBuiltIns().getSipKernel(sipType, device).getSipAllocation()); } if (experimentalCmdBuffer.get() != nullptr) { diff --git a/runtime/command_stream/preemption.inl b/runtime/command_stream/preemption.inl index 0409dd9988..2876d79cc0 100644 --- a/runtime/command_stream/preemption.inl +++ b/runtime/command_stream/preemption.inl @@ -90,7 +90,7 @@ void PreemptionHelper::programPreamble(LinearStream &preambleCmdStream, Device & auto sip = reinterpret_cast(preambleCmdStream.getSpace(sizeof(STATE_SIP))); sip->init(); auto sipType = SipKernel::getSipKernelType(device.getHardwareInfo().pPlatform->eRenderCoreFamily, sourceLevelDebuggerActive); - sip->setSystemInstructionPointer(BuiltIns::getInstance().getSipKernel(sipType, device).getSipAllocation()->getGpuAddressToPatch()); + sip->setSystemInstructionPointer(device.getBuiltIns().getSipKernel(sipType, device).getSipAllocation()->getGpuAddressToPatch()); } } diff --git a/runtime/device/device.cpp b/runtime/device/device.cpp index 1b0772883b..d2c6ba092b 100644 --- a/runtime/device/device.cpp +++ b/runtime/device/device.cpp @@ -97,7 +97,6 @@ Device::Device(const HardwareInfo &hwInfo, ExecutionEnvironment *executionEnviro } Device::~Device() { - BuiltIns::shutDown(); CompilerInterface::shutdown(); DEBUG_BREAK_IF(nullptr == executionEnvironment->memoryManager.get()); if (performanceCounters) { diff --git a/runtime/device/device.h b/runtime/device/device.h index eb2873c211..c3aeb97fbe 100644 --- a/runtime/device/device.h +++ b/runtime/device/device.h @@ -85,6 +85,8 @@ class Device : public BaseObject<_cl_device_id> { deviceInfo.force32BitAddressess = value; } + BuiltIns &getBuiltIns() const; + CommandStreamReceiver &getCommandStreamReceiver(); CommandStreamReceiver *peekCommandStreamReceiver(); @@ -195,7 +197,13 @@ inline volatile uint32_t *Device::getTagAddress() const { inline MemoryManager *Device::getMemoryManager() const { return executionEnvironment->memoryManager.get(); } + inline GmmHelper *Device::getGmmHelper() const { return executionEnvironment->getGmmHelper(); } + +inline BuiltIns &Device::getBuiltIns() const { + return *executionEnvironment->getBuiltIns(); +} + } // namespace OCLRT diff --git a/runtime/execution_environment/execution_environment.cpp b/runtime/execution_environment/execution_environment.cpp index 44865316ef..6903dd0bc7 100644 --- a/runtime/execution_environment/execution_environment.cpp +++ b/runtime/execution_environment/execution_environment.cpp @@ -29,6 +29,7 @@ #include "runtime/memory_manager/memory_manager.h" #include "runtime/os_interface/device_factory.h" #include "runtime/os_interface/os_interface.h" +#include "runtime/built_ins/built_ins.h" namespace OCLRT { ExecutionEnvironment::ExecutionEnvironment() = default; @@ -86,4 +87,13 @@ CompilerInterface *ExecutionEnvironment::getCompilerInterface() { } return this->compilerInterface.get(); } +BuiltIns *ExecutionEnvironment::getBuiltIns() { + if (this->builtins.get() == nullptr) { + std::lock_guard autolock(this->mtx); + if (this->builtins.get() == nullptr) { + this->builtins = std::make_unique(); + } + } + return this->builtins.get(); +} } // namespace OCLRT diff --git a/runtime/execution_environment/execution_environment.h b/runtime/execution_environment/execution_environment.h index f41da91227..f43750ab64 100644 --- a/runtime/execution_environment/execution_environment.h +++ b/runtime/execution_environment/execution_environment.h @@ -31,8 +31,10 @@ class CommandStreamReceiver; class MemoryManager; class SourceLevelDebugger; class CompilerInterface; +class BuiltIns; struct HardwareInfo; class OSInterface; + class ExecutionEnvironment : public ReferenceTrackedObject { private: std::mutex mtx; @@ -52,10 +54,12 @@ class ExecutionEnvironment : public ReferenceTrackedObject GmmHelper *getGmmHelper() const; MOCKABLE_VIRTUAL CompilerInterface *getCompilerInterface(); + BuiltIns *getBuiltIns(); std::unique_ptr osInterface; std::unique_ptr memoryManager; std::unique_ptr commandStreamReceiver; + std::unique_ptr builtins; std::unique_ptr compilerInterface; std::unique_ptr sourceLevelDebugger; }; diff --git a/runtime/helpers/built_ins_helper.cpp b/runtime/helpers/built_ins_helper.cpp index 7c2214c219..85eecee740 100644 --- a/runtime/helpers/built_ins_helper.cpp +++ b/runtime/helpers/built_ins_helper.cpp @@ -26,7 +26,7 @@ namespace OCLRT { const SipKernel &initSipKernel(SipKernelType type, Device &device) { - return BuiltIns::getInstance().getSipKernel(type, device); + return device.getBuiltIns().getSipKernel(type, device); } Program *createProgramForSip(ExecutionEnvironment &executionEnvironment, Context *context, diff --git a/runtime/helpers/kernel_commands.h b/runtime/helpers/kernel_commands.h index c8dc5a651c..cfaeacd642 100644 --- a/runtime/helpers/kernel_commands.h +++ b/runtime/helpers/kernel_commands.h @@ -145,7 +145,7 @@ struct KernelCommandsHelper : public PerThreadDataHelper { } if (heapType == IndirectHeap::INDIRECT_OBJECT || heapType == IndirectHeap::SURFACE_STATE) { - BuiltIns &builtIns = BuiltIns::getInstance(); + BuiltIns &builtIns = kernel.getDevice().getBuiltIns(); SchedulerKernel &scheduler = builtIns.getSchedulerKernel(kernel.getContext()); if (heapType == IndirectHeap::INDIRECT_OBJECT) { diff --git a/runtime/helpers/task_information.cpp b/runtime/helpers/task_information.cpp index f21e193d9a..b81b5242db 100644 --- a/runtime/helpers/task_information.cpp +++ b/runtime/helpers/task_information.cpp @@ -182,7 +182,7 @@ CompletionStamp &CommandComputeKernel::submit(uint32_t taskLevel, bool terminate uint32_t taskCount = commandStreamReceiver.peekTaskCount() + 1; devQueue->setupExecutionModelDispatch(*ssh, *dsh, kernel, kernelCount, taskCount, timestamp); - BuiltIns &builtIns = BuiltIns::getInstance(); + BuiltIns &builtIns = this->kernel->getDevice().getBuiltIns(); SchedulerKernel &scheduler = builtIns.getSchedulerKernel(commandQueue.getContext()); scheduler.setArgs(devQueue->getQueueBuffer(), diff --git a/runtime/kernel/kernel.h b/runtime/kernel/kernel.h index f21806b3e4..2a295588f5 100644 --- a/runtime/kernel/kernel.h +++ b/runtime/kernel/kernel.h @@ -202,7 +202,7 @@ class Kernel : public BaseObject<_cl_kernel> { return kernelInfo; } - const Device &getDevice() { + const Device &getDevice() const { return device; } diff --git a/runtime/program/program.cpp b/runtime/program/program.cpp index 5ab0b6298e..bd77c22d99 100644 --- a/runtime/program/program.cpp +++ b/runtime/program/program.cpp @@ -122,12 +122,12 @@ Program::~Program() { delete blockKernelManager; if (constantSurface) { - pDevice->getMemoryManager()->checkGpuUsageAndDestroyGraphicsAllocations(constantSurface); + this->executionEnvironment.memoryManager->checkGpuUsageAndDestroyGraphicsAllocations(constantSurface); constantSurface = nullptr; } if (globalSurface) { - pDevice->getMemoryManager()->checkGpuUsageAndDestroyGraphicsAllocations(globalSurface); + this->executionEnvironment.memoryManager->checkGpuUsageAndDestroyGraphicsAllocations(globalSurface); globalSurface = nullptr; } if (context && !isBuiltIn) { @@ -389,7 +389,7 @@ void Program::allocateBlockPrivateSurfaces() { if (privateSize > 0 && blockKernelManager->getPrivateSurface(i) == nullptr) { privateSize *= getDevice(0).getDeviceInfo().computeUnitsUsedForScratch * info->getMaxSimdSize(); - auto *privateSurface = getDevice(0).getMemoryManager()->allocateGraphicsMemoryInPreferredPool(true, nullptr, static_cast(privateSize), GraphicsAllocation::AllocationType::PRIVATE_SURFACE); + auto *privateSurface = this->executionEnvironment.memoryManager->allocateGraphicsMemoryInPreferredPool(true, nullptr, static_cast(privateSize), GraphicsAllocation::AllocationType::PRIVATE_SURFACE); blockKernelManager->pushPrivateSurface(privateSurface, i); } } @@ -405,12 +405,12 @@ void Program::freeBlockResources() { if (privateSurface != nullptr) { blockKernelManager->pushPrivateSurface(nullptr, i); - getDevice(0).getMemoryManager()->freeGraphicsMemory(privateSurface); + this->executionEnvironment.memoryManager->freeGraphicsMemory(privateSurface); } auto kernelInfo = blockKernelManager->getBlockKernelInfo(i); DEBUG_BREAK_IF(!kernelInfo->kernelAllocation); if (kernelInfo->kernelAllocation) { - getDevice(0).getMemoryManager()->freeGraphicsMemory(kernelInfo->kernelAllocation); + this->executionEnvironment.memoryManager->freeGraphicsMemory(kernelInfo->kernelAllocation); } } } @@ -418,7 +418,7 @@ void Program::freeBlockResources() { void Program::cleanCurrentKernelInfo() { for (auto &kernelInfo : kernelInfoArray) { if (kernelInfo->kernelAllocation) { - this->pDevice->getMemoryManager()->checkGpuUsageAndDestroyGraphicsAllocations(kernelInfo->kernelAllocation); + this->executionEnvironment.memoryManager->checkGpuUsageAndDestroyGraphicsAllocations(kernelInfo->kernelAllocation); } delete kernelInfo; } diff --git a/unit_tests/api/cl_create_program_with_built_in_kernels_tests.inl b/unit_tests/api/cl_create_program_with_built_in_kernels_tests.inl index 4dea372180..fb38cfe160 100644 --- a/unit_tests/api/cl_create_program_with_built_in_kernels_tests.inl +++ b/unit_tests/api/cl_create_program_with_built_in_kernels_tests.inl @@ -162,7 +162,7 @@ TEST_F(clCreateProgramWithBuiltInKernelsTests, vmeBlockMotionEstimateKernelHasCo auto pDev = castToObject(*devices); overwriteBuiltInBinaryName(pDev, "media_kernels_backend"); - BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, *pContext, *pDev); + pDev->getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockMotionEstimateIntel, *pContext, *pDev); restoreBuiltInBinaryName(pDev); overwriteBuiltInBinaryName(pDev, "media_kernels_frontend"); @@ -188,10 +188,9 @@ TEST_F(clCreateProgramWithBuiltInKernelsTests, vmeBlockMotionEstimateKernelHasCo EXPECT_EQ(6U, kernNeo->getKernelArgsNumber()); auto ctxNeo = castToObject(pContext); - auto &vmeBuilder = OCLRT::BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(OCLRT::EBuiltInOps::VmeBlockMotionEstimateIntel, *ctxNeo, *ctxNeo->getDevice(0)); + auto &vmeBuilder = pDev->getBuiltIns().getBuiltinDispatchInfoBuilder(OCLRT::EBuiltInOps::VmeBlockMotionEstimateIntel, *ctxNeo, *ctxNeo->getDevice(0)); EXPECT_EQ(&vmeBuilder, kernNeo->getKernelInfo().builtinDispatchBuilder); - OCLRT::BuiltIns::shutDown(); clReleaseKernel(kernel); clReleaseProgram(program); @@ -204,7 +203,7 @@ TEST_F(clCreateProgramWithBuiltInKernelsTests, vmeBlockAdvancedMotionEstimateChe auto pDev = castToObject(*devices); overwriteBuiltInBinaryName(pDev, "media_kernels_backend"); - BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, *pContext, *pDev); + pDev->getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, *pContext, *pDev); restoreBuiltInBinaryName(pDev); overwriteBuiltInBinaryName(pDev, "media_kernels_frontend"); @@ -230,10 +229,9 @@ TEST_F(clCreateProgramWithBuiltInKernelsTests, vmeBlockAdvancedMotionEstimateChe EXPECT_EQ(15U, kernNeo->getKernelArgsNumber()); auto ctxNeo = castToObject(pContext); - auto &vmeBuilder = OCLRT::BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(OCLRT::EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, *ctxNeo, *ctxNeo->getDevice(0)); + auto &vmeBuilder = pDev->getBuiltIns().getBuiltinDispatchInfoBuilder(OCLRT::EBuiltInOps::VmeBlockAdvancedMotionEstimateCheckIntel, *ctxNeo, *ctxNeo->getDevice(0)); EXPECT_EQ(&vmeBuilder, kernNeo->getKernelInfo().builtinDispatchBuilder); - OCLRT::BuiltIns::shutDown(); clReleaseKernel(kernel); clReleaseProgram(program); @@ -246,7 +244,7 @@ TEST_F(clCreateProgramWithBuiltInKernelsTests, vmeBlockAdvancedMotionEstimateBid auto pDev = castToObject(*devices); overwriteBuiltInBinaryName(pDev, "media_kernels_backend"); - BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, *pContext, *pDev); + pDev->getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, *pContext, *pDev); restoreBuiltInBinaryName(pDev); overwriteBuiltInBinaryName(pDev, "media_kernels_frontend"); @@ -272,10 +270,9 @@ TEST_F(clCreateProgramWithBuiltInKernelsTests, vmeBlockAdvancedMotionEstimateBid EXPECT_EQ(20U, kernNeo->getKernelArgsNumber()); auto ctxNeo = castToObject(pContext); - auto &vmeBuilder = OCLRT::BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(OCLRT::EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, *ctxNeo, *ctxNeo->getDevice(0)); + auto &vmeBuilder = pDev->getBuiltIns().getBuiltinDispatchInfoBuilder(OCLRT::EBuiltInOps::VmeBlockAdvancedMotionEstimateBidirectionalCheckIntel, *ctxNeo, *ctxNeo->getDevice(0)); EXPECT_EQ(&vmeBuilder, kernNeo->getKernelInfo().builtinDispatchBuilder); - OCLRT::BuiltIns::shutDown(); clReleaseKernel(kernel); clReleaseProgram(program); diff --git a/unit_tests/aub_tests/gen10/execution_model/enqueue_parent_kernel_tests_gen10.cpp b/unit_tests/aub_tests/gen10/execution_model/enqueue_parent_kernel_tests_gen10.cpp index f53e99113d..ba41bb3b8f 100644 --- a/unit_tests/aub_tests/gen10/execution_model/enqueue_parent_kernel_tests_gen10.cpp +++ b/unit_tests/aub_tests/gen10/execution_model/enqueue_parent_kernel_tests_gen10.cpp @@ -46,7 +46,7 @@ GEN10TEST_F(GEN10AUBParentKernelFixture, DISABLED_EnqueueParentKernel) { properties[0], retVal); - BuiltIns &builtIns = BuiltIns::getInstance(); + auto &builtIns = pDevice->getBuiltIns(); SchedulerKernel &scheduler = builtIns.getSchedulerKernel(pCmdQ->getContext()); // Aub execution takes huge time for bigger GWS scheduler.setGws(24); diff --git a/unit_tests/aub_tests/gen8/execution_model/enqueue_parent_kernel_tests_gen8.cpp b/unit_tests/aub_tests/gen8/execution_model/enqueue_parent_kernel_tests_gen8.cpp index ed9e32857d..17006d1d99 100644 --- a/unit_tests/aub_tests/gen8/execution_model/enqueue_parent_kernel_tests_gen8.cpp +++ b/unit_tests/aub_tests/gen8/execution_model/enqueue_parent_kernel_tests_gen8.cpp @@ -47,7 +47,7 @@ GEN8TEST_F(GEN8AUBParentKernelFixture, EnqueueParentKernel) { properties[0], retVal)); - BuiltIns &builtIns = BuiltIns::getInstance(); + auto &builtIns = pDevice->getBuiltIns(); SchedulerKernel &scheduler = builtIns.getSchedulerKernel(pCmdQ->getContext()); // Aub execution takes huge time for bigger GWS scheduler.setGws(24); diff --git a/unit_tests/aub_tests/gen9/execution_model/enqueue_parent_kernel_tests_gen9.cpp b/unit_tests/aub_tests/gen9/execution_model/enqueue_parent_kernel_tests_gen9.cpp index 851b6ee6fd..3ccc93c693 100644 --- a/unit_tests/aub_tests/gen9/execution_model/enqueue_parent_kernel_tests_gen9.cpp +++ b/unit_tests/aub_tests/gen9/execution_model/enqueue_parent_kernel_tests_gen9.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Intel Corporation + * Copyright (c) 2017 - 2018, Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -44,7 +44,7 @@ GEN9TEST_F(AUBParentKernelFixture, EnqueueParentKernel) { properties[0], retVal); - BuiltIns &builtIns = BuiltIns::getInstance(); + BuiltIns &builtIns = pDevice->getBuiltIns(); SchedulerKernel &scheduler = builtIns.getSchedulerKernel(pCmdQ->getContext()); // Aub execution takes huge time for bigger GWS scheduler.setGws(24); diff --git a/unit_tests/built_ins/built_in_tests.cpp b/unit_tests/built_ins/built_in_tests.cpp index 82fcfb0a17..ca8c07e9e3 100644 --- a/unit_tests/built_ins/built_in_tests.cpp +++ b/unit_tests/built_ins/built_in_tests.cpp @@ -45,6 +45,7 @@ #include "unit_tests/mocks/mock_builtins.h" #include "unit_tests/mocks/mock_compilers.h" #include "unit_tests/mocks/mock_kernel.h" +#include "unit_tests/utilities/base_object_utils.h" #include "os_inc.h" #include @@ -454,12 +455,12 @@ HWTEST_F(BuiltInTests, givenkAuxBuiltInWhenResizeIsCalledThenCloneAllNewInstance } HWTEST_F(BuiltInTests, givenKernelWithAuxTranslationRequiredWhenEnqueueCalledThenLockOnBuiltin) { - BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::AuxTranslation, *pContext, *pDevice); + pBuiltIns->getBuiltinDispatchInfoBuilder(EBuiltInOps::AuxTranslation, *pContext, *pDevice); auto mockAuxBuiltInOp = new MockAuxBuilInOp(*pBuiltIns, *pContext, *pDevice); pBuiltIns->BuiltinOpsBuilders[static_cast(EBuiltInOps::AuxTranslation)].first.reset(mockAuxBuiltInOp); - MockProgram mockProgram(*pDevice->getExecutionEnvironment()); - auto mockBuiltinKernel = MockKernel::create(*pDevice, &mockProgram); + auto mockProgram = wrapReleasableObjectWithUniquePtr(new MockProgram(*pDevice->getExecutionEnvironment())); + auto mockBuiltinKernel = MockKernel::create(*pDevice, mockProgram.get()); mockAuxBuiltInOp->usedKernels.at(0).reset(mockBuiltinKernel); MockKernelWithInternals mockKernel(*pDevice, pContext); @@ -654,7 +655,7 @@ HWTEST_F(BuiltInTests, getSchedulerKernelForSecondTimeDoesNotCreateNewKernel) { } TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderReturnFalseIfUnsupportedBuildType) { - auto &bs = BuiltIns::getInstance(); + auto &bs = pDevice->getBuiltIns(); BuiltinDispatchInfoBuilder bdib{bs}; MultiDispatchInfo multiDispatchInfo; BuiltinDispatchInfoBuilder::BuiltinOpParams params; @@ -666,20 +667,17 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderReturnFalseIfUnsupportedBuildType ret = bdib.buildDispatchInfos(multiDispatchInfo, nullptr, 0, OCLRT::Vec3{0, 0, 0}, OCLRT::Vec3{0, 0, 0}, OCLRT::Vec3{0, 0, 0}); EXPECT_FALSE(ret); EXPECT_EQ(0U, multiDispatchInfo.size()); - - bs.shutDown(); } TEST_F(BuiltInTests, GeivenDefaultBuiltinDispatchInfoBuilderWhendValidateDispatchIsCalledThenClSuccessIsReturned) { - auto &bs = BuiltIns::getInstance(); + auto &bs = pDevice->getBuiltIns(); BuiltinDispatchInfoBuilder bdib{bs}; auto ret = bdib.validateDispatch(nullptr, 1, Vec3{0, 0, 0}, Vec3{0, 0, 0}, Vec3{0, 0, 0}); EXPECT_EQ(CL_SUCCESS, ret); - bs.shutDown(); } TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderReturnTrueIfExplicitKernelArgNotTakenCareOfInBuiltinDispatchBInfoBuilder) { - auto &bs = BuiltIns::getInstance(); + auto &bs = pDevice->getBuiltIns(); BuiltinDispatchInfoBuilder bdib{bs}; MultiDispatchInfo multiDispatchInfo; BuiltinDispatchInfoBuilder::BuiltinOpParams params; @@ -1703,7 +1701,7 @@ TEST_F(BuiltInTests, createBuiltInProgramForInvalidBuiltinKernelName) { const char *kernelNames = "invalid_kernel"; cl_int retVal = CL_SUCCESS; - cl_program program = BuiltIns::getInstance().createBuiltInProgram( + cl_program program = pDevice->getBuiltIns().createBuiltInProgram( *pContext, *pDevice, kernelNames, @@ -1740,7 +1738,7 @@ TEST_F(BuiltInTests, getSipKernelReturnsProgramCreatedOutOfIsaAcquiredFromCompil } TEST_F(BuiltInTests, givenSipKernelWhenItIsCreatedThenItHasGraphicsAllocationForKernel) { - const SipKernel &sipKern = BuiltIns::getInstance().getSipKernel(SipKernelType::Csr, *pContext->getDevice(0)); + const SipKernel &sipKern = pDevice->getBuiltIns().getSipKernel(SipKernelType::Csr, *pContext->getDevice(0)); auto sipAllocation = sipKern.getSipAllocation(); EXPECT_NE(nullptr, sipAllocation); } diff --git a/unit_tests/built_ins/sip_tests.cpp b/unit_tests/built_ins/sip_tests.cpp index 42bbad55c6..6338664fdc 100644 --- a/unit_tests/built_ins/sip_tests.cpp +++ b/unit_tests/built_ins/sip_tests.cpp @@ -150,7 +150,7 @@ TEST(DebugSip, DISABLED_givenBuiltInsWhenDbgCsrSipIsRequestedThanCorrectSipKerne igcDebugVars.fileName = builtInGenFile; gEnvironment->igcPushDebugVars(igcDebugVars); - auto &builtins = BuiltIns::getInstance(); + auto &builtins = mockDevice->getBuiltIns(); auto &sipKernel = builtins.getSipKernel(SipKernelType::DbgCsr, *mockDevice); EXPECT_NE(nullptr, &sipKernel); diff --git a/unit_tests/command_queue/command_queue_hw_tests.cpp b/unit_tests/command_queue/command_queue_hw_tests.cpp index 887009f1be..e532b1bd95 100644 --- a/unit_tests/command_queue/command_queue_hw_tests.cpp +++ b/unit_tests/command_queue/command_queue_hw_tests.cpp @@ -762,12 +762,11 @@ HWTEST_F(CommandQueueHwTest, GivenBuiltinKernelWhenBuiltinDispatchInfoBuilderIsP CommandQueueHw *cmdQHw = static_cast *>(this->pCmdQ); MockKernelWithInternals mockKernelToUse(*pDevice); - MockBuilder builder(OCLRT::BuiltIns::getInstance()); + MockBuilder builder(pDevice->getBuiltIns()); builder.paramsToUse.gws.x = 11; builder.paramsToUse.elws.x = 13; builder.paramsToUse.offset.x = 17; builder.paramsToUse.kernel = mockKernelToUse.mockKernel; - OCLRT::BuiltIns::shutDown(); MockKernelWithInternals mockKernelToSend(*pDevice); mockKernelToSend.kernelInfo.builtinDispatchBuilder = &builder; diff --git a/unit_tests/command_queue/enqueue_copy_buffer_rect_tests.cpp b/unit_tests/command_queue/enqueue_copy_buffer_rect_tests.cpp index f5d094edbf..4e98019f08 100644 --- a/unit_tests/command_queue/enqueue_copy_buffer_rect_tests.cpp +++ b/unit_tests/command_queue/enqueue_copy_buffer_rect_tests.cpp @@ -171,8 +171,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueCopyBufferRectTest, 2D_addsIndirectData) { // Extract the kernel used MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; diff --git a/unit_tests/command_queue/enqueue_copy_buffer_tests.cpp b/unit_tests/command_queue/enqueue_copy_buffer_tests.cpp index ef099a8d9b..e4d7a2038d 100644 --- a/unit_tests/command_queue/enqueue_copy_buffer_tests.cpp +++ b/unit_tests/command_queue/enqueue_copy_buffer_tests.cpp @@ -144,8 +144,8 @@ HWTEST_F(EnqueueCopyBufferTest, addsIndirectData) { enqueueCopyBuffer(); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pDevice->getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -237,8 +237,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueCopyBufferTest, argumentZeroShouldMatchSource // Extract the kernel used MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pDevice->getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -264,8 +264,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueCopyBufferTest, argumentOneShouldMatchDestAdd // Extract the kernel used MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pDevice->getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; diff --git a/unit_tests/command_queue/enqueue_copy_buffer_to_image_tests.cpp b/unit_tests/command_queue/enqueue_copy_buffer_to_image_tests.cpp index 261a7841cf..a5dee900f0 100644 --- a/unit_tests/command_queue/enqueue_copy_buffer_to_image_tests.cpp +++ b/unit_tests/command_queue/enqueue_copy_buffer_to_image_tests.cpp @@ -201,17 +201,18 @@ typedef EnqueueCopyBufferToImageMipMapTest MipMapCopyBufferToImageTest; HWTEST_P(MipMapCopyBufferToImageTest, GivenImageWithMipLevelNonZeroWhenCopyBufferToImageIsCalledThenProperMipLevelIsSet) { auto image_type = (cl_mem_object_type)GetParam(); - auto &origBuilder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder( + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder( EBuiltInOps::CopyBufferToImage3d, pCmdQ->getContext(), pCmdQ->getDevice()); // substitute original builder with mock builder - auto oldBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto oldBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyBufferToImage3d, pCmdQ->getContext(), pCmdQ->getDevice(), - std::unique_ptr(new MockBuiltinDispatchInfoBuilder(BuiltIns::getInstance(), &origBuilder))); + std::unique_ptr(new MockBuiltinDispatchInfoBuilder(builtIns, &origBuilder))); cl_int retVal = CL_SUCCESS; cl_image_desc imageDesc = {}; @@ -262,15 +263,15 @@ HWTEST_P(MipMapCopyBufferToImageTest, GivenImageWithMipLevelNonZeroWhenCopyBuffe EXPECT_EQ(CL_SUCCESS, retVal); - auto &mockBuilder = static_cast(BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, - pCmdQ->getContext(), - pCmdQ->getDevice())); + auto &mockBuilder = static_cast(builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, + pCmdQ->getContext(), + pCmdQ->getDevice())); auto params = mockBuilder.getBuiltinOpParams(); EXPECT_EQ(expectedMipLevel, params->dstMipLevel); // restore original builder and retrieve mock builder - auto newBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto newBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyBufferToImage3d, pCmdQ->getContext(), pCmdQ->getDevice(), diff --git a/unit_tests/command_queue/enqueue_copy_image_tests.cpp b/unit_tests/command_queue/enqueue_copy_image_tests.cpp index 01b835b696..cc40a22cd5 100644 --- a/unit_tests/command_queue/enqueue_copy_image_tests.cpp +++ b/unit_tests/command_queue/enqueue_copy_image_tests.cpp @@ -211,16 +211,17 @@ typedef EnqueueCopyImageMipMapTest MipMapCopyImageTest; HWTEST_P(MipMapCopyImageTest, GivenImagesWithNonZeroMipLevelsWhenCopyImageIsCalledThenProperMipLevelsAreSet) { cl_mem_object_type srcImageType, dstImageType; std::tie(srcImageType, dstImageType) = GetParam(); - auto &origBuilder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder( + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder( EBuiltInOps::CopyImageToImage3d, pCmdQ->getContext(), pCmdQ->getDevice()); // substitute original builder with mock builder - auto oldBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto oldBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyImageToImage3d, pCmdQ->getContext(), pCmdQ->getDevice(), - std::unique_ptr(new MockBuiltinDispatchInfoBuilder(BuiltIns::getInstance(), &origBuilder))); + std::unique_ptr(new MockBuiltinDispatchInfoBuilder(builtIns, &origBuilder))); cl_int retVal = CL_SUCCESS; cl_image_desc srcImageDesc = {}; @@ -306,16 +307,16 @@ HWTEST_P(MipMapCopyImageTest, GivenImagesWithNonZeroMipLevelsWhenCopyImageIsCall EXPECT_EQ(CL_SUCCESS, retVal); - auto &mockBuilder = static_cast(BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, - pCmdQ->getContext(), - pCmdQ->getDevice())); + auto &mockBuilder = static_cast(builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, + pCmdQ->getContext(), + pCmdQ->getDevice())); auto params = mockBuilder.getBuiltinOpParams(); EXPECT_EQ(expectedSrcMipLevel, params->srcMipLevel); EXPECT_EQ(expectedDstMipLevel, params->dstMipLevel); // restore original builder and retrieve mock builder - auto newBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto newBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyImageToImage3d, pCmdQ->getContext(), pCmdQ->getDevice(), diff --git a/unit_tests/command_queue/enqueue_copy_image_to_buffer_tests.cpp b/unit_tests/command_queue/enqueue_copy_image_to_buffer_tests.cpp index e5591cf365..ad3017fedc 100644 --- a/unit_tests/command_queue/enqueue_copy_image_to_buffer_tests.cpp +++ b/unit_tests/command_queue/enqueue_copy_image_to_buffer_tests.cpp @@ -202,17 +202,18 @@ typedef EnqueueCopyImageToBufferMipMapTest MipMapCopyImageToBufferTest; HWTEST_P(MipMapCopyImageToBufferTest, GivenImageWithMipLevelNonZeroWhenCopyImageToBufferIsCalledThenProperMipLevelIsSet) { auto image_type = (cl_mem_object_type)GetParam(); - auto &origBuilder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder( + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder( EBuiltInOps::CopyImage3dToBuffer, pCmdQ->getContext(), pCmdQ->getDevice()); // substitute original builder with mock builder - auto oldBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto oldBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyImage3dToBuffer, pCmdQ->getContext(), pCmdQ->getDevice(), - std::unique_ptr(new MockBuiltinDispatchInfoBuilder(BuiltIns::getInstance(), &origBuilder))); + std::unique_ptr(new MockBuiltinDispatchInfoBuilder(builtIns, &origBuilder))); cl_int retVal = CL_SUCCESS; cl_image_desc imageDesc = {}; @@ -262,15 +263,15 @@ HWTEST_P(MipMapCopyImageToBufferTest, GivenImageWithMipLevelNonZeroWhenCopyImage EXPECT_EQ(CL_SUCCESS, retVal); - auto &mockBuilder = static_cast(BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, - pCmdQ->getContext(), - pCmdQ->getDevice())); + auto &mockBuilder = static_cast(builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, + pCmdQ->getContext(), + pCmdQ->getDevice())); auto params = mockBuilder.getBuiltinOpParams(); EXPECT_EQ(expectedMipLevel, params->srcMipLevel); // restore original builder and retrieve mock builder - auto newBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto newBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyImage3dToBuffer, pCmdQ->getContext(), pCmdQ->getDevice(), diff --git a/unit_tests/command_queue/enqueue_fill_buffer_tests.cpp b/unit_tests/command_queue/enqueue_fill_buffer_tests.cpp index 6e9c32a798..de6d6baf2e 100644 --- a/unit_tests/command_queue/enqueue_fill_buffer_tests.cpp +++ b/unit_tests/command_queue/enqueue_fill_buffer_tests.cpp @@ -105,8 +105,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, addsIndirectData) { EnqueueFillBufferHelper<>::enqueueFillBuffer(pCmdQ, buffer); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &builder = builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -136,8 +137,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, FillBufferRightLeftover) { EnqueueFillBufferHelper<>::enqueueFillBuffer(pCmdQ, buffer); MultiDispatchInfo mdi; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &builder = builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -162,8 +164,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, FillBufferMiddle) { EnqueueFillBufferHelper<>::enqueueFillBuffer(pCmdQ, buffer); MultiDispatchInfo mdi; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &builder = builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -188,8 +191,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, FillBufferLeftLeftover) { EnqueueFillBufferHelper<>::enqueueFillBuffer(pCmdQ, buffer); MultiDispatchInfo mdi; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &builder = builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -280,8 +284,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueFillBufferCmdTests, argumentZeroShouldMatchDe // Extract the kernel used MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &builder = builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -315,8 +320,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueFillBufferCmdTests, DISABLED_argumentOneShoul // Extract the kernel used MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &builder = builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -347,8 +353,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueFillBufferCmdTests, argumentTwoShouldMatchPat // Extract the kernel used MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &builder = builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; diff --git a/unit_tests/command_queue/enqueue_kernel_tests.cpp b/unit_tests/command_queue/enqueue_kernel_tests.cpp index 5be0e2d521..38ccc83630 100644 --- a/unit_tests/command_queue/enqueue_kernel_tests.cpp +++ b/unit_tests/command_queue/enqueue_kernel_tests.cpp @@ -902,7 +902,7 @@ TEST_F(EnqueueKernelTest, GivenKernelWithBuiltinDispatchInfoBuilderWhenBeingDisp mutable bool wasValidateDispatchCalled = false; }; - MockBuiltinDispatchBuilder mockNuiltinDispatchBuilder(BuiltIns::getInstance()); + MockBuiltinDispatchBuilder mockNuiltinDispatchBuilder(pCmdQ->getDevice().getBuiltIns()); MockKernelWithInternals mockKernel(*pDevice); mockKernel.kernelInfo.builtinDispatchBuilder = &mockNuiltinDispatchBuilder; @@ -938,8 +938,6 @@ TEST_F(EnqueueKernelTest, GivenKernelWithBuiltinDispatchInfoBuilderWhenBeingDisp EXPECT_EQ(lws[0], mockNuiltinDispatchBuilder.receivedElws.x); EXPECT_EQ(off[0], mockNuiltinDispatchBuilder.receivedOffset.x); EXPECT_EQ(dim, mockNuiltinDispatchBuilder.receivedWorkDim); - - BuiltIns::shutDown(); } HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueKernelTest, givenSecondEnqueueWithTheSameScratchRequirementWhenPreemptionIsEnabledThenDontProgramMVSAgain) { diff --git a/unit_tests/command_queue/enqueue_read_buffer_rect_tests.cpp b/unit_tests/command_queue/enqueue_read_buffer_rect_tests.cpp index 62f204eafa..ff11e03c9e 100644 --- a/unit_tests/command_queue/enqueue_read_buffer_rect_tests.cpp +++ b/unit_tests/command_queue/enqueue_read_buffer_rect_tests.cpp @@ -183,8 +183,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueReadBufferRectTest, 2D_addsIndirectData) { // Extract the kernel used MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; diff --git a/unit_tests/command_queue/enqueue_read_buffer_tests.cpp b/unit_tests/command_queue/enqueue_read_buffer_tests.cpp index 136c7b1169..d95535b293 100644 --- a/unit_tests/command_queue/enqueue_read_buffer_tests.cpp +++ b/unit_tests/command_queue/enqueue_read_buffer_tests.cpp @@ -148,8 +148,8 @@ HWTEST_F(EnqueueReadBufferTypeTest, addsIndirectData) { EnqueueReadBufferHelper<>::enqueueReadBuffer(pCmdQ, srcBuffer.get(), CL_TRUE); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; diff --git a/unit_tests/command_queue/enqueue_read_image_tests.cpp b/unit_tests/command_queue/enqueue_read_image_tests.cpp index 699c5c8084..d446acd95a 100644 --- a/unit_tests/command_queue/enqueue_read_image_tests.cpp +++ b/unit_tests/command_queue/enqueue_read_image_tests.cpp @@ -535,18 +535,20 @@ HWTEST_F(EnqueueReadImageTest, GivenNonZeroCopyImage2DAndImageShareTheSameStorag typedef EnqueueReadImageMipMapTest MipMapReadImageTest; HWTEST_P(MipMapReadImageTest, GivenImageWithMipLevelNonZeroWhenReadImageIsCalledThenProperMipLevelIsSet) { + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto image_type = (cl_mem_object_type)GetParam(); - auto &origBuilder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder( + auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder( EBuiltInOps::CopyImage3dToBuffer, pCmdQ->getContext(), pCmdQ->getDevice()); // substitute original builder with mock builder - auto oldBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto oldBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyImage3dToBuffer, pCmdQ->getContext(), pCmdQ->getDevice(), - std::unique_ptr(new MockBuiltinDispatchInfoBuilder(BuiltIns::getInstance(), &origBuilder))); + std::unique_ptr(new MockBuiltinDispatchInfoBuilder(builtIns, &origBuilder))); cl_int retVal = CL_SUCCESS; cl_image_desc imageDesc = {}; @@ -599,15 +601,15 @@ HWTEST_P(MipMapReadImageTest, GivenImageWithMipLevelNonZeroWhenReadImageIsCalled EXPECT_EQ(CL_SUCCESS, retVal); - auto &mockBuilder = static_cast(BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, - pCmdQ->getContext(), - pCmdQ->getDevice())); + auto &mockBuilder = static_cast(builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, + pCmdQ->getContext(), + pCmdQ->getDevice())); auto params = mockBuilder.getBuiltinOpParams(); EXPECT_EQ(expectedMipLevel, params->srcMipLevel); // restore original builder and retrieve mock builder - auto newBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto newBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyImage3dToBuffer, pCmdQ->getContext(), pCmdQ->getDevice(), diff --git a/unit_tests/command_queue/enqueue_svm_mem_copy_tests.cpp b/unit_tests/command_queue/enqueue_svm_mem_copy_tests.cpp index 6ac1eddf72..1e644a0fec 100644 --- a/unit_tests/command_queue/enqueue_svm_mem_copy_tests.cpp +++ b/unit_tests/command_queue/enqueue_svm_mem_copy_tests.cpp @@ -64,19 +64,21 @@ struct EnqueueSvmMemCopyTest : public DeviceFixture, }; HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSVMMemcpyWhenUsingCopyBufferToBufferBuilderThenItConfiguredWithBuiltinOpsAndProducesDispatchInfo) { + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + // retrieve original builder - auto &origBuilder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder( + auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder( EBuiltInOps::CopyBufferToBuffer, pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &origBuilder); // substitute original builder with mock builder - auto oldBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto oldBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyBufferToBuffer, pCmdQ->getContext(), pCmdQ->getDevice(), - std::unique_ptr(new MockBuiltinDispatchInfoBuilder(BuiltIns::getInstance(), &origBuilder))); + std::unique_ptr(new MockBuiltinDispatchInfoBuilder(builtIns, &origBuilder))); EXPECT_EQ(&origBuilder, oldBuilder.get()); // call enqueue on mock builder @@ -92,7 +94,7 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSVMMemcpyWhenUsingCopyBufferToBuffer EXPECT_EQ(CL_SUCCESS, retVal); // restore original builder and retrieve mock builder - auto newBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto newBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyBufferToBuffer, pCmdQ->getContext(), pCmdQ->getDevice(), @@ -100,7 +102,7 @@ HWTEST_F(EnqueueSvmMemCopyTest, givenEnqueueSVMMemcpyWhenUsingCopyBufferToBuffer EXPECT_NE(nullptr, newBuilder); // check if original builder is restored correctly - auto &restoredBuilder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder( + auto &restoredBuilder = builtIns.getBuiltinDispatchInfoBuilder( EBuiltInOps::CopyBufferToBuffer, pCmdQ->getContext(), pCmdQ->getDevice()); diff --git a/unit_tests/command_queue/enqueue_svm_mem_fill_tests.cpp b/unit_tests/command_queue/enqueue_svm_mem_fill_tests.cpp index f4279a284e..c7bf15d847 100644 --- a/unit_tests/command_queue/enqueue_svm_mem_fill_tests.cpp +++ b/unit_tests/command_queue/enqueue_svm_mem_fill_tests.cpp @@ -76,19 +76,21 @@ HWTEST_P(EnqueueSvmMemFillTest, givenEnqueueSVMMemFillWhenUsingFillBufferBuilder size_t patternSize; }; + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + // retrieve original builder - auto &origBuilder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder( + auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder( EBuiltInOps::FillBuffer, pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &origBuilder); // substitute original builder with mock builder - auto oldBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto oldBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::FillBuffer, pCmdQ->getContext(), pCmdQ->getDevice(), - std::unique_ptr(new MockFillBufferBuilder(BuiltIns::getInstance(), &origBuilder, pattern, patternSize))); + std::unique_ptr(new MockFillBufferBuilder(builtIns, &origBuilder, pattern, patternSize))); EXPECT_EQ(&origBuilder, oldBuilder.get()); // call enqueue on mock builder @@ -104,7 +106,7 @@ HWTEST_P(EnqueueSvmMemFillTest, givenEnqueueSVMMemFillWhenUsingFillBufferBuilder EXPECT_EQ(CL_SUCCESS, retVal); // restore original builder and retrieve mock builder - auto newBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto newBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::FillBuffer, pCmdQ->getContext(), pCmdQ->getDevice(), @@ -112,7 +114,7 @@ HWTEST_P(EnqueueSvmMemFillTest, givenEnqueueSVMMemFillWhenUsingFillBufferBuilder EXPECT_NE(nullptr, newBuilder); // check if original builder is restored correctly - auto &restoredBuilder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder( + auto &restoredBuilder = builtIns.getBuiltinDispatchInfoBuilder( EBuiltInOps::FillBuffer, pCmdQ->getContext(), pCmdQ->getDevice()); diff --git a/unit_tests/command_queue/enqueue_write_buffer_rect_tests.cpp b/unit_tests/command_queue/enqueue_write_buffer_rect_tests.cpp index 232bdcc92b..ea04a0ac7e 100644 --- a/unit_tests/command_queue/enqueue_write_buffer_rect_tests.cpp +++ b/unit_tests/command_queue/enqueue_write_buffer_rect_tests.cpp @@ -157,8 +157,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueWriteBufferRectTest, 2D_addsIndirectData) { enqueueWriteBufferRect2D(); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; diff --git a/unit_tests/command_queue/enqueue_write_buffer_tests.cpp b/unit_tests/command_queue/enqueue_write_buffer_tests.cpp index 875dd533e9..3d8df9d2c7 100644 --- a/unit_tests/command_queue/enqueue_write_buffer_tests.cpp +++ b/unit_tests/command_queue/enqueue_write_buffer_tests.cpp @@ -147,8 +147,8 @@ HWTEST_F(EnqueueWriteBufferTypeTest, addsIndirectData) { EnqueueWriteBufferHelper<>::enqueueWriteBuffer(pCmdQ, srcBuffer.get(), EnqueueWriteBufferTraits::blocking); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; diff --git a/unit_tests/command_queue/enqueue_write_image_tests.cpp b/unit_tests/command_queue/enqueue_write_image_tests.cpp index fbb8b71214..7e62f6c6e9 100644 --- a/unit_tests/command_queue/enqueue_write_image_tests.cpp +++ b/unit_tests/command_queue/enqueue_write_image_tests.cpp @@ -522,17 +522,18 @@ typedef EnqueueWriteImageMipMapTest MipMapWriteImageTest; HWTEST_P(MipMapWriteImageTest, GivenImageWithMipLevelNonZeroWhenReadImageIsCalledThenProperMipLevelIsSet) { auto image_type = (cl_mem_object_type)GetParam(); - auto &origBuilder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder( + auto &builtIns = pCmdQ->getDevice().getBuiltIns(); + auto &origBuilder = builtIns.getBuiltinDispatchInfoBuilder( EBuiltInOps::CopyBufferToImage3d, pCmdQ->getContext(), pCmdQ->getDevice()); // substitute original builder with mock builder - auto oldBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto oldBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyBufferToImage3d, pCmdQ->getContext(), pCmdQ->getDevice(), - std::unique_ptr(new MockBuiltinDispatchInfoBuilder(BuiltIns::getInstance(), &origBuilder))); + std::unique_ptr(new MockBuiltinDispatchInfoBuilder(builtIns, &origBuilder))); cl_int retVal = CL_SUCCESS; cl_image_desc imageDesc = {}; @@ -585,15 +586,15 @@ HWTEST_P(MipMapWriteImageTest, GivenImageWithMipLevelNonZeroWhenReadImageIsCalle EXPECT_EQ(CL_SUCCESS, retVal); - auto &mockBuilder = static_cast(BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, - pCmdQ->getContext(), - pCmdQ->getDevice())); + auto &mockBuilder = static_cast(builtIns.getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, + pCmdQ->getContext(), + pCmdQ->getDevice())); auto params = mockBuilder.getBuiltinOpParams(); EXPECT_EQ(expectedMipLevel, params->dstMipLevel); // restore original builder and retrieve mock builder - auto newBuilder = BuiltIns::getInstance().setBuiltinDispatchInfoBuilder( + auto newBuilder = builtIns.setBuiltinDispatchInfoBuilder( EBuiltInOps::CopyBufferToImage3d, pCmdQ->getContext(), pCmdQ->getDevice(), diff --git a/unit_tests/command_queue/get_size_required_buffer_tests.cpp b/unit_tests/command_queue/get_size_required_buffer_tests.cpp index c66c649ceb..ed52a08c16 100644 --- a/unit_tests/command_queue/get_size_required_buffer_tests.cpp +++ b/unit_tests/command_queue/get_size_required_buffer_tests.cpp @@ -91,8 +91,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, GetSizeRequiredBufferTest, enqueueFillBuffer) { EXPECT_EQ(CL_SUCCESS, retVal); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -143,8 +143,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, GetSizeRequiredBufferTest, enqueueCopyBuffer) { EXPECT_EQ(CL_SUCCESS, retVal); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -196,8 +196,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, GetSizeRequiredBufferTest, enqueueReadBufferNonBlock CL_FALSE); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -249,8 +249,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, GetSizeRequiredBufferTest, enqueueReadBufferBlocking CL_TRUE); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -302,8 +302,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, GetSizeRequiredBufferTest, enqueueWriteBufferNonBloc EXPECT_EQ(CL_SUCCESS, retVal); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -352,8 +352,8 @@ HWTEST_F(GetSizeRequiredBufferTest, enqueueWriteBufferBlocking) { EXPECT_EQ(CL_SUCCESS, retVal); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; diff --git a/unit_tests/command_queue/get_size_required_image_tests.cpp b/unit_tests/command_queue/get_size_required_image_tests.cpp index 36bd219d2e..1a0c504248 100644 --- a/unit_tests/command_queue/get_size_required_image_tests.cpp +++ b/unit_tests/command_queue/get_size_required_image_tests.cpp @@ -82,8 +82,8 @@ HWTEST_F(GetSizeRequiredImageTest, enqueueCopyImage) { EXPECT_EQ(CL_SUCCESS, retVal); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -185,8 +185,8 @@ HWTEST_F(GetSizeRequiredImageTest, enqueueReadImageNonBlocking) { EXPECT_EQ(CL_SUCCESS, retVal); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -239,8 +239,8 @@ HWTEST_F(GetSizeRequiredImageTest, enqueueReadImageBlocking) { EXPECT_EQ(CL_SUCCESS, retVal); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -293,8 +293,8 @@ HWTEST_F(GetSizeRequiredImageTest, enqueueWriteImageNonBlocking) { EXPECT_EQ(CL_SUCCESS, retVal); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -347,8 +347,8 @@ HWTEST_F(GetSizeRequiredImageTest, enqueueWriteImageBlocking) { EXPECT_EQ(CL_SUCCESS, retVal); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, - pCmdQ->getContext(), pCmdQ->getDevice()); + auto &builder = pCmdQ->getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, + pCmdQ->getContext(), pCmdQ->getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; diff --git a/unit_tests/command_stream/command_stream_receiver_flush_task_tests.cpp b/unit_tests/command_stream/command_stream_receiver_flush_task_tests.cpp index ba7d36e035..1a6dbd6c4a 100644 --- a/unit_tests/command_stream/command_stream_receiver_flush_task_tests.cpp +++ b/unit_tests/command_stream/command_stream_receiver_flush_task_tests.cpp @@ -203,7 +203,7 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenCsrInBatchingModeAndMidThread *pDevice); auto cmdBuffer = mockedSubmissionsAggregator->peekCommandBuffers().peekHead(); - auto sipAllocation = BuiltIns::getInstance().getSipKernel(SipKernelType::Csr, *pDevice).getSipAllocation(); + auto sipAllocation = pDevice->getBuiltIns().getSipKernel(SipKernelType::Csr, *pDevice).getSipAllocation(); bool found = false; for (auto allocation : cmdBuffer->surfaces) { if (allocation == sipAllocation) { @@ -233,7 +233,7 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenCsrInDefaultModeAndMidThreadP dispatchFlags, *pDevice); - auto sipAllocation = BuiltIns::getInstance().getSipKernel(SipKernelType::Csr, *pDevice).getSipAllocation(); + auto sipAllocation = pDevice->getBuiltIns().getSipKernel(SipKernelType::Csr, *pDevice).getSipAllocation(); bool found = false; for (auto allocation : mockCsr->copyOfAllocations) { if (allocation == sipAllocation) { @@ -995,7 +995,6 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, GivenBlockedKernelRequiringDCFlush EXPECT_EQ(true, pCmdWA->getDcFlushEnable()); buffer->release(); - BuiltIns::shutDown(); } HWTEST_F(CommandStreamReceiverFlushTaskTests, GivenBlockedKernelNotRequiringDCFlushWhenUnblockedThenDCFlushIsNotAdded) { @@ -1035,7 +1034,6 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, GivenBlockedKernelNotRequiringDCFl EXPECT_TRUE(pCmdWA->getDcFlushEnable()); buffer->release(); - BuiltIns::shutDown(); } HWTEST_F(CommandStreamReceiverFlushTaskTests, FlushTaskWithTaskCSPassedAsCommandStreamParam) { @@ -1220,8 +1218,6 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, TrackSentTagsWhenEventIsQueried) { EXPECT_EQ(1u, commandStreamReceiver.peekLatestSentTaskCount()); - BuiltIns::shutDown(); - retVal = clReleaseEvent(pEvent); retVal = clReleaseMemObject(buffer); } @@ -1319,7 +1315,6 @@ HWCMDTEST_F(IGFX_GEN8_CORE, CommandStreamReceiverFlushTaskTests, GivenFlushedCal EXPECT_TRUE(cmdPC->getDcFlushEnable()); } - BuiltIns::shutDown(); retVal = clReleaseEvent(event); retVal = clReleaseMemObject(buffer); } diff --git a/unit_tests/device/device_caps_tests.cpp b/unit_tests/device/device_caps_tests.cpp index 9f235c7c80..adf274ef96 100644 --- a/unit_tests/device/device_caps_tests.cpp +++ b/unit_tests/device/device_caps_tests.cpp @@ -241,20 +241,16 @@ TEST(Device_GetCaps, givenForcePreemptionModeDebugVariableWhenCreateDeviceThenSe TEST(Device_GetCaps, givenDeviceWithMidThreadPreemptionWhenDeviceIsCreatedThenSipKernelIsCreated) { DebugManagerStateRestore dbgRestorer; { - BuiltIns::shutDown(); - - std::unique_ptr mockBuiltins(new MockBuiltins); - EXPECT_EQ(nullptr, mockBuiltins->peekCurrentInstance()); - mockBuiltins->overrideGlobalBuiltins(); - EXPECT_EQ(mockBuiltins.get(), mockBuiltins->peekCurrentInstance()); - EXPECT_FALSE(mockBuiltins->getSipKernelCalled); + auto builtIns = new MockBuiltins(); + ASSERT_FALSE(builtIns->getSipKernelCalled); DebugManager.flags.ForcePreemptionMode.set((int32_t)PreemptionMode::MidThread); - auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(platformDevices[0])); - EXPECT_TRUE(mockBuiltins->getSipKernelCalled); - mockBuiltins->restoreGlobalBuiltins(); - //make sure to release builtins prior to device as they use device - mockBuiltins.reset(); + + auto executionEnvironment = new ExecutionEnvironment(); + executionEnvironment->builtins.reset(builtIns); + auto device = std::unique_ptr(MockDevice::createWithExecutionEnvironment(platformDevices[0], executionEnvironment)); + ASSERT_EQ(builtIns, &device->getBuiltIns()); + EXPECT_TRUE(builtIns->getSipKernelCalled); } } diff --git a/unit_tests/execution_environment/execution_environment_tests.cpp b/unit_tests/execution_environment/execution_environment_tests.cpp index c4d26652e2..3fd2b248f4 100644 --- a/unit_tests/execution_environment/execution_environment_tests.cpp +++ b/unit_tests/execution_environment/execution_environment_tests.cpp @@ -30,6 +30,7 @@ #include "test.h" #include "unit_tests/mocks/mock_csr.h" #include "runtime/compiler_interface/compiler_interface.h" +#include "runtime/built_ins/built_ins.h" #include "runtime/source_level_debugger/source_level_debugger.h" using namespace OCLRT; @@ -114,7 +115,7 @@ TEST(ExecutionEnvironment, givenExecutionEnvironmentWhenInitializeMemoryManagerI } auto destructorId = 0u; -static_assert(sizeof(ExecutionEnvironment) == sizeof(std::mutex) + (is64bit ? 72 : 40), "New members detected in ExecutionEnvironment, please ensure that destruction sequence of objects is correct"); +static_assert(sizeof(ExecutionEnvironment) == sizeof(std::mutex) + (is64bit ? 80 : 44), "New members detected in ExecutionEnvironment, please ensure that destruction sequence of objects is correct"); TEST(ExecutionEnvironment, givenExecutionEnvironmentWithVariousMembersWhenItIsDestroyedThenDeleteSequenceIsSpecified) { destructorId = 0u; @@ -122,37 +123,44 @@ TEST(ExecutionEnvironment, givenExecutionEnvironmentWithVariousMembersWhenItIsDe struct GmmHelperMock : public GmmHelper { using GmmHelper::GmmHelper; ~GmmHelperMock() override { - EXPECT_EQ(destructorId, 5u); + EXPECT_EQ(destructorId, 6u); destructorId++; } }; struct OsInterfaceMock : public OSInterface { ~OsInterfaceMock() override { - EXPECT_EQ(destructorId, 4u); + EXPECT_EQ(destructorId, 5u); destructorId++; } }; struct MemoryMangerMock : public OsAgnosticMemoryManager { ~MemoryMangerMock() override { - EXPECT_EQ(destructorId, 3u); + EXPECT_EQ(destructorId, 4u); destructorId++; } }; struct CommandStreamReceiverMock : public MockCommandStreamReceiver { ~CommandStreamReceiverMock() override { - EXPECT_EQ(destructorId, 2u); + EXPECT_EQ(destructorId, 3u); destructorId++; }; }; + struct BuiltinsMock : public BuiltIns { + ~BuiltinsMock() override { + EXPECT_EQ(destructorId, 2u); + destructorId++; + } + }; + struct CompilerInterfaceMock : public CompilerInterface { ~CompilerInterfaceMock() override { EXPECT_EQ(destructorId, 1u); destructorId++; - }; + } }; struct SourceLevelDebuggerMock : public SourceLevelDebugger { @@ -169,14 +177,15 @@ TEST(ExecutionEnvironment, givenExecutionEnvironmentWithVariousMembersWhenItIsDe std::unique_ptr executionEnvironment(new MockExecutionEnvironment); executionEnvironment->gmmHelper.reset(new GmmHelperMock(platformDevices[0])); + executionEnvironment->osInterface.reset(new OsInterfaceMock); executionEnvironment->memoryManager.reset(new MemoryMangerMock); executionEnvironment->commandStreamReceiver.reset(new CommandStreamReceiverMock); + executionEnvironment->builtins.reset(new BuiltinsMock()); executionEnvironment->compilerInterface.reset(new CompilerInterfaceMock()); executionEnvironment->sourceLevelDebugger.reset(new SourceLevelDebuggerMock); - executionEnvironment->osInterface.reset(new OsInterfaceMock); executionEnvironment.reset(nullptr); - EXPECT_EQ(6u, destructorId); + EXPECT_EQ(7u, destructorId); } TEST(ExecutionEnvironment, givenMultipleDevicesWhenTheyAreCreatedTheyAllReuseTheSameMemoryManagerAndCommandStreamReceiver) { diff --git a/unit_tests/execution_model/parent_kernel_dispatch_tests.cpp b/unit_tests/execution_model/parent_kernel_dispatch_tests.cpp index 1625101cca..e412994e08 100644 --- a/unit_tests/execution_model/parent_kernel_dispatch_tests.cpp +++ b/unit_tests/execution_model/parent_kernel_dispatch_tests.cpp @@ -223,7 +223,7 @@ HWTEST_F(ParentKernelCommandStreamFixture, GivenDispatchInfoWithParentKernelWhen size_t rest = MemoryConstants::pageSize - (numOfKernels * size); - SchedulerKernel &scheduler = BuiltIns::getInstance().getSchedulerKernel(*mockParentKernel->getContext()); + SchedulerKernel &scheduler = device->getBuiltIns().getSchedulerKernel(*mockParentKernel->getContext()); size_t schedulerSize = EnqueueOperation::getSizeRequiredCS(CL_COMMAND_NDRANGE_KERNEL, false, false, *pCmdQ, &scheduler); while (rest >= schedulerSize) { diff --git a/unit_tests/execution_model/scheduler_dispatch_tests.cpp b/unit_tests/execution_model/scheduler_dispatch_tests.cpp index 6be5994806..817dd9558a 100644 --- a/unit_tests/execution_model/scheduler_dispatch_tests.cpp +++ b/unit_tests/execution_model/scheduler_dispatch_tests.cpp @@ -59,7 +59,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, ExecutionModelSchedulerFixture, dispatchScheduler) { if (pDevice->getSupportedClVersion() >= 20) { DeviceQueueHw *pDevQueueHw = castToObject>(pDevQueue); - SchedulerKernel &scheduler = BuiltIns::getInstance().getSchedulerKernel(*context); + SchedulerKernel &scheduler = pDevice->getBuiltIns().getSchedulerKernel(*context); auto *executionModelDshAllocation = pDevQueueHw->getDshBuffer(); auto *dshHeap = pDevQueueHw->getIndirectHeap(IndirectHeap::DYNAMIC_STATE); @@ -183,7 +183,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, ExecutionModelSchedulerFixture, dispatchSchedulerDoe if (pDevice->getSupportedClVersion() >= 20) { DeviceQueueHw *pDevQueueHw = castToObject>(pDevQueue); - SchedulerKernel &scheduler = BuiltIns::getInstance().getSchedulerKernel(*context); + SchedulerKernel &scheduler = pDevice->getBuiltIns().getSchedulerKernel(*context); size_t minRequiredSizeForSchedulerSSH = KernelCommandsHelper::template getSizeRequiredForExecutionModel(*parentKernel); // Setup heaps in pCmdQ @@ -216,7 +216,7 @@ HWCMDTEST_F(IGFX_GEN8_CORE, ParentKernelCommandQueueFixture, dispatchSchedulerWi ASSERT_NE(nullptr, igilQueue); igilQueue->m_controls.m_SchedulerEarlyReturn = 1; - SchedulerKernel &scheduler = BuiltIns::getInstance().getSchedulerKernel(*context); + SchedulerKernel &scheduler = device->getBuiltIns().getSchedulerKernel(*context); size_t minRequiredSizeForSchedulerSSH = KernelCommandsHelper::getSizeRequiredSSH(scheduler); // Setup heaps in pCmdQ diff --git a/unit_tests/fixtures/built_in_fixture.cpp b/unit_tests/fixtures/built_in_fixture.cpp index 69db9a21ff..aca4d32721 100644 --- a/unit_tests/fixtures/built_in_fixture.cpp +++ b/unit_tests/fixtures/built_in_fixture.cpp @@ -20,6 +20,7 @@ * OTHER DEALINGS IN THE SOFTWARE. */ +#include "runtime/device/device.h" #include "runtime/built_ins/built_ins.h" #include "unit_tests/fixtures/built_in_fixture.h" #include "unit_tests/helpers/kernel_binary_helper.h" @@ -33,7 +34,7 @@ BuiltInFixture::BuiltInFixture() : pBuiltIns(nullptr) { void BuiltInFixture::SetUp(Device *pDevice) { // create an instance of the builtins - pBuiltIns = &BuiltIns::getInstance(); + pBuiltIns = &pDevice->getBuiltIns(); pBuiltIns->setCacheingEnableState(false); // set mock compiler to return expected kernel... @@ -52,5 +53,4 @@ void BuiltInFixture::TearDown() { gEnvironment->fclPopDebugVars(); CompilerInterface::shutdown(); - BuiltIns::shutDown(); } diff --git a/unit_tests/fixtures/execution_model_fixture.h b/unit_tests/fixtures/execution_model_fixture.h index 5604cb9343..ba03d7c54a 100644 --- a/unit_tests/fixtures/execution_model_fixture.h +++ b/unit_tests/fixtures/execution_model_fixture.h @@ -114,7 +114,6 @@ struct ParentKernelCommandQueueFixture : public CommandQueueHwFixture, } void TearDown() override { CommandQueueHwFixture::TearDown(); - BuiltIns::shutDown(); delete device; } MockDevice *device; diff --git a/unit_tests/gen10/test_preemption_gen10.cpp b/unit_tests/gen10/test_preemption_gen10.cpp index f2ec4b5a79..8d550effa3 100644 --- a/unit_tests/gen10/test_preemption_gen10.cpp +++ b/unit_tests/gen10/test_preemption_gen10.cpp @@ -101,7 +101,7 @@ GEN10TEST_F(Gen10PreemptionTests, whenMidThreadPreemptionIsAvailableThenPrograms auto stateSipCmd = hwParsePreamble.getCommand(); ASSERT_NE(nullptr, stateSipCmd); - EXPECT_EQ(BuiltIns::getInstance().getSipKernel(SipKernelType::Csr, *device).getSipAllocation()->getGpuAddressToPatch(), stateSipCmd->getSystemInstructionPointer()); + EXPECT_EQ(device->getBuiltIns().getSipKernel(SipKernelType::Csr, *device).getSipAllocation()->getGpuAddressToPatch(), stateSipCmd->getSystemInstructionPointer()); } GEN10TEST_F(Gen10ThreadGroupPreemptionEnqueueKernelTest, givenSecondEnqueueWithTheSamePreemptionRequestThenDontReprogram) { diff --git a/unit_tests/gen8/scheduler_dispatch_tests_gen8.cpp b/unit_tests/gen8/scheduler_dispatch_tests_gen8.cpp index 683a0ba0a8..95c0fd9059 100644 --- a/unit_tests/gen8/scheduler_dispatch_tests_gen8.cpp +++ b/unit_tests/gen8/scheduler_dispatch_tests_gen8.cpp @@ -43,7 +43,7 @@ BDWTEST_F(BdwSchedulerTest, givenCallToDispatchSchedulerWhenPipeControlWithCSSta if (pDevice->getSupportedClVersion() >= 20) { DeviceQueueHw *pDevQueueHw = castToObject>(pDevQueue); - SchedulerKernel &scheduler = BuiltIns::getInstance().getSchedulerKernel(*context); + SchedulerKernel &scheduler = pDevice->getBuiltIns().getSchedulerKernel(*context); size_t minRequiredSizeForSchedulerSSH = KernelCommandsHelper::template getSizeRequiredForExecutionModel(*parentKernel); diff --git a/unit_tests/gen9/command_stream_receiver_hw_tests_gen9.cpp b/unit_tests/gen9/command_stream_receiver_hw_tests_gen9.cpp index 0a5d858371..b06cc3835c 100644 --- a/unit_tests/gen9/command_stream_receiver_hw_tests_gen9.cpp +++ b/unit_tests/gen9/command_stream_receiver_hw_tests_gen9.cpp @@ -62,7 +62,7 @@ GEN9TEST_F(UltCommandStreamReceiverTest, givenNotSentPreambleAndMidThreadPreempt StackVec preemptionBuffer; preemptionBuffer.resize(cmdSizePreambleMidThread); LinearStream preambleStream(&*preemptionBuffer.begin(), preemptionBuffer.size()); - auto sipAllocation = BuiltIns::getInstance().getSipKernel(SipKernelType::Csr, *pDevice).getSipAllocation(); + auto sipAllocation = pDevice->getBuiltIns().getSipKernel(SipKernelType::Csr, *pDevice).getSipAllocation(); commandStreamReceiver.programPreamble(preambleStream, *pDevice, dispatchFlags, newL3Config); this->parseCommands(preambleStream); @@ -76,6 +76,7 @@ GEN9TEST_F(UltCommandStreamReceiverTest, givenNotSentPreambleAndMidThreadPreempt GEN9TEST_F(UltCommandStreamReceiverTest, givenNotSentPreambleAndKernelDebuggingActiveWhenPreambleIsProgrammedThenCorrectSipKernelGpuAddressIsProgrammed) { using STATE_SIP = typename FamilyType::STATE_SIP; + auto &builtIns = pDevice->getBuiltIns(); auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver(); commandStreamReceiver.isPreambleSent = false; size_t minCsrSize = pDevice->getHardwareInfo().pSysInfo->CsrSizeInMb * MemoryConstants::megaByte; @@ -92,10 +93,10 @@ GEN9TEST_F(UltCommandStreamReceiverTest, givenNotSentPreambleAndKernelDebuggingA StackVec preemptionBuffer; preemptionBuffer.resize(cmdSizePreambleMidThread); LinearStream preambleStream(&*preemptionBuffer.begin(), preemptionBuffer.size()); - auto dbgLocalSipAllocation = BuiltIns::getInstance().getSipKernel(SipKernelType::DbgCsrLocal, *pDevice).getSipAllocation(); - auto sipAllocation = BuiltIns::getInstance().getSipKernel(SipKernelType::Csr, *pDevice).getSipAllocation(); + auto dbgLocalSipAllocation = builtIns.getSipKernel(SipKernelType::DbgCsrLocal, *pDevice).getSipAllocation(); + auto sipAllocation = builtIns.getSipKernel(SipKernelType::Csr, *pDevice).getSipAllocation(); - ASSERT_NE(BuiltIns::getInstance().getSipKernel(SipKernelType::DbgCsrLocal, *pDevice).getType(), BuiltIns::getInstance().getSipKernel(SipKernelType::Csr, *pDevice).getType()); + ASSERT_NE(builtIns.getSipKernel(SipKernelType::DbgCsrLocal, *pDevice).getType(), builtIns.getSipKernel(SipKernelType::Csr, *pDevice).getType()); ASSERT_NE(dbgLocalSipAllocation, nullptr); ASSERT_NE(sipAllocation, nullptr); diff --git a/unit_tests/gen9/sip_tests_gen9.cpp b/unit_tests/gen9/sip_tests_gen9.cpp index e9bb15380b..33943b2941 100644 --- a/unit_tests/gen9/sip_tests_gen9.cpp +++ b/unit_tests/gen9/sip_tests_gen9.cpp @@ -49,7 +49,7 @@ GEN9TEST_F(gen9SipTests, DISABLED_givenDebugCsrSipKernelWithLocalMemoryWhenAsked igcDebugVars.fileName = builtInGenFile; gEnvironment->igcPushDebugVars(igcDebugVars); - auto &builtins = BuiltIns::getInstance(); + auto &builtins = mockDevice->getBuiltIns(); auto &sipKernel = builtins.getSipKernel(SipKernelType::DbgCsrLocal, *mockDevice); EXPECT_NE(nullptr, &sipKernel); diff --git a/unit_tests/gen9/test_preemption_gen9.cpp b/unit_tests/gen9/test_preemption_gen9.cpp index 024d10ba07..030e124e4e 100644 --- a/unit_tests/gen9/test_preemption_gen9.cpp +++ b/unit_tests/gen9/test_preemption_gen9.cpp @@ -101,7 +101,7 @@ GEN9TEST_F(Gen9PreemptionTests, whenMidThreadPreemptionIsAvailableThenProgramsPr auto stateSipCmd = hwParsePreamble.getCommand(); ASSERT_NE(nullptr, stateSipCmd); - EXPECT_EQ(BuiltIns::getInstance().getSipKernel(SipKernelType::Csr, *device).getSipAllocation()->getGpuAddressToPatch(), stateSipCmd->getSystemInstructionPointer()); + EXPECT_EQ(device->getBuiltIns().getSipKernel(SipKernelType::Csr, *device).getSipAllocation()->getGpuAddressToPatch(), stateSipCmd->getSystemInstructionPointer()); } GEN9TEST_F(Gen9ThreadGroupPreemptionEnqueueKernelTest, givenSecondEnqueueWithTheSamePreemptionRequestThenDontReprogramThreadGroupNoWa) { diff --git a/unit_tests/helpers/built_ins_helper.cpp b/unit_tests/helpers/built_ins_helper.cpp index a0a1a6edd1..30f532ffb4 100644 --- a/unit_tests/helpers/built_ins_helper.cpp +++ b/unit_tests/helpers/built_ins_helper.cpp @@ -33,7 +33,7 @@ const SipKernel &initSipKernel(SipKernelType type, Device &device) { device.getExecutionEnvironment()->compilerInterface.reset(mockCompilerInterface); mockCompilerInterface->sipKernelBinaryOverride = mockCompilerInterface->getDummyGenBinary(); - return BuiltIns::getInstance().getSipKernel(type, device); + return device.getBuiltIns().getSipKernel(type, device); } Program *createProgramForSip(ExecutionEnvironment &executionEnvironment, Context *context, diff --git a/unit_tests/helpers/kernel_commands_tests.cpp b/unit_tests/helpers/kernel_commands_tests.cpp index e0283e2b30..aeb2f6e6dd 100644 --- a/unit_tests/helpers/kernel_commands_tests.cpp +++ b/unit_tests/helpers/kernel_commands_tests.cpp @@ -80,8 +80,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelCommandsTest, programInterfaceDescriptorDataRe ASSERT_NE(nullptr, dstImage.get()); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, - cmdQ.getContext(), cmdQ.getDevice()); + auto &builder = pDevice->getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, + cmdQ.getContext(), cmdQ.getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -152,8 +152,8 @@ HWTEST_F(KernelCommandsTest, sendCrossThreadDataResourceUsage) { ASSERT_NE(nullptr, dstImage.get()); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, - cmdQ.getContext(), cmdQ.getDevice()); + auto &builder = pDevice->getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, + cmdQ.getContext(), cmdQ.getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -280,8 +280,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelCommandsTest, sendIndirectStateResourceUsage) ASSERT_NE(nullptr, dstImage.get()); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, - cmdQ.getContext(), cmdQ.getDevice()); + auto &builder = pDevice->getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, + cmdQ.getContext(), cmdQ.getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -459,8 +459,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelCommandsTest, whenSendingIndirectStateThenKern std::unique_ptr img(Image2dHelper<>::create(pContext)); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, - cmdQ.getContext(), cmdQ.getDevice()); + auto &builder = cmdQ.getDevice().getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d, + cmdQ.getContext(), cmdQ.getDevice()); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; dc.srcMemObj = img.get(); @@ -528,8 +528,8 @@ HWCMDTEST_F(IGFX_GEN8_CORE, KernelCommandsTest, usedBindingTableStatePointer) { ASSERT_NE(nullptr, dstImage.get()); MultiDispatchInfo multiDispatchInfo; - auto &builder = BuiltIns::getInstance().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, - cmdQ.getContext(), cmdQ.getDevice()); + auto &builder = pDevice->getBuiltIns().getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d, + cmdQ.getContext(), cmdQ.getDevice()); ASSERT_NE(nullptr, &builder); BuiltinDispatchInfoBuilder::BuiltinOpParams dc; @@ -1038,7 +1038,7 @@ HWTEST_P(ParentKernelCommandsFromBinaryTest, getSizeRequiredForExecutionModelFor totalSize += maxBindingTableCount * sizeof(BINDING_TABLE_STATE) * DeviceQueue::interfaceDescriptorEntries; - BuiltIns &builtIns = BuiltIns::getInstance(); + BuiltIns &builtIns = pDevice->getBuiltIns(); auto &scheduler = builtIns.getSchedulerKernel(*pContext); auto schedulerSshSize = scheduler.getSurfaceStateHeapSize(); totalSize += schedulerSshSize + ((schedulerSshSize != 0) ? BINDING_TABLE_STATE::SURFACESTATEPOINTER_ALIGN_SIZE : 0); @@ -1055,7 +1055,7 @@ HWTEST_P(ParentKernelCommandsFromBinaryTest, getSizeRequiredForExecutionModelFor if (std::string(pPlatform->getDevice(0)->getDeviceInfo().clVersion).find("OpenCL 2.") != std::string::npos) { EXPECT_TRUE(pKernel->isParentKernel); - BuiltIns &builtIns = BuiltIns::getInstance(); + BuiltIns &builtIns = pDevice->getBuiltIns(); auto &scheduler = builtIns.getSchedulerKernel(*pContext); size_t totalSize = KernelCommandsHelper::getSizeRequiredIOH(scheduler); diff --git a/unit_tests/kernel/kernel_tests.cpp b/unit_tests/kernel/kernel_tests.cpp index 4f843a0822..3d046fb4b6 100644 --- a/unit_tests/kernel/kernel_tests.cpp +++ b/unit_tests/kernel/kernel_tests.cpp @@ -2157,12 +2157,12 @@ TEST(KernelTest, setKernelArgUsesBuiltinDispatchInfoBuilderIfAvailable) { mutable std::vector> receivedArgs; }; - auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(platformDevices[0])); + auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(platformDevices[0])); MockKernelWithInternals kernel(*device); kernel.kernelInfo.resizeKernelArgInfoAndRegisterParameter(1); kernel.mockKernel->initialize(); - MockBuiltinDispatchBuilder mockBuilder(BuiltIns::getInstance()); + MockBuiltinDispatchBuilder mockBuilder(device->getBuiltIns()); kernel.kernelInfo.builtinDispatchBuilder = &mockBuilder; mockBuilder.valueToReturn = false; @@ -2207,8 +2207,6 @@ TEST(KernelTest, setKernelArgUsesBuiltinDispatchInfoBuilderIfAvailable) { EXPECT_EQ(29U, std::get<0>(mockBuilder.receivedArgs[3])); EXPECT_EQ(31U, std::get<1>(mockBuilder.receivedArgs[3])); EXPECT_EQ(reinterpret_cast(37), std::get<2>(mockBuilder.receivedArgs[3])); - - BuiltIns::shutDown(); } TEST(KernelTest, givenKernelWhenDebugFlagToUseMaxSimdForCalculationsIsUsedThenMaxWorkgroupSizeIsSimdSizeDependant) { DebugManagerStateRestore dbgStateRestore; diff --git a/unit_tests/mem_obj/image_tests.cpp b/unit_tests/mem_obj/image_tests.cpp index 34c2c75ac2..fbec5899ea 100644 --- a/unit_tests/mem_obj/image_tests.cpp +++ b/unit_tests/mem_obj/image_tests.cpp @@ -85,7 +85,6 @@ class CreateImageTest : public DeviceFixture, } void TearDown() override { - BuiltIns::shutDown(); CommandQueueFixture::TearDown(); DeviceFixture::TearDown(); } diff --git a/unit_tests/mocks/mock_builtins.h b/unit_tests/mocks/mock_builtins.h index 5ce4db3a0b..2fa26726f0 100644 --- a/unit_tests/mocks/mock_builtins.h +++ b/unit_tests/mocks/mock_builtins.h @@ -30,29 +30,6 @@ class MockBuiltins : public OCLRT::BuiltIns { public: - MockBuiltins() { - originalGlobalBuiltins = this; - } - - ~MockBuiltins() override { - if (originalGlobalBuiltins != this) { - BuiltIns::pInstance = originalGlobalBuiltins; - } - } - - void overrideGlobalBuiltins() { - originalGlobalBuiltins = BuiltIns::pInstance; - BuiltIns::pInstance = this; - } - - void restoreGlobalBuiltins() { - BuiltIns::pInstance = originalGlobalBuiltins; - } - - static BuiltIns *peekCurrentInstance() { - return BuiltIns::pInstance; - } - const OCLRT::SipKernel &getSipKernel(OCLRT::SipKernelType type, OCLRT::Device &device) override { if (sipKernelsOverride.find(type) != sipKernelsOverride.end()) { return *sipKernelsOverride[type]; diff --git a/unit_tests/mocks/mock_device.h b/unit_tests/mocks/mock_device.h index 70dd6c85aa..b32fa634d0 100644 --- a/unit_tests/mocks/mock_device.h +++ b/unit_tests/mocks/mock_device.h @@ -102,14 +102,18 @@ class MockDevice : public Device { } template - static T *createWithNewExecutionEnvironment(const HardwareInfo *pHwInfo) { - auto executionEnvironment = new ExecutionEnvironment; + static T *createWithExecutionEnvironment(const HardwareInfo *pHwInfo, ExecutionEnvironment *executionEnvironment) { pHwInfo = getDeviceInitHwInfo(pHwInfo); T *device = new T(*pHwInfo, executionEnvironment); executionEnvironment->memoryManager = std::move(device->mockMemoryManager); return createDeviceInternals(pHwInfo, device); } + template + static T *createWithNewExecutionEnvironment(const HardwareInfo *pHwInfo) { + return createWithExecutionEnvironment(pHwInfo, new ExecutionEnvironment()); + } + void allocatePreemptionAllocationIfNotPresent() { if (this->preemptionAllocation == nullptr) { if (preemptionMode == PreemptionMode::MidThread || isSourceLevelDebuggerActive()) { diff --git a/unit_tests/preemption/preemption_tests.cpp b/unit_tests/preemption/preemption_tests.cpp index 41eb863ef6..f9fabec249 100644 --- a/unit_tests/preemption/preemption_tests.cpp +++ b/unit_tests/preemption/preemption_tests.cpp @@ -320,9 +320,10 @@ HWTEST_P(PreemptionHwTest, getRequiredCmdStreamSizeReturns0WhenPreemptionModeIsN auto mockDevice = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(nullptr)); { - MockBuiltins tmpBuiltins; - tmpBuiltins.overrideSipKernel(std::unique_ptr(new OCLRT::SipKernel{SipKernelType::Csr, GlobalMockSipProgram::getSipProgramWithCustomBinary()})); - tmpBuiltins.overrideGlobalBuiltins(); + auto builtIns = new MockBuiltins(); + + builtIns->overrideSipKernel(std::unique_ptr(new OCLRT::SipKernel{SipKernelType::Csr, GlobalMockSipProgram::getSipProgramWithCustomBinary()})); + mockDevice->getExecutionEnvironment()->builtins.reset(builtIns); PreemptionHelper::programCmdStream(cmdStream, mode, mode, nullptr, *mockDevice); } diff --git a/unit_tests/program/program_from_binary.h b/unit_tests/program/program_from_binary.h index 9ffeb1e387..7702c4172c 100644 --- a/unit_tests/program/program_from_binary.h +++ b/unit_tests/program/program_from_binary.h @@ -64,7 +64,6 @@ class ProgramFromBinaryTest : public DeviceFixture, } void TearDown() override { - BuiltIns::shutDown(); deleteDataReadFromFile(knownSource); ProgramFixture::TearDown(); ContextFixture::TearDown(); diff --git a/unit_tests/source_level_debugger/source_level_debugger_csr_tests.cpp b/unit_tests/source_level_debugger/source_level_debugger_csr_tests.cpp index 618b81ced5..786d579691 100644 --- a/unit_tests/source_level_debugger/source_level_debugger_csr_tests.cpp +++ b/unit_tests/source_level_debugger/source_level_debugger_csr_tests.cpp @@ -61,7 +61,7 @@ HWTEST_F(CommandStreamReceiverWithActiveDebuggerTest, givenCsrWithActiveDebugger *device); auto sipType = SipKernel::getSipKernelType(device->getHardwareInfo().pPlatform->eRenderCoreFamily, true); - auto sipAllocation = BuiltIns::getInstance().getSipKernel(sipType, *device.get()).getSipAllocation(); + auto sipAllocation = device->getBuiltIns().getSipKernel(sipType, *device.get()).getSipAllocation(); bool found = false; for (auto allocation : mockCsr->copyOfAllocations) { if (allocation == sipAllocation) { diff --git a/unit_tests/source_level_debugger/source_level_debugger_device_tests.cpp b/unit_tests/source_level_debugger/source_level_debugger_device_tests.cpp index 57e8b3f786..e21f92d9d7 100644 --- a/unit_tests/source_level_debugger/source_level_debugger_device_tests.cpp +++ b/unit_tests/source_level_debugger/source_level_debugger_device_tests.cpp @@ -52,52 +52,39 @@ class MockDeviceWithDebuggerActive : public MockDevice { }; TEST(DeviceCreation, givenDeviceWithMidThreadPreemptionAndDebuggingActiveWhenDeviceIsCreatedThenCorrectSipKernelIsCreated) { - DebugManagerStateRestore dbgRestorer; { - BuiltIns::shutDown(); - - std::unique_ptr mockBuiltins(new MockBuiltins); - EXPECT_EQ(nullptr, mockBuiltins->peekCurrentInstance()); - mockBuiltins->overrideGlobalBuiltins(); - EXPECT_EQ(mockBuiltins.get(), mockBuiltins->peekCurrentInstance()); - EXPECT_FALSE(mockBuiltins->getSipKernelCalled); + auto builtIns = new MockBuiltins(); + ASSERT_FALSE(builtIns->getSipKernelCalled); DebugManager.flags.ForcePreemptionMode.set((int32_t)PreemptionMode::MidThread); auto exeEnv = new ExecutionEnvironment; exeEnv->sourceLevelDebugger.reset(new SourceLevelDebugger(new MockOsLibrary)); + exeEnv->builtins.reset(builtIns); auto device = std::unique_ptr(MockDevice::create(nullptr, exeEnv)); - EXPECT_TRUE(mockBuiltins->getSipKernelCalled); - EXPECT_LE(SipKernelType::DbgCsr, mockBuiltins->getSipKernelType); - mockBuiltins->restoreGlobalBuiltins(); - //make sure to release builtins prior to device as they use device - mockBuiltins.reset(); + ASSERT_EQ(builtIns, &device->getBuiltIns()); + EXPECT_TRUE(builtIns->getSipKernelCalled); + EXPECT_LE(SipKernelType::DbgCsr, builtIns->getSipKernelType); } } TEST(DeviceCreation, givenDeviceWithDisabledPreemptionAndDebuggingActiveWhenDeviceIsCreatedThenCorrectSipKernelIsCreated) { - DebugManagerStateRestore dbgRestorer; { - BuiltIns::shutDown(); - - std::unique_ptr mockBuiltins(new MockBuiltins); - EXPECT_EQ(nullptr, mockBuiltins->peekCurrentInstance()); - mockBuiltins->overrideGlobalBuiltins(); - EXPECT_EQ(mockBuiltins.get(), mockBuiltins->peekCurrentInstance()); - EXPECT_FALSE(mockBuiltins->getSipKernelCalled); + auto builtIns = new MockBuiltins(); + ASSERT_FALSE(builtIns->getSipKernelCalled); DebugManager.flags.ForcePreemptionMode.set((int32_t)PreemptionMode::Disabled); + auto exeEnv = new ExecutionEnvironment; exeEnv->sourceLevelDebugger.reset(new SourceLevelDebugger(new MockOsLibrary)); + exeEnv->builtins.reset(builtIns); auto device = std::unique_ptr(MockDevice::create(nullptr, exeEnv)); - EXPECT_TRUE(mockBuiltins->getSipKernelCalled); - EXPECT_LE(SipKernelType::DbgCsr, mockBuiltins->getSipKernelType); - mockBuiltins->restoreGlobalBuiltins(); - //make sure to release builtins prior to device as they use device - mockBuiltins.reset(); + ASSERT_EQ(builtIns, &device->getBuiltIns()); + EXPECT_TRUE(builtIns->getSipKernelCalled); + EXPECT_LE(SipKernelType::DbgCsr, builtIns->getSipKernelType); } } diff --git a/unit_tests/source_level_debugger/source_level_debugger_preamble_test.inl b/unit_tests/source_level_debugger/source_level_debugger_preamble_test.inl index 38939d1090..6c3847f785 100644 --- a/unit_tests/source_level_debugger/source_level_debugger_preamble_test.inl +++ b/unit_tests/source_level_debugger/source_level_debugger_preamble_test.inl @@ -48,7 +48,7 @@ void SourceLevelDebuggerPreambleTest::givenMidThreadPreemptionAndDebu auto sipAddress = stateSipCmd->getSystemInstructionPointer(); auto sipType = SipKernel::getSipKernelType(mockDevice->getHardwareInfo().pPlatform->eRenderCoreFamily, mockDevice->isSourceLevelDebuggerActive()); - EXPECT_EQ(BuiltIns::getInstance().getSipKernel(sipType, *mockDevice).getSipAllocation()->getGpuAddressToPatch(), sipAddress); + EXPECT_EQ(mockDevice->getBuiltIns().getSipKernel(sipType, *mockDevice).getSipAllocation()->getGpuAddressToPatch(), sipAddress); } template @@ -77,7 +77,7 @@ void SourceLevelDebuggerPreambleTest::givenMidThreadPreemptionAndDisa auto sipAddress = stateSipCmd->getSystemInstructionPointer(); auto sipType = SipKernel::getSipKernelType(mockDevice->getHardwareInfo().pPlatform->eRenderCoreFamily, mockDevice->isSourceLevelDebuggerActive()); - EXPECT_EQ(BuiltIns::getInstance().getSipKernel(sipType, *mockDevice).getSipAllocation()->getGpuAddressToPatch(), sipAddress); + EXPECT_EQ(mockDevice->getBuiltIns().getSipKernel(sipType, *mockDevice).getSipAllocation()->getGpuAddressToPatch(), sipAddress); } template @@ -106,7 +106,7 @@ void SourceLevelDebuggerPreambleTest::givenPreemptionDisabledAndDebug auto sipAddress = stateSipCmd->getSystemInstructionPointer(); auto sipType = SipKernel::getSipKernelType(mockDevice->getHardwareInfo().pPlatform->eRenderCoreFamily, mockDevice->isSourceLevelDebuggerActive()); - EXPECT_EQ(BuiltIns::getInstance().getSipKernel(sipType, *mockDevice).getSipAllocation()->getGpuAddressToPatch(), sipAddress); + EXPECT_EQ(mockDevice->getBuiltIns().getSipKernel(sipType, *mockDevice).getSipAllocation()->getGpuAddressToPatch(), sipAddress); } template