2017-12-21 07:45:38 +08:00
|
|
|
/*
|
2022-05-10 21:53:48 +08:00
|
|
|
* Copyright (C) 2018-2022 Intel Corporation
|
2017-12-21 07:45:38 +08:00
|
|
|
*
|
2018-09-18 15:11:08 +08:00
|
|
|
* SPDX-License-Identifier: MIT
|
2017-12-21 07:45:38 +08:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
2020-02-24 05:44:01 +08:00
|
|
|
#include "shared/source/gmm_helper/gmm_lib.h"
|
2021-05-21 01:49:44 +08:00
|
|
|
#include "shared/source/os_interface/windows/device_time_wddm.h"
|
2022-11-24 18:30:57 +08:00
|
|
|
#include "shared/source/os_interface/windows/sharedata_wrapper.h"
|
|
|
|
#include "shared/source/os_interface/windows/windows_wrapper.h"
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
#define DECL_FUNCTIONS() \
|
|
|
|
FUNCTION(OpenAdapterFromHdc, IN OUT D3DKMT_OPENADAPTERFROMHDC *) \
|
|
|
|
FUNCTION(DestroyAllocation, IN CONST D3DKMT_DESTROYALLOCATION *) \
|
|
|
|
FUNCTION(CloseAdapter, IN CONST D3DKMT_CLOSEADAPTER *) \
|
|
|
|
FUNCTION(Lock, IN OUT D3DKMT_LOCK *) \
|
|
|
|
FUNCTION(Unlock, IN CONST D3DKMT_UNLOCK *) \
|
|
|
|
FUNCTION(Render, IN OUT D3DKMT_RENDER *) \
|
|
|
|
FUNCTION(CreateSynchronizationObject, IN OUT D3DKMT_CREATESYNCHRONIZATIONOBJECT *) \
|
|
|
|
FUNCTION(SignalSynchronizationObject, IN CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT *) \
|
|
|
|
FUNCTION(WaitForSynchronizationObject, IN OUT CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT *) \
|
|
|
|
FUNCTION(WaitForSynchronizationObjectFromCpu, IN CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU *) \
|
|
|
|
FUNCTION(SignalSynchronizationObjectFromCpu, IN CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMCPU *) \
|
|
|
|
FUNCTION(WaitForSynchronizationObjectFromGpu, IN CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU *) \
|
|
|
|
FUNCTION(SignalSynchronizationObjectFromGpu, IN CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU *) \
|
|
|
|
FUNCTION(FreeGpuVirtualAddress, IN CONST D3DKMT_FREEGPUVIRTUALADDRESS *) \
|
|
|
|
FUNCTION(UpdateGpuVirtualAddress, IN CONST D3DKMT_UPDATEGPUVIRTUALADDRESS *) \
|
|
|
|
FUNCTION(SubmitCommand, IN CONST D3DKMT_SUBMITCOMMAND *) \
|
|
|
|
FUNCTION(Evict, IN OUT D3DKMT_EVICT *) \
|
|
|
|
FUNCTION(GetDeviceState, IN OUT D3DKMT_GETDEVICESTATE *) \
|
|
|
|
FUNCTION(UnregisterTrimNotification, IN D3DKMT_UNREGISTERTRIMNOTIFICATION *)
|
|
|
|
|
|
|
|
#define STR(X) #X
|
|
|
|
|
|
|
|
#define FUNCTION(FUNC_NAME, FUNC_ARG) \
|
|
|
|
NTSTATUS __stdcall D3DKMT##FUNC_NAME(FUNC_ARG) { \
|
|
|
|
return STATUS_SUCCESS; \
|
|
|
|
}
|
|
|
|
|
|
|
|
#define ADAPTER_HANDLE (static_cast<D3DKMT_HANDLE>(0x40001234))
|
2020-09-04 02:49:39 +08:00
|
|
|
#define SHADOW_ADAPTER_HANDLE (static_cast<D3DKMT_HANDLE>(0x30001234))
|
2017-12-21 07:45:38 +08:00
|
|
|
#define DEVICE_HANDLE (static_cast<D3DKMT_HANDLE>(0x40004321))
|
|
|
|
#define PAGINGQUEUE_HANDLE (static_cast<D3DKMT_HANDLE>(0x40005678))
|
|
|
|
#define PAGINGQUEUE_SYNCOBJECT_HANDLE (static_cast<D3DKMT_HANDLE>(0x40008765))
|
|
|
|
#define CONTEXT_HANDLE (static_cast<D3DKMT_HANDLE>(0x40001111))
|
|
|
|
#define INVALID_HANDLE (static_cast<D3DKMT_HANDLE>(0))
|
|
|
|
|
|
|
|
#define RESOURCE_HANDLE (static_cast<D3DKMT_HANDLE>(0x80000000))
|
|
|
|
#define ALLOCATION_HANDLE (static_cast<D3DKMT_HANDLE>(0x80000008))
|
|
|
|
|
|
|
|
#define NT_RESOURCE_HANDLE (static_cast<D3DKMT_HANDLE>(0x80000001))
|
|
|
|
#define NT_ALLOCATION_HANDLE (static_cast<D3DKMT_HANDLE>(0x80000009))
|
2019-12-19 21:02:05 +08:00
|
|
|
#define TRIM_CALLBACK_HANDLE (reinterpret_cast<VOID *>(0x80123000010))
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
#define GPUVA (static_cast<D3DGPU_VIRTUAL_ADDRESS>(0x80123000000))
|
|
|
|
|
2022-11-24 18:30:57 +08:00
|
|
|
NTSTATUS setMockSizes(void *gmmPtr, UINT numAllocsToReturn, UINT gmmSize, UINT totalPrivateSize);
|
|
|
|
NTSTATUS getMockSizes(UINT &destroyAlloactionWithResourceHandleCalled, D3DKMT_DESTROYALLOCATION2 *&ptrDestroyAlloc);
|
|
|
|
D3DKMT_HANDLE getMockLastDestroyedResHandle();
|
|
|
|
void setMockLastDestroyedResHandle(D3DKMT_HANDLE handle);
|
|
|
|
D3DKMT_CREATEDEVICE getMockCreateDeviceParams();
|
|
|
|
void setMockCreateDeviceParams(D3DKMT_CREATEDEVICE params);
|
2017-12-21 07:45:38 +08:00
|
|
|
D3DKMT_CREATEALLOCATION *getMockAllocation();
|
|
|
|
ADAPTER_INFO *getAdapterInfoAddress();
|
2018-02-02 00:16:36 +08:00
|
|
|
D3DDDI_MAPGPUVIRTUALADDRESS *getLastCallMapGpuVaArg();
|
2019-02-26 15:28:41 +08:00
|
|
|
D3DDDI_RESERVEGPUVIRTUALADDRESS *getLastCallReserveGpuVaArg();
|
2018-02-07 05:43:38 +08:00
|
|
|
void setMapGpuVaFailConfig(uint32_t count, uint32_t max);
|
2018-02-16 16:07:49 +08:00
|
|
|
D3DKMT_CREATECONTEXTVIRTUAL *getCreateContextData();
|
2018-05-18 16:18:16 +08:00
|
|
|
D3DKMT_CREATEHWQUEUE *getCreateHwQueueData();
|
|
|
|
D3DKMT_DESTROYHWQUEUE *getDestroyHwQueueData();
|
|
|
|
D3DKMT_SUBMITCOMMANDTOHWQUEUE *getSubmitCommandToHwQueueData();
|
2019-12-13 22:47:45 +08:00
|
|
|
D3DKMT_DESTROYSYNCHRONIZATIONOBJECT *getDestroySynchronizationObjectData();
|
2022-11-24 18:30:57 +08:00
|
|
|
void initGfxPartition();
|
2019-12-17 22:26:00 +08:00
|
|
|
VOID *getMonitorFenceCpuFenceAddress();
|
|
|
|
bool *getCreateSynchronizationObject2FailCall();
|
2022-05-10 21:53:48 +08:00
|
|
|
bool *getFailOnSetContextSchedulingPriorityCall();
|
|
|
|
D3DKMT_SETCONTEXTSCHEDULINGPRIORITY *getSetContextSchedulingPriorityDataCall();
|
2019-12-19 21:02:05 +08:00
|
|
|
bool *getRegisterTrimNotificationFailCall();
|
2021-04-20 03:53:46 +08:00
|
|
|
uint32_t getLastPriority();
|
2021-06-01 00:58:10 +08:00
|
|
|
void setAdapterBDF(ADAPTER_BDF &adapterBDF);
|