add dual interface to support QXL or VGA modes
This commit is contained in:
parent
08a8760977
commit
529445dbb9
1204
qxldod/QxlDod.cpp
1204
qxldod/QxlDod.cpp
File diff suppressed because it is too large
Load Diff
106
qxldod/QxlDod.h
106
qxldod/QxlDod.h
@ -210,7 +210,7 @@ class HwDeviceIntrface :
|
|||||||
public BaseObject
|
public BaseObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// HwDeviceIntrface(_In_ QxlDod* pQxlDod);
|
// HwDeviceIntrface(_In_ QxlDod* pQxlDod) {m_pQxlDod = pQxlDod;}
|
||||||
// virtual ~HwDeviceIntrface(void);
|
// virtual ~HwDeviceIntrface(void);
|
||||||
virtual NTSTATUS QueryCurrentMode(PVIDEO_MODE RequestedMode) = 0;
|
virtual NTSTATUS QueryCurrentMode(PVIDEO_MODE RequestedMode) = 0;
|
||||||
virtual NTSTATUS SetCurrentMode(ULONG Mode) = 0;
|
virtual NTSTATUS SetCurrentMode(ULONG Mode) = 0;
|
||||||
@ -223,7 +223,41 @@ public:
|
|||||||
USHORT GetModeNumber(USHORT idx) {return m_ModeNumbers[idx];}
|
USHORT GetModeNumber(USHORT idx) {return m_ModeNumbers[idx];}
|
||||||
USHORT GetCurrentModeIndex(void) {return m_CurrentMode;}
|
USHORT GetCurrentModeIndex(void) {return m_CurrentMode;}
|
||||||
VOID SetCurrentModeIndex(USHORT idx) {m_CurrentMode = idx;}
|
VOID SetCurrentModeIndex(USHORT idx) {m_CurrentMode = idx;}
|
||||||
|
virtual NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE* DstAddr,
|
||||||
|
_In_ UINT DstBitPerPixel,
|
||||||
|
_In_ BYTE* SrcAddr,
|
||||||
|
_In_ UINT SrcBytesPerPixel,
|
||||||
|
_In_ LONG SrcPitch,
|
||||||
|
_In_ ULONG NumMoves,
|
||||||
|
_In_ D3DKMT_MOVE_RECT* pMoves,
|
||||||
|
_In_ ULONG NumDirtyRects,
|
||||||
|
_In_ RECT* pDirtyRect,
|
||||||
|
_In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation,
|
||||||
|
_In_ const CURRENT_BDD_MODE* pModeCur) = 0;
|
||||||
|
|
||||||
|
virtual VOID BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod) = 0;
|
||||||
protected:
|
protected:
|
||||||
|
/*
|
||||||
|
BYTE* GetRowStart(_In_ CONST BLT_INFO* pBltInfo, CONST RECT* pRect);
|
||||||
|
VOID GetPitches(_In_ CONST BLT_INFO* pBltInfo, _Out_ LONG* pPixelPitch, _Out_ LONG* pRowPitch);
|
||||||
|
|
||||||
|
VOID CopyBitsGeneric(
|
||||||
|
BLT_INFO* pDst,
|
||||||
|
CONST BLT_INFO* pSrc,
|
||||||
|
UINT NumRects,
|
||||||
|
_In_reads_(NumRects) CONST RECT *pRects);
|
||||||
|
|
||||||
|
VOID CopyBits32_32(
|
||||||
|
BLT_INFO* pDst,
|
||||||
|
CONST BLT_INFO* pSrc,
|
||||||
|
UINT NumRects,
|
||||||
|
_In_reads_(NumRects) CONST RECT *pRects);
|
||||||
|
VOID BltBits (
|
||||||
|
BLT_INFO* pDst,
|
||||||
|
CONST BLT_INFO* pSrc,
|
||||||
|
UINT NumRects,
|
||||||
|
_In_reads_(NumRects) CONST RECT *pRects);
|
||||||
|
*/
|
||||||
virtual NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo) = 0;
|
virtual NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo) = 0;
|
||||||
protected:
|
protected:
|
||||||
QxlDod* m_pQxlDod;
|
QxlDod* m_pQxlDod;
|
||||||
@ -245,6 +279,18 @@ public:
|
|||||||
NTSTATUS SetPowerState(POWER_ACTION ActionType);
|
NTSTATUS SetPowerState(POWER_ACTION ActionType);
|
||||||
NTSTATUS HWInit(PCM_RESOURCE_LIST pResList, DXGK_DISPLAY_INFORMATION* pDispInfo);
|
NTSTATUS HWInit(PCM_RESOURCE_LIST pResList, DXGK_DISPLAY_INFORMATION* pDispInfo);
|
||||||
NTSTATUS HWClose(void);
|
NTSTATUS HWClose(void);
|
||||||
|
NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE* DstAddr,
|
||||||
|
_In_ UINT DstBitPerPixel,
|
||||||
|
_In_ BYTE* SrcAddr,
|
||||||
|
_In_ UINT SrcBytesPerPixel,
|
||||||
|
_In_ LONG SrcPitch,
|
||||||
|
_In_ ULONG NumMoves,
|
||||||
|
_In_ D3DKMT_MOVE_RECT* pMoves,
|
||||||
|
_In_ ULONG NumDirtyRects,
|
||||||
|
_In_ RECT* pDirtyRect,
|
||||||
|
_In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation,
|
||||||
|
_In_ const CURRENT_BDD_MODE* pModeCur);
|
||||||
|
VOID BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod);
|
||||||
protected:
|
protected:
|
||||||
NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo);
|
NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo);
|
||||||
private:
|
private:
|
||||||
@ -272,6 +318,18 @@ public:
|
|||||||
NTSTATUS SetPowerState(POWER_ACTION ActionType);
|
NTSTATUS SetPowerState(POWER_ACTION ActionType);
|
||||||
NTSTATUS HWInit(PCM_RESOURCE_LIST pResList, DXGK_DISPLAY_INFORMATION* pDispInfo);
|
NTSTATUS HWInit(PCM_RESOURCE_LIST pResList, DXGK_DISPLAY_INFORMATION* pDispInfo);
|
||||||
NTSTATUS HWClose(void);
|
NTSTATUS HWClose(void);
|
||||||
|
NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE* DstAddr,
|
||||||
|
_In_ UINT DstBitPerPixel,
|
||||||
|
_In_ BYTE* SrcAddr,
|
||||||
|
_In_ UINT SrcBytesPerPixel,
|
||||||
|
_In_ LONG SrcPitch,
|
||||||
|
_In_ ULONG NumMoves,
|
||||||
|
_In_ D3DKMT_MOVE_RECT* pMoves,
|
||||||
|
_In_ ULONG NumDirtyRects,
|
||||||
|
_In_ RECT* pDirtyRect,
|
||||||
|
_In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation,
|
||||||
|
_In_ const CURRENT_BDD_MODE* pModeCur);
|
||||||
|
VOID BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod);
|
||||||
protected:
|
protected:
|
||||||
NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo);
|
NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo);
|
||||||
private:
|
private:
|
||||||
@ -434,6 +492,7 @@ public:
|
|||||||
PDXGKRNL_INTERFACE GetDxgkInterrface(void) { return &m_DxgkInterface;}
|
PDXGKRNL_INTERFACE GetDxgkInterrface(void) { return &m_DxgkInterface;}
|
||||||
private:
|
private:
|
||||||
VOID CleanUp(VOID);
|
VOID CleanUp(VOID);
|
||||||
|
NTSTATUS CheckHardware();
|
||||||
NTSTATUS WriteHWInfoStr(_In_ HANDLE DevInstRegKeyHandle, _In_ PCWSTR pszwValueName, _In_ PCSTR pszValue);
|
NTSTATUS WriteHWInfoStr(_In_ HANDLE DevInstRegKeyHandle, _In_ PCWSTR pszwValueName, _In_ PCSTR pszValue);
|
||||||
// Set the given source mode on the given path
|
// Set the given source mode on the given path
|
||||||
NTSTATUS SetSourceModeAndPath(CONST D3DKMDT_VIDPN_SOURCE_MODE* pSourceMode,
|
NTSTATUS SetSourceModeAndPath(CONST D3DKMDT_VIDPN_SOURCE_MODE* pSourceMode,
|
||||||
@ -458,19 +517,22 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
NTSTATUS RegisterHWInfo();
|
NTSTATUS RegisterHWInfo();
|
||||||
|
};
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
MapFrameBuffer(
|
||||||
|
_In_ PHYSICAL_ADDRESS PhysicalAddress,
|
||||||
|
_In_ ULONG Length,
|
||||||
|
_Outptr_result_bytebuffer_(Length) VOID** VirtualAddress);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
UnmapFrameBuffer(
|
||||||
|
_In_reads_bytes_(Length) VOID* VirtualAddress,
|
||||||
|
_In_ ULONG Length);
|
||||||
|
|
||||||
|
UINT BPPFromPixelFormat(D3DDDIFORMAT Format);
|
||||||
|
D3DDDIFORMAT PixelFormatFromBPP(UINT BPP);
|
||||||
|
|
||||||
NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE* DstAddr,
|
|
||||||
_In_ UINT DstBitPerPixel,
|
|
||||||
_In_ BYTE* SrcAddr,
|
|
||||||
_In_ UINT SrcBytesPerPixel,
|
|
||||||
_In_ LONG SrcPitch,
|
|
||||||
_In_ ULONG NumMoves,
|
|
||||||
_In_ D3DKMT_MOVE_RECT* pMoves,
|
|
||||||
_In_ ULONG NumDirtyRects,
|
|
||||||
_In_ RECT* pDirtyRect,
|
|
||||||
_In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation);
|
|
||||||
BYTE* GetRowStart(_In_ CONST BLT_INFO* pBltInfo, CONST RECT* pRect);
|
|
||||||
VOID GetPitches(_In_ CONST BLT_INFO* pBltInfo, _Out_ LONG* pPixelPitch, _Out_ LONG* pRowPitch);
|
|
||||||
VOID CopyBitsGeneric(
|
VOID CopyBitsGeneric(
|
||||||
BLT_INFO* pDst,
|
BLT_INFO* pDst,
|
||||||
CONST BLT_INFO* pSrc,
|
CONST BLT_INFO* pSrc,
|
||||||
@ -487,20 +549,6 @@ private:
|
|||||||
CONST BLT_INFO* pSrc,
|
CONST BLT_INFO* pSrc,
|
||||||
UINT NumRects,
|
UINT NumRects,
|
||||||
_In_reads_(NumRects) CONST RECT *pRects);
|
_In_reads_(NumRects) CONST RECT *pRects);
|
||||||
VOID BlackOutScreen(D3DDDI_VIDEO_PRESENT_SOURCE_ID SourceId);
|
|
||||||
};
|
|
||||||
|
|
||||||
NTSTATUS
|
BYTE* GetRowStart(_In_ CONST BLT_INFO* pBltInfo, CONST RECT* pRect);
|
||||||
MapFrameBuffer(
|
VOID GetPitches(_In_ CONST BLT_INFO* pBltInfo, _Out_ LONG* pPixelPitch, _Out_ LONG* pRowPitch);
|
||||||
_In_ PHYSICAL_ADDRESS PhysicalAddress,
|
|
||||||
_In_ ULONG Length,
|
|
||||||
_Outptr_result_bytebuffer_(Length) VOID** VirtualAddress);
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
UnmapFrameBuffer(
|
|
||||||
_In_reads_bytes_(Length) VOID* VirtualAddress,
|
|
||||||
_In_ ULONG Length);
|
|
||||||
|
|
||||||
|
|
||||||
UINT BPPFromPixelFormat(D3DDDIFORMAT Format);
|
|
||||||
D3DDDIFORMAT PixelFormatFromBPP(UINT BPP);
|
|
||||||
|
Loading…
Reference in New Issue
Block a user