Skip to content

Commit 30b3f5c

Browse files
Move PageTableManager from rootDeviceEnvironment to CommandStreamReceiver
Also add init of pageTable registers to blitter path Signed-off-by: Katarzyna Cencelewska <[email protected]>
1 parent 8974202 commit 30b3f5c

20 files changed

+510
-76
lines changed

opencl/test/unit_test/command_stream/command_stream_receiver_flush_task_3_tests.cpp

Lines changed: 134 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1844,7 +1844,9 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenCommandStreamReceiverWhenFlus
18441844
pDevice->resetCommandStreamReceiver(csr);
18451845

18461846
MockGmmPageTableMngr *pageTableManager = new MockGmmPageTableMngr();
1847-
pDevice->getExecutionEnvironment()->rootDeviceEnvironments[pDevice->getRootDeviceIndex()]->pageTableManager.reset(pageTableManager);
1847+
csr->pageTableManager.reset(pageTableManager);
1848+
MockGmmPageTableMngr *pageTableManager2 = new MockGmmPageTableMngr();
1849+
csr2->pageTableManager.reset(pageTableManager2);
18481850

18491851
EXPECT_CALL(*pageTableManager, initContextAuxTableRegister(csr, ::testing::_)).Times(1);
18501852
EXPECT_CALL(*pageTableManager, initContextAuxTableRegister(csr2, ::testing::_)).Times(0);
@@ -1865,20 +1867,149 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, givenCommandStreamReceiverWhenFlus
18651867

18661868
csr->flushTask(cs, 0u, cs, cs, cs, 0u, dispatchFlags, *pDevice);
18671869

1868-
EXPECT_CALL(*pageTableManager, initContextAuxTableRegister(csr2, ::testing::_)).Times(1);
1870+
EXPECT_CALL(*pageTableManager2, initContextAuxTableRegister(csr2, ::testing::_)).Times(1);
18691871
pDevice->resetCommandStreamReceiver(csr2);
18701872
csr2->flushTask(cs, 0u, cs, cs, cs, 0u, dispatchFlags, *pDevice);
18711873
EXPECT_TRUE(csr2->pageTableManagerInitialized);
18721874

18731875
memoryManager->freeGraphicsMemory(graphicsAllocation);
18741876
}
18751877

1878+
HWTEST_F(CommandStreamReceiverFlushTaskTests, givenPageTableManagerPointerWhenCallBlitBufferThenPageTableManagerInitializedForProperCsr) {
1879+
auto bcsCsr = new MockCsrHw2<FamilyType>(*pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield());
1880+
auto bcsCsr2 = new MockCsrHw2<FamilyType>(*pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield());
1881+
pDevice->resetCommandStreamReceiver(bcsCsr);
1882+
1883+
MockGmmPageTableMngr *pageTableManager = new MockGmmPageTableMngr();
1884+
bcsCsr->pageTableManager.reset(pageTableManager);
1885+
MockGmmPageTableMngr *pageTableManager2 = new MockGmmPageTableMngr();
1886+
bcsCsr2->pageTableManager.reset(pageTableManager2);
1887+
1888+
EXPECT_CALL(*pageTableManager, initContextAuxTableRegister(bcsCsr, ::testing::_)).Times(1);
1889+
EXPECT_CALL(*pageTableManager2, initContextAuxTableRegister(bcsCsr2, ::testing::_)).Times(0);
1890+
1891+
auto memoryManager = pDevice->getMemoryManager();
1892+
auto graphicsAllocation = memoryManager->allocateGraphicsMemoryWithProperties(MockAllocationProperties{pDevice->getRootDeviceIndex(), MemoryConstants::pageSize});
1893+
1894+
EXPECT_FALSE(bcsCsr->pageTableManagerInitialized);
1895+
EXPECT_FALSE(bcsCsr2->pageTableManagerInitialized);
1896+
1897+
auto blitProperties = BlitProperties::constructPropertiesForCopy(graphicsAllocation, //dstAllocation
1898+
graphicsAllocation, //srcAllocation
1899+
0, //dstOffset
1900+
0, //srcOffset
1901+
0, //copySize
1902+
0, //srcRowPitch
1903+
0, //srcSlicePitch
1904+
0, //dstRowPitch
1905+
0, //dstSlicePitch
1906+
bcsCsr->getClearColorAllocation() //clearColorAllocation
1907+
);
1908+
BlitPropertiesContainer container;
1909+
container.push_back(blitProperties);
1910+
1911+
bcsCsr->blitBuffer(container, true, false, *pDevice);
1912+
1913+
EXPECT_TRUE(bcsCsr->pageTableManagerInitialized);
1914+
EXPECT_FALSE(bcsCsr2->pageTableManagerInitialized);
1915+
1916+
EXPECT_CALL(*pageTableManager2, initContextAuxTableRegister(bcsCsr2, ::testing::_)).Times(1);
1917+
pDevice->resetCommandStreamReceiver(bcsCsr2);
1918+
bcsCsr2->blitBuffer(container, true, false, *pDevice);
1919+
1920+
EXPECT_TRUE(bcsCsr2->pageTableManagerInitialized);
1921+
1922+
memoryManager->freeGraphicsMemory(graphicsAllocation);
1923+
}
1924+
1925+
HWTEST_F(CommandStreamReceiverFlushTaskTests, givenPageTableManagerPointerWhenCallBlitBufferAndPageTableManagerInitializedThenNotInitializeAgain) {
1926+
auto bcsCsr = new MockCsrHw2<FamilyType>(*pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield());
1927+
pDevice->resetCommandStreamReceiver(bcsCsr);
1928+
1929+
MockGmmPageTableMngr *pageTableManager = new MockGmmPageTableMngr();
1930+
bcsCsr->pageTableManager.reset(pageTableManager);
1931+
1932+
EXPECT_CALL(*pageTableManager, initContextAuxTableRegister(bcsCsr, ::testing::_)).Times(1);
1933+
1934+
auto memoryManager = pDevice->getMemoryManager();
1935+
auto graphicsAllocation = memoryManager->allocateGraphicsMemoryWithProperties(MockAllocationProperties{pDevice->getRootDeviceIndex(), MemoryConstants::pageSize});
1936+
1937+
EXPECT_FALSE(bcsCsr->pageTableManagerInitialized);
1938+
1939+
auto blitProperties = BlitProperties::constructPropertiesForCopy(graphicsAllocation, //dstAllocation
1940+
graphicsAllocation, //srcAllocation
1941+
0, //dstOffset
1942+
0, //srcOffset
1943+
0, //copySize
1944+
0, //srcRowPitch
1945+
0, //srcSlicePitch
1946+
0, //dstRowPitch
1947+
0, //dstSlicePitch
1948+
bcsCsr->getClearColorAllocation() //clearColorAllocation
1949+
);
1950+
BlitPropertiesContainer container;
1951+
container.push_back(blitProperties);
1952+
1953+
bcsCsr->blitBuffer(container, true, false, *pDevice);
1954+
1955+
EXPECT_TRUE(bcsCsr->pageTableManagerInitialized);
1956+
1957+
EXPECT_CALL(*pageTableManager, initContextAuxTableRegister(bcsCsr, ::testing::_)).Times(0);
1958+
bcsCsr->blitBuffer(container, true, false, *pDevice);
1959+
1960+
memoryManager->freeGraphicsMemory(graphicsAllocation);
1961+
}
1962+
1963+
HWTEST_F(CommandStreamReceiverFlushTaskTests, givenNullPageTableManagerWhenCallBlitBufferThenPageTableManagerIsNotInitialized) {
1964+
auto bcsCsr = new MockCsrHw2<FamilyType>(*pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield());
1965+
auto bcsCsr2 = new MockCsrHw2<FamilyType>(*pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield());
1966+
pDevice->resetCommandStreamReceiver(bcsCsr);
1967+
1968+
bcsCsr->pageTableManager.reset(nullptr);
1969+
bcsCsr2->pageTableManager.reset(nullptr);
1970+
1971+
auto memoryManager = pDevice->getMemoryManager();
1972+
auto graphicsAllocation = memoryManager->allocateGraphicsMemoryWithProperties(MockAllocationProperties{pDevice->getRootDeviceIndex(), MemoryConstants::pageSize});
1973+
1974+
EXPECT_FALSE(bcsCsr->pageTableManagerInitialized);
1975+
EXPECT_FALSE(bcsCsr2->pageTableManagerInitialized);
1976+
1977+
auto blitProperties = BlitProperties::constructPropertiesForCopy(graphicsAllocation, //dstAllocation
1978+
graphicsAllocation, //srcAllocation
1979+
0, //dstOffset
1980+
0, //srcOffset
1981+
0, //copySize
1982+
0, //srcRowPitch
1983+
0, //srcSlicePitch
1984+
0, //dstRowPitch
1985+
0, //dstSlicePitch
1986+
bcsCsr->getClearColorAllocation() //clearColorAllocation
1987+
);
1988+
BlitPropertiesContainer container;
1989+
container.push_back(blitProperties);
1990+
1991+
bcsCsr->blitBuffer(container, true, false, *pDevice);
1992+
1993+
EXPECT_FALSE(bcsCsr->pageTableManagerInitialized);
1994+
EXPECT_FALSE(bcsCsr2->pageTableManagerInitialized);
1995+
1996+
pDevice->resetCommandStreamReceiver(bcsCsr2);
1997+
bcsCsr2->blitBuffer(container, true, false, *pDevice);
1998+
1999+
EXPECT_FALSE(bcsCsr2->pageTableManagerInitialized);
2000+
2001+
bcsCsr2->pageTableManagerInitialized = true;
2002+
EXPECT_NO_THROW(bcsCsr2->blitBuffer(container, true, false, *pDevice));
2003+
2004+
memoryManager->freeGraphicsMemory(graphicsAllocation);
2005+
}
2006+
18762007
HWTEST_F(CommandStreamReceiverFlushTaskTests, givenCommandStreamReceiverWhenInitializingPageTableManagerRegisterFailsThenPageTableManagerIsNotInitialized) {
18772008
auto csr = new MockCsrHw2<FamilyType>(*pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield());
18782009
pDevice->resetCommandStreamReceiver(csr);
18792010

18802011
MockGmmPageTableMngr *pageTableManager = new MockGmmPageTableMngr();
1881-
pDevice->getExecutionEnvironment()->rootDeviceEnvironments[pDevice->getRootDeviceIndex()]->pageTableManager.reset(pageTableManager);
2012+
csr->pageTableManager.reset(pageTableManager);
18822013

18832014
EXPECT_CALL(*pageTableManager, initContextAuxTableRegister(csr, ::testing::_)).Times(2).WillRepeatedly(::testing::Return(GMM_ERROR));
18842015

opencl/test/unit_test/command_stream/command_stream_receiver_tests.cpp

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1506,43 +1506,39 @@ TEST_F(CommandStreamReceiverMultiRootDeviceTest, WhenCreatingCommandStreamGraphi
15061506

15071507
using CommandStreamReceiverPageTableManagerTest = ::testing::Test;
15081508

1509-
TEST_F(CommandStreamReceiverPageTableManagerTest, givenNonDefaultEngineTypeWhenNeedsPageTableManagerIsCalledThenFalseIsReturned) {
1509+
TEST_F(CommandStreamReceiverPageTableManagerTest, givenNonRegularEngineWhenNeedsPageTableManagerIsCalledThenFalseIsReturned) {
15101510
MockExecutionEnvironment executionEnvironment;
15111511
executionEnvironment.initializeMemoryManager();
15121512
DeviceBitfield deviceBitfield(1);
15131513
MockCommandStreamReceiver commandStreamReceiver(executionEnvironment, 0u, deviceBitfield);
1514-
auto hwInfo = executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo();
1515-
auto defaultEngineType = getChosenEngineType(*hwInfo);
1516-
auto engineType = aub_stream::EngineType::ENGINE_BCS;
1517-
EXPECT_NE(defaultEngineType, engineType);
1518-
EXPECT_EQ(nullptr, executionEnvironment.rootDeviceEnvironments[0]->pageTableManager.get());
1519-
EXPECT_FALSE(commandStreamReceiver.needsPageTableManager(engineType));
1514+
auto engineUsage = EngineUsage::Internal;
1515+
EXPECT_EQ(nullptr, commandStreamReceiver.pageTableManager.get());
1516+
EXPECT_FALSE(commandStreamReceiver.needsPageTableManager(engineUsage));
15201517
}
15211518

1522-
TEST_F(CommandStreamReceiverPageTableManagerTest, givenDefaultEngineTypeAndExistingPageTableManagerWhenNeedsPageTableManagerIsCalledThenFalseIsReturned) {
1519+
TEST_F(CommandStreamReceiverPageTableManagerTest, givenRegularEngineTypeAndExistingPageTableManagerWhenNeedsPageTableManagerIsCalledThenFalseIsReturned) {
15231520
MockExecutionEnvironment executionEnvironment;
15241521
executionEnvironment.initializeMemoryManager();
15251522
DeviceBitfield deviceBitfield(1);
15261523
MockCommandStreamReceiver commandStreamReceiver(executionEnvironment, 0u, deviceBitfield);
1527-
auto hwInfo = executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo();
1528-
auto defaultEngineType = getChosenEngineType(*hwInfo);
1524+
auto engineUsage = EngineUsage::Regular;
15291525

15301526
GmmPageTableMngr *dummyPageTableManager = reinterpret_cast<GmmPageTableMngr *>(0x1234);
15311527

1532-
executionEnvironment.rootDeviceEnvironments[0]->pageTableManager.reset(dummyPageTableManager);
1533-
EXPECT_FALSE(commandStreamReceiver.needsPageTableManager(defaultEngineType));
1534-
executionEnvironment.rootDeviceEnvironments[0]->pageTableManager.release();
1528+
commandStreamReceiver.pageTableManager.reset(dummyPageTableManager);
1529+
EXPECT_FALSE(commandStreamReceiver.needsPageTableManager(engineUsage));
1530+
commandStreamReceiver.pageTableManager.release();
15351531
}
15361532

1537-
TEST_F(CommandStreamReceiverPageTableManagerTest, givenDefaultEngineTypeAndNonExisitingPageTableManagerWhenNeedsPageTableManagerIsCalledThenSupportOfPageTableManagerIsReturned) {
1533+
TEST_F(CommandStreamReceiverPageTableManagerTest, givenRegularEngineAndNonExisitingPageTableManagerWhenNeedsPageTableManagerIsCalledThenSupportOfPageTableManagerIsReturned) {
15381534
MockExecutionEnvironment executionEnvironment;
15391535
executionEnvironment.initializeMemoryManager();
15401536
DeviceBitfield deviceBitfield(1);
15411537
MockCommandStreamReceiver commandStreamReceiver(executionEnvironment, 0u, deviceBitfield);
15421538
auto hwInfo = executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo();
1543-
auto defaultEngineType = getChosenEngineType(*hwInfo);
1539+
auto engineUsage = EngineUsage::Regular;
15441540
bool supportsPageTableManager = HwInfoConfig::get(hwInfo->platform.eProductFamily)->isPageTableManagerSupported(*hwInfo);
1545-
EXPECT_EQ(nullptr, executionEnvironment.rootDeviceEnvironments[0]->pageTableManager.get());
1541+
EXPECT_EQ(nullptr, commandStreamReceiver.pageTableManager.get());
15461542

1547-
EXPECT_EQ(supportsPageTableManager, commandStreamReceiver.needsPageTableManager(defaultEngineType));
1543+
EXPECT_EQ(supportsPageTableManager, commandStreamReceiver.needsPageTableManager(engineUsage));
15481544
}

opencl/test/unit_test/device/device_tests.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@ HWTEST_F(DeviceHwTest, givenHwHelperInputWhenInitializingCsrThenCreatePageTableM
551551
executionEnvironment.rootDeviceEnvironments[i]->setHwInfo(&localHwInfo);
552552
}
553553
executionEnvironment.initializeMemoryManager();
554-
auto defaultEngineType = getChosenEngineType(localHwInfo);
554+
auto regularEngineUsage = EngineUsage::Regular;
555555
std::unique_ptr<MockDevice> device;
556556
device.reset(MockDevice::createWithExecutionEnvironment<MockDevice>(&localHwInfo, &executionEnvironment, 0));
557557
auto &csr0 = device->getUltCommandStreamReceiver<FamilyType>();
@@ -562,14 +562,14 @@ HWTEST_F(DeviceHwTest, givenHwHelperInputWhenInitializingCsrThenCreatePageTableM
562562
hwInfo->capabilityTable.ftrRenderCompressedImages = false;
563563
device.reset(MockDevice::createWithExecutionEnvironment<MockDevice>(&localHwInfo, &executionEnvironment, 1));
564564
auto &csr1 = device->getUltCommandStreamReceiver<FamilyType>();
565-
EXPECT_EQ(csr1.needsPageTableManager(defaultEngineType), csr1.createPageTableManagerCalled);
565+
EXPECT_EQ(csr1.needsPageTableManager(regularEngineUsage), csr1.createPageTableManagerCalled);
566566

567567
hwInfo = executionEnvironment.rootDeviceEnvironments[2]->getMutableHardwareInfo();
568568
hwInfo->capabilityTable.ftrRenderCompressedBuffers = false;
569569
hwInfo->capabilityTable.ftrRenderCompressedImages = true;
570570
device.reset(MockDevice::createWithExecutionEnvironment<MockDevice>(&localHwInfo, &executionEnvironment, 2));
571571
auto &csr2 = device->getUltCommandStreamReceiver<FamilyType>();
572-
EXPECT_EQ(csr2.needsPageTableManager(defaultEngineType), csr2.createPageTableManagerCalled);
572+
EXPECT_EQ(csr2.needsPageTableManager(regularEngineUsage), csr2.createPageTableManagerCalled);
573573
}
574574

575575
HWTEST_F(DeviceHwTest, givenDeviceCreationWhenCsrFailsToCreateGlobalSyncAllocationThenReturnNull) {

0 commit comments

Comments
 (0)