/* * Copyright (C) 2018-2019 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "runtime/aub/aub_center.h" #include "runtime/command_stream/aub_command_stream_receiver.h" #include "runtime/command_stream/command_stream_receiver_with_aub_dump.h" #include "runtime/execution_environment/execution_environment.h" namespace OCLRT { extern CommandStreamReceiverCreateFunc commandStreamReceiverFactory[2 * IGFX_MAX_CORE]; template CommandStreamReceiverWithAUBDump::CommandStreamReceiverWithAUBDump(const std::string &baseName, ExecutionEnvironment &executionEnvironment) : BaseCSR(executionEnvironment) { bool isAubManager = executionEnvironment.aubCenter && executionEnvironment.aubCenter->getAubManager(); bool isTbxMode = CommandStreamReceiverType::CSR_TBX == BaseCSR::getType(); bool createAubCsr = (isAubManager && isTbxMode) ? false : true; if (createAubCsr) { aubCSR.reset(AUBCommandStreamReceiver::create(baseName, false, executionEnvironment)); } } template FlushStamp CommandStreamReceiverWithAUBDump::flush(BatchBuffer &batchBuffer, ResidencyContainer &allocationsForResidency) { if (aubCSR) { aubCSR->flush(batchBuffer, allocationsForResidency); aubCSR->setLatestSentTaskCount(BaseCSR::peekLatestSentTaskCount()); } FlushStamp flushStamp = BaseCSR::flush(batchBuffer, allocationsForResidency); return flushStamp; } template void CommandStreamReceiverWithAUBDump::makeNonResident(GraphicsAllocation &gfxAllocation) { auto residencyTaskCount = gfxAllocation.getResidencyTaskCount(this->osContext->getContextId()); BaseCSR::makeNonResident(gfxAllocation); gfxAllocation.updateResidencyTaskCount(residencyTaskCount, this->osContext->getContextId()); if (aubCSR) { aubCSR->makeNonResident(gfxAllocation); } } template void CommandStreamReceiverWithAUBDump::activateAubSubCapture(const MultiDispatchInfo &dispatchInfo) { BaseCSR::activateAubSubCapture(dispatchInfo); if (aubCSR) { aubCSR->activateAubSubCapture(dispatchInfo); } } template void CommandStreamReceiverWithAUBDump::setupContext(OsContext &osContext) { BaseCSR::setupContext(osContext); if (aubCSR) { aubCSR->setupContext(osContext); } } } // namespace OCLRT