> > Windows disables hw pointer acceleration and draws the cursor > in frame buffer if the driver does not report pointer capabilities > in QueryAdapterInfo. In this mode OS usually does not send pointer > commands to the driver or does it with pointer set to invisible > state. This mode of operation consumes CPU time and device-to-host > traffic. Now we enable pointer hardware acceleration. > > Signed-off-by: Yuri Benditovich <yuri.benditovich@xxxxxxxxxx> > --- > qxldod/QxlDod.cpp | 30 +++++++++++++----------------- > qxldod/QxlDod.h | 3 --- > 2 files changed, 13 insertions(+), 20 deletions(-) > > diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp > index 85343e4..724e89f 100755 > --- a/qxldod/QxlDod.cpp > +++ b/qxldod/QxlDod.cpp > @@ -406,12 +406,10 @@ NTSTATUS QxlDod::QueryAdapterInfo(_In_ CONST > DXGKARG_QUERYADAPTERINFO* pQueryAda > pDriverCaps->WDDMVersion = DXGKDDI_WDDMv1_2; > pDriverCaps->HighestAcceptableAddress.QuadPart = -1; > > - if (m_pHWDevice->EnablePointer()) { > - pDriverCaps->MaxPointerWidth = POINTER_SIZE; > - pDriverCaps->MaxPointerHeight = POINTER_SIZE; > - pDriverCaps->PointerCaps.Monochrome = 1; > - pDriverCaps->PointerCaps.Color = 1; > - } > + pDriverCaps->MaxPointerWidth = POINTER_SIZE; > + pDriverCaps->MaxPointerHeight = POINTER_SIZE; > + pDriverCaps->PointerCaps.Monochrome = 1; > + pDriverCaps->PointerCaps.Color = 1; > > pDriverCaps->SupportNonVGA = TRUE; > > @@ -4428,7 +4426,7 @@ NTSTATUS QxlDevice::SetPointerShape(_In_ CONST > DXGKARG_SETPOINTERSHAPE* pSetPoi > pSetPointerShape->Height, > pSetPointerShape->XHot, > pSetPointerShape->YHot)); > - if (!EnablePointer() || (!pSetPointerShape->Flags.Monochrome && > !pSetPointerShape->Flags.Color)) > + if (!pSetPointerShape->Flags.Monochrome && > !pSetPointerShape->Flags.Color) > return STATUS_UNSUCCESSFUL; > > QXLCursorCmd *cursor_cmd; > @@ -4508,17 +4506,15 @@ NTSTATUS QxlDevice::SetPointerPosition(_In_ CONST > DXGKARG_SETPOINTERPOSITION* pS > pSetPointerPosition->VidPnSourceId, > pSetPointerPosition->X, > pSetPointerPosition->Y)); > - if (EnablePointer()) { > - QXLCursorCmd *cursor_cmd = CursorCmd(); > - if (pSetPointerPosition->X < 0) { > - cursor_cmd->type = QXL_CURSOR_HIDE; > - } else { > - cursor_cmd->type = QXL_CURSOR_MOVE; > - cursor_cmd->u.position.x = (INT16)pSetPointerPosition->X; > - cursor_cmd->u.position.y = (INT16)pSetPointerPosition->Y; > - } > - PushCursorCmd(cursor_cmd); > + QXLCursorCmd *cursor_cmd = CursorCmd(); > + if (pSetPointerPosition->X < 0) { > + cursor_cmd->type = QXL_CURSOR_HIDE; > + } else { > + cursor_cmd->type = QXL_CURSOR_MOVE; > + cursor_cmd->u.position.x = (INT16)pSetPointerPosition->X; > + cursor_cmd->u.position.y = (INT16)pSetPointerPosition->Y; > } > + PushCursorCmd(cursor_cmd); > DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__)); > return STATUS_SUCCESS; > } > diff --git a/qxldod/QxlDod.h b/qxldod/QxlDod.h > index 1d5cf53..8503f29 100755 > --- a/qxldod/QxlDod.h > +++ b/qxldod/QxlDod.h > @@ -245,7 +245,6 @@ public: > USHORT GetModeNumber(USHORT idx) {return m_ModeNumbers[idx];} > USHORT GetCurrentModeIndex(void) {return m_CurrentMode;} > VOID SetCurrentModeIndex(USHORT idx) {m_CurrentMode = idx;} > - virtual BOOLEAN EnablePointer(void) = 0; > virtual NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE* > DstAddr, > _In_ UINT DstBitPerPixel, > _In_ BYTE* SrcAddr, > @@ -289,7 +288,6 @@ public: > NTSTATUS SetPowerState(DEVICE_POWER_STATE DevicePowerState, > DXGK_DISPLAY_INFORMATION* pDispInfo); > NTSTATUS HWInit(PCM_RESOURCE_LIST pResList, DXGK_DISPLAY_INFORMATION* > pDispInfo); > NTSTATUS HWClose(void); > - BOOLEAN EnablePointer(void) { return TRUE; } > NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE* DstAddr, > _In_ UINT DstBitPerPixel, > _In_ BYTE* SrcAddr, > @@ -464,7 +462,6 @@ public: > NTSTATUS SetPowerState(DEVICE_POWER_STATE DevicePowerState, > DXGK_DISPLAY_INFORMATION* pDispInfo); > NTSTATUS HWInit(PCM_RESOURCE_LIST pResList, DXGK_DISPLAY_INFORMATION* > pDispInfo); > NTSTATUS HWClose(void); > - BOOLEAN EnablePointer(void) { return FALSE; } > NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE* DstAddr, > _In_ UINT DstBitPerPixel, > _In_ BYTE* SrcAddr, Acked-by: Frediano Ziglio <fziglio@xxxxxxxxxx> Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel