summaryrefslogtreecommitdiff
path: root/src/via_driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/via_driver.c')
-rw-r--r--src/via_driver.c31
1 files changed, 24 insertions, 7 deletions
diff --git a/src/via_driver.c b/src/via_driver.c
index 55e40e6..034b34c 100644
--- a/src/via_driver.c
+++ b/src/via_driver.c
@@ -1533,13 +1533,30 @@ VIAScreenInit(SCREEN_INIT_ARGS_DECL)
if (pVia->drmmode.hwcursor) {
xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
- cursorWidth = cursorHeight = 64;
- flags = HARDWARE_CURSOR_AND_SOURCE_WITH_MASK |
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64 |
- HARDWARE_CURSOR_TRUECOLOR_AT_8BPP |
- HARDWARE_CURSOR_ARGB;
- cursorSize = (cursorWidth * cursorHeight) * (32 / 8);
- alignment = 1024;
+ switch (pVia->Chipset) {
+ case VIA_CLE266:
+ case VIA_KM400:
+ case VIA_P4M800PRO:
+ cursorWidth = cursorHeight = 64;
+ flags = HARDWARE_CURSOR_INVERT_MASK |
+ HARDWARE_CURSOR_AND_SOURCE_WITH_MASK |
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64 |
+ HARDWARE_CURSOR_TRUECOLOR_AT_8BPP |
+ HARDWARE_CURSOR_BIT_ORDER_MSBFIRST;
+ cursorSize = ((cursorWidth * cursorHeight) / 8) * 2;
+ alignment = 1024;
+ pVia->useHardwareCursor = TRUE;
+ break;
+ default:
+ cursorWidth = cursorHeight = 64;
+ flags = HARDWARE_CURSOR_AND_SOURCE_WITH_MASK |
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64 |
+ HARDWARE_CURSOR_TRUECOLOR_AT_8BPP |
+ HARDWARE_CURSOR_ARGB;
+ cursorSize = (cursorWidth * cursorHeight) * (32 / 8);
+ alignment = 1024;
+ break;
+ }
/*
* Set cursor location in frame buffer.