mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Add cl_khr_pci_bus_info extension
Signed-off-by: Egor Suldin <egor.suldin@intel.com> https://github.com/intel/compute-runtime/pull/374
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
c94ad034d9
commit
2b3b47b495
@ -83,7 +83,7 @@ class MockDriverInfoWindows : public DriverInfoWindows {
|
||||
|
||||
static MockDriverInfoWindows *create(std::string path) {
|
||||
|
||||
auto result = new MockDriverInfoWindows("");
|
||||
auto result = new MockDriverInfoWindows("", PhysicalDevicePciBusInfo(PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue));
|
||||
result->reader = new TestedRegistryReader(path);
|
||||
result->registryReader.reset(result->reader);
|
||||
|
||||
@ -152,7 +152,7 @@ struct DriverInfoWindowsTest : public ::testing::Test {
|
||||
DriverInfoWindows::createRegistryReaderFunc = [](const std::string &) -> std::unique_ptr<SettingsReader> {
|
||||
return std::make_unique<MockRegistryReader>();
|
||||
};
|
||||
driverInfo = std::make_unique<MockDriverInfoWindows>("");
|
||||
driverInfo = std::make_unique<MockDriverInfoWindows>("", PhysicalDevicePciBusInfo(PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue));
|
||||
}
|
||||
|
||||
VariableBackup<decltype(DriverInfoWindows::createRegistryReaderFunc)> createFuncBackup{&DriverInfoWindows::createRegistryReaderFunc};
|
||||
@ -178,7 +178,7 @@ TEST_F(DriverInfoWindowsTest, GivenDriverInfoWhenThenReturnNonNullptr) {
|
||||
};
|
||||
|
||||
TEST(DriverInfo, givenDriverInfoWhenGetStringReturnNotMeaningEmptyStringThenEnableSharingSupport) {
|
||||
MockDriverInfoWindows driverInfo("");
|
||||
MockDriverInfoWindows driverInfo("", PhysicalDevicePciBusInfo(PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue));
|
||||
MockRegistryReader *registryReaderMock = new MockRegistryReader();
|
||||
|
||||
driverInfo.registryReader.reset(registryReaderMock);
|
||||
@ -190,7 +190,7 @@ TEST(DriverInfo, givenDriverInfoWhenGetStringReturnNotMeaningEmptyStringThenEnab
|
||||
};
|
||||
|
||||
TEST(DriverInfo, givenDriverInfoWhenGetStringReturnMeaningEmptyStringThenDisableSharingSupport) {
|
||||
MockDriverInfoWindows driverInfo("");
|
||||
MockDriverInfoWindows driverInfo("", PhysicalDevicePciBusInfo(PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue));
|
||||
MockRegistryReader *registryReaderMock = new MockRegistryReader();
|
||||
registryReaderMock->returnString = "<>";
|
||||
driverInfo.registryReader.reset(registryReaderMock);
|
||||
@ -206,7 +206,7 @@ TEST(DriverInfo, givenFullPathToRegistryWhenCreatingDriverInfoWindowsThenTheRegi
|
||||
std::string registryPath = "Path\\In\\Registry";
|
||||
std::string fullRegistryPath = "\\REGISTRY\\MACHINE\\" + registryPath;
|
||||
std::string expectedTrimmedRegistryPath = registryPath;
|
||||
MockDriverInfoWindows driverInfo(std::move(fullRegistryPath));
|
||||
MockDriverInfoWindows driverInfo(std::move(fullRegistryPath), PhysicalDevicePciBusInfo(PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue, PhysicalDevicePciBusInfo::InvalidValue));
|
||||
|
||||
EXPECT_STREQ(expectedTrimmedRegistryPath.c_str(), driverInfo.path.c_str());
|
||||
};
|
||||
|
@ -1553,3 +1553,83 @@ TEST_F(WddmTestWithMockGdiDll, givenValidInputwhenSettingAllocationPriorityThenT
|
||||
EXPECT_TRUE(wddm->setAllocationPriority(handles, 2, DXGI_RESOURCE_PRIORITY_NORMAL));
|
||||
EXPECT_EQ(DXGI_RESOURCE_PRIORITY_NORMAL, getLastPriorityFcn());
|
||||
}
|
||||
|
||||
struct GdiWithMockedQueryAdapterInfoFunc : public MockGdi {
|
||||
GdiWithMockedQueryAdapterInfoFunc() : MockGdi() {
|
||||
queryAdapterInfo = mockQueryAdapterInfo;
|
||||
GdiWithMockedQueryAdapterInfoFunc::queryAdapterInfoCalled = 0u;
|
||||
}
|
||||
static NTSTATUS __stdcall mockQueryAdapterInfo(IN CONST D3DKMT_QUERYADAPTERINFO *adapterInfo) {
|
||||
++queryAdapterInfoCalled;
|
||||
|
||||
if (queryAdapterInfoCallAlwaysReturnsUnsuccessful) {
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
if (adapterInfo->Type != KMTQAITYPE_ADAPTERADDRESS) {
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
if (adapterInfo->PrivateDriverDataSize != sizeof(D3DKMT_ADAPTERADDRESS)) {
|
||||
return STATUS_INFO_LENGTH_MISMATCH;
|
||||
}
|
||||
|
||||
D3DKMT_ADAPTERADDRESS *adapterAddress = static_cast<D3DKMT_ADAPTERADDRESS *>(adapterInfo->pPrivateDriverData);
|
||||
adapterAddress->BusNumber = 1;
|
||||
adapterAddress->DeviceNumber = 2;
|
||||
adapterAddress->FunctionNumber = 3;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
static uint32_t queryAdapterInfoCalled;
|
||||
static bool queryAdapterInfoCallAlwaysReturnsUnsuccessful;
|
||||
};
|
||||
|
||||
uint32_t GdiWithMockedQueryAdapterInfoFunc::queryAdapterInfoCalled;
|
||||
bool GdiWithMockedQueryAdapterInfoFunc::queryAdapterInfoCallAlwaysReturnsUnsuccessful;
|
||||
|
||||
TEST(VerifyPciBusInfo, givenQueryAdapterInfoCallReturnsSuccesThenPciBusInfoIsValid) {
|
||||
GdiWithMockedQueryAdapterInfoFunc::queryAdapterInfoCallAlwaysReturnsUnsuccessful = false;
|
||||
|
||||
auto osEnv = std::make_unique<OsEnvironmentWin>();
|
||||
osEnv->gdi = std::make_unique<GdiWithMockedQueryAdapterInfoFunc>();
|
||||
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
executionEnvironment.osEnvironment = std::move(osEnv);
|
||||
|
||||
RootDeviceEnvironment rootDeviceEnvironment(executionEnvironment);
|
||||
|
||||
std::unique_ptr<Wddm> wddm(Wddm::createWddm(nullptr, rootDeviceEnvironment));
|
||||
|
||||
auto pciBusInfo = wddm->getPciBusInfo();
|
||||
|
||||
EXPECT_EQ(GdiWithMockedQueryAdapterInfoFunc::queryAdapterInfoCalled, 1u);
|
||||
|
||||
EXPECT_EQ(pciBusInfo.pciDomain, 0u);
|
||||
EXPECT_EQ(pciBusInfo.pciBus, 1u);
|
||||
EXPECT_EQ(pciBusInfo.pciDevice, 2u);
|
||||
EXPECT_EQ(pciBusInfo.pciFunction, 3u);
|
||||
}
|
||||
|
||||
TEST(VerifyPciBusInfo, givenQueryAdapterInfoCallReturnsErrorThenPciBusInfoIsNotValid) {
|
||||
GdiWithMockedQueryAdapterInfoFunc::queryAdapterInfoCallAlwaysReturnsUnsuccessful = true;
|
||||
|
||||
auto osEnv = std::make_unique<OsEnvironmentWin>();
|
||||
osEnv->gdi = std::make_unique<GdiWithMockedQueryAdapterInfoFunc>();
|
||||
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
executionEnvironment.osEnvironment = std::move(osEnv);
|
||||
|
||||
RootDeviceEnvironment rootDeviceEnvironment(executionEnvironment);
|
||||
|
||||
std::unique_ptr<Wddm> wddm(Wddm::createWddm(nullptr, rootDeviceEnvironment));
|
||||
|
||||
auto pciBusInfo = wddm->getPciBusInfo();
|
||||
|
||||
EXPECT_EQ(GdiWithMockedQueryAdapterInfoFunc::queryAdapterInfoCalled, 1u);
|
||||
|
||||
EXPECT_EQ(pciBusInfo.pciDomain, PhysicalDevicePciBusInfo::InvalidValue);
|
||||
EXPECT_EQ(pciBusInfo.pciBus, PhysicalDevicePciBusInfo::InvalidValue);
|
||||
EXPECT_EQ(pciBusInfo.pciDevice, PhysicalDevicePciBusInfo::InvalidValue);
|
||||
EXPECT_EQ(pciBusInfo.pciFunction, PhysicalDevicePciBusInfo::InvalidValue);
|
||||
}
|
||||
|
Reference in New Issue
Block a user