Skip to content

Commit 9f21418

Browse files
Disable gemCloseWorker for internal DrmCommandStreamReceivers
Change-Id: I71abdcb417342110ddc64cc9b1dacecc24c78aac Signed-off-by: Jim Snow <[email protected]>
1 parent fee5135 commit 9f21418

File tree

4 files changed

+21
-1
lines changed

4 files changed

+21
-1
lines changed

opencl/source/os_interface/linux/drm_command_stream.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ class DrmCommandStreamReceiver : public DeviceCommandStreamReceiver<GfxFamily> {
4949
return this->gemCloseWorkerOperationMode;
5050
}
5151

52+
void initializeDefaultsForInternalEngine() override {
53+
gemCloseWorkerOperationMode = gemCloseWorkerMode::gemCloseWorkerInactive;
54+
}
55+
5256
protected:
5357
MOCKABLE_VIRTUAL void flushInternal(const BatchBuffer &batchBuffer, const ResidencyContainer &allocationsForResidency);
5458
MOCKABLE_VIRTUAL void exec(const BatchBuffer &batchBuffer, uint32_t vmHandleId, uint32_t drmContextId);

opencl/test/unit_test/os_interface/linux/device_command_stream_tests.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,15 @@ HWTEST_F(DeviceCommandStreamLeaksTest, givenEnableDirectSubmissionWhenCsrIsCreat
7171
auto drmCsr = (DrmCommandStreamReceiver<FamilyType> *)ptr.get();
7272

7373
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerInactive);
74-
}
74+
}
75+
76+
using DeviceCommandStreamSetInternalUsageTests = DeviceCommandStreamLeaksTest;
77+
78+
HWTEST_F(DeviceCommandStreamSetInternalUsageTests, givenValidDrmCsrThenGemCloseWorkerOperationModeIsSetToInactiveWhenInternalUsageIsSet) {
79+
std::unique_ptr<CommandStreamReceiver> ptr(DeviceCommandStreamReceiver<FamilyType>::create(false, *executionEnvironment, 0));
80+
auto drmCsr = (DrmCommandStreamReceiver<FamilyType> *)ptr.get();
81+
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerActive);
82+
83+
drmCsr->initializeDefaultsForInternalEngine();
84+
EXPECT_EQ(drmCsr->peekGemCloseWorkerOperationMode(), gemCloseWorkerMode::gemCloseWorkerInactive);
85+
}

shared/source/command_stream/command_stream_receiver.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,8 @@ class CommandStreamReceiver {
214214

215215
bool isRcs() const;
216216

217+
virtual void initializeDefaultsForInternalEngine(){};
218+
217219
protected:
218220
void cleanupResources();
219221
void printDeviceIndex();

shared/source/device/device.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ bool Device::createEngine(uint32_t deviceCsrIndex, aub_stream::EngineType engine
125125
}
126126

127127
bool internalUsage = (deviceCsrIndex == HwHelper::internalUsageEngineIndex);
128+
if (internalUsage) {
129+
commandStreamReceiver->initializeDefaultsForInternalEngine();
130+
}
128131

129132
if (commandStreamReceiver->needsPageTableManager(engineType)) {
130133
commandStreamReceiver->createPageTableManager();

0 commit comments

Comments
 (0)