Verify HDC handle when returning devices for GL sharing

Resolves: NEO-4952
Change-Id: I298bb26aacd2cc5ad7206f7fff2b2235098fb8bf
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2020-08-07 08:03:07 +02:00
committed by sys_ocldev
parent c2a4835943
commit 418db08517
11 changed files with 194 additions and 13 deletions

View File

@@ -22,7 +22,7 @@ inline const std::string getGdiName() {
Gdi::Gdi() : gdiDll(getGdiName()),
initialized(false) {
if (gdiDll.isLoaded()) {
initialized = getAllProcAddresses();
initialized = Gdi::getAllProcAddresses();
}
}

View File

@@ -1059,4 +1059,15 @@ void Wddm::createPagingFenceLogger() {
}
}
bool Wddm::verifyHdcHandle(size_t hdcHandle) const {
D3DKMT_OPENADAPTERFROMHDC openAdapterFromHdcStruct{};
openAdapterFromHdcStruct.hDc = reinterpret_cast<HDC>(hdcHandle);
auto status = getGdi()->openAdapterFromHdc(&openAdapterFromHdcStruct);
if (STATUS_SUCCESS != status) {
DEBUG_BREAK_IF(true);
return false;
}
return openAdapterFromHdcStruct.AdapterLuid.HighPart == hwDeviceId->getAdapterLuid().HighPart && openAdapterFromHdcStruct.AdapterLuid.LowPart == hwDeviceId->getAdapterLuid().LowPart;
}
} // namespace NEO

View File

@@ -92,6 +92,8 @@ class Wddm {
bool configureDeviceAddressSpace();
MOCKABLE_VIRTUAL bool verifyHdcHandle(size_t hdcHandle) const;
GT_SYSTEM_INFO *getGtSysInfo() const {
DEBUG_BREAK_IF(!gtSystemInfo);
return gtSystemInfo.get();