mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-24 21:18:24 +08:00
refactor: Remove redundancy around gemCloseWorker in csr
Related-To: NEO-13922 Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
9085f6aeca
commit
c7c7ae9d49
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2024 Intel Corporation
|
||||
* Copyright (C) 2018-2025 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -40,8 +40,7 @@ class DrmCommandStreamReceiver : public DeviceCommandStreamReceiver<GfxFamily> {
|
||||
// When drm is passed, DCSR will not free it at destruction
|
||||
DrmCommandStreamReceiver(ExecutionEnvironment &executionEnvironment,
|
||||
uint32_t rootDeviceIndex,
|
||||
const DeviceBitfield deviceBitfield,
|
||||
GemCloseWorkerMode mode = GemCloseWorkerMode::gemCloseWorkerActive);
|
||||
const DeviceBitfield deviceBitfield);
|
||||
~DrmCommandStreamReceiver() override;
|
||||
|
||||
SubmissionStatus flush(BatchBuffer &batchBuffer, ResidencyContainer &allocationsForResidency) override;
|
||||
@@ -54,19 +53,13 @@ class DrmCommandStreamReceiver : public DeviceCommandStreamReceiver<GfxFamily> {
|
||||
DrmMemoryManager *getMemoryManager() const;
|
||||
GmmPageTableMngr *createPageTableManager() override;
|
||||
|
||||
GemCloseWorkerMode peekGemCloseWorkerOperationMode() const {
|
||||
return this->gemCloseWorkerOperationMode;
|
||||
}
|
||||
|
||||
void initializeDefaultsForInternalEngine() override {
|
||||
gemCloseWorkerOperationMode = GemCloseWorkerMode::gemCloseWorkerInactive;
|
||||
}
|
||||
|
||||
SubmissionStatus printBOsForSubmit(ResidencyContainer &allocationsForResidency, GraphicsAllocation &cmdBufferAllocation);
|
||||
|
||||
bool waitUserFenceSupported() override { return isUserFenceWaitActive(); }
|
||||
bool waitUserFence(TaskCountType waitValue, uint64_t hostAddress, int64_t timeout, bool userInterrupt, uint32_t externalInterruptId, GraphicsAllocation *allocForInterruptWait) override;
|
||||
|
||||
bool isGemCloseWorkerActive() const;
|
||||
|
||||
using CommandStreamReceiver::pageTableManager;
|
||||
|
||||
protected:
|
||||
@@ -78,7 +71,6 @@ class DrmCommandStreamReceiver : public DeviceCommandStreamReceiver<GfxFamily> {
|
||||
std::vector<BufferObject *> residency;
|
||||
std::vector<ExecObject> execObjectsStorage;
|
||||
Drm *drm;
|
||||
GemCloseWorkerMode gemCloseWorkerOperationMode;
|
||||
|
||||
volatile uint32_t reserved = 0;
|
||||
int32_t kmdWaitTimeout = -1;
|
||||
|
||||
@@ -32,9 +32,8 @@ namespace NEO {
|
||||
template <typename GfxFamily>
|
||||
DrmCommandStreamReceiver<GfxFamily>::DrmCommandStreamReceiver(ExecutionEnvironment &executionEnvironment,
|
||||
uint32_t rootDeviceIndex,
|
||||
const DeviceBitfield deviceBitfield,
|
||||
GemCloseWorkerMode mode)
|
||||
: BaseClass(executionEnvironment, rootDeviceIndex, deviceBitfield), gemCloseWorkerOperationMode(mode) {
|
||||
const DeviceBitfield deviceBitfield)
|
||||
: BaseClass(executionEnvironment, rootDeviceIndex, deviceBitfield) {
|
||||
|
||||
auto rootDeviceEnvironment = executionEnvironment.rootDeviceEnvironments[rootDeviceIndex].get();
|
||||
|
||||
@@ -42,14 +41,6 @@ DrmCommandStreamReceiver<GfxFamily>::DrmCommandStreamReceiver(ExecutionEnvironme
|
||||
residency.reserve(512);
|
||||
execObjectsStorage.reserve(512);
|
||||
|
||||
if (this->drm->isVmBindAvailable()) {
|
||||
gemCloseWorkerOperationMode = GemCloseWorkerMode::gemCloseWorkerInactive;
|
||||
}
|
||||
|
||||
if (debugManager.flags.EnableGemCloseWorker.get() != -1) {
|
||||
gemCloseWorkerOperationMode = debugManager.flags.EnableGemCloseWorker.get() ? GemCloseWorkerMode::gemCloseWorkerActive : GemCloseWorkerMode::gemCloseWorkerInactive;
|
||||
}
|
||||
|
||||
auto hwInfo = rootDeviceEnvironment->getHardwareInfo();
|
||||
auto &gfxCoreHelper = rootDeviceEnvironment->getHelper<GfxCoreHelper>();
|
||||
auto localMemoryEnabled = gfxCoreHelper.getEnableLocalMemory(*hwInfo);
|
||||
@@ -174,7 +165,7 @@ SubmissionStatus DrmCommandStreamReceiver<GfxFamily>::flush(BatchBuffer &batchBu
|
||||
|
||||
auto ret = this->flushInternal(batchBuffer, allocationsForResidency);
|
||||
|
||||
if (this->gemCloseWorkerOperationMode == GemCloseWorkerMode::gemCloseWorkerActive) {
|
||||
if (this->isGemCloseWorkerActive()) {
|
||||
bb->reference();
|
||||
this->getMemoryManager()->peekGemCloseWorker()->push(bb);
|
||||
}
|
||||
@@ -377,6 +368,11 @@ bool DrmCommandStreamReceiver<GfxFamily>::waitUserFence(TaskCountType waitValue,
|
||||
return (ret == 0);
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
bool DrmCommandStreamReceiver<GfxFamily>::isGemCloseWorkerActive() const {
|
||||
return this->getMemoryManager()->peekGemCloseWorker() && !this->osContext->isInternalEngine() && this->getType() == CommandStreamReceiverType::hardware;
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
bool DrmCommandStreamReceiver<GfxFamily>::isKmdWaitModeActive() {
|
||||
if (this->drm->isVmBindAvailable()) {
|
||||
|
||||
Reference in New Issue
Block a user