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

@@ -9,4 +9,5 @@
namespace NEO {
UINT64 MockGdi::pagingFenceReturnValue = 0x3ull;
LUID MockGdi::adapterLuidToReturn{};
} // namespace NEO

View File

@@ -15,12 +15,13 @@ namespace NEO {
class MockGdi : public Gdi {
public:
MockGdi() {
initialized = getAllProcAddresses();
initialized = MockGdi::getAllProcAddresses();
}
~MockGdi(){};
static UINT64 pagingFenceReturnValue;
bool nonZeroNumBytesToTrim = false;
static LUID adapterLuidToReturn;
void setNonZeroNumBytesToTrimInEvict() {
nonZeroNumBytesToTrim = true;
@@ -106,6 +107,7 @@ class MockGdi : public Gdi {
waitForSynchronizationObjectFromCpu = reinterpret_cast<PFND3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU>(waitFromCpuMock);
queryResourceInfo = reinterpret_cast<PFND3DKMT_QUERYRESOURCEINFO>(queryResourceInfoMock);
openResource = reinterpret_cast<PFND3DKMT_OPENRESOURCE>(openResourceMock);
openAdapterFromHdc = reinterpret_cast<PFND3DKMT_OPENADAPTERFROMHDC>(MockGdi::openAdapterFromHdcMock);
return true;
}
@@ -163,6 +165,16 @@ class MockGdi : public Gdi {
static D3DKMT_OPENRESOURCE openResource;
return openResource;
}
static NTSTATUS __stdcall openAdapterFromHdcMock(D3DKMT_OPENADAPTERFROMHDC *openAdapterFromHdcStruct) {
if (!openAdapterFromHdcStruct) {
return STATUS_INVALID_PARAMETER;
}
if (openAdapterFromHdcStruct->hDc == 0) {
return STATUS_INVALID_PARAMETER;
}
openAdapterFromHdcStruct->AdapterLuid = MockGdi::adapterLuidToReturn;
return STATUS_SUCCESS;
}
};
} // namespace NEO