Move ult dxgi/dxcore factories to shared

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2021-10-19 18:41:15 +00:00
committed by Compute-Runtime-Automation
parent a5e686cf3a
commit 271e0ee7fe
14 changed files with 18 additions and 22 deletions

View File

@@ -62,10 +62,6 @@ set(IGDRCL_SRCS_LIB_ULT_ENV_WINDOWS
${NEO_SOURCE_DIR}/opencl/test/unit_test/os_interface/windows/create_wddm_memory_manager.cpp
${NEO_SOURCE_DIR}/opencl/test/unit_test/os_interface/windows/options.cpp
${NEO_SOURCE_DIR}/opencl/test/unit_test/os_interface/windows/sys_calls.cpp
${NEO_SOURCE_DIR}/opencl/test/unit_test/os_interface/windows/ult_dxcore_factory.cpp
${NEO_SOURCE_DIR}/opencl/test/unit_test/os_interface/windows/ult_dxcore_factory.h
${NEO_SOURCE_DIR}/opencl/test/unit_test/os_interface/windows/ult_dxgi_factory.cpp
${NEO_SOURCE_DIR}/opencl/test/unit_test/os_interface/windows/ult_dxgi_factory.h
${NEO_SOURCE_DIR}/opencl/test/unit_test/os_interface/windows/wddm_calls.cpp
)

View File

@@ -1,26 +0,0 @@
/*
* Copyright (C) 2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "opencl/test/unit_test/os_interface/windows/ult_dxcore_factory.h"
namespace NEO {
HRESULT WINAPI ULTDXCoreCreateAdapterFactory(REFIID riid, void **ppFactory) {
*reinterpret_cast<UltDXCoreAdapterFactory **>(ppFactory) = new UltDXCoreAdapterFactory;
return S_OK;
}
void WINAPI ULTGetSystemInfo(SYSTEM_INFO *pSystemInfo) {
pSystemInfo->lpMaximumApplicationAddress = is32bit ? (LPVOID)MemoryConstants::max32BitAppAddress : (LPVOID)MemoryConstants::max64BitAppAddress;
}
const char *UltDxCoreAdapter::description = "Intel";
bool UltDXCoreAdapterList::firstInvalid = false;
extern uint32_t numRootDevicesToEnum = 1;
} // namespace NEO

View File

@@ -1,260 +0,0 @@
/*
* Copyright (C) 2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "shared/source/helpers/constants.h"
#include "shared/source/helpers/debug_helpers.h"
#include <cwchar>
#include <dxcore.h>
#include <dxgi.h>
namespace NEO {
static constexpr auto error = 1;
class UltDxCoreAdapter : public IDXCoreAdapter {
public:
const static char *description;
LUID luid = {0u, 0x1234u};
bool STDMETHODCALLTYPE IsValid() override {
return true;
}
bool STDMETHODCALLTYPE IsAttributeSupported(REFGUID attributeGUID) override {
UNRECOVERABLE_IF(true);
return false;
}
bool STDMETHODCALLTYPE IsPropertySupported(DXCoreAdapterProperty property) override {
UNRECOVERABLE_IF(true);
return false;
}
HRESULT STDMETHODCALLTYPE GetProperty(DXCoreAdapterProperty property, size_t bufferSize,
_Out_writes_bytes_(bufferSize) void *propertyData) override {
size_t requiredSize;
GetPropertySize(property, &requiredSize);
if (bufferSize < requiredSize) {
return error;
}
switch (property) {
default:
UNRECOVERABLE_IF(true);
return error;
case DXCoreAdapterProperty::IsHardware:
*reinterpret_cast<bool *>(propertyData) = true;
break;
case DXCoreAdapterProperty::DriverDescription:
memcpy_s(propertyData, bufferSize, description, requiredSize);
break;
case DXCoreAdapterProperty::InstanceLuid:
reinterpret_cast<LUID *>(propertyData)->HighPart = luid.HighPart;
reinterpret_cast<LUID *>(propertyData)->LowPart = luid.LowPart;
break;
case DXCoreAdapterProperty::HardwareID: {
DXCoreHardwareID ret = {};
ret.deviceID = 0x1234;
*reinterpret_cast<DXCoreHardwareID *>(propertyData) = ret;
} break;
}
return S_OK;
}
HRESULT STDMETHODCALLTYPE GetPropertySize(DXCoreAdapterProperty property, _Out_ size_t *bufferSize) override {
switch (property) {
default:
UNRECOVERABLE_IF(true);
return error;
case DXCoreAdapterProperty::IsHardware:
*bufferSize = sizeof(bool);
break;
case DXCoreAdapterProperty::DriverDescription:
*bufferSize = strlen(description) + 1;
break;
case DXCoreAdapterProperty::InstanceLuid:
*bufferSize = sizeof(LUID);
break;
case DXCoreAdapterProperty::HardwareID:
*bufferSize = sizeof(DXCoreHardwareID);
break;
}
return S_OK;
}
bool STDMETHODCALLTYPE IsQueryStateSupported(DXCoreAdapterState property) override {
UNRECOVERABLE_IF(true);
return error;
}
HRESULT STDMETHODCALLTYPE QueryState(DXCoreAdapterState state, size_t inputStateDetailsSize,
_In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
size_t outputBufferSize, _Out_writes_bytes_(outputBufferSize) void *outputBuffer) override {
UNRECOVERABLE_IF(true);
return error;
}
bool STDMETHODCALLTYPE IsSetStateSupported(DXCoreAdapterState property) override {
UNRECOVERABLE_IF(true);
return false;
}
HRESULT STDMETHODCALLTYPE SetState(DXCoreAdapterState state, size_t inputStateDetailsSize,
_In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
size_t inputDataSize, _In_reads_bytes_(inputDataSize) const void *inputData) override {
UNRECOVERABLE_IF(true);
return error;
}
HRESULT STDMETHODCALLTYPE GetFactory(REFIID riid, _COM_Outptr_ void **ppvFactory) override {
UNRECOVERABLE_IF(true);
return error;
}
// IUnknown
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void __RPC_FAR *__RPC_FAR *ppvObject) override {
UNRECOVERABLE_IF(true);
return error;
}
ULONG STDMETHODCALLTYPE AddRef(void) override {
UNRECOVERABLE_IF(true);
return 0;
}
ULONG STDMETHODCALLTYPE Release(void) override {
// this must be the last instruction
delete this;
return 0;
}
};
extern uint32_t numRootDevicesToEnum;
class UltDXCoreAdapterList : public IDXCoreAdapterList {
public:
static bool firstInvalid;
HRESULT STDMETHODCALLTYPE GetAdapter(uint32_t index, REFIID riid, _COM_Outptr_ void **ppvAdapter) override {
auto adapter = new UltDxCoreAdapter;
if (firstInvalid && 0 == index) {
adapter->luid.HighPart = 0u;
adapter->luid.LowPart = 0u;
}
*reinterpret_cast<UltDxCoreAdapter **>(ppvAdapter) = adapter;
return S_OK;
}
uint32_t STDMETHODCALLTYPE GetAdapterCount() override {
return numRootDevicesToEnum;
}
bool STDMETHODCALLTYPE IsStale() override {
return false;
}
HRESULT STDMETHODCALLTYPE GetFactory(REFIID riid, _COM_Outptr_ void **ppvFactory) override {
UNRECOVERABLE_IF(true);
return error;
}
HRESULT STDMETHODCALLTYPE Sort(uint32_t numPreferences, _In_reads_(numPreferences) const DXCoreAdapterPreference *preferences) override {
UNRECOVERABLE_IF(true);
return error;
}
bool STDMETHODCALLTYPE IsAdapterPreferenceSupported(DXCoreAdapterPreference preference) override {
UNRECOVERABLE_IF(true);
return false;
}
// IUnknown
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void __RPC_FAR *__RPC_FAR *ppvObject) override {
UNRECOVERABLE_IF(true);
return error;
}
ULONG STDMETHODCALLTYPE AddRef(void) override {
UNRECOVERABLE_IF(true);
return 0;
}
ULONG STDMETHODCALLTYPE Release(void) override {
// this must be the last instruction
delete this;
return 0;
}
};
extern uint32_t numRootDevicesToEnum;
class UltDXCoreAdapterFactory : public IDXCoreAdapterFactory {
public:
struct CreateAdapterListArgs {
uint32_t numAttributes;
const GUID *filterAttributesPtr;
std::vector<const GUID *> filterAttributesCopy;
REFIID riid;
void **ppvAdapterList;
};
std::vector<CreateAdapterListArgs> argsOfCreateAdapterListRequests;
HRESULT STDMETHODCALLTYPE CreateAdapterList(uint32_t numAttributes, _In_reads_(numAttributes) const GUID *filterAttributes,
REFIID riid, _COM_Outptr_ void **ppvAdapterList) override {
argsOfCreateAdapterListRequests.push_back({numAttributes,
filterAttributes,
std::vector<const GUID *>{filterAttributes, filterAttributes + numAttributes},
riid, ppvAdapterList});
*reinterpret_cast<UltDXCoreAdapterList **>(ppvAdapterList) = new UltDXCoreAdapterList;
return S_OK;
}
HRESULT STDMETHODCALLTYPE GetAdapterByLuid(const LUID &adapterLUID, REFIID riid, _COM_Outptr_ void **ppvAdapter) override {
UNRECOVERABLE_IF(true);
return error;
}
bool STDMETHODCALLTYPE IsNotificationTypeSupported(DXCoreNotificationType notificationType) override {
UNRECOVERABLE_IF(true);
return false;
}
HRESULT STDMETHODCALLTYPE RegisterEventNotification(_In_ IUnknown *dxCoreObject, DXCoreNotificationType notificationType,
_In_ PFN_DXCORE_NOTIFICATION_CALLBACK callbackFunction,
_In_opt_ void *callbackContext, _Out_ uint32_t *eventCookie) override {
UNRECOVERABLE_IF(true);
return error;
}
HRESULT STDMETHODCALLTYPE UnregisterEventNotification(uint32_t eventCookie) override {
UNRECOVERABLE_IF(true);
return error;
}
// IUnknown
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void __RPC_FAR *__RPC_FAR *ppvObject) override {
UNRECOVERABLE_IF(true);
return error;
}
ULONG STDMETHODCALLTYPE AddRef(void) override {
UNRECOVERABLE_IF(true);
return 0;
}
ULONG STDMETHODCALLTYPE Release(void) override {
// this must be the last instruction
delete this;
return 0;
}
};
HRESULT WINAPI ULTDXCoreCreateAdapterFactory(REFIID riid, void **ppFactory);
void WINAPI ULTGetSystemInfo(SYSTEM_INFO *pSystemInfo);
} // namespace NEO

View File

@@ -1,23 +0,0 @@
/*
* Copyright (C) 2018-2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "opencl/test/unit_test/os_interface/windows/ult_dxgi_factory.h"
namespace NEO {
HRESULT WINAPI ULTCreateDXGIFactory(REFIID riid, void **ppFactory) {
UltIDXGIFactory1 *factory = new UltIDXGIFactory1;
*(UltIDXGIFactory1 **)ppFactory = factory;
return S_OK;
}
const wchar_t *UltIDXGIAdapter1::description = L"Intel";
} // namespace NEO

View File

@@ -1,191 +0,0 @@
/*
* Copyright (C) 2018-2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "shared/source/helpers/constants.h"
#include <cwchar>
#include <dxgi.h>
namespace NEO {
class UltIDXGIAdapter1 : public IDXGIAdapter1 {
public:
const static wchar_t *description;
// IDXGIAdapter1
HRESULT STDMETHODCALLTYPE GetDesc1(
_Out_ DXGI_ADAPTER_DESC1 *pDesc) {
if (pDesc == nullptr) {
return S_FALSE;
}
swprintf(pDesc->Description, 128, description);
pDesc->AdapterLuid.HighPart = 0x1234;
pDesc->DeviceId = 0x1234;
return S_OK;
}
// IDXGIAdapter
HRESULT STDMETHODCALLTYPE EnumOutputs(
UINT Output,
IDXGIOutput **ppOutput) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE GetDesc(
DXGI_ADAPTER_DESC *pDesc) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE CheckInterfaceSupport(
_In_ REFGUID InterfaceName,
_Out_ LARGE_INTEGER *pUMDVersion) {
return S_OK;
}
// IDXGIObject
HRESULT STDMETHODCALLTYPE SetPrivateData(
_In_ REFGUID Name,
UINT DataSize,
const void *pData) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
_In_ REFGUID Name,
_In_opt_ const IUnknown *pUnknown) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE GetPrivateData(
_In_ REFGUID Name,
_Inout_ UINT *pDataSize,
_Out_writes_bytes_(*pDataSize) void *pData) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE GetParent(
_In_ REFIID riid,
_COM_Outptr_ void **ppParent) {
return S_OK;
}
// IUnknown
HRESULT STDMETHODCALLTYPE QueryInterface(
REFIID riid,
void __RPC_FAR *__RPC_FAR *ppvObject) {
return S_OK;
}
ULONG STDMETHODCALLTYPE AddRef(void) {
return 0;
}
ULONG STDMETHODCALLTYPE Release(void) {
// this must be the last instruction
delete this;
return 0;
}
};
extern uint32_t numRootDevicesToEnum;
class UltIDXGIFactory1 : public IDXGIFactory1 {
public:
HRESULT STDMETHODCALLTYPE EnumAdapters1(
UINT Adapter,
IDXGIAdapter1 **ppAdapter) {
if (Adapter >= numRootDevicesToEnum) {
*(IDXGIAdapter1 **)ppAdapter = nullptr;
return DXGI_ERROR_NOT_FOUND;
}
*(IDXGIAdapter1 **)ppAdapter = new UltIDXGIAdapter1;
return S_OK;
}
BOOL STDMETHODCALLTYPE IsCurrent(void) {
return 0;
}
HRESULT STDMETHODCALLTYPE EnumAdapters(
UINT Adapter,
IDXGIAdapter **ppAdapter) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE MakeWindowAssociation(
HWND WindowHandle,
UINT Flags) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE GetWindowAssociation(
_Out_ HWND *pWindowHandle) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE CreateSwapChain(
_In_ IUnknown *pDevice,
_In_ DXGI_SWAP_CHAIN_DESC *pDesc,
IDXGISwapChain **ppSwapChain) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE CreateSoftwareAdapter(
HMODULE Module,
IDXGIAdapter **ppAdapter) {
return S_OK;
}
// IDXGIObject
HRESULT STDMETHODCALLTYPE SetPrivateData(
_In_ REFGUID Name,
UINT DataSize,
const void *pData) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
_In_ REFGUID Name,
_In_opt_ const IUnknown *pUnknown) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE GetPrivateData(
_In_ REFGUID Name,
_Inout_ UINT *pDataSize,
_Out_writes_bytes_(*pDataSize) void *pData) {
return S_OK;
}
HRESULT STDMETHODCALLTYPE GetParent(
_In_ REFIID riid,
_COM_Outptr_ void **ppParent) {
return S_OK;
}
// IUnknown
HRESULT STDMETHODCALLTYPE QueryInterface(
REFIID riid,
void __RPC_FAR *__RPC_FAR *ppvObject) {
return S_OK;
}
ULONG STDMETHODCALLTYPE AddRef(void) {
return 0;
}
ULONG STDMETHODCALLTYPE Release(void) {
// this must be the last instruction
delete this;
return 0;
}
};
HRESULT WINAPI ULTCreateDXGIFactory(REFIID riid, void **ppFactory);
} // namespace NEO

View File

@@ -30,10 +30,10 @@
#include "shared/test/common/mocks/mock_io_functions.h"
#include "shared/test/common/mocks/mock_memory_manager.h"
#include "shared/test/common/mocks/mock_wddm_residency_logger.h"
#include "shared/test/common/os_interface/windows/ult_dxcore_factory.h"
#include "shared/test/common/os_interface/windows/wddm_fixture.h"
#include "opencl/test/unit_test/os_interface/windows/mock_wddm_allocation.h"
#include "opencl/test/unit_test/os_interface/windows/ult_dxcore_factory.h"
#include "gtest/gtest.h"

View File

@@ -7,9 +7,8 @@
#include "shared/source/memory_manager/host_ptr_defines.h"
#include "shared/test/common/mocks/mock_wddm.h"
#include "opencl/test/unit_test/os_interface/windows/ult_dxcore_factory.h"
#include "opencl/test/unit_test/os_interface/windows/ult_dxgi_factory.h"
#include "shared/test/common/os_interface/windows/ult_dxcore_factory.h"
#include "shared/test/common/os_interface/windows/ult_dxgi_factory.h"
namespace NEO {
Wddm::CreateDXGIFactoryFcn getCreateDxgiFactory() {