diff -up xf86-video-qxl-20130514/src/compat/compat-lookup3.c.compat2 xf86-video-qxl-20130514/src/compat/compat-lookup3.c --- xf86-video-qxl-20130514/src/compat/compat-lookup3.c.compat2 2013-07-03 14:19:39.007334520 +1000 +++ xf86-video-qxl-20130514/src/compat/compat-lookup3.c 2013-07-03 14:19:56.102748510 +1000 @@ -3,17 +3,17 @@ lookup3.c, by Bob Jenkins, May 2006, Public Domain. These are functions for producing 32-bit hashes for hash table lookup. -hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final() +compat_hashword(), compat_hashlittle(), compat_hashlittle2(), compat_hashbig(), mix(), and final() are externally useful functions. Routines to test the hash are included if SELF_TEST is defined. You can use this free for any purpose. It's in the public domain. It has no warranty. -You probably want to use hashlittle(). hashlittle() and hashbig() -hash byte arrays. hashlittle() is is faster than hashbig() on +You probably want to use compat_hashlittle(). compat_hashlittle() and compat_hashbig() +hash byte arrays. compat_hashlittle() is is faster than compat_hashbig() on little-endian machines. Intel and AMD are little-endian machines. -On second thought, you probably want hashlittle2(), which is identical to -hashlittle() except it returns two 32-bit hashes for the price of one. -You could implement hashbig2() if you wanted but I haven't bothered here. +On second thought, you probably want compat_hashlittle2(), which is identical to +compat_hashlittle() except it returns two 32-bit hashes for the price of one. +You could implement compat_hashbig2() if you wanted but I haven't bothered here. If you want to find a hash of, say, exactly 7 integers, do a = i1; b = i2; c = i3; @@ -23,9 +23,9 @@ If you want to find a hash of, say, exac a += i7; final(a,b,c); then use c as the hash value. If you have a variable length array of -4-byte integers to hash, use hashword(). If you have a byte array (like -a character string), use hashlittle(). If you have several byte arrays, or -a mix of things, see the comments above hashlittle(). +4-byte integers to hash, use compat_hashword(). If you have a byte array (like +a character string), use compat_hashlittle(). If you have several byte arrays, or +a mix of things, see the comments above compat_hashlittle(). Why is this so big? I read 12 bytes at a time into 3 4-byte integers, then mix those integers. This is fast (you can do a lot more thorough @@ -161,14 +161,14 @@ and these came close: -- that the key be an array of uint32_t's, and -- that the length be the number of uint32_t's in the key - The function hashword() is identical to hashlittle() on little-endian - machines, and identical to hashbig() on big-endian machines, + The function compat_hashword() is identical to compat_hashlittle() on little-endian + machines, and identical to compat_hashbig() on big-endian machines, except that the length has to be measured in uint32_ts rather than in - bytes. hashlittle() is more complicated than hashword() only because - hashlittle() has to dance around fitting the key bytes into registers. + bytes. compat_hashlittle() is more complicated than compat_hashword() only because + compat_hashlittle() has to dance around fitting the key bytes into registers. -------------------------------------------------------------------- */ -uint32_t hashword( +uint32_t compat_hashword( const uint32_t *k, /* the key, an array of uint32_t values */ size_t length, /* the length of the key, in uint32_ts */ uint32_t initval) /* the previous hash, or an arbitrary value */ @@ -206,13 +206,13 @@ uint32_t hashword( /* -------------------------------------------------------------------- -hashword2() -- same as hashword(), but take two seeds and return two +compat_hashword2() -- same as compat_hashword(), but take two seeds and return two 32-bit values. pc and pb must both be nonnull, and *pc and *pb must both be initialized with seeds. If you pass in (*pb)==0, the output -(*pc) will be the same as the return value from hashword(). +(*pc) will be the same as the return value from compat_hashword(). -------------------------------------------------------------------- */ -void hashword2 ( +void compat_hashword2 ( const uint32_t *k, /* the key, an array of uint32_t values */ size_t length, /* the length of the key, in uint32_ts */ uint32_t *pc, /* IN: seed OUT: primary hash value */ @@ -252,7 +252,7 @@ uint32_t *pb) /* IN: /* ------------------------------------------------------------------------------- -hashlittle() -- hash a variable-length key into a 32-bit value +compat_hashlittle() -- hash a variable-length key into a 32-bit value k : the key (the unaligned variable-length array of bytes) length : the length of the key, counting by bytes initval : can be any 4-byte value @@ -267,7 +267,7 @@ use a bitmask. For example, if you need In which case, the hash table should have hashsize(10) elements. If you are hashing n strings (uint8_t **)k, do it like this: - for (i=0, h=0; i static void -push_cursor (qxl_screen_t *qxl, struct qxl_cursor_cmd *cursor) +push_cursor (compat_qxl_screen_t *compat_qxl, struct compat_qxl_cursor_cmd *cursor) { - struct qxl_command cmd; + struct compat_qxl_command cmd; - /* See comment on push_command() in qxl_driver.c */ - if (qxl->rom->mode != ~0) + /* See comment on push_command() in compat_qxl_driver.c */ + if (compat_qxl->rom->mode != ~0) { cmd.type = QXL_CMD_CURSOR; - cmd.data = physical_address (qxl, cursor); + cmd.data = physical_address (compat_qxl, cursor); - qxl_ring_push (qxl->cursor_ring, &cmd); + compat_qxl_ring_push (compat_qxl->cursor_ring, &cmd); } } -static struct qxl_cursor_cmd * -qxl_alloc_cursor_cmd(qxl_screen_t *qxl) +static struct compat_qxl_cursor_cmd * +compat_qxl_alloc_cursor_cmd(compat_qxl_screen_t *compat_qxl) { - struct qxl_cursor_cmd *cmd = - qxl_allocnf (qxl, sizeof(struct qxl_cursor_cmd)); + struct compat_qxl_cursor_cmd *cmd = + compat_qxl_allocnf (compat_qxl, sizeof(struct compat_qxl_cursor_cmd)); cmd->release_info.id = pointer_to_u64 (cmd) | 1; @@ -51,43 +51,43 @@ qxl_alloc_cursor_cmd(qxl_screen_t *qxl) } static void -qxl_set_cursor_position(ScrnInfoPtr pScrn, int x, int y) +compat_qxl_set_cursor_position(ScrnInfoPtr pScrn, int x, int y) { - qxl_screen_t *qxl = pScrn->driverPrivate; - struct qxl_cursor_cmd *cmd = qxl_alloc_cursor_cmd(qxl); + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; + struct compat_qxl_cursor_cmd *cmd = compat_qxl_alloc_cursor_cmd(compat_qxl); - qxl->cur_x = x; - qxl->cur_y = y; + compat_qxl->cur_x = x; + compat_qxl->cur_y = y; cmd->type = QXL_CURSOR_MOVE; - cmd->u.position.x = qxl->cur_x + qxl->hot_x; - cmd->u.position.y = qxl->cur_y + qxl->hot_y; + cmd->u.position.x = compat_qxl->cur_x + compat_qxl->hot_x; + cmd->u.position.y = compat_qxl->cur_y + compat_qxl->hot_y; - push_cursor(qxl, cmd); + push_cursor(compat_qxl, cmd); } static void -qxl_load_cursor_image(ScrnInfoPtr pScrn, unsigned char *bits) +compat_qxl_load_cursor_image(ScrnInfoPtr pScrn, unsigned char *bits) { } static void -qxl_set_cursor_colors(ScrnInfoPtr pScrn, int bg, int fg) +compat_qxl_set_cursor_colors(ScrnInfoPtr pScrn, int bg, int fg) { /* Should not be called since UseHWCursor returned FALSE */ } static void -qxl_load_cursor_argb (ScrnInfoPtr pScrn, CursorPtr pCurs) +compat_qxl_load_cursor_argb (ScrnInfoPtr pScrn, CursorPtr pCurs) { - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; int w = pCurs->bits->width; int h = pCurs->bits->height; int size = w * h * sizeof (CARD32); - struct qxl_cursor_cmd *cmd = qxl_alloc_cursor_cmd (qxl); - struct qxl_cursor *cursor = - qxl_allocnf(qxl, sizeof(struct qxl_cursor) + size); + struct compat_qxl_cursor_cmd *cmd = compat_qxl_alloc_cursor_cmd (compat_qxl); + struct compat_qxl_cursor *cursor = + compat_qxl_allocnf(compat_qxl, sizeof(struct compat_qxl_cursor) + size); cursor->header.unique = 0; cursor->header.type = CURSOR_TYPE_ALPHA; @@ -121,20 +121,20 @@ qxl_load_cursor_argb (ScrnInfoPtr pScrn, } #endif - qxl->hot_x = pCurs->bits->xhot; - qxl->hot_y = pCurs->bits->yhot; + compat_qxl->hot_x = pCurs->bits->xhot; + compat_qxl->hot_y = pCurs->bits->yhot; cmd->type = QXL_CURSOR_SET; - cmd->u.set.position.x = qxl->cur_x + qxl->hot_x; - cmd->u.set.position.y = qxl->cur_y + qxl->hot_y; - cmd->u.set.shape = physical_address (qxl, cursor); + cmd->u.set.position.x = compat_qxl->cur_x + compat_qxl->hot_x; + cmd->u.set.position.y = compat_qxl->cur_y + compat_qxl->hot_y; + cmd->u.set.shape = physical_address (compat_qxl, cursor); cmd->u.set.visible = TRUE; - push_cursor(qxl, cmd); + push_cursor(compat_qxl, cmd); } static Bool -qxl_use_hw_cursor (ScreenPtr pScrn, CursorPtr pCurs) +compat_qxl_use_hw_cursor (ScreenPtr pScrn, CursorPtr pCurs) { /* Old-school bitmap cursors are not * hardware accelerated for now. @@ -143,36 +143,36 @@ qxl_use_hw_cursor (ScreenPtr pScrn, Curs } static Bool -qxl_use_hw_cursorARGB (ScreenPtr pScrn, CursorPtr pCurs) +compat_qxl_use_hw_cursorARGB (ScreenPtr pScrn, CursorPtr pCurs) { return TRUE; } static void -qxl_hide_cursor(ScrnInfoPtr pScrn) +compat_qxl_hide_cursor(ScrnInfoPtr pScrn) { - qxl_screen_t *qxl = pScrn->driverPrivate; - struct qxl_cursor_cmd *cursor = qxl_alloc_cursor_cmd(qxl); + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; + struct compat_qxl_cursor_cmd *cursor = compat_qxl_alloc_cursor_cmd(compat_qxl); cursor->type = QXL_CURSOR_HIDE; - push_cursor(qxl, cursor); + push_cursor(compat_qxl, cursor); } static void -qxl_show_cursor(ScrnInfoPtr pScrn) +compat_qxl_show_cursor(ScrnInfoPtr pScrn) { /* * slightly hacky, but there's no QXL_CURSOR_SHOW. Could maybe do * QXL_CURSOR_SET? */ - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; - qxl_set_cursor_position(pScrn, qxl->cur_x, qxl->cur_y); + compat_qxl_set_cursor_position(pScrn, compat_qxl->cur_x, compat_qxl->cur_y); } hidden void -qxl_cursor_init(ScreenPtr pScreen) +compat_qxl_cursor_init(ScreenPtr pScreen) { xf86CursorInfoPtr cursor; @@ -182,14 +182,14 @@ qxl_cursor_init(ScreenPtr pScreen) cursor->MaxWidth = cursor->MaxHeight = 64; /* cursor->Flags; */ - cursor->SetCursorPosition = qxl_set_cursor_position; - cursor->LoadCursorARGB = qxl_load_cursor_argb; - cursor->UseHWCursor = qxl_use_hw_cursor; - cursor->UseHWCursorARGB = qxl_use_hw_cursorARGB; - cursor->LoadCursorImage = qxl_load_cursor_image; - cursor->SetCursorColors = qxl_set_cursor_colors; - cursor->HideCursor = qxl_hide_cursor; - cursor->ShowCursor = qxl_show_cursor; + cursor->SetCursorPosition = compat_qxl_set_cursor_position; + cursor->LoadCursorARGB = compat_qxl_load_cursor_argb; + cursor->UseHWCursor = compat_qxl_use_hw_cursor; + cursor->UseHWCursorARGB = compat_qxl_use_hw_cursorARGB; + cursor->LoadCursorImage = compat_qxl_load_cursor_image; + cursor->SetCursorColors = compat_qxl_set_cursor_colors; + cursor->HideCursor = compat_qxl_hide_cursor; + cursor->ShowCursor = compat_qxl_show_cursor; if (!xf86InitCursor(pScreen, cursor)) xfree(cursor); diff -up xf86-video-qxl-20130514/src/compat/compat-qxl_driver.c.compat2 xf86-video-qxl-20130514/src/compat/compat-qxl_driver.c --- xf86-video-qxl-20130514/src/compat/compat-qxl_driver.c.compat2 2013-07-03 14:19:39.009334569 +1000 +++ xf86-video-qxl-20130514/src/compat/compat-qxl_driver.c 2013-07-03 14:19:56.103748552 +1000 @@ -20,10 +20,10 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/** \file qxl_driver.c +/** \file compat_qxl_driver.c * \author Adam Jackson * - * This is qxl, a driver for the Qumranet paravirtualized graphics device + * This is compat_qxl, a driver for the Qumranet paravirtualized graphics device * in qemu. */ @@ -39,12 +39,12 @@ #define CHECK_POINT() static int -garbage_collect (qxl_screen_t *qxl) +garbage_collect (compat_qxl_screen_t *compat_qxl) { uint64_t id; int i = 0; - while (qxl_ring_pop (qxl->release_ring, &id)) + while (compat_qxl_ring_pop (compat_qxl->release_ring, &id)) { while (id) { @@ -54,9 +54,9 @@ garbage_collect (qxl_screen_t *qxl) */ #define POINTER_MASK ((1 << 2) - 1) - union qxl_release_info *info = u64_to_pointer (id & ~POINTER_MASK); - struct qxl_cursor_cmd *cmd = (struct qxl_cursor_cmd *)info; - struct qxl_drawable *drawable = (struct qxl_drawable *)info; + union compat_qxl_release_info *info = u64_to_pointer (id & ~POINTER_MASK); + struct compat_qxl_cursor_cmd *cmd = (struct compat_qxl_cursor_cmd *)info; + struct compat_qxl_drawable *drawable = (struct compat_qxl_drawable *)info; int is_cursor = FALSE; if ((id & POINTER_MASK) == 1) @@ -64,22 +64,22 @@ garbage_collect (qxl_screen_t *qxl) if (is_cursor && cmd->type == QXL_CURSOR_SET) { - struct qxl_cursor *cursor = (void *)virtual_address ( - qxl, u64_to_pointer (cmd->u.set.shape)); + struct compat_qxl_cursor *cursor = (void *)virtual_address ( + compat_qxl, u64_to_pointer (cmd->u.set.shape)); - qxl_free (qxl->mem, cursor); + compat_qxl_free (compat_qxl->mem, cursor); } else if (!is_cursor && drawable->type == QXL_DRAW_COPY) { - struct qxl_image *image = virtual_address ( - qxl, u64_to_pointer (drawable->u.copy.src_bitmap)); + struct compat_qxl_image *image = virtual_address ( + compat_qxl, u64_to_pointer (drawable->u.copy.src_bitmap)); - qxl_image_destroy (qxl, image); + compat_qxl_image_destroy (compat_qxl, image); } id = info->next; - qxl_free (qxl->mem, info); + compat_qxl_free (compat_qxl->mem, info); } } @@ -87,7 +87,7 @@ garbage_collect (qxl_screen_t *qxl) } static void -qxl_usleep (int useconds) +compat_qxl_usleep (int useconds) { struct timespec t; @@ -102,35 +102,35 @@ qxl_usleep (int useconds) #if 0 static void -push_update_area (qxl_screen_t *qxl, const struct qxl_rect *area) +push_update_area (compat_qxl_screen_t *compat_qxl, const struct compat_qxl_rect *area) { - struct qxl_update_cmd *update = qxl_allocnf (qxl, sizeof *update); - struct qxl_command cmd; + struct compat_qxl_update_cmd *update = compat_qxl_allocnf (compat_qxl, sizeof *update); + struct compat_qxl_command cmd; update->release_info.id = (uint64_t)update; update->area = *area; update->update_id = 0; cmd.type = QXL_CMD_UDPATE; - cmd.data = physical_address (qxl, update); + cmd.data = physical_address (compat_qxl, update); - qxl_ring_push (qxl->command_ring, &cmd); + compat_qxl_ring_push (compat_qxl->command_ring, &cmd); } #endif void * -qxl_allocnf (qxl_screen_t *qxl, unsigned long size) +compat_qxl_allocnf (compat_qxl_screen_t *compat_qxl, unsigned long size) { void *result; int n_attempts = 0; static int nth_oom = 1; - garbage_collect (qxl); + garbage_collect (compat_qxl); - while (!(result = qxl_alloc (qxl->mem, size))) + while (!(result = compat_qxl_alloc (compat_qxl->mem, size))) { - struct qxl_ram_header *ram_header = (void *)((unsigned long)qxl->ram + - qxl->rom->ram_header_offset); + struct compat_qxl_ram_header *ram_header = (void *)((unsigned long)compat_qxl->ram + + compat_qxl->rom->ram_header_offset); /* Rather than go out of memory, we simply tell the * device to dump everything @@ -140,21 +140,21 @@ qxl_allocnf (qxl_screen_t *qxl, unsigned ram_header->update_area.left = 0; ram_header->update_area.right = 800; - outb (qxl->io_base + QXL_IO_UPDATE_AREA, 0); + outb (compat_qxl->io_base + QXL_IO_UPDATE_AREA, 0); ErrorF ("eliminated memory (%d)\n", nth_oom++); - outb (qxl->io_base + QXL_IO_NOTIFY_OOM, 0); + outb (compat_qxl->io_base + QXL_IO_NOTIFY_OOM, 0); - qxl_usleep (10000); + compat_qxl_usleep (10000); - if (garbage_collect (qxl)) + if (garbage_collect (compat_qxl)) { n_attempts = 0; } else if (++n_attempts == 1000) { - qxl_mem_dump_stats (qxl->mem, "Out of mem - stats\n"); + compat_qxl_mem_dump_stats (compat_qxl->mem, "Out of mem - stats\n"); fprintf (stderr, "Out of memory\n"); exit (1); @@ -165,127 +165,127 @@ qxl_allocnf (qxl_screen_t *qxl, unsigned } static Bool -qxl_blank_screen(ScreenPtr pScreen, int mode) +compat_qxl_blank_screen(ScreenPtr pScreen, int mode) { return TRUE; } static void -qxl_unmap_memory(qxl_screen_t *qxl, int scrnIndex) +compat_qxl_unmap_memory(compat_qxl_screen_t *compat_qxl, int scrnIndex) { #ifdef XSERVER_LIBPCIACCESS - if (qxl->ram) - pci_device_unmap_range(qxl->pci, qxl->ram, qxl->pci->regions[0].size); - if (qxl->vram) - pci_device_unmap_range(qxl->pci, qxl->vram, qxl->pci->regions[1].size); - if (qxl->rom) - pci_device_unmap_range(qxl->pci, qxl->rom, qxl->pci->regions[2].size); + if (compat_qxl->ram) + pci_device_unmap_range(compat_qxl->pci, compat_qxl->ram, compat_qxl->pci->regions[0].size); + if (compat_qxl->vram) + pci_device_unmap_range(compat_qxl->pci, compat_qxl->vram, compat_qxl->pci->regions[1].size); + if (compat_qxl->rom) + pci_device_unmap_range(compat_qxl->pci, compat_qxl->rom, compat_qxl->pci->regions[2].size); #else - if (qxl->ram) - xf86UnMapVidMem(scrnIndex, qxl->ram, (1 << qxl->pci->size[0])); - if (qxl->vram) - xf86UnMapVidMem(scrnIndex, qxl->vram, (1 << qxl->pci->size[1])); - if (qxl->rom) - xf86UnMapVidMem(scrnIndex, qxl->rom, (1 << qxl->pci->size[2])); + if (compat_qxl->ram) + xf86UnMapVidMem(scrnIndex, compat_qxl->ram, (1 << compat_qxl->pci->size[0])); + if (compat_qxl->vram) + xf86UnMapVidMem(scrnIndex, compat_qxl->vram, (1 << compat_qxl->pci->size[1])); + if (compat_qxl->rom) + xf86UnMapVidMem(scrnIndex, compat_qxl->rom, (1 << compat_qxl->pci->size[2])); #endif - qxl->ram = qxl->ram_physical = qxl->vram = qxl->rom = NULL; + compat_qxl->ram = compat_qxl->ram_physical = compat_qxl->vram = compat_qxl->rom = NULL; - qxl->num_modes = 0; - qxl->modes = NULL; + compat_qxl->num_modes = 0; + compat_qxl->modes = NULL; } static Bool -qxl_map_memory(qxl_screen_t *qxl, int scrnIndex) +compat_qxl_map_memory(compat_qxl_screen_t *compat_qxl, int scrnIndex) { #ifdef XSERVER_LIBPCIACCESS - pci_device_map_range(qxl->pci, qxl->pci->regions[0].base_addr, - qxl->pci->regions[0].size, + pci_device_map_range(compat_qxl->pci, compat_qxl->pci->regions[0].base_addr, + compat_qxl->pci->regions[0].size, PCI_DEV_MAP_FLAG_WRITABLE | PCI_DEV_MAP_FLAG_WRITE_COMBINE, - &qxl->ram); - qxl->ram_physical = u64_to_pointer (qxl->pci->regions[0].base_addr); + &compat_qxl->ram); + compat_qxl->ram_physical = u64_to_pointer (compat_qxl->pci->regions[0].base_addr); - pci_device_map_range(qxl->pci, qxl->pci->regions[1].base_addr, - qxl->pci->regions[1].size, + pci_device_map_range(compat_qxl->pci, compat_qxl->pci->regions[1].base_addr, + compat_qxl->pci->regions[1].size, PCI_DEV_MAP_FLAG_WRITABLE, - &qxl->vram); + &compat_qxl->vram); - pci_device_map_range(qxl->pci, qxl->pci->regions[2].base_addr, - qxl->pci->regions[2].size, 0, - (void **)&qxl->rom); + pci_device_map_range(compat_qxl->pci, compat_qxl->pci->regions[2].base_addr, + compat_qxl->pci->regions[2].size, 0, + (void **)&compat_qxl->rom); - qxl->io_base = qxl->pci->regions[3].base_addr; + compat_qxl->io_base = compat_qxl->pci->regions[3].base_addr; #else - qxl->ram = xf86MapPciMem(scrnIndex, VIDMEM_FRAMEBUFFER, - qxl->pci_tag, qxl->pci->memBase[0], - (1 << qxl->pci->size[0])); - qxl->ram_physical = (void *)qxl->pci->memBase[0]; - - qxl->vram = xf86MapPciMem(scrnIndex, VIDMEM_MMIO | VIDMEM_MMIO_32BIT, - qxl->pci_tag, qxl->pci->memBase[1], - (1 << qxl->pci->size[1])); - - qxl->rom = xf86MapPciMem(scrnIndex, VIDMEM_MMIO | VIDMEM_MMIO_32BIT, - qxl->pci_tag, qxl->pci->memBase[2], - (1 << qxl->pci->size[2])); + compat_qxl->ram = xf86MapPciMem(scrnIndex, VIDMEM_FRAMEBUFFER, + compat_qxl->pci_tag, compat_qxl->pci->memBase[0], + (1 << compat_qxl->pci->size[0])); + compat_qxl->ram_physical = (void *)compat_qxl->pci->memBase[0]; + + compat_qxl->vram = xf86MapPciMem(scrnIndex, VIDMEM_MMIO | VIDMEM_MMIO_32BIT, + compat_qxl->pci_tag, compat_qxl->pci->memBase[1], + (1 << compat_qxl->pci->size[1])); + + compat_qxl->rom = xf86MapPciMem(scrnIndex, VIDMEM_MMIO | VIDMEM_MMIO_32BIT, + compat_qxl->pci_tag, compat_qxl->pci->memBase[2], + (1 << compat_qxl->pci->size[2])); - qxl->io_base = qxl->pci->ioBase[3]; + compat_qxl->io_base = compat_qxl->pci->ioBase[3]; #endif - if (!qxl->ram || !qxl->vram || !qxl->rom) + if (!compat_qxl->ram || !compat_qxl->vram || !compat_qxl->rom) return FALSE; xf86DrvMsg(scrnIndex, X_INFO, "ram at %p; vram at %p; rom at %p\n", - qxl->ram, qxl->vram, qxl->rom); + compat_qxl->ram, compat_qxl->vram, compat_qxl->rom); - qxl->num_modes = *(uint32_t *)((uint8_t *)qxl->rom + qxl->rom->modes_offset); - qxl->modes = (struct qxl_mode *)(((uint8_t *)qxl->rom) + qxl->rom->modes_offset + 4); + compat_qxl->num_modes = *(uint32_t *)((uint8_t *)compat_qxl->rom + compat_qxl->rom->modes_offset); + compat_qxl->modes = (struct compat_qxl_mode *)(((uint8_t *)compat_qxl->rom) + compat_qxl->rom->modes_offset + 4); return TRUE; } static void -qxl_save_state(ScrnInfoPtr pScrn) +compat_qxl_save_state(ScrnInfoPtr pScrn) { - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; - vgaHWSaveFonts(pScrn, &qxl->vgaRegs); + vgaHWSaveFonts(pScrn, &compat_qxl->vgaRegs); } static void -qxl_restore_state(ScrnInfoPtr pScrn) +compat_qxl_restore_state(ScrnInfoPtr pScrn) { - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; - vgaHWRestoreFonts(pScrn, &qxl->vgaRegs); + vgaHWRestoreFonts(pScrn, &compat_qxl->vgaRegs); } static Bool -qxl_close_screen(int scrnIndex, ScreenPtr pScreen) +compat_qxl_close_screen(int scrnIndex, ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; if (pScrn->vtSema) { - qxl_restore_state(pScrn); - qxl_unmap_memory(qxl, scrnIndex); + compat_qxl_restore_state(pScrn); + compat_qxl_unmap_memory(compat_qxl, scrnIndex); } pScrn->vtSema = FALSE; - xfree(qxl->fb); + xfree(compat_qxl->fb); - pScreen->CreateScreenResources = qxl->create_screen_resources; - pScreen->CloseScreen = qxl->close_screen; + pScreen->CreateScreenResources = compat_qxl->create_screen_resources; + pScreen->CloseScreen = compat_qxl->close_screen; return pScreen->CloseScreen(scrnIndex, pScreen); } static Bool -qxl_switch_mode(int scrnIndex, DisplayModePtr p, int flags) +compat_qxl_switch_mode(int scrnIndex, DisplayModePtr p, int flags) { - qxl_screen_t *qxl = xf86Screens[scrnIndex]->driverPrivate; + compat_qxl_screen_t *compat_qxl = xf86Screens[scrnIndex]->driverPrivate; int mode_index = (int)(unsigned long)p->Private; - struct qxl_mode *m = qxl->modes + mode_index; - ScreenPtr pScreen = qxl->pScrn->pScreen; + struct compat_qxl_mode *m = compat_qxl->modes + mode_index; + ScreenPtr pScreen = compat_qxl->pScrn->pScreen; if (!m) return FALSE; @@ -294,11 +294,11 @@ qxl_switch_mode(int scrnIndex, DisplayMo xf86DrvMsg (scrnIndex, X_INFO, "Setting mode %d (%d x %d) (%d x %d) %p\n", m->id, m->x_res, m->y_res, p->HDisplay, p->VDisplay, p); - outb(qxl->io_base + QXL_IO_RESET, 0); + outb(compat_qxl->io_base + QXL_IO_RESET, 0); - outb(qxl->io_base + QXL_IO_SET_MODE, m->id); + outb(compat_qxl->io_base + QXL_IO_SET_MODE, m->id); - qxl->bytes_per_pixel = (qxl->pScrn->bitsPerPixel + 7) / 8; + compat_qxl->bytes_per_pixel = (compat_qxl->pScrn->bitsPerPixel + 7) / 8; /* If this happens out of ScreenInit, we won't have a screen yet. In that * case createScreenResources will make things right. @@ -313,15 +313,15 @@ qxl_switch_mode(int scrnIndex, DisplayMo pPixmap, m->x_res, m->y_res, -1, -1, - qxl->pScrn->displayWidth * qxl->bytes_per_pixel, + compat_qxl->pScrn->displayWidth * compat_qxl->bytes_per_pixel, NULL); } } - if (qxl->mem) + if (compat_qxl->mem) { - qxl_mem_free_all (qxl->mem); - qxl_drop_image_cache (qxl); + compat_qxl_mem_free_all (compat_qxl->mem); + compat_qxl_drop_image_cache (compat_qxl); } @@ -329,9 +329,9 @@ qxl_switch_mode(int scrnIndex, DisplayMo } static void -push_drawable (qxl_screen_t *qxl, struct qxl_drawable *drawable) +push_drawable (compat_qxl_screen_t *compat_qxl, struct compat_qxl_drawable *drawable) { - struct qxl_command cmd; + struct compat_qxl_command cmd; /* When someone runs "init 3", the device will be * switched into VGA mode and there is nothing we @@ -345,25 +345,25 @@ push_drawable (qxl_screen_t *qxl, struct * The author of the QXL device is opposed to this * for reasons I don't understand. */ - if (qxl->rom->mode != ~0) + if (compat_qxl->rom->mode != ~0) { cmd.type = QXL_CMD_DRAW; - cmd.data = physical_address (qxl, drawable); + cmd.data = physical_address (compat_qxl, drawable); - qxl_ring_push (qxl->command_ring, &cmd); + compat_qxl_ring_push (compat_qxl->command_ring, &cmd); } } -static struct qxl_drawable * -make_drawable (qxl_screen_t *qxl, uint8_t type, - const struct qxl_rect *rect +static struct compat_qxl_drawable * +make_drawable (compat_qxl_screen_t *compat_qxl, uint8_t type, + const struct compat_qxl_rect *rect /* , pRegion clip */) { - struct qxl_drawable *drawable; + struct compat_qxl_drawable *drawable; CHECK_POINT(); - drawable = qxl_allocnf (qxl, sizeof *drawable); + drawable = compat_qxl_allocnf (compat_qxl, sizeof *drawable); CHECK_POINT(); @@ -383,7 +383,7 @@ make_drawable (qxl_screen_t *qxl, uint8_ if (rect) drawable->bbox = *rect; - drawable->mm_time = qxl->rom->mm_clock; + drawable->mm_time = compat_qxl->rom->mm_clock; CHECK_POINT(); @@ -405,7 +405,7 @@ enum ROPDescriptor { }; static void -undamage_box (qxl_screen_t *qxl, const struct qxl_rect *rect) +undamage_box (compat_qxl_screen_t *compat_qxl, const struct compat_qxl_rect *rect) { RegionRec region; BoxRec box; @@ -415,27 +415,27 @@ undamage_box (qxl_screen_t *qxl, const s box.x2 = rect->right; box.y2 = rect->bottom; - REGION_INIT (qxl->pScrn->pScreen, ®ion, &box, 0); + REGION_INIT (compat_qxl->pScrn->pScreen, ®ion, &box, 0); - REGION_SUBTRACT (qxl->pScrn->pScreen, &(qxl->pending_copy), &(qxl->pending_copy), ®ion); + REGION_SUBTRACT (compat_qxl->pScrn->pScreen, &(compat_qxl->pending_copy), &(compat_qxl->pending_copy), ®ion); - REGION_EMPTY (qxl->pScrn->pScreen, &(qxl->pending_copy)); + REGION_EMPTY (compat_qxl->pScrn->pScreen, &(compat_qxl->pending_copy)); } static void -clear_pending_damage (qxl_screen_t *qxl) +clear_pending_damage (compat_qxl_screen_t *compat_qxl) { - REGION_EMPTY (qxl->pScrn->pScreen, &(qxl->pending_copy)); + REGION_EMPTY (compat_qxl->pScrn->pScreen, &(compat_qxl->pending_copy)); } static void -submit_fill (qxl_screen_t *qxl, const struct qxl_rect *rect, uint32_t color) +submit_fill (compat_qxl_screen_t *compat_qxl, const struct compat_qxl_rect *rect, uint32_t color) { - struct qxl_drawable *drawable; + struct compat_qxl_drawable *drawable; CHECK_POINT(); - drawable = make_drawable (qxl, QXL_DRAW_FILL, rect); + drawable = make_drawable (compat_qxl, QXL_DRAW_FILL, rect); CHECK_POINT(); @@ -447,13 +447,13 @@ submit_fill (qxl_screen_t *qxl, const st drawable->u.fill.mask.pos.y = 0; drawable->u.fill.mask.bitmap = 0; - push_drawable (qxl, drawable); + push_drawable (compat_qxl, drawable); - undamage_box (qxl, rect); + undamage_box (compat_qxl, rect); } static void -translate_rect (struct qxl_rect *rect) +translate_rect (struct compat_qxl_rect *rect) { rect->right -= rect->left; rect->bottom -= rect->top; @@ -461,10 +461,10 @@ translate_rect (struct qxl_rect *rect) } static void -submit_copy (qxl_screen_t *qxl, const struct qxl_rect *rect) +submit_copy (compat_qxl_screen_t *compat_qxl, const struct compat_qxl_rect *rect) { - struct qxl_drawable *drawable; - ScrnInfoPtr pScrn = qxl->pScrn; + struct compat_qxl_drawable *drawable; + ScrnInfoPtr pScrn = compat_qxl->pScrn; if (rect->left == rect->right || rect->top == rect->bottom) @@ -473,13 +473,13 @@ submit_copy (qxl_screen_t *qxl, const st return ; } - drawable = make_drawable (qxl, QXL_DRAW_COPY, rect); + drawable = make_drawable (compat_qxl, QXL_DRAW_COPY, rect); drawable->u.copy.src_bitmap = physical_address ( - qxl, qxl_image_create (qxl, qxl->fb, rect->left, rect->top, + compat_qxl, compat_qxl_image_create (compat_qxl, compat_qxl->fb, rect->left, rect->top, rect->right - rect->left, rect->bottom - rect->top, - pScrn->displayWidth * qxl->bytes_per_pixel)); + pScrn->displayWidth * compat_qxl->bytes_per_pixel)); drawable->u.copy.src_area = *rect; translate_rect (&drawable->u.copy.src_area); drawable->u.copy.rop_descriptor = ROPD_OP_PUT; @@ -489,7 +489,7 @@ submit_copy (qxl_screen_t *qxl, const st drawable->u.copy.mask.pos.y = 0; drawable->u.copy.mask.bitmap = 0; - push_drawable (qxl, drawable); + push_drawable (compat_qxl, drawable); } static void @@ -511,87 +511,87 @@ print_region (const char *header, Region } static void -accept_damage (qxl_screen_t *qxl) +accept_damage (compat_qxl_screen_t *compat_qxl) { - REGION_UNION (qxl->pScrn->pScreen, &(qxl->to_be_sent), &(qxl->to_be_sent), - &(qxl->pending_copy)); + REGION_UNION (compat_qxl->pScrn->pScreen, &(compat_qxl->to_be_sent), &(compat_qxl->to_be_sent), + &(compat_qxl->pending_copy)); - REGION_EMPTY (qxl->pScrn->pScreen, &(qxl->pending_copy)); + REGION_EMPTY (compat_qxl->pScrn->pScreen, &(compat_qxl->pending_copy)); } static void -qxl_send_copies (qxl_screen_t *qxl) +compat_qxl_send_copies (compat_qxl_screen_t *compat_qxl) { BoxPtr pBox; int nbox; - nbox = REGION_NUM_RECTS (&qxl->to_be_sent); - pBox = REGION_RECTS (&qxl->to_be_sent); + nbox = REGION_NUM_RECTS (&compat_qxl->to_be_sent); + pBox = REGION_RECTS (&compat_qxl->to_be_sent); -/* if (REGION_NUM_RECTS (&qxl->to_be_sent) > 0) */ -/* print_region ("send bits", &qxl->to_be_sent); */ +/* if (REGION_NUM_RECTS (&compat_qxl->to_be_sent) > 0) */ +/* print_region ("send bits", &compat_qxl->to_be_sent); */ while (nbox--) { - struct qxl_rect qrect; + struct compat_qxl_rect qrect; qrect.top = pBox->y1; qrect.left = pBox->x1; qrect.bottom = pBox->y2; qrect.right = pBox->x2; - submit_copy (qxl, &qrect); + submit_copy (compat_qxl, &qrect); pBox++; } - REGION_EMPTY(qxl->pScrn->pScreen, &qxl->to_be_sent); + REGION_EMPTY(compat_qxl->pScrn->pScreen, &compat_qxl->to_be_sent); } static void -paint_shadow (qxl_screen_t *qxl) +paint_shadow (compat_qxl_screen_t *compat_qxl) { - struct qxl_rect qrect; + struct compat_qxl_rect qrect; qrect.top = 0; qrect.bottom = 1200; qrect.left = 0; qrect.right = 1600; - submit_copy (qxl, &qrect); + submit_copy (compat_qxl, &qrect); } static void -qxl_sanity_check (qxl_screen_t *qxl) +compat_qxl_sanity_check (compat_qxl_screen_t *compat_qxl) { /* read the mode back from the rom */ - if (!qxl->rom || !qxl->pScrn) + if (!compat_qxl->rom || !compat_qxl->pScrn) return; - if (qxl->rom->mode == ~0) + if (compat_qxl->rom->mode == ~0) { ErrorF("QXL device jumped back to VGA mode - resetting mode\n"); - qxl_switch_mode(qxl->pScrn->scrnIndex, qxl->pScrn->currentMode, 0); + compat_qxl_switch_mode(compat_qxl->pScrn->scrnIndex, compat_qxl->pScrn->currentMode, 0); } } static void -qxl_block_handler (pointer data, OSTimePtr pTimeout, pointer pRead) +compat_qxl_block_handler (pointer data, OSTimePtr pTimeout, pointer pRead) { - qxl_screen_t *qxl = (qxl_screen_t *) data; + compat_qxl_screen_t *compat_qxl = (compat_qxl_screen_t *) data; - if (!qxl->pScrn->vtSema) + if (!compat_qxl->pScrn->vtSema) return; - qxl_sanity_check(qxl); + compat_qxl_sanity_check(compat_qxl); - accept_damage (qxl); + accept_damage (compat_qxl); - qxl_send_copies (qxl); + compat_qxl_send_copies (compat_qxl); } static void -qxl_wakeup_handler (pointer data, int i, pointer LastSelectMask) +compat_qxl_wakeup_handler (pointer data, int i, pointer LastSelectMask) { } @@ -612,59 +612,59 @@ qxl_wakeup_handler (pointer data, int i, * damage, that must first be unioned onto to_be_sent, and then the new * damage must be stored in pending_copy. * - * The qxl_screen_t struct contains two regions, "pending_copy" and + * The compat_qxl_screen_t struct contains two regions, "pending_copy" and * "to_be_sent". * * Pending copy is * */ static void -qxl_on_damage (DamagePtr pDamage, RegionPtr pRegion, pointer closure) +compat_qxl_on_damage (DamagePtr pDamage, RegionPtr pRegion, pointer closure) { - qxl_screen_t *qxl = closure; + compat_qxl_screen_t *compat_qxl = closure; /* print_region ("damage", pRegion); */ /* print_region ("on_damage ", pRegion); */ - accept_damage (qxl); + accept_damage (compat_qxl); -/* print_region ("accepting, qxl->to_be_sent is now", &qxl->to_be_sent); */ +/* print_region ("accepting, compat_qxl->to_be_sent is now", &compat_qxl->to_be_sent); */ - REGION_COPY (qxl->pScrn->pScreen, &(qxl->pending_copy), pRegion); + REGION_COPY (compat_qxl->pScrn->pScreen, &(compat_qxl->pending_copy), pRegion); } static Bool -qxl_create_screen_resources(ScreenPtr pScreen) +compat_qxl_create_screen_resources(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; Bool ret; PixmapPtr pPixmap; - pScreen->CreateScreenResources = qxl->create_screen_resources; + pScreen->CreateScreenResources = compat_qxl->create_screen_resources; ret = pScreen->CreateScreenResources (pScreen); - pScreen->CreateScreenResources = qxl_create_screen_resources; + pScreen->CreateScreenResources = compat_qxl_create_screen_resources; if (!ret) return FALSE; - qxl->damage = DamageCreate (qxl_on_damage, NULL, + compat_qxl->damage = DamageCreate (compat_qxl_on_damage, NULL, DamageReportRawRegion, - TRUE, pScreen, qxl); + TRUE, pScreen, compat_qxl); pPixmap = pScreen->GetScreenPixmap(pScreen); - if (!RegisterBlockAndWakeupHandlers(qxl_block_handler, qxl_wakeup_handler, qxl)) + if (!RegisterBlockAndWakeupHandlers(compat_qxl_block_handler, compat_qxl_wakeup_handler, compat_qxl)) return FALSE; - REGION_INIT (pScreen, &(qxl->pending_copy), NullBox, 0); + REGION_INIT (pScreen, &(compat_qxl->pending_copy), NullBox, 0); - REGION_INIT (pScreen, &(qxl->to_be_sent), NullBox, 0); + REGION_INIT (pScreen, &(compat_qxl->to_be_sent), NullBox, 0); - DamageRegister (&pPixmap->drawable, qxl->damage); + DamageRegister (&pPixmap->drawable, compat_qxl->damage); return TRUE; } @@ -686,13 +686,13 @@ get_window_pixmap (DrawablePtr pDrawable } static void -qxl_poly_fill_rect (DrawablePtr pDrawable, +compat_qxl_poly_fill_rect (DrawablePtr pDrawable, GCPtr pGC, int nrect, xRectangle *prect) { ScrnInfoPtr pScrn = xf86Screens[pDrawable->pScreen->myNum]; - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; PixmapPtr pPixmap; int xoff, yoff; @@ -714,14 +714,14 @@ qxl_poly_fill_rect (DrawablePtr pDrawabl while (nbox--) { - struct qxl_rect qrect; + struct compat_qxl_rect qrect; qrect.left = pBox->x1; qrect.right = pBox->x2; qrect.top = pBox->y1; qrect.bottom = pBox->y2; - submit_fill (qxl, &qrect, pGC->fgPixel); + submit_fill (compat_qxl, &qrect, pGC->fgPixel); pBox++; } @@ -733,7 +733,7 @@ qxl_poly_fill_rect (DrawablePtr pDrawabl } static void -qxl_copy_n_to_n (DrawablePtr pSrcDrawable, +compat_qxl_copy_n_to_n (DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC, BoxPtr pbox, @@ -747,7 +747,7 @@ qxl_copy_n_to_n (DrawablePtr pSrcDraw { ScreenPtr pScreen = pSrcDrawable->pScreen; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; int src_xoff, src_yoff; int dst_xoff, dst_yoff; PixmapPtr pSrcPixmap, pDstPixmap; @@ -776,7 +776,7 @@ qxl_copy_n_to_n (DrawablePtr pSrcDraw if (n) { /* ErrorF ("Clearing pending damage\n"); */ - clear_pending_damage (qxl); + clear_pending_damage (compat_qxl); /* We have to do this because the copy will cause the damage * to be sent to move. @@ -786,13 +786,13 @@ qxl_copy_n_to_n (DrawablePtr pSrcDraw * complex, and the performance win is unlikely to be * very big. */ - qxl_send_copies (qxl); + compat_qxl_send_copies (compat_qxl); } while (n--) { - struct qxl_drawable *drawable; - struct qxl_rect qrect; + struct compat_qxl_drawable *drawable; + struct compat_qxl_rect qrect; qrect.top = b->y1; qrect.bottom = b->y2; @@ -803,19 +803,19 @@ qxl_copy_n_to_n (DrawablePtr pSrcDraw /* b->x1, b->y1, b->x2, b->y2, */ /* dx, dy, dst_xoff, dst_yoff); */ - drawable = make_drawable (qxl, QXL_COPY_BITS, &qrect); + drawable = make_drawable (compat_qxl, QXL_COPY_BITS, &qrect); drawable->u.copy_bits.src_pos.x = b->x1 + dx; drawable->u.copy_bits.src_pos.y = b->y1 + dy; - push_drawable (qxl, drawable); + push_drawable (compat_qxl, drawable); #if 0 if (closure) - qxl_usleep (1000000); + compat_qxl_usleep (1000000); #endif #if 0 - submit_fill (qxl, &qrect, rand()); + submit_fill (compat_qxl, &qrect, rand()); #endif b++; @@ -828,7 +828,7 @@ qxl_copy_n_to_n (DrawablePtr pSrcDraw } static RegionPtr -qxl_copy_area(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC, +compat_qxl_copy_area(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC, int srcx, int srcy, int width, int height, int dstx, int dsty) { if (pSrcDrawable->type == DRAWABLE_WINDOW && @@ -841,7 +841,7 @@ qxl_copy_area(DrawablePtr pSrcDrawable, res = fbDoCopy (pSrcDrawable, pDstDrawable, pGC, srcx, srcy, width, height, dstx, dsty, - qxl_copy_n_to_n, 0, NULL); + compat_qxl_copy_n_to_n, 0, NULL); return res; } @@ -856,11 +856,11 @@ qxl_copy_area(DrawablePtr pSrcDrawable, } static void -qxl_fill_region_solid (DrawablePtr pDrawable, RegionPtr pRegion, Pixel pixel) +compat_qxl_fill_region_solid (DrawablePtr pDrawable, RegionPtr pRegion, Pixel pixel) { ScreenPtr pScreen = pDrawable->pScreen; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; PixmapPtr pPixmap; int xoff, yoff; @@ -871,14 +871,14 @@ qxl_fill_region_solid (DrawablePtr pDraw while (nbox--) { - struct qxl_rect qrect; + struct compat_qxl_rect qrect; qrect.left = pBox->x1; qrect.right = pBox->x2; qrect.top = pBox->y1; qrect.bottom = pBox->y2; - submit_fill (qxl, &qrect, pixel); + submit_fill (compat_qxl, &qrect, pixel); pBox++; } @@ -889,7 +889,7 @@ qxl_fill_region_solid (DrawablePtr pDraw } static void -qxl_copy_window (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) +compat_qxl_copy_window (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) { RegionRec rgnDst; int dx, dy; @@ -905,7 +905,7 @@ qxl_copy_window (WindowPtr pWin, DDXPoin fbCopyRegion (&pWin->drawable, &pWin->drawable, NULL, - &rgnDst, dx, dy, qxl_copy_n_to_n, 0, NULL); + &rgnDst, dx, dy, compat_qxl_copy_n_to_n, 0, NULL); REGION_UNINIT (pScreen, &rgnDst); @@ -915,7 +915,7 @@ qxl_copy_window (WindowPtr pWin, DDXPoin } static int -qxl_create_gc (GCPtr pGC) +compat_qxl_create_gc (GCPtr pGC) { static GCOps ops; static int initialized; @@ -926,8 +926,8 @@ qxl_create_gc (GCPtr pGC) if (!initialized) { ops = *pGC->ops; - ops.PolyFillRect = qxl_poly_fill_rect; - ops.CopyArea = qxl_copy_area; + ops.PolyFillRect = compat_qxl_poly_fill_rect; + ops.CopyArea = compat_qxl_copy_area; initialized = TRUE; } @@ -937,26 +937,26 @@ qxl_create_gc (GCPtr pGC) } static Bool -qxl_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) +compat_qxl_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; - qxl_screen_t *qxl = pScrn->driverPrivate; - struct qxl_rom *rom; - struct qxl_ram_header *ram_header; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; + struct compat_qxl_rom *rom; + struct compat_qxl_ram_header *ram_header; VisualPtr visual; CHECK_POINT(); - qxl->pScrn = pScrn; + compat_qxl->pScrn = pScrn; - if (!qxl_map_memory(qxl, scrnIndex)) + if (!compat_qxl_map_memory(compat_qxl, scrnIndex)) return FALSE; - rom = qxl->rom; - ram_header = (void *)((unsigned long)qxl->ram + (unsigned long)qxl->rom->ram_header_offset); + rom = compat_qxl->rom; + ram_header = (void *)((unsigned long)compat_qxl->ram + (unsigned long)compat_qxl->rom->ram_header_offset); - qxl_save_state(pScrn); - qxl_blank_screen(pScreen, SCREEN_SAVER_ON); + compat_qxl_save_state(pScrn); + compat_qxl_blank_screen(pScreen, SCREEN_SAVER_ON); miClearVisualTypes(); if (!miSetVisualTypes(pScrn->depth, miGetDefaultVisualMask(pScrn->depth), @@ -968,14 +968,14 @@ qxl_screen_init(int scrnIndex, ScreenPtr /* Note we do this before setting pScrn->virtualY to match our current mode, so as to allocate a buffer large enough for the largest mode. FIXME: add support for resizing the framebuffer on modeset. */ - qxl->fb = xcalloc(pScrn->virtualY * pScrn->displayWidth, 4); - if (!qxl->fb) + compat_qxl->fb = xcalloc(pScrn->virtualY * pScrn->displayWidth, 4); + if (!compat_qxl->fb) goto out; pScrn->virtualX = pScrn->currentMode->HDisplay; pScrn->virtualY = pScrn->currentMode->VDisplay; - if (!fbScreenInit(pScreen, qxl->fb, + if (!fbScreenInit(pScreen, compat_qxl->fb, pScrn->currentMode->HDisplay, pScrn->currentMode->VDisplay, pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, @@ -1001,59 +1001,59 @@ qxl_screen_init(int scrnIndex, ScreenPtr fbPictureInit(pScreen, 0, 0); - qxl->create_screen_resources = pScreen->CreateScreenResources; - pScreen->CreateScreenResources = qxl_create_screen_resources; + compat_qxl->create_screen_resources = pScreen->CreateScreenResources; + pScreen->CreateScreenResources = compat_qxl_create_screen_resources; /* Set up resources */ - qxl->mem = qxl_mem_create ((void *)((unsigned long)qxl->ram + (unsigned long)rom->pages_offset), + compat_qxl->mem = compat_qxl_mem_create ((void *)((unsigned long)compat_qxl->ram + (unsigned long)rom->pages_offset), rom->num_io_pages * getpagesize()); - qxl->io_pages = (void *)((unsigned long)qxl->ram + (unsigned long)rom->pages_offset); - qxl->io_pages_physical = (void *)((unsigned long)qxl->ram_physical + (unsigned long)rom->pages_offset); + compat_qxl->io_pages = (void *)((unsigned long)compat_qxl->ram + (unsigned long)rom->pages_offset); + compat_qxl->io_pages_physical = (void *)((unsigned long)compat_qxl->ram_physical + (unsigned long)rom->pages_offset); - qxl->command_ring = qxl_ring_create (&(ram_header->cmd_ring_hdr), - sizeof (struct qxl_command), - 32, qxl->io_base + QXL_IO_NOTIFY_CMD); - qxl->cursor_ring = qxl_ring_create (&(ram_header->cursor_ring_hdr), - sizeof (struct qxl_command), - 32, qxl->io_base + QXL_IO_NOTIFY_CURSOR); - qxl->release_ring = qxl_ring_create (&(ram_header->release_ring_hdr), + compat_qxl->command_ring = compat_qxl_ring_create (&(ram_header->cmd_ring_hdr), + sizeof (struct compat_qxl_command), + 32, compat_qxl->io_base + QXL_IO_NOTIFY_CMD); + compat_qxl->cursor_ring = compat_qxl_ring_create (&(ram_header->cursor_ring_hdr), + sizeof (struct compat_qxl_command), + 32, compat_qxl->io_base + QXL_IO_NOTIFY_CURSOR); + compat_qxl->release_ring = compat_qxl_ring_create (&(ram_header->release_ring_hdr), sizeof (uint64_t), 8, 0); /* xf86DPMSInit(pScreen, xf86DPMSSet, 0); */ #if 0 /* XV accel */ - qxlInitVideo(pScreen); + compat_qxlInitVideo(pScreen); #endif - pScreen->SaveScreen = qxl_blank_screen; - qxl->close_screen = pScreen->CloseScreen; - pScreen->CloseScreen = qxl_close_screen; + pScreen->SaveScreen = compat_qxl_blank_screen; + compat_qxl->close_screen = pScreen->CloseScreen; + pScreen->CloseScreen = compat_qxl_close_screen; - qxl->create_gc = pScreen->CreateGC; - pScreen->CreateGC = qxl_create_gc; + compat_qxl->create_gc = pScreen->CreateGC; + pScreen->CreateGC = compat_qxl_create_gc; #if 0 - qxl->paint_window_background = pScreen->PaintWindowBackground; - qxl->paint_window_border = pScreen->PaintWindowBorder; + compat_qxl->paint_window_background = pScreen->PaintWindowBackground; + compat_qxl->paint_window_border = pScreen->PaintWindowBorder; #endif - qxl->copy_window = pScreen->CopyWindow; + compat_qxl->copy_window = pScreen->CopyWindow; #if 0 - pScreen->PaintWindowBackground = qxl_paint_window; - pScreen->PaintWindowBorder = qxl_paint_window; + pScreen->PaintWindowBackground = compat_qxl_paint_window; + pScreen->PaintWindowBorder = compat_qxl_paint_window; #endif - pScreen->CopyWindow = qxl_copy_window; + pScreen->CopyWindow = compat_qxl_copy_window; miDCInitialize(pScreen, xf86GetPointerScreenFuncs()); if (!miCreateDefColormap(pScreen)) goto out; - qxl_cursor_init (pScreen); + compat_qxl_cursor_init (pScreen); CHECK_POINT(); - qxl_switch_mode(scrnIndex, pScrn->currentMode, 0); + compat_qxl_switch_mode(scrnIndex, pScrn->currentMode, 0); CHECK_POINT(); @@ -1064,26 +1064,26 @@ out: } static Bool -qxl_enter_vt(int scrnIndex, int flags) +compat_qxl_enter_vt(int scrnIndex, int flags) { ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; - qxl_save_state(pScrn); - qxl_switch_mode(scrnIndex, pScrn->currentMode, 0); + compat_qxl_save_state(pScrn); + compat_qxl_switch_mode(scrnIndex, pScrn->currentMode, 0); return TRUE; } static void -qxl_leave_vt(int scrnIndex, int flags) +compat_qxl_leave_vt(int scrnIndex, int flags) { ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; - qxl_restore_state(pScrn); + compat_qxl_restore_state(pScrn); } static Bool -qxl_color_setup(ScrnInfoPtr pScrn) +compat_qxl_color_setup(ScrnInfoPtr pScrn) { int scrnIndex = pScrn->scrnIndex; Gamma gzeros = { 0.0, 0.0, 0.0 }; @@ -1113,13 +1113,13 @@ qxl_color_setup(ScrnInfoPtr pScrn) } static void -print_modes (qxl_screen_t *qxl, int scrnIndex) +print_modes (compat_qxl_screen_t *compat_qxl, int scrnIndex) { int i; - for (i = 0; i < qxl->num_modes; ++i) + for (i = 0; i < compat_qxl->num_modes; ++i) { - struct qxl_mode *m = qxl->modes + i; + struct compat_qxl_mode *m = compat_qxl->modes + i; xf86DrvMsg (scrnIndex, X_INFO, "%d: %dx%d, %d bits, stride %d, %dmm x %dmm, orientation %d\n", @@ -1129,11 +1129,11 @@ print_modes (qxl_screen_t *qxl, int scrn } static Bool -qxl_check_device(ScrnInfoPtr pScrn, qxl_screen_t *qxl) +compat_qxl_check_device(ScrnInfoPtr pScrn, compat_qxl_screen_t *compat_qxl) { int scrnIndex = pScrn->scrnIndex; - struct qxl_rom *rom = qxl->rom; - struct qxl_ram_header *ram_header = (void *)((unsigned long)qxl->ram + rom->ram_header_offset); + struct compat_qxl_rom *rom = compat_qxl->rom; + struct compat_qxl_ram_header *ram_header = (void *)((unsigned long)compat_qxl->ram + rom->ram_header_offset); CHECK_POINT(); @@ -1170,24 +1170,24 @@ qxl_check_device(ScrnInfoPtr pScrn, qxl_ xf86DrvMsg(scrnIndex, X_INFO, "Correct RAM signature %x\n", ram_header->magic); - qxl->draw_area_offset = rom->draw_area_offset; - qxl->draw_area_size = rom->draw_area_size; + compat_qxl->draw_area_offset = rom->draw_area_offset; + compat_qxl->draw_area_size = rom->draw_area_size; pScrn->videoRam = rom->draw_area_size / 1024; return TRUE; } static int -qxl_find_native_mode(ScrnInfoPtr pScrn, DisplayModePtr p) +compat_qxl_find_native_mode(ScrnInfoPtr pScrn, DisplayModePtr p) { int i; - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; CHECK_POINT(); - for (i = 0; i < qxl->num_modes; i++) + for (i = 0; i < compat_qxl->num_modes; i++) { - struct qxl_mode *m = qxl->modes + i; + struct compat_qxl_mode *m = compat_qxl->modes + i; if (m->x_res == p->HDisplay && m->y_res == p->VDisplay && @@ -1212,20 +1212,20 @@ qxl_find_native_mode(ScrnInfoPtr pScrn, } static ModeStatus -qxl_valid_mode(int scrn, DisplayModePtr p, Bool flag, int pass) +compat_qxl_valid_mode(int scrn, DisplayModePtr p, Bool flag, int pass) { ScrnInfoPtr pScrn = xf86Screens[scrn]; - qxl_screen_t *qxl = pScrn->driverPrivate; + compat_qxl_screen_t *compat_qxl = pScrn->driverPrivate; int bpp = pScrn->bitsPerPixel; int mode_idx; /* FIXME: I don't think this is necessary now that we report the * correct amount of video ram? */ - if (p->HDisplay * p->VDisplay * (bpp/8) > qxl->draw_area_size) + if (p->HDisplay * p->VDisplay * (bpp/8) > compat_qxl->draw_area_size) return MODE_MEM; - mode_idx = qxl_find_native_mode (pScrn, p); + mode_idx = compat_qxl_find_native_mode (pScrn, p); if (mode_idx == -1) return MODE_NOMODE; @@ -1234,7 +1234,7 @@ qxl_valid_mode(int scrn, DisplayModePtr return MODE_OK; } -static void qxl_add_mode(ScrnInfoPtr pScrn, int width, int height, int type) +static void compat_qxl_add_mode(ScrnInfoPtr pScrn, int width, int height, int type) { DisplayModePtr mode; @@ -1263,10 +1263,10 @@ static void qxl_add_mode(ScrnInfoPtr pSc } static Bool -qxl_pre_init(ScrnInfoPtr pScrn, int flags) +compat_qxl_pre_init(ScrnInfoPtr pScrn, int flags) { int i, scrnIndex = pScrn->scrnIndex; - qxl_screen_t *qxl = NULL; + compat_qxl_screen_t *compat_qxl = NULL; ClockRangePtr clockRanges = NULL; int *linePitches = NULL; DisplayModePtr mode; @@ -1281,27 +1281,27 @@ qxl_pre_init(ScrnInfoPtr pScrn, int flag } if (!pScrn->driverPrivate) - pScrn->driverPrivate = xnfcalloc(sizeof(qxl_screen_t), 1); - qxl = pScrn->driverPrivate; + pScrn->driverPrivate = xnfcalloc(sizeof(compat_qxl_screen_t), 1); + compat_qxl = pScrn->driverPrivate; - qxl->entity = xf86GetEntityInfo(pScrn->entityList[0]); - qxl->pci = xf86GetPciInfoForEntity(qxl->entity->index); + compat_qxl->entity = xf86GetEntityInfo(pScrn->entityList[0]); + compat_qxl->pci = xf86GetPciInfoForEntity(compat_qxl->entity->index); #ifndef XSERVER_LIBPCIACCESS - qxl->pci_tag = pciTag(qxl->pci->bus, qxl->pci->device, qxl->pci->func); + compat_qxl->pci_tag = pciTag(compat_qxl->pci->bus, compat_qxl->pci->device, compat_qxl->pci->func); #endif pScrn->monitor = pScrn->confScreen->monitor; - if (!qxl_color_setup(pScrn)) + if (!compat_qxl_color_setup(pScrn)) goto out; /* option parsing and card differentiation */ xf86CollectOptions(pScrn, NULL); - if (!qxl_map_memory(qxl, scrnIndex)) + if (!compat_qxl_map_memory(compat_qxl, scrnIndex)) goto out; - if (!qxl_check_device(pScrn, qxl)) + if (!compat_qxl_check_device(pScrn, compat_qxl)) goto out; /* ddc stuff here */ @@ -1328,22 +1328,22 @@ qxl_pre_init(ScrnInfoPtr pScrn, int flag } /* Add any modes not in xorg's default mode list */ - for (i = 0; i < qxl->num_modes; i++) - if (qxl->modes[i].orientation == 0) { - qxl_add_mode(pScrn, qxl->modes[i].x_res, qxl->modes[i].y_res, + for (i = 0; i < compat_qxl->num_modes; i++) + if (compat_qxl->modes[i].orientation == 0) { + compat_qxl_add_mode(pScrn, compat_qxl->modes[i].x_res, compat_qxl->modes[i].y_res, M_T_DRIVER); - if (qxl->modes[i].x_res > max_x) - max_x = qxl->modes[i].x_res; - if (qxl->modes[i].y_res > max_y) - max_y = qxl->modes[i].y_res; + if (compat_qxl->modes[i].x_res > max_x) + max_x = compat_qxl->modes[i].x_res; + if (compat_qxl->modes[i].y_res > max_y) + max_y = compat_qxl->modes[i].y_res; } if (pScrn->display->virtualX == 0 && pScrn->display->virtualY == 0) { /* It is possible for the largest x + largest y size combined leading to a virtual size which will not fit into the framebuffer when this happens we prefer max width and make height as large as possible */ - if (max_x * max_y * (pScrn->bitsPerPixel / 8) > qxl->draw_area_size) - pScrn->display->virtualY = qxl->draw_area_size / + if (max_x * max_y * (pScrn->bitsPerPixel / 8) > compat_qxl->draw_area_size) + pScrn->display->virtualY = compat_qxl->draw_area_size / (max_x * (pScrn->bitsPerPixel / 8)); else pScrn->display->virtualY = max_y; @@ -1381,14 +1381,14 @@ qxl_pre_init(ScrnInfoPtr pScrn, int flag goto out; } - print_modes (qxl, scrnIndex); + print_modes (compat_qxl, scrnIndex); /* VGA hardware initialisation */ if (!vgaHWGetHWRec(pScrn)) return FALSE; /* hate */ - qxl_unmap_memory(qxl, scrnIndex); + compat_qxl_unmap_memory(compat_qxl, scrnIndex); CHECK_POINT(); @@ -1398,19 +1398,19 @@ qxl_pre_init(ScrnInfoPtr pScrn, int flag out: if (clockRanges) xfree(clockRanges); - if (qxl) - xfree(qxl); + if (compat_qxl) + xfree(compat_qxl); return FALSE; } #ifdef XSERVER_LIBPCIACCESS -enum qxl_class +enum compat_qxl_class { CHIP_QXL_1, }; -static const struct pci_id_match qxl_device_match[] = { +static const struct pci_id_match compat_qxl_device_match[] = { { PCI_VENDOR_RED_HAT, PCI_CHIP_QXL_0100, PCI_MATCH_ANY, PCI_MATCH_ANY, 0x00030000, 0x00ffffff, CHIP_QXL_1 @@ -1420,14 +1420,14 @@ static const struct pci_id_match qxl_dev }; #endif -static SymTabRec qxlChips[] = +static SymTabRec compat_qxlChips[] = { { PCI_CHIP_QXL_0100, "QXL 1", }, { -1, NULL } }; #ifndef XSERVER_LIBPCIACCESS -static PciChipsets qxlPciChips[] = +static PciChipsets compat_qxlPciChips[] = { { PCI_CHIP_QXL_0100, PCI_CHIP_QXL_0100, RES_SHARED_VGA }, { -1, -1, RES_UNDEFINED } @@ -1435,20 +1435,20 @@ static PciChipsets qxlPciChips[] = #endif static void -qxl_identify(int flags) +compat_qxl_identify(int flags) { - xf86PrintChipsets("qxl", "Driver for QXL virtual graphics", qxlChips); + xf86PrintChipsets("compat_qxl", "Driver for QXL virtual graphics", compat_qxlChips); } -static void -qxl_init_scrn(ScrnInfoPtr pScrn) +void +compat_init_scrn(ScrnInfoPtr pScrn) { pScrn->driverVersion = 0; - pScrn->driverName = pScrn->name = "qxl"; - pScrn->PreInit = qxl_pre_init; - pScrn->ScreenInit = qxl_screen_init; - pScrn->SwitchMode = qxl_switch_mode; - pScrn->ValidMode = qxl_valid_mode; - pScrn->EnterVT = qxl_enter_vt; - pScrn->LeaveVT = qxl_leave_vt; + pScrn->driverName = pScrn->name = "compat_qxl"; + pScrn->PreInit = compat_qxl_pre_init; + pScrn->ScreenInit = compat_qxl_screen_init; + pScrn->SwitchMode = compat_qxl_switch_mode; + pScrn->ValidMode = compat_qxl_valid_mode; + pScrn->EnterVT = compat_qxl_enter_vt; + pScrn->LeaveVT = compat_qxl_leave_vt; } diff -up xf86-video-qxl-20130514/src/compat/compat-qxl.h.compat2 xf86-video-qxl-20130514/src/compat/compat-qxl.h --- xf86-video-qxl-20130514/src/compat/compat-qxl.h.compat2 2013-07-03 14:19:39.009334569 +1000 +++ xf86-video-qxl-20130514/src/compat/compat-qxl.h 2013-07-03 14:19:56.102748510 +1000 @@ -43,8 +43,8 @@ #define hidden _X_HIDDEN -#define QXL_NAME "qxl" -#define QXL_DRIVER_NAME "qxl" +#define QXL_NAME "compat_qxl" +#define QXL_DRIVER_NAME "compat_qxl" #define PCI_VENDOR_RED_HAT 0x1b36 #define PCI_CHIP_QXL_0100 0x0100 @@ -63,7 +63,7 @@ enum { QXL_IO_LOG, }; -struct qxl_mode { +struct compat_qxl_mode { uint32_t id; uint32_t x_res; uint32_t y_res; @@ -81,39 +81,39 @@ typedef enum QXL_CMD_UPDATE, QXL_CMD_CURSOR, QXL_CMD_MESSAGE -} qxl_command_type; +} compat_qxl_command_type; -struct qxl_command { +struct compat_qxl_command { uint64_t data; uint32_t type; uint32_t pad; }; -struct qxl_rect { +struct compat_qxl_rect { uint32_t top; uint32_t left; uint32_t bottom; uint32_t right; }; -union qxl_release_info { +union compat_qxl_release_info { uint64_t id; uint64_t next; }; -struct qxl_clip { +struct compat_qxl_clip { uint32_t type; uint64_t address; }; -struct qxl_point { +struct compat_qxl_point { int x; int y; }; -struct qxl_pattern { +struct compat_qxl_pattern { uint64_t pat; - struct qxl_point pos; + struct compat_qxl_point pos; }; typedef enum @@ -121,19 +121,19 @@ typedef enum QXL_BRUSH_TYPE_NONE, QXL_BRUSH_TYPE_SOLID, QXL_BRUSH_TYPE_PATTERN -} qxl_brush_type; +} compat_qxl_brush_type; -struct qxl_brush { +struct compat_qxl_brush { uint32_t type; union { uint32_t color; - struct qxl_pattern pattern; + struct compat_qxl_pattern pattern; } u; }; -struct qxl_mask { +struct compat_qxl_mask { unsigned char flags; - struct qxl_point pos; + struct compat_qxl_point pos; uint64_t bitmap; }; @@ -145,13 +145,13 @@ typedef enum { QXL_IMAGE_TYPE_LZ_RGB, QXL_IMAGE_TYPE_GLZ_RGB, QXL_IMAGE_TYPE_FROM_CACHE, -} qxl_image_type; +} compat_qxl_image_type; typedef enum { QXL_IMAGE_CACHE = (1 << 0) -} qxl_image_flags; +} compat_qxl_image_flags; -struct qxl_image_descriptor +struct compat_qxl_image_descriptor { uint64_t id; uint8_t type; @@ -160,7 +160,7 @@ struct qxl_image_descriptor uint32_t height; }; -struct qxl_data_chunk { +struct compat_qxl_data_chunk { uint32_t data_size; uint64_t prev_chunk; uint64_t next_chunk; @@ -179,90 +179,90 @@ typedef enum QXL_BITMAP_FMT_24BIT, QXL_BITMAP_FMT_32BIT, QXL_BITMAP_FMT_RGBA, -} qxl_bitmap_format; +} compat_qxl_bitmap_format; typedef enum { QXL_BITMAP_PAL_CACHE_ME = (1 << 0), QXL_BITMAP_PAL_FROM_CACHE = (1 << 1), QXL_BITMAP_TOP_DOWN = (1 << 2), -} qxl_bitmap_flags; +} compat_qxl_bitmap_flags; -struct qxl_bitmap { +struct compat_qxl_bitmap { uint8_t format; uint8_t flags; uint32_t x; /* actually width */ uint32_t y; /* actually height */ uint32_t stride; /* in bytes */ uint64_t palette; /* Can be NULL */ - uint64_t data; /* A qxl_data_chunk that actually contains the data */ + uint64_t data; /* A compat_qxl_data_chunk that actually contains the data */ }; -struct qxl_image { - struct qxl_image_descriptor descriptor; +struct compat_qxl_image { + struct compat_qxl_image_descriptor descriptor; union { - struct qxl_bitmap bitmap; + struct compat_qxl_bitmap bitmap; } u; }; -struct qxl_fill { - struct qxl_brush brush; +struct compat_qxl_fill { + struct compat_qxl_brush brush; unsigned short rop_descriptor; - struct qxl_mask mask; + struct compat_qxl_mask mask; }; -struct qxl_opaque { +struct compat_qxl_opaque { uint64_t src_bitmap; - struct qxl_rect src_area; - struct qxl_brush brush; + struct compat_qxl_rect src_area; + struct compat_qxl_brush brush; unsigned short rop_descriptor; unsigned char scale_mode; - struct qxl_mask mask; + struct compat_qxl_mask mask; }; -struct qxl_copy { +struct compat_qxl_copy { uint64_t src_bitmap; - struct qxl_rect src_area; + struct compat_qxl_rect src_area; unsigned short rop_descriptor; unsigned char scale_mode; - struct qxl_mask mask; + struct compat_qxl_mask mask; }; -struct qxl_transparent { +struct compat_qxl_transparent { uint64_t src_bitmap; - struct qxl_rect src_area; + struct compat_qxl_rect src_area; uint32_t src_color; uint32_t true_color; }; -struct qxl_alpha_blend { +struct compat_qxl_alpha_blend { unsigned char alpha; uint64_t src_bitmap; - struct qxl_rect src_area; + struct compat_qxl_rect src_area; }; -struct qxl_copy_bits { - struct qxl_point src_pos; +struct compat_qxl_copy_bits { + struct compat_qxl_point src_pos; }; -struct qxl_blend { /* same as copy */ +struct compat_qxl_blend { /* same as copy */ uint64_t src_bitmap; - struct qxl_rect src_area; + struct compat_qxl_rect src_area; unsigned short rop_descriptor; unsigned char scale_mode; - struct qxl_mask mask; + struct compat_qxl_mask mask; }; -struct qxl_rop3 { +struct compat_qxl_rop3 { uint64_t src_bitmap; - struct qxl_rect src_area; - struct qxl_brush brush; + struct compat_qxl_rect src_area; + struct compat_qxl_brush brush; unsigned char rop3; unsigned char scale_mode; - struct qxl_mask mask; + struct compat_qxl_mask mask; }; -struct qxl_line_attr { +struct compat_qxl_line_attr { unsigned char flags; unsigned char join_style; unsigned char end_style; @@ -272,33 +272,33 @@ struct qxl_line_attr { uint64_t style; }; -struct qxl_stroke { +struct compat_qxl_stroke { uint64_t path; - struct qxl_line_attr attr; - struct qxl_brush brush; + struct compat_qxl_line_attr attr; + struct compat_qxl_brush brush; unsigned short fore_mode; unsigned short back_mode; }; -struct qxl_text { +struct compat_qxl_text { uint64_t str; - struct qxl_rect back_area; - struct qxl_brush fore_brush; - struct qxl_brush back_brush; + struct compat_qxl_rect back_area; + struct compat_qxl_brush fore_brush; + struct compat_qxl_brush back_brush; unsigned short fore_mode; unsigned short back_mode; }; -struct qxl_blackness { - struct qxl_mask mask; +struct compat_qxl_blackness { + struct compat_qxl_mask mask; }; -struct qxl_inverse { - struct qxl_mask mask; +struct compat_qxl_inverse { + struct compat_qxl_mask mask; }; -struct qxl_whiteness { - struct qxl_mask mask; +struct compat_qxl_whiteness { + struct compat_qxl_mask mask; }; /* Effects */ @@ -312,14 +312,14 @@ typedef enum QXL_EFFECT_NOP_ON_DUP, QXL_EFFECT_NOP, QXL_EFFECT_OPAQUE_BRUSH -} qxl_effect_type; +} compat_qxl_effect_type; typedef enum { QXL_CLIP_TYPE_NONE, QXL_CLIP_TYPE_RECTS, QXL_CLIP_TYPE_PATH, -} qxl_clip_type; +} compat_qxl_clip_type; typedef enum { QXL_DRAW_NOP, @@ -336,41 +336,41 @@ typedef enum { QXL_DRAW_TEXT, QXL_DRAW_TRANSPARENT, QXL_DRAW_ALPHA_BLEND, -} qxl_draw_type; +} compat_qxl_draw_type; -struct qxl_drawable { - union qxl_release_info release_info; +struct compat_qxl_drawable { + union compat_qxl_release_info release_info; unsigned char effect; unsigned char type; unsigned short bitmap_offset; - struct qxl_rect bitmap_area; - struct qxl_rect bbox; - struct qxl_clip clip; + struct compat_qxl_rect bitmap_area; + struct compat_qxl_rect bbox; + struct compat_qxl_clip clip; uint32_t mm_time; union { - struct qxl_fill fill; - struct qxl_opaque opaque; - struct qxl_copy copy; - struct qxl_transparent transparent; - struct qxl_alpha_blend alpha_blend; - struct qxl_copy_bits copy_bits; - struct qxl_blend blend; - struct qxl_rop3 rop3; - struct qxl_stroke stroke; - struct qxl_text text; - struct qxl_blackness blackness; - struct qxl_inverse inverse; - struct qxl_whiteness whiteness; + struct compat_qxl_fill fill; + struct compat_qxl_opaque opaque; + struct compat_qxl_copy copy; + struct compat_qxl_transparent transparent; + struct compat_qxl_alpha_blend alpha_blend; + struct compat_qxl_copy_bits copy_bits; + struct compat_qxl_blend blend; + struct compat_qxl_rop3 rop3; + struct compat_qxl_stroke stroke; + struct compat_qxl_text text; + struct compat_qxl_blackness blackness; + struct compat_qxl_inverse inverse; + struct compat_qxl_whiteness whiteness; } u; }; -struct qxl_update_cmd { - union qxl_release_info release_info; - struct qxl_rect area; +struct compat_qxl_update_cmd { + union compat_qxl_release_info release_info; + struct compat_qxl_rect area; uint32_t update_id; }; -struct qxl_point16 { +struct compat_qxl_point16 { int16_t x; int16_t y; }; @@ -394,7 +394,7 @@ enum { CURSOR_TYPE_COLOR32, }; -struct qxl_cursor_header { +struct compat_qxl_cursor_header { uint64_t unique; uint16_t type; uint16_t width; @@ -403,19 +403,19 @@ struct qxl_cursor_header { uint16_t hot_spot_y; }; -struct qxl_cursor +struct compat_qxl_cursor { - struct qxl_cursor_header header; + struct compat_qxl_cursor_header header; uint32_t data_size; - struct qxl_data_chunk chunk; + struct compat_qxl_data_chunk chunk; }; -struct qxl_cursor_cmd { - union qxl_release_info release_info; +struct compat_qxl_cursor_cmd { + union compat_qxl_release_info release_info; uint8_t type; union { struct { - struct qxl_point16 position; + struct compat_qxl_point16 position; unsigned char visible; uint64_t shape; } set; @@ -423,12 +423,12 @@ struct qxl_cursor_cmd { uint16_t length; uint16_t frequency; } trail; - struct qxl_point16 position; + struct compat_qxl_point16 position; } u; uint8_t device_data[QXL_CURSOR_DEVICE_DATA_SIZE]; }; -struct qxl_rom { +struct compat_qxl_rom { uint32_t magic; uint32_t id; uint32_t update_id; @@ -444,7 +444,7 @@ struct qxl_rom { uint32_t mm_clock; }; -struct qxl_ring_header { +struct compat_qxl_ring_header { uint32_t num_items; uint32_t prod; uint32_t notify_on_prod; @@ -454,38 +454,38 @@ struct qxl_ring_header { #define QXL_LOG_BUF_SIZE 4096 -struct qxl_ram_header { +struct compat_qxl_ram_header { uint32_t magic; uint32_t int_pending; uint32_t int_mask; unsigned char log_buf[QXL_LOG_BUF_SIZE]; - struct qxl_ring_header cmd_ring_hdr; - struct qxl_command cmd_ring[32]; - struct qxl_ring_header cursor_ring_hdr; - struct qxl_command cursor_ring[32]; - struct qxl_ring_header release_ring_hdr; + struct compat_qxl_ring_header cmd_ring_hdr; + struct compat_qxl_command cmd_ring[32]; + struct compat_qxl_ring_header cursor_ring_hdr; + struct compat_qxl_command cursor_ring[32]; + struct compat_qxl_ring_header release_ring_hdr; uint64_t release_ring[8]; - struct qxl_rect update_area; + struct compat_qxl_rect update_area; }; #pragma pack(pop) -typedef struct _qxl_screen_t qxl_screen_t; +typedef struct _compat_qxl_screen_t compat_qxl_screen_t; -struct _qxl_screen_t +struct _compat_qxl_screen_t { /* These are the names QXL uses */ void * ram; /* Video RAM */ void * ram_physical; void * vram; /* Command RAM */ - struct qxl_rom * rom; /* Parameter RAM */ + struct compat_qxl_rom * rom; /* Parameter RAM */ - struct qxl_ring * command_ring; - struct qxl_ring * cursor_ring; - struct qxl_ring * release_ring; + struct compat_qxl_ring * command_ring; + struct compat_qxl_ring * cursor_ring; + struct compat_qxl_ring * release_ring; int num_modes; - struct qxl_mode * modes; + struct compat_qxl_mode * modes; int io_base; int draw_area_offset; int draw_area_size; @@ -493,7 +493,7 @@ struct _qxl_screen_t void * fb; int bytes_per_pixel; - struct qxl_mem * mem; /* Context for qxl_alloc/free */ + struct compat_qxl_mem * mem; /* Context for compat_qxl_alloc/free */ EntityInfoPtr entity; @@ -530,15 +530,15 @@ struct _qxl_screen_t }; static inline uint64_t -physical_address (qxl_screen_t *qxl, void *virtual) +physical_address (compat_qxl_screen_t *compat_qxl, void *virtual) { - return (uint64_t) ((unsigned long)virtual + (((unsigned long)qxl->ram_physical - (unsigned long)qxl->ram))); + return (uint64_t) ((unsigned long)virtual + (((unsigned long)compat_qxl->ram_physical - (unsigned long)compat_qxl->ram))); } static inline void * -virtual_address (qxl_screen_t *qxl, void *physical) +virtual_address (compat_qxl_screen_t *compat_qxl, void *physical) { - return (void *) ((unsigned long)physical + ((unsigned long)qxl->ram - (unsigned long)qxl->ram_physical)); + return (void *) ((unsigned long)physical + ((unsigned long)compat_qxl->ram - (unsigned long)compat_qxl->ram_physical)); } static inline void * @@ -553,58 +553,58 @@ pointer_to_u64 (void *p) return (uint64_t)(unsigned long)p; } -struct qxl_ring; +struct compat_qxl_ring; /* * HW cursor */ -void qxl_cursor_init (ScreenPtr pScreen); +void compat_qxl_cursor_init (ScreenPtr pScreen); /* * Rings */ -struct qxl_ring * qxl_ring_create (struct qxl_ring_header *header, +struct compat_qxl_ring * compat_qxl_ring_create (struct compat_qxl_ring_header *header, int element_size, int n_elements, int prod_notify); -void qxl_ring_push (struct qxl_ring *ring, +void compat_qxl_ring_push (struct compat_qxl_ring *ring, const void *element); -Bool qxl_ring_pop (struct qxl_ring *ring, +Bool compat_qxl_ring_pop (struct compat_qxl_ring *ring, void *element); -void qxl_ring_wait_idle (struct qxl_ring *ring); +void compat_qxl_ring_wait_idle (struct compat_qxl_ring *ring); /* * Images */ -struct qxl_image *qxl_image_create (qxl_screen_t *qxl, +struct compat_qxl_image *compat_qxl_image_create (compat_qxl_screen_t *compat_qxl, const uint8_t *data, int x, int y, int width, int height, int stride); -void qxl_image_destroy (qxl_screen_t *qxl, - struct qxl_image *image); -void qxl_drop_image_cache (qxl_screen_t *qxl); +void compat_qxl_image_destroy (compat_qxl_screen_t *compat_qxl, + struct compat_qxl_image *image); +void compat_qxl_drop_image_cache (compat_qxl_screen_t *compat_qxl); /* * Malloc */ -struct qxl_mem * qxl_mem_create (void *base, +struct compat_qxl_mem * compat_qxl_mem_create (void *base, unsigned long n_bytes); -void qxl_mem_dump_stats (struct qxl_mem *mem, +void compat_qxl_mem_dump_stats (struct compat_qxl_mem *mem, const char *header); -void * qxl_alloc (struct qxl_mem *mem, +void * compat_qxl_alloc (struct compat_qxl_mem *mem, unsigned long n_bytes); -void qxl_free (struct qxl_mem *mem, +void compat_qxl_free (struct compat_qxl_mem *mem, void *d); -void qxl_mem_free_all (struct qxl_mem *mem); -void * qxl_allocnf (qxl_screen_t *qxl, +void compat_qxl_mem_free_all (struct compat_qxl_mem *mem); +void * compat_qxl_allocnf (compat_qxl_screen_t *compat_qxl, unsigned long size); diff -up xf86-video-qxl-20130514/src/compat/compat-qxl_image.c.compat2 xf86-video-qxl-20130514/src/compat/compat-qxl_image.c --- xf86-video-qxl-20130514/src/compat/compat-qxl_image.c.compat2 2013-07-03 14:19:39.010334593 +1000 +++ xf86-video-qxl-20130514/src/compat/compat-qxl_image.c 2013-07-03 14:19:56.103748552 +1000 @@ -8,7 +8,7 @@ typedef struct image_info_t image_info_t struct image_info_t { - struct qxl_image *image; + struct compat_qxl_image *image; int ref_count; image_info_t *next; }; @@ -33,7 +33,7 @@ hash_and_copy (const uint8_t *src, int s if (dest) memcpy (dest_line, src_line, n_bytes); - hash = hashlittle (src_line, n_bytes, hash); + hash = compat_hashlittle (src_line, n_bytes, hash); } return hash; @@ -48,7 +48,7 @@ lookup_image_info (unsigned int hash, while (info) { - struct qxl_image *image = info->image; + struct compat_qxl_image *image = info->image; if (image->descriptor.id == hash && image->descriptor.width == width && @@ -95,17 +95,17 @@ remove_image_info (image_info_t *info) free (info); } -struct qxl_image * -qxl_image_create (qxl_screen_t *qxl, const uint8_t *data, +struct compat_qxl_image * +compat_qxl_image_create (compat_qxl_screen_t *compat_qxl, const uint8_t *data, int x, int y, int width, int height, int stride) { unsigned int hash; image_info_t *info; - data += y * stride + x * qxl->bytes_per_pixel; + data += y * stride + x * compat_qxl->bytes_per_pixel; - hash = hash_and_copy (data, stride, NULL, -1, qxl->bytes_per_pixel, width, height); + hash = hash_and_copy (data, stride, NULL, -1, compat_qxl->bytes_per_pixel, width, height); info = lookup_image_info (hash, width, height); if (info) @@ -120,11 +120,11 @@ qxl_image_create (qxl_screen_t *qxl, con for (i = 0; i < height; ++i) { - struct qxl_data_chunk *chunk; + struct compat_qxl_data_chunk *chunk; const uint8_t *src_line = data + i * stride; uint32_t *dest_line; - chunk = virtual_address (qxl, u64_to_pointer (info->image->u.bitmap.data)); + chunk = virtual_address (compat_qxl, u64_to_pointer (info->image->u.bitmap.data)); dest_line = (uint32_t *)chunk->data + width * i; @@ -147,9 +147,9 @@ qxl_image_create (qxl_screen_t *qxl, con } else { - struct qxl_image *image; - struct qxl_data_chunk *chunk; - int dest_stride = width * qxl->bytes_per_pixel; + struct compat_qxl_image *image; + struct compat_qxl_data_chunk *chunk; + int dest_stride = width * compat_qxl->bytes_per_pixel; image_info_t *info; #if 0 @@ -159,7 +159,7 @@ qxl_image_create (qxl_screen_t *qxl, con /* Chunk */ /* FIXME: Check integer overflow */ - chunk = qxl_allocnf (qxl, sizeof *chunk + height * dest_stride); + chunk = compat_qxl_allocnf (compat_qxl, sizeof *chunk + height * dest_stride); chunk->data_size = height * dest_stride; chunk->prev_chunk = 0; @@ -167,10 +167,10 @@ qxl_image_create (qxl_screen_t *qxl, con hash_and_copy (data, stride, chunk->data, dest_stride, - qxl->bytes_per_pixel, width, height); + compat_qxl->bytes_per_pixel, width, height); /* Image */ - image = qxl_allocnf (qxl, sizeof *image); + image = compat_qxl_allocnf (compat_qxl, sizeof *image); image->descriptor.id = 0; image->descriptor.type = QXL_IMAGE_TYPE_BITMAP; @@ -179,7 +179,7 @@ qxl_image_create (qxl_screen_t *qxl, con image->descriptor.width = width; image->descriptor.height = height; - if (qxl->bytes_per_pixel == 2) + if (compat_qxl->bytes_per_pixel == 2) { image->u.bitmap.format = QXL_BITMAP_FMT_16BIT; } @@ -191,9 +191,9 @@ qxl_image_create (qxl_screen_t *qxl, con image->u.bitmap.flags = QXL_BITMAP_TOP_DOWN; image->u.bitmap.x = width; image->u.bitmap.y = height; - image->u.bitmap.stride = width * qxl->bytes_per_pixel; + image->u.bitmap.stride = width * compat_qxl->bytes_per_pixel; image->u.bitmap.palette = 0; - image->u.bitmap.data = physical_address (qxl, chunk); + image->u.bitmap.data = physical_address (compat_qxl, chunk); #if 0 ErrorF ("%p has size %d %d\n", image, width, height); @@ -218,13 +218,13 @@ qxl_image_create (qxl_screen_t *qxl, con } void -qxl_image_destroy (qxl_screen_t *qxl, - struct qxl_image *image) +compat_qxl_image_destroy (compat_qxl_screen_t *compat_qxl, + struct compat_qxl_image *image) { - struct qxl_data_chunk *chunk; + struct compat_qxl_data_chunk *chunk; image_info_t *info; - chunk = virtual_address (qxl, u64_to_pointer (image->u.bitmap.data)); + chunk = virtual_address (compat_qxl, u64_to_pointer (image->u.bitmap.data)); info = lookup_image_info (image->descriptor.id, image->descriptor.width, @@ -244,12 +244,12 @@ qxl_image_destroy (qxl_screen_t *qxl, remove_image_info (info); } - qxl_free (qxl->mem, chunk); - qxl_free (qxl->mem, image); + compat_qxl_free (compat_qxl->mem, chunk); + compat_qxl_free (compat_qxl->mem, image); } void -qxl_drop_image_cache (qxl_screen_t *qxl) +compat_qxl_drop_image_cache (compat_qxl_screen_t *compat_qxl) { memset (image_table, 0, HASH_SIZE * sizeof (image_info_t *)); } diff -up xf86-video-qxl-20130514/src/compat/compat-qxl_mem.c.compat2 xf86-video-qxl-20130514/src/compat/compat-qxl_mem.c --- xf86-video-qxl-20130514/src/compat/compat-qxl_mem.c.compat2 2013-07-03 14:19:39.010334593 +1000 +++ xf86-video-qxl-20130514/src/compat/compat-qxl_mem.c 2013-07-03 14:19:56.104748592 +1000 @@ -22,7 +22,7 @@ struct block } u; }; -struct qxl_mem +struct compat_qxl_mem { void * base; unsigned long n_bytes; @@ -35,7 +35,7 @@ struct qxl_mem }; static void -initialize (struct qxl_mem *mem) +initialize (struct compat_qxl_mem *mem) { mem->unused = (struct block *)mem->base; mem->unused->n_bytes = mem->n_bytes; @@ -47,10 +47,10 @@ initialize (struct qxl_mem *mem) mem->n_freed_blocks = 0; } -struct qxl_mem * -qxl_mem_create (void *base, unsigned long n_bytes) +struct compat_qxl_mem * +compat_qxl_mem_create (void *base, unsigned long n_bytes) { - struct qxl_mem *mem = NULL; + struct compat_qxl_mem *mem = NULL; mem = calloc (sizeof (*mem), 1); if (!mem) @@ -66,13 +66,13 @@ out: } void -qxl_mem_free_all (struct qxl_mem *mem) +compat_qxl_mem_free_all (struct compat_qxl_mem *mem) { initialize (mem); } void -qxl_mem_dump_stats (struct qxl_mem *mem, const char *header) +compat_qxl_mem_dump_stats (struct compat_qxl_mem *mem, const char *header) { struct block *b; int n_blocks; @@ -122,7 +122,7 @@ qxl_mem_dump_stats (struct qxl_mem *mem, } void * -qxl_alloc (struct qxl_mem *mem, unsigned long n_bytes) +compat_qxl_alloc (struct compat_qxl_mem *mem, unsigned long n_bytes) { struct block *b, *prev; @@ -202,7 +202,7 @@ qxl_alloc (struct qxl_mem *mem, unsigned /* If we get here, we are out of memory, so print some stats */ #if 0 fprintf (stderr, "Failing to allocate %lu bytes\n", n_bytes); - qxl_mem_dump_stats (mem, "out of memory"); + compat_qxl_mem_dump_stats (mem, "out of memory"); #endif return NULL; @@ -213,7 +213,7 @@ qxl_alloc (struct qxl_mem *mem, unsigned * last unused block. */ static void -find_neighbours (struct qxl_mem *mem, void *data, +find_neighbours (struct compat_qxl_mem *mem, void *data, struct block **before, struct block **after) { struct block *b; @@ -237,7 +237,7 @@ find_neighbours (struct qxl_mem *mem, vo } void -qxl_free (struct qxl_mem *mem, void *d) +compat_qxl_free (struct compat_qxl_mem *mem, void *d) { struct block *b = d - sizeof (unsigned long); struct block *before, *after; @@ -248,7 +248,7 @@ qxl_free (struct qxl_mem *mem, void *d) #if 0 printf ("freeing %p (%d bytes)\n", b, b->n_bytes); - qxl_mem_dump_stats (mem, "before free"); + compat_qxl_mem_dump_stats (mem, "before free"); #endif find_neighbours (mem, (void *)b, &before, &after); @@ -316,6 +316,6 @@ qxl_free (struct qxl_mem *mem, void *d) } #if 0 - qxl_mem_dump_stats (mem, "after free"); + compat_qxl_mem_dump_stats (mem, "after free"); #endif } diff -up xf86-video-qxl-20130514/src/compat/compat-qxl_ring.c.compat2 xf86-video-qxl-20130514/src/compat/compat-qxl_ring.c --- xf86-video-qxl-20130514/src/compat/compat-qxl_ring.c.compat2 2013-07-03 14:19:39.010334593 +1000 +++ xf86-video-qxl-20130514/src/compat/compat-qxl_ring.c 2013-07-03 14:19:56.104748592 +1000 @@ -5,11 +5,11 @@ struct ring { - struct qxl_ring_header header; + struct compat_qxl_ring_header header; uint8_t elements[0]; }; -struct qxl_ring +struct compat_qxl_ring { volatile struct ring *ring; int element_size; @@ -17,13 +17,13 @@ struct qxl_ring int prod_notify; }; -struct qxl_ring * -qxl_ring_create (struct qxl_ring_header *header, +struct compat_qxl_ring * +compat_qxl_ring_create (struct compat_qxl_ring_header *header, int element_size, int n_elements, int prod_notify) { - struct qxl_ring *ring; + struct compat_qxl_ring *ring; ring = malloc (sizeof *ring); if (!ring) @@ -38,10 +38,10 @@ qxl_ring_create (struct qxl_ring_header } void -qxl_ring_push (struct qxl_ring *ring, +compat_qxl_ring_push (struct compat_qxl_ring *ring, const void *new_elt) { - volatile struct qxl_ring_header *header = &(ring->ring->header); + volatile struct compat_qxl_ring_header *header = &(ring->ring->header); volatile uint8_t *elt; int idx; @@ -66,10 +66,10 @@ qxl_ring_push (struct qxl_ring *ring, } Bool -qxl_ring_pop (struct qxl_ring *ring, +compat_qxl_ring_pop (struct compat_qxl_ring *ring, void *element) { - volatile struct qxl_ring_header *header = &(ring->ring->header); + volatile struct compat_qxl_ring_header *header = &(ring->ring->header); volatile uint8_t *ring_elt; int idx; @@ -87,7 +87,7 @@ qxl_ring_pop (struct qxl_ring *ring, } void -qxl_ring_wait_idle (struct qxl_ring *ring) +compat_qxl_ring_wait_idle (struct compat_qxl_ring *ring) { while (ring->ring->header.cons != ring->ring->header.prod) { diff -up xf86-video-qxl-20130514/src/compat/Makefile.am.compat2 xf86-video-qxl-20130514/src/compat/Makefile.am --- xf86-video-qxl-20130514/src/compat/Makefile.am.compat2 2013-07-03 14:19:39.010334593 +1000 +++ xf86-video-qxl-20130514/src/compat/Makefile.am 2013-07-03 14:19:56.102748510 +1000 @@ -24,13 +24,13 @@ # -avoid-version prevents gratuitous .0.0.0 version numbers on the end # _ladir passes a dummy rpath to libtool so the thing will actually link # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc. -qxl_drv_la_LTLIBRARIES = qxl_drv.la -qxl_drv_la_LDFLAGS = -module -avoid-version -qxl_drv_ladir = @moduledir@/drivers -AM_CFLAGS = -g + +noinst_LTLIBRARIES = compatdriver.la +compatdriver_la_LDFLAGS = -module -avoid-version + AM_CFLAGS = $(XORG_CFLAGS) $(PCIACCESS_CFLAGS) $(CWARNFLAGS) -qxl_drv_la_SOURCES = \ +compatdriver_la_SOURCES = \ compat-qxl.h \ compat-qxl_driver.c \ compat-qxl_image.c \ diff -up xf86-video-qxl-20130514/src/Makefile.am.compat2 xf86-video-qxl-20130514/src/Makefile.am --- xf86-video-qxl-20130514/src/Makefile.am.compat2 2013-07-03 14:19:56.102748510 +1000 +++ xf86-video-qxl-20130514/src/Makefile.am 2013-07-03 14:20:10.365094118 +1000 @@ -34,7 +34,7 @@ qxl_drv_la_LTLIBRARIES = qxl_drv.la qxl_drv_la_LDFLAGS = -module -avoid-version qxl_drv_ladir = @moduledir@/drivers -qxl_drv_la_LIBADD = uxa/libuxa.la +qxl_drv_la_LIBADD = uxa/libuxa.la compat/compatdriver.la if LIBUDEV qxl_drv_la_LIBADD += $(LIBUDEV_LIBS) endif diff -up xf86-video-qxl-20130514/src/qxl_driver.c.compat2 xf86-video-qxl-20130514/src/qxl_driver.c --- xf86-video-qxl-20130514/src/qxl_driver.c.compat2 2013-05-14 11:13:00.000000000 +1000 +++ xf86-video-qxl-20130514/src/qxl_driver.c 2013-07-03 14:19:56.104748592 +1000 @@ -1365,7 +1365,11 @@ qxl_pci_probe (DriverPtr drv, int entity qxl = pScrn->driverPrivate; qxl->pci = dev; - qxl_init_scrn (pScrn, kms); + if (!kms && qxl->pci->revision == 0x01) + { + compat_init_scrn (pScrn); + } else + qxl_init_scrn (pScrn, kms); return TRUE; }