From: Rodolphe O. <or...@la...> - 2001-07-26 01:13:06
|
On Tue, 24 Jul 2001, Steffen Seeger wrote: > > (Note that I also wanted to go further to pointer support, but it seems > > the Matrox do *not* support a pointer in any VGA-compatible mode.) > > If the cursor is provided by the ramdac unit, chances are high it does. > Just try to enable it and see what happens... You were right. I got it: the Matrox pointer runs in text mode. (And your 3-color pointer is fun btw! ;-) Note that storing the pointer shape in the fb memory from the ramdac/ source files is not so easy... (The ramdac module does not know anything from the fb adresses, etc.) It seems you did not have to think to this with the Permedia. I currently do this by implementing a set of "pseudo-registers" via the chipset Gx00-bind.c functions (mgag_dac_out8()) that in fact, stores into the framebuffer. Like this: [...chipset/Matrox/Gx00-bind.c...] static inline void mgag_dac_out8(mgag_chipset_io_t *mgag_io, kgi_u8_t val, kgi_u32_t reg) { if (reg & PX_POINTER1) { /* This is not a real DAC register: we access the pointer ** shape in fb memory */ KRN_DEBUG(2, "Cursor1[%.3x] <- %.2x (@%.8x)", reg & 0x3FF, val, mgag_io->fb.base_virt + POINTER1_BASE_ADDR + (reg & 0x3FF)); mem_out8(val, mgag_io->fb.base_virt + POINTER1_BASE_ADDR + (reg & 0x3FF)); return; /* Early return */ } if (mgag_io->flags & MGAG_IF_VGA_MODE) { [...] Therefore, the ramdac/ modules uses MGAG_DAC_OUT8(val, reg) usual functions (except that reg is not really a register from the Matrox documentation, but PX_POINTER1 | index in the pointer shape). Is this the way you think it should be implemented? Still, I have to figure out how to choose/select the pointer shape address in the fb (in fact, with this scheme, it's the chipset driver that should init this). (Currently, I use a hardcoded #define POINTER1_BASE_ADDRESS as the base address, but I guess it had better be computed at init() time depending on the amount of memory available, e.g. at the end of the memory.) Especially if more than 1 pointer shape is supported, another "virtual DAC reg" should be added to select the wanted shape - and it will in fact trigger a change of other EDAC registers. (Do you think support for more than 1 pointer shape is important?) Well, anyway, that's a fun new feature and it even runs in VGA... I'm happy! :-) Rodolphe |