Mark all functions that should go to non paged sections

This make sure that these function goes into the non
paged section.
Also this change is much shorter than marking code if
can be paged as almost code can be paged.
It's also coherent with other source files.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Sameeh Jubran <sameeh@daynix.com>
This commit is contained in:
Frediano Ziglio 2016-09-12 23:02:01 +01:00
parent 8eecca8c75
commit a86ef3acf8
2 changed files with 50 additions and 39 deletions

View File

@ -2,8 +2,7 @@
#include "qxldod.h" #include "qxldod.h"
#include "qxl_windows.h" #include "qxl_windows.h"
#pragma code_seg(push) #pragma code_seg("PAGE")
#pragma code_seg()
#define WIN_QXL_INT_MASK ((QXL_INTERRUPT_DISPLAY) | \ #define WIN_QXL_INT_MASK ((QXL_INTERRUPT_DISPLAY) | \
(QXL_INTERRUPT_CURSOR) | \ (QXL_INTERRUPT_CURSOR) | \
@ -47,8 +46,6 @@ BYTE PixelMask[BITS_PER_BYTE] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01
((ULONG)LOWER_5_BITS((Pixel)) << SHIFT_LOWER_5_IN_565_BACK)) ((ULONG)LOWER_5_BITS((Pixel)) << SHIFT_LOWER_5_IN_565_BACK))
#pragma code_seg(pop)
struct QXLEscape { struct QXLEscape {
uint32_t ioctl; uint32_t ioctl;
union { union {
@ -1618,9 +1615,7 @@ NTSTATUS QxlDod::UpdateActiveVidPnPresentPath(_In_ CONST DXGKARG_UPDATEACTIVEVID
// //
// Non-Paged Code // Non-Paged Code
// //
#pragma code_seg(push) QXL_NON_PAGED
#pragma code_seg()
VOID QxlDod::DpcRoutine(VOID) VOID QxlDod::DpcRoutine(VOID)
{ {
DbgPrint(TRACE_LEVEL_INFORMATION, ("---> %s\n", __FUNCTION__)); DbgPrint(TRACE_LEVEL_INFORMATION, ("---> %s\n", __FUNCTION__));
@ -1629,6 +1624,7 @@ VOID QxlDod::DpcRoutine(VOID)
DbgPrint(TRACE_LEVEL_INFORMATION, ("<--- %s\n", __FUNCTION__)); DbgPrint(TRACE_LEVEL_INFORMATION, ("<--- %s\n", __FUNCTION__));
} }
QXL_NON_PAGED
BOOLEAN QxlDod::InterruptRoutine(_In_ ULONG MessageNumber) BOOLEAN QxlDod::InterruptRoutine(_In_ ULONG MessageNumber)
{ {
DbgPrint(TRACE_LEVEL_INFORMATION, ("<--> 0 %s\n", __FUNCTION__)); DbgPrint(TRACE_LEVEL_INFORMATION, ("<--> 0 %s\n", __FUNCTION__));
@ -1638,6 +1634,7 @@ BOOLEAN QxlDod::InterruptRoutine(_In_ ULONG MessageNumber)
return FALSE; return FALSE;
} }
QXL_NON_PAGED
VOID QxlDod::ResetDevice(VOID) VOID QxlDod::ResetDevice(VOID)
{ {
DbgPrint(TRACE_LEVEL_VERBOSE, ("<---> %s\n", __FUNCTION__)); DbgPrint(TRACE_LEVEL_VERBOSE, ("<---> %s\n", __FUNCTION__));
@ -1645,6 +1642,7 @@ VOID QxlDod::ResetDevice(VOID)
} }
// Must be Non-Paged, as it sets up the display for a bugcheck // Must be Non-Paged, as it sets up the display for a bugcheck
QXL_NON_PAGED
NTSTATUS QxlDod::SystemDisplayEnable(_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId, NTSTATUS QxlDod::SystemDisplayEnable(_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
_In_ PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS Flags, _In_ PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS Flags,
_Out_ UINT* pWidth, _Out_ UINT* pWidth,
@ -1701,6 +1699,7 @@ NTSTATUS QxlDod::SystemDisplayEnable(_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID Target
} }
// Must be Non-Paged, as it is called to display the bugcheck screen // Must be Non-Paged, as it is called to display the bugcheck screen
QXL_NON_PAGED
VOID QxlDod::SystemDisplayWrite(_In_reads_bytes_(SourceHeight * SourceStride) VOID* pSource, VOID QxlDod::SystemDisplayWrite(_In_reads_bytes_(SourceHeight * SourceStride) VOID* pSource,
_In_ UINT SourceWidth, _In_ UINT SourceWidth,
_In_ UINT SourceHeight, _In_ UINT SourceHeight,
@ -1747,7 +1746,7 @@ VOID QxlDod::SystemDisplayWrite(_In_reads_bytes_(SourceHeight * SourceStride) VO
} }
#pragma code_seg(pop) // End Non-Paged Code // End Non-Paged Code
NTSTATUS QxlDod::WriteHWInfoStr(_In_ HANDLE DevInstRegKeyHandle, _In_ PCWSTR pszwValueName, _In_ PCSTR pszValue) NTSTATUS QxlDod::WriteHWInfoStr(_In_ HANDLE DevInstRegKeyHandle, _In_ PCWSTR pszwValueName, _In_ PCSTR pszValue)
{ {
@ -1922,11 +1921,7 @@ NTSTATUS QxlDod::ReadConfiguration()
return Status; return Status;
} }
// QXL_NON_PAGED
// Non-Paged Code
//
#pragma code_seg(push)
#pragma code_seg()
D3DDDI_VIDEO_PRESENT_SOURCE_ID QxlDod::FindSourceForTarget(D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId, BOOLEAN DefaultToZero) D3DDDI_VIDEO_PRESENT_SOURCE_ID QxlDod::FindSourceForTarget(D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId, BOOLEAN DefaultToZero)
{ {
UNREFERENCED_PARAMETER(TargetId); UNREFERENCED_PARAMETER(TargetId);
@ -1941,8 +1936,6 @@ D3DDDI_VIDEO_PRESENT_SOURCE_ID QxlDod::FindSourceForTarget(D3DDDI_VIDEO_PRESENT_
return DefaultToZero ? 0 : D3DDDI_ID_UNINITIALIZED; return DefaultToZero ? 0 : D3DDDI_ID_UNINITIALIZED;
} }
#pragma code_seg(pop) // End Non-Paged Code
// //
// Frame buffer map/unmap // Frame buffer map/unmap
// //
@ -2022,6 +2015,7 @@ UnmapFrameBuffer(
// HW specific code // HW specific code
QXL_NON_PAGED
VOID GetPitches(_In_ CONST BLT_INFO* pBltInfo, _Out_ LONG* pPixelPitch, _Out_ LONG* pRowPitch) VOID GetPitches(_In_ CONST BLT_INFO* pBltInfo, _Out_ LONG* pPixelPitch, _Out_ LONG* pRowPitch)
{ {
switch (pBltInfo->Rotation) switch (pBltInfo->Rotation)
@ -2060,6 +2054,7 @@ VOID GetPitches(_In_ CONST BLT_INFO* pBltInfo, _Out_ LONG* pPixelPitch, _Out_ LO
} }
} }
QXL_NON_PAGED
BYTE* GetRowStart(_In_ CONST BLT_INFO* pBltInfo, CONST RECT* pRect) BYTE* GetRowStart(_In_ CONST BLT_INFO* pBltInfo, CONST RECT* pRect)
{ {
BYTE* pRet = NULL; BYTE* pRet = NULL;
@ -2123,6 +2118,7 @@ BYTE* GetRowStart(_In_ CONST BLT_INFO* pBltInfo, CONST RECT* pRect)
* *
\**************************************************************************/ \**************************************************************************/
QXL_NON_PAGED
VOID CopyBitsGeneric( VOID CopyBitsGeneric(
BLT_INFO* pDst, BLT_INFO* pDst,
CONST BLT_INFO* pSrc, CONST BLT_INFO* pSrc,
@ -2217,6 +2213,7 @@ VOID CopyBitsGeneric(
} }
QXL_NON_PAGED
VOID CopyBits32_32( VOID CopyBits32_32(
BLT_INFO* pDst, BLT_INFO* pDst,
CONST BLT_INFO* pSrc, CONST BLT_INFO* pSrc,
@ -2258,6 +2255,7 @@ VOID CopyBits32_32(
} }
QXL_NON_PAGED
VOID BltBits ( VOID BltBits (
BLT_INFO* pDst, BLT_INFO* pDst,
CONST BLT_INFO* pSrc, CONST BLT_INFO* pSrc,
@ -2883,6 +2881,7 @@ VOID VgaDevice::BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod)
pCurrentBddMod->ZeroedOutEnd.QuadPart = NewPhysAddrEnd.QuadPart; pCurrentBddMod->ZeroedOutEnd.QuadPart = NewPhysAddrEnd.QuadPart;
} }
QXL_NON_PAGED
BOOLEAN VgaDevice::InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_ ULONG MessageNumber) BOOLEAN VgaDevice::InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_ ULONG MessageNumber)
{ {
UNREFERENCED_PARAMETER(pDxgkInterface); UNREFERENCED_PARAMETER(pDxgkInterface);
@ -2890,10 +2889,12 @@ BOOLEAN VgaDevice::InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_
return FALSE; return FALSE;
} }
QXL_NON_PAGED
VOID VgaDevice::DpcRoutine(PVOID) VOID VgaDevice::DpcRoutine(PVOID)
{ {
} }
QXL_NON_PAGED
VOID VgaDevice::ResetDevice(VOID) VOID VgaDevice::ResetDevice(VOID)
{ {
} }
@ -3623,6 +3624,7 @@ void QxlDevice::InitMspace(UINT32 mspace_type, UINT8 *start, size_t capacity)
DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s _mspace = %p\n", __FUNCTION__, m_MSInfo[mspace_type]._mspace)); DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s _mspace = %p\n", __FUNCTION__, m_MSInfo[mspace_type]._mspace));
} }
QXL_NON_PAGED
void QxlDevice::ResetDevice(void) void QxlDevice::ResetDevice(void)
{ {
DbgPrint(TRACE_LEVEL_VERBOSE, ("---> %s\n", __FUNCTION__)); DbgPrint(TRACE_LEVEL_VERBOSE, ("---> %s\n", __FUNCTION__));
@ -4688,6 +4690,7 @@ VOID QxlDevice::PushCursor(VOID)
DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s notify = %d\n", __FUNCTION__, notify)); DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s notify = %d\n", __FUNCTION__, notify));
} }
QXL_NON_PAGED
BOOLEAN QxlDevice::InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_ ULONG MessageNumber) BOOLEAN QxlDevice::InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_ ULONG MessageNumber)
{ {
UNREFERENCED_PARAMETER(MessageNumber); UNREFERENCED_PARAMETER(MessageNumber);
@ -4708,6 +4711,7 @@ BOOLEAN QxlDevice::InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_
return TRUE; return TRUE;
} }
QXL_NON_PAGED
VOID QxlDevice::DpcRoutine(PVOID ptr) VOID QxlDevice::DpcRoutine(PVOID ptr)
{ {
PDXGKRNL_INTERFACE pDxgkInterface = (PDXGKRNL_INTERFACE)ptr; PDXGKRNL_INTERFACE pDxgkInterface = (PDXGKRNL_INTERFACE)ptr;
@ -4744,6 +4748,7 @@ VOID QxlDevice::DpcRoutine(PVOID ptr)
VOID QxlDevice::UpdateArea(CONST RECT* area, UINT32 surface_id) VOID QxlDevice::UpdateArea(CONST RECT* area, UINT32 surface_id)
{ {
PAGED_CODE();
DbgPrint(TRACE_LEVEL_VERBOSE, ("---> %s\n", __FUNCTION__)); DbgPrint(TRACE_LEVEL_VERBOSE, ("---> %s\n", __FUNCTION__));
CopyRect(&m_RamHdr->update_area, area); CopyRect(&m_RamHdr->update_area, area);
m_RamHdr->update_surface = surface_id; m_RamHdr->update_surface = surface_id;
@ -4752,6 +4757,7 @@ VOID QxlDevice::UpdateArea(CONST RECT* area, UINT32 surface_id)
DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__)); DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
} }
QXL_NON_PAGED
BOOLEAN QxlDevice:: DpcCallbackEx(PVOID ptr) BOOLEAN QxlDevice:: DpcCallbackEx(PVOID ptr)
{ {
DbgPrint(TRACE_LEVEL_VERBOSE, ("<--> %s\n", __FUNCTION__)); DbgPrint(TRACE_LEVEL_VERBOSE, ("<--> %s\n", __FUNCTION__));
@ -4761,6 +4767,7 @@ BOOLEAN QxlDevice:: DpcCallbackEx(PVOID ptr)
return TRUE; return TRUE;
} }
QXL_NON_PAGED
VOID QxlDevice::DpcCallback(PDPC_CB_CONTEXT ctx) VOID QxlDevice::DpcCallback(PDPC_CB_CONTEXT ctx)
{ {
ctx->data = m_Pending; ctx->data = m_Pending;
@ -4768,6 +4775,7 @@ VOID QxlDevice::DpcCallback(PDPC_CB_CONTEXT ctx)
} }
QXL_NON_PAGED
UINT BPPFromPixelFormat(D3DDDIFORMAT Format) UINT BPPFromPixelFormat(D3DDDIFORMAT Format)
{ {
switch (Format) switch (Format)
@ -4783,6 +4791,7 @@ UINT BPPFromPixelFormat(D3DDDIFORMAT Format)
} }
// Given bits per pixel, return the pixel format at the same bpp // Given bits per pixel, return the pixel format at the same bpp
QXL_NON_PAGED
D3DDDIFORMAT PixelFormatFromBPP(UINT BPP) D3DDDIFORMAT PixelFormatFromBPP(UINT BPP)
{ {
switch (BPP) switch (BPP)

View File

@ -14,6 +14,8 @@
#define QXL_BPP 32 #define QXL_BPP 32
#define VGA_BPP 24 #define VGA_BPP 24
#define QXL_NON_PAGED __declspec(code_seg(".text"))
typedef struct _QXL_FLAGS typedef struct _QXL_FLAGS
{ {
UINT DriverStarted : 1; // ( 1) 1 after StartDevice and 0 after StopDevice UINT DriverStarted : 1; // ( 1) 1 after StartDevice and 0 after StopDevice
@ -222,9 +224,9 @@ public:
virtual NTSTATUS SetPowerState(DEVICE_POWER_STATE DevicePowerState, DXGK_DISPLAY_INFORMATION* pDispInfo) = 0; virtual NTSTATUS SetPowerState(DEVICE_POWER_STATE DevicePowerState, DXGK_DISPLAY_INFORMATION* pDispInfo) = 0;
virtual NTSTATUS HWInit(PCM_RESOURCE_LIST pResList, DXGK_DISPLAY_INFORMATION* pDispInfo) = 0; virtual NTSTATUS HWInit(PCM_RESOURCE_LIST pResList, DXGK_DISPLAY_INFORMATION* pDispInfo) = 0;
virtual NTSTATUS HWClose(void) = 0; virtual NTSTATUS HWClose(void) = 0;
virtual BOOLEAN InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_ ULONG MessageNumber) = 0; QXL_NON_PAGED virtual BOOLEAN InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_ ULONG MessageNumber) = 0;
virtual VOID DpcRoutine(PVOID) = 0; QXL_NON_PAGED virtual VOID DpcRoutine(PVOID) = 0;
virtual VOID ResetDevice(void) = 0; QXL_NON_PAGED virtual VOID ResetDevice(void) = 0;
virtual NTSTATUS AcquireFrameBuffer(CURRENT_BDD_MODE* pCurrentBddMode) { return STATUS_SUCCESS; } virtual NTSTATUS AcquireFrameBuffer(CURRENT_BDD_MODE* pCurrentBddMode) { return STATUS_SUCCESS; }
virtual NTSTATUS ReleaseFrameBuffer(CURRENT_BDD_MODE* pCurrentBddMode) { return STATUS_SUCCESS; } virtual NTSTATUS ReleaseFrameBuffer(CURRENT_BDD_MODE* pCurrentBddMode) { return STATUS_SUCCESS; }
@ -290,9 +292,9 @@ public:
_In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation, _In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation,
_In_ const CURRENT_BDD_MODE* pModeCur); _In_ const CURRENT_BDD_MODE* pModeCur);
VOID BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod); VOID BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod);
BOOLEAN InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_ ULONG MessageNumber); QXL_NON_PAGED BOOLEAN InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_ ULONG MessageNumber);
VOID DpcRoutine(PVOID); QXL_NON_PAGED VOID DpcRoutine(PVOID);
VOID ResetDevice(VOID); QXL_NON_PAGED VOID ResetDevice(VOID);
NTSTATUS AcquireFrameBuffer(CURRENT_BDD_MODE* pCurrentBddMode); NTSTATUS AcquireFrameBuffer(CURRENT_BDD_MODE* pCurrentBddMode);
NTSTATUS ReleaseFrameBuffer(CURRENT_BDD_MODE* pCurrentBddMode); NTSTATUS ReleaseFrameBuffer(CURRENT_BDD_MODE* pCurrentBddMode);
NTSTATUS SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE* pSetPointerShape); NTSTATUS SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE* pSetPointerShape);
@ -465,9 +467,9 @@ public:
_In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation, _In_ D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation,
_In_ const CURRENT_BDD_MODE* pModeCur); _In_ const CURRENT_BDD_MODE* pModeCur);
VOID BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod); VOID BlackOutScreen(CURRENT_BDD_MODE* pCurrentBddMod);
BOOLEAN InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_ ULONG MessageNumber); QXL_NON_PAGED BOOLEAN InterruptRoutine(_In_ PDXGKRNL_INTERFACE pDxgkInterface, _In_ ULONG MessageNumber);
VOID DpcRoutine(PVOID); QXL_NON_PAGED VOID DpcRoutine(PVOID);
VOID ResetDevice(VOID); QXL_NON_PAGED VOID ResetDevice(VOID);
NTSTATUS SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE* pSetPointerShape); NTSTATUS SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE* pSetPointerShape);
NTSTATUS SetPointerPosition(_In_ CONST DXGKARG_SETPOINTERPOSITION* pSetPointerPosition); NTSTATUS SetPointerPosition(_In_ CONST DXGKARG_SETPOINTERPOSITION* pSetPointerPosition);
NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap); NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap);
@ -535,8 +537,8 @@ private:
void PutBytesAlign(QXLDataChunk **chunk_ptr, UINT8 **now_ptr, void PutBytesAlign(QXLDataChunk **chunk_ptr, UINT8 **now_ptr,
UINT8 **end_ptr, UINT8 *src, int size, UINT8 **end_ptr, UINT8 *src, int size,
size_t alloc_size, uint32_t alignment); size_t alloc_size, uint32_t alignment);
BOOLEAN static DpcCallbackEx(PVOID); QXL_NON_PAGED BOOLEAN static DpcCallbackEx(PVOID);
void DpcCallback(PDPC_CB_CONTEXT); QXL_NON_PAGED void DpcCallback(PDPC_CB_CONTEXT);
void AsyncIo(UCHAR Port, UCHAR Value); void AsyncIo(UCHAR Port, UCHAR Value);
void SyncIo(UCHAR Port, UCHAR Value); void SyncIo(UCHAR Port, UCHAR Value);
NTSTATUS UpdateChildStatus(BOOLEAN connect); NTSTATUS UpdateChildStatus(BOOLEAN connect);
@ -629,7 +631,7 @@ public:
_Out_ ULONG* pNumberOfChildren); _Out_ ULONG* pNumberOfChildren);
NTSTATUS StopDevice(VOID); NTSTATUS StopDevice(VOID);
// Must be Non-Paged // Must be Non-Paged
VOID ResetDevice(VOID); QXL_NON_PAGED VOID ResetDevice(VOID);
NTSTATUS DispatchIoRequest(_In_ ULONG VidPnSourceId, NTSTATUS DispatchIoRequest(_In_ ULONG VidPnSourceId,
_In_ VIDEO_REQUEST_PACKET* pVideoRequestPacket); _In_ VIDEO_REQUEST_PACKET* pVideoRequestPacket);
@ -649,9 +651,9 @@ public:
// Must be Non-Paged // Must be Non-Paged
// BDD doesn't have interrupts, so just returns false // BDD doesn't have interrupts, so just returns false
BOOLEAN InterruptRoutine(_In_ ULONG MessageNumber); QXL_NON_PAGED BOOLEAN InterruptRoutine(_In_ ULONG MessageNumber);
VOID DpcRoutine(VOID); QXL_NON_PAGED VOID DpcRoutine(VOID);
// Return DriverCaps, doesn't support other queries though // Return DriverCaps, doesn't support other queries though
NTSTATUS QueryAdapterInfo(_In_ CONST DXGKARG_QUERYADAPTERINFO* pQueryAdapterInfo); NTSTATUS QueryAdapterInfo(_In_ CONST DXGKARG_QUERYADAPTERINFO* pQueryAdapterInfo);
@ -690,7 +692,7 @@ public:
// Must be Non-Paged // Must be Non-Paged
// Call to initialize as part of bugcheck // Call to initialize as part of bugcheck
NTSTATUS SystemDisplayEnable(_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId, QXL_NON_PAGED NTSTATUS SystemDisplayEnable(_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
_In_ PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS Flags, _In_ PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS Flags,
_Out_ UINT* pWidth, _Out_ UINT* pWidth,
_Out_ UINT* pHeight, _Out_ UINT* pHeight,
@ -698,7 +700,7 @@ public:
// Must be Non-Paged // Must be Non-Paged
// Write out pixels as part of bugcheck // Write out pixels as part of bugcheck
VOID SystemDisplayWrite(_In_reads_bytes_(SourceHeight * SourceStride) VOID* pSource, QXL_NON_PAGED VOID SystemDisplayWrite(_In_reads_bytes_(SourceHeight * SourceStride) VOID* pSource,
_In_ UINT SourceWidth, _In_ UINT SourceWidth,
_In_ UINT SourceHeight, _In_ UINT SourceHeight,
_In_ UINT SourceStride, _In_ UINT SourceStride,
@ -730,7 +732,7 @@ private:
D3DKMDT_HVIDPNTARGETMODESET hVidPnTargetModeSet, D3DKMDT_HVIDPNTARGETMODESET hVidPnTargetModeSet,
_In_opt_ CONST D3DKMDT_VIDPN_SOURCE_MODE* pVidPnPinnedSourceModeInfo, _In_opt_ CONST D3DKMDT_VIDPN_SOURCE_MODE* pVidPnPinnedSourceModeInfo,
D3DDDI_VIDEO_PRESENT_SOURCE_ID SourceId); D3DDDI_VIDEO_PRESENT_SOURCE_ID SourceId);
D3DDDI_VIDEO_PRESENT_SOURCE_ID FindSourceForTarget(D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId, BOOLEAN DefaultToZero); QXL_NON_PAGED D3DDDI_VIDEO_PRESENT_SOURCE_ID FindSourceForTarget(D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId, BOOLEAN DefaultToZero);
NTSTATUS IsVidPnSourceModeFieldsValid(CONST D3DKMDT_VIDPN_SOURCE_MODE* pSourceMode) const; NTSTATUS IsVidPnSourceModeFieldsValid(CONST D3DKMDT_VIDPN_SOURCE_MODE* pSourceMode) const;
NTSTATUS IsVidPnPathFieldsValid(CONST D3DKMDT_VIDPN_PRESENT_PATH* pPath) const; NTSTATUS IsVidPnPathFieldsValid(CONST D3DKMDT_VIDPN_PRESENT_PATH* pPath) const;
NTSTATUS RegisterHWInfo(_In_ ULONG Id); NTSTATUS RegisterHWInfo(_In_ ULONG Id);
@ -748,26 +750,26 @@ UnmapFrameBuffer(
_In_reads_bytes_(Length) VOID* VirtualAddress, _In_reads_bytes_(Length) VOID* VirtualAddress,
_In_ ULONG Length); _In_ ULONG Length);
UINT BPPFromPixelFormat(D3DDDIFORMAT Format); QXL_NON_PAGED UINT BPPFromPixelFormat(D3DDDIFORMAT Format);
D3DDDIFORMAT PixelFormatFromBPP(UINT BPP); QXL_NON_PAGED D3DDDIFORMAT PixelFormatFromBPP(UINT BPP);
UINT SpiceFromPixelFormat(D3DDDIFORMAT Format); UINT SpiceFromPixelFormat(D3DDDIFORMAT Format);
VOID CopyBitsGeneric( QXL_NON_PAGED VOID CopyBitsGeneric(
BLT_INFO* pDst, BLT_INFO* pDst,
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 CopyBits32_32( QXL_NON_PAGED VOID CopyBits32_32(
BLT_INFO* pDst, BLT_INFO* pDst,
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 BltBits ( QXL_NON_PAGED VOID BltBits (
BLT_INFO* pDst, BLT_INFO* pDst,
CONST BLT_INFO* pSrc, CONST BLT_INFO* pSrc,
UINT NumRects, UINT NumRects,
_In_reads_(NumRects) CONST RECT *pRects); _In_reads_(NumRects) CONST RECT *pRects);
BYTE* GetRowStart(_In_ CONST BLT_INFO* pBltInfo, CONST RECT* pRect); QXL_NON_PAGED BYTE* GetRowStart(_In_ CONST BLT_INFO* pBltInfo, CONST RECT* pRect);
VOID GetPitches(_In_ CONST BLT_INFO* pBltInfo, _Out_ LONG* pPixelPitch, _Out_ LONG* pRowPitch); QXL_NON_PAGED VOID GetPitches(_In_ CONST BLT_INFO* pBltInfo, _Out_ LONG* pPixelPitch, _Out_ LONG* pRowPitch);