st/xorg: Add a customizer option to get rid of annoying cursor update flicker
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
This commit is contained in:
parent
f0bbf130f9
commit
bfd065c71e
|
@ -234,6 +234,10 @@ crtc_load_cursor_argb_ga3d(xf86CrtcPtr crtc, CARD32 * image)
|
||||||
64, 64, (void*)image, 64 * 4, 0, 0);
|
64, 64, (void*)image, 64 * 4, 0, 0);
|
||||||
ms->ctx->transfer_unmap(ms->ctx, transfer);
|
ms->ctx->transfer_unmap(ms->ctx, transfer);
|
||||||
ms->ctx->transfer_destroy(ms->ctx, transfer);
|
ms->ctx->transfer_destroy(ms->ctx, transfer);
|
||||||
|
|
||||||
|
if (crtc->cursor_shown)
|
||||||
|
drmModeSetCursor(ms->fd, crtcp->drm_crtc->crtc_id,
|
||||||
|
crtcp->cursor_handle, 64, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE_LIBKMS
|
#if HAVE_LIBKMS
|
||||||
|
@ -271,6 +275,10 @@ crtc_load_cursor_argb_kms(xf86CrtcPtr crtc, CARD32 * image)
|
||||||
memcpy(ptr, image, 64*64*4);
|
memcpy(ptr, image, 64*64*4);
|
||||||
kms_bo_unmap(crtcp->cursor_bo);
|
kms_bo_unmap(crtcp->cursor_bo);
|
||||||
|
|
||||||
|
if (crtc->cursor_shown)
|
||||||
|
drmModeSetCursor(ms->fd, crtcp->drm_crtc->crtc_id,
|
||||||
|
crtcp->cursor_handle, 64, 64);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
err_bo_destroy:
|
err_bo_destroy:
|
||||||
|
|
|
@ -791,7 +791,9 @@ drv_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||||
if (!ms->SWCursor)
|
if (!ms->SWCursor)
|
||||||
xf86_cursors_init(pScreen, 64, 64,
|
xf86_cursors_init(pScreen, 64, 64,
|
||||||
HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64 |
|
HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64 |
|
||||||
HARDWARE_CURSOR_ARGB);
|
HARDWARE_CURSOR_ARGB |
|
||||||
|
((cust && cust->unhidden_hw_cursor_update) ?
|
||||||
|
HARDWARE_CURSOR_UPDATE_UNHIDDEN : 0));
|
||||||
|
|
||||||
/* Must force it before EnterVT, so we are in control of VT and
|
/* Must force it before EnterVT, so we are in control of VT and
|
||||||
* later memory should be bound when allocating, e.g rotate_mem */
|
* later memory should be bound when allocating, e.g rotate_mem */
|
||||||
|
|
|
@ -76,6 +76,7 @@ typedef struct _CustomizerRec
|
||||||
Bool dirty_throttling;
|
Bool dirty_throttling;
|
||||||
Bool swap_throttling;
|
Bool swap_throttling;
|
||||||
Bool no_3d;
|
Bool no_3d;
|
||||||
|
Bool unhidden_hw_cursor_update;
|
||||||
Bool (*winsys_pre_init) (struct _CustomizerRec *cust, int fd);
|
Bool (*winsys_pre_init) (struct _CustomizerRec *cust, int fd);
|
||||||
Bool (*winsys_screen_init)(struct _CustomizerRec *cust);
|
Bool (*winsys_screen_init)(struct _CustomizerRec *cust);
|
||||||
Bool (*winsys_screen_close)(struct _CustomizerRec *cust);
|
Bool (*winsys_screen_close)(struct _CustomizerRec *cust);
|
||||||
|
|
Loading…
Reference in New Issue