diff options
Diffstat (limited to 'xorg-server/hw/xfree86')
28 files changed, 114 insertions, 1566 deletions
diff --git a/xorg-server/hw/xfree86/common/compiler.h b/xorg-server/hw/xfree86/common/compiler.h index a44afacde..4cb127745 100644..100755 --- a/xorg-server/hw/xfree86/common/compiler.h +++ b/xorg-server/hw/xfree86/common/compiler.h @@ -79,8 +79,6 @@ #ifndef __inline__ #if defined(__GNUC__) /* gcc has __inline__ */ -#elif defined(__HIGHC__) -#define __inline__ _Inline #else #define __inline__ /**/ #endif @@ -88,8 +86,6 @@ #ifndef __inline #if defined(__GNUC__) || defined(_MSC_VER) /* gcc has __inline */ -#elif defined(__HIGHC__) -#define __inline _Inline #else #define __inline /**/ #endif @@ -98,9 +94,10 @@ #if !defined(__GNUC__) && !defined(__FUNCTION__) #define __FUNCTION__ __func__ /* C99 */ #endif -#if defined(NO_INLINE) || defined(DO_PROTOTYPES) + +#if defined(DO_PROTOTYPES) #if !defined(__arm__) -#if !defined(__sparc__) && !defined(__sparc) && !defined(__arm32__) && !defined(__nds32__) \ +#if !defined(__sparc__) && !defined(__arm32__) && !defined(__nds32__) \ && !(defined(__alpha__) && defined(linux)) \ && !(defined(__ia64__) && defined(linux)) \ && !(defined(__mips64) && defined(linux)) \ @@ -131,33 +128,12 @@ extern _X_EXPORT void xf86WriteMmio16Be (void *, unsigned long, unsigned int); extern _X_EXPORT void xf86WriteMmio16Le (void *, unsigned long, unsigned int); extern _X_EXPORT void xf86WriteMmio32Be (void *, unsigned long, unsigned int); extern _X_EXPORT void xf86WriteMmio32Le (void *, unsigned long, unsigned int); -extern _X_EXPORT void xf86WriteMmio8NB (void *, unsigned long, unsigned int); -extern _X_EXPORT void xf86WriteMmio16BeNB (void *, unsigned long, unsigned int); -extern _X_EXPORT void xf86WriteMmio16LeNB (void *, unsigned long, unsigned int); -extern _X_EXPORT void xf86WriteMmio32BeNB (void *, unsigned long, unsigned int); -extern _X_EXPORT void xf86WriteMmio32LeNB (void *, unsigned long, unsigned int); #endif /* _SUNPRO_C */ #endif /* __sparc__, __arm32__, __alpha__, __nds32__ */ #endif /* __arm__ */ -#if defined(__powerpc__) && !defined(__OpenBSD__) -extern unsigned long ldq_u(unsigned long *); -extern unsigned long ldl_u(unsigned int *); -extern unsigned long ldw_u(unsigned short *); -extern void stq_u(unsigned long, unsigned long *); -extern void stl_u(unsigned long, unsigned int *); -extern void stw_u(unsigned long, unsigned short *); -extern void mem_barrier(void); -extern void write_mem_barrier(void); -extern void stl_brx(unsigned long, volatile unsigned char *, int); -extern void stw_brx(unsigned short, volatile unsigned char *, int); -extern unsigned long ldl_brx(volatile unsigned char *, int); -extern unsigned short ldw_brx(volatile unsigned char *, int); -#endif /* __powerpc__ && !__OpenBSD */ - #endif /* NO_INLINE || DO_PROTOTYPES */ -#ifndef NO_INLINE #ifdef __GNUC__ #ifdef __i386__ @@ -210,14 +186,7 @@ extern unsigned short ldw_brx(volatile unsigned char *, int); #elif defined __powerpc__ -#if defined(linux) && defined(__powerpc64__) -#include <linux/version.h> -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) -#include <asm/memory.h> -#endif -#endif /* defined(linux) && defined(__powerpc64__) */ - -#ifndef eieio /* We deal with arch-specific eieio() routines above... */ +#ifndef eieio #define eieio() __asm__ __volatile__ ("eieio" ::: "memory") #endif /* eieio */ #define mem_barrier() eieio() @@ -230,7 +199,10 @@ extern unsigned short ldw_brx(volatile unsigned char *, int); #define write_mem_barrier() /* XXX: nop for now */ #endif #endif /* __GNUC__ */ -#endif /* NO_INLINE */ + +#ifndef barrier +#define barrier() +#endif #ifndef mem_barrier #define mem_barrier() /* NOP */ @@ -240,133 +212,8 @@ extern unsigned short ldw_brx(volatile unsigned char *, int); #define write_mem_barrier() /* NOP */ #endif -#ifndef NO_INLINE -#ifdef __GNUC__ - -/* Define some packed structures to use with unaligned accesses */ - -struct __una_u64 { - uint64_t x __attribute__ ((packed)); -}; -struct __una_u32 { - uint32_t x __attribute__ ((packed)); -}; -struct __una_u16 { - uint16_t x __attribute__ ((packed)); -}; - -/* Elemental unaligned loads */ - -static __inline__ uint64_t -ldq_u(uint64_t * p) -{ - const struct __una_u64 *ptr = (const struct __una_u64 *) p; - - return ptr->x; -} - -static __inline__ uint32_t -ldl_u(uint32_t * p) -{ - const struct __una_u32 *ptr = (const struct __una_u32 *) p; - - return ptr->x; -} - -static __inline__ uint16_t -ldw_u(uint16_t * p) -{ - const struct __una_u16 *ptr = (const struct __una_u16 *) p; - - return ptr->x; -} - -/* Elemental unaligned stores */ - -static __inline__ void -stq_u(uint64_t val, uint64_t * p) -{ - struct __una_u64 *ptr = (struct __una_u64 *) p; - - ptr->x = val; -} - -static __inline__ void -stl_u(uint32_t val, uint32_t * p) -{ - struct __una_u32 *ptr = (struct __una_u32 *) p; - - ptr->x = val; -} - -static __inline__ void -stw_u(uint16_t val, uint16_t * p) -{ - struct __una_u16 *ptr = (struct __una_u16 *) p; - - ptr->x = val; -} -#else /* !__GNUC__ */ - -#include <string.h> /* needed for memmove */ - -static __inline__ uint64_t -ldq_u(uint64_t * p) -{ - uint64_t ret; - - memmove(&ret, p, sizeof(*p)); - return ret; -} - -static __inline__ uint32_t -ldl_u(uint32_t * p) -{ - uint32_t ret; - - memmove(&ret, p, sizeof(*p)); - return ret; -} - -static __inline__ uint16_t -ldw_u(uint16_t * p) -{ - uint16_t ret; - - memmove(&ret, p, sizeof(*p)); - return ret; -} - -static __inline__ void -stq_u(uint64_t val, uint64_t * p) -{ - uint64_t tmp = val; - - memmove(p, &tmp, sizeof(*p)); -} - -static __inline__ void -stl_u(uint32_t val, uint32_t * p) -{ - uint32_t tmp = val; - - memmove(p, &tmp, sizeof(*p)); -} - -static __inline__ void -stw_u(uint16_t val, uint16_t * p) -{ - uint16_t tmp = val; - - memmove(p, &tmp, sizeof(*p)); -} - -#endif /* __GNUC__ */ -#endif /* NO_INLINE */ - -#ifndef NO_INLINE #ifdef __GNUC__ -#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)) && (defined(__alpha__)) +#if defined(__alpha__) #ifdef linux /* for Linux on Alpha, we use the LIBC _inx/_outx routines */ @@ -439,7 +286,7 @@ extern _X_EXPORT unsigned int inl(unsigned int port); #include <machine/pio.h> #endif /* __NetBSD__ */ -#elif (defined(linux) || defined(__FreeBSD__)) && defined(__amd64__) +#elif defined(__amd64__) #include <inttypes.h> @@ -488,7 +335,7 @@ inl(unsigned short port) return ret; } -#elif (defined(linux) || defined(sun) || defined(__OpenBSD__) || defined(__FreeBSD__)) && defined(__sparc__) +#elif defined(__sparc__) #ifndef ASI_PL #define ASI_PL 0x88 @@ -671,56 +518,6 @@ xf86WriteMmio32Le(__volatile__ void *base, const unsigned long offset, barrier(); } -static __inline__ void -xf86WriteMmio8NB(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - unsigned long addr = ((unsigned long) base) + offset; - - __asm__ __volatile__("stba %0, [%1] %2": /* No outputs */ - :"r"(val), "r"(addr), "i"(ASI_PL)); -} - -static __inline__ void -xf86WriteMmio16BeNB(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - unsigned long addr = ((unsigned long) base) + offset; - - __asm__ __volatile__("sth %0, [%1]": /* No outputs */ - :"r"(val), "r"(addr)); -} - -static __inline__ void -xf86WriteMmio16LeNB(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - unsigned long addr = ((unsigned long) base) + offset; - - __asm__ __volatile__("stha %0, [%1] %2": /* No outputs */ - :"r"(val), "r"(addr), "i"(ASI_PL)); -} - -static __inline__ void -xf86WriteMmio32BeNB(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - unsigned long addr = ((unsigned long) base) + offset; - - __asm__ __volatile__("st %0, [%1]": /* No outputs */ - :"r"(val), "r"(addr)); -} - -static __inline__ void -xf86WriteMmio32LeNB(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - unsigned long addr = ((unsigned long) base) + offset; - - __asm__ __volatile__("sta %0, [%1] %2": /* No outputs */ - :"r"(val), "r"(addr), "i"(ASI_PL)); -} - #elif defined(__mips__) || (defined(__arm32__) && !defined(__linux__)) #if defined(__arm32__) || defined(__mips64) #define PORT_SIZE long @@ -800,7 +597,7 @@ xf86WriteMmio32Be(__volatile__ void *base, const unsigned long offset, #endif /* !linux */ #endif /* __mips__ */ -#elif (defined(linux) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__)) && defined(__powerpc__) +#elif defined(__powerpc__) #ifndef MAP_FAILED #define MAP_FAILED ((void *)-1) @@ -859,92 +656,57 @@ xf86ReadMmio32Le(__volatile__ void *base, const unsigned long offset) } static __inline__ void -xf86WriteMmioNB8(__volatile__ void *base, const unsigned long offset, - const unsigned char val) +xf86WriteMmio8(__volatile__ void *base, const unsigned long offset, + const unsigned char val) { __asm__ __volatile__("stbx %1,%2,%3\n\t":"=m" (*((volatile unsigned char *) base + offset)) :"r"(val), "b"(base), "r"(offset)); + eieio(); } static __inline__ void -xf86WriteMmioNB16Le(__volatile__ void *base, const unsigned long offset, - const unsigned short val) +xf86WriteMmio16Le(__volatile__ void *base, const unsigned long offset, + const unsigned short val) { __asm__ __volatile__("sthbrx %1,%2,%3\n\t":"=m" (*((volatile unsigned char *) base + offset)) :"r"(val), "b"(base), "r"(offset)); + eieio(); } static __inline__ void -xf86WriteMmioNB16Be(__volatile__ void *base, const unsigned long offset, - const unsigned short val) +xf86WriteMmio16Be(__volatile__ void *base, const unsigned long offset, + const unsigned short val) { __asm__ __volatile__("sthx %1,%2,%3\n\t":"=m" (*((volatile unsigned char *) base + offset)) :"r"(val), "b"(base), "r"(offset)); + eieio(); } static __inline__ void -xf86WriteMmioNB32Le(__volatile__ void *base, const unsigned long offset, - const unsigned int val) +xf86WriteMmio32Le(__volatile__ void *base, const unsigned long offset, + const unsigned int val) { __asm__ __volatile__("stwbrx %1,%2,%3\n\t":"=m" (*((volatile unsigned char *) base + offset)) :"r"(val), "b"(base), "r"(offset)); + eieio(); } static __inline__ void -xf86WriteMmioNB32Be(__volatile__ void *base, const unsigned long offset, - const unsigned int val) +xf86WriteMmio32Be(__volatile__ void *base, const unsigned long offset, + const unsigned int val) { __asm__ __volatile__("stwx %1,%2,%3\n\t":"=m" (*((volatile unsigned char *) base + offset)) :"r"(val), "b"(base), "r"(offset)); -} - -static __inline__ void -xf86WriteMmio8(__volatile__ void *base, const unsigned long offset, - const unsigned char val) -{ - xf86WriteMmioNB8(base, offset, val); - eieio(); -} - -static __inline__ void -xf86WriteMmio16Le(__volatile__ void *base, const unsigned long offset, - const unsigned short val) -{ - xf86WriteMmioNB16Le(base, offset, val); - eieio(); -} - -static __inline__ void -xf86WriteMmio16Be(__volatile__ void *base, const unsigned long offset, - const unsigned short val) -{ - xf86WriteMmioNB16Be(base, offset, val); - eieio(); -} - -static __inline__ void -xf86WriteMmio32Le(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - xf86WriteMmioNB32Le(base, offset, val); - eieio(); -} - -static __inline__ void -xf86WriteMmio32Be(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - xf86WriteMmioNB32Be(base, offset, val); eieio(); } @@ -1030,12 +792,9 @@ xf_outl(unsigned short port, unsigned int val) /* * Assume all port access are aligned. We need to revise this implementation - * if there is unaligned port access. For ldq_u, ldl_u, ldw_u, stq_u, stl_u and - * stw_u, they are assumed unaligned. + * if there is unaligned port access. */ -#define barrier() /* no barrier */ - #define PORT_SIZE long static __inline__ unsigned char @@ -1052,13 +811,6 @@ xf86WriteMmio8(__volatile__ void *base, const unsigned long offset, barrier(); } -static __inline__ void -xf86WriteMmio8NB(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - *(volatile unsigned char *) ((unsigned char *) base + offset) = val; -} - static __inline__ unsigned short xf86ReadMmio16Swap(__volatile__ void *base, const unsigned long offset) { @@ -1097,23 +849,6 @@ xf86WriteMmio16(__volatile__ void *base, const unsigned long offset, barrier(); } -static __inline__ void -xf86WriteMmio16SwapNB(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - unsigned long addr = ((unsigned long) base) + offset; - - __asm__ __volatile__("wsbh %0, %0;\n\t" "shi %0, [%1];\n\t": /* No outputs */ - :"r"(val), "r"(addr)); -} - -static __inline__ void -xf86WriteMmio16NB(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - *(volatile unsigned short *) ((unsigned char *) base + offset) = val; -} - static __inline__ unsigned int xf86ReadMmio32Swap(__volatile__ void *base, const unsigned long offset) { @@ -1153,23 +888,6 @@ xf86WriteMmio32(__volatile__ void *base, const unsigned long offset, barrier(); } -static __inline__ void -xf86WriteMmio32SwapNB(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - unsigned long addr = ((unsigned long) base) + offset; - - __asm__ __volatile__("wsbh %0, %0;\n\t" "rotri %0, %0, 16;\n\t" "swi %0, [%1];\n\t": /* No outputs */ - :"r"(val), "r"(addr)); -} - -static __inline__ void -xf86WriteMmio32NB(__volatile__ void *base, const unsigned long offset, - const unsigned int val) -{ - *(volatile unsigned int *) ((unsigned char *) base + offset) = val; -} - #if defined(NDS32_MMIO_SWAP) static __inline__ void outb(unsigned PORT_SIZE port, unsigned char val) @@ -1207,50 +925,6 @@ inl(unsigned PORT_SIZE port) return xf86ReadMmio32Swap(IOPortBase, port); } -static __inline__ unsigned long -ldq_u(unsigned long *p) -{ - unsigned long addr = (unsigned long) p; - unsigned int ret; - - __asm__ __volatile__("lmw.bi %0, [%1], %0, 0;\n\t" - "wsbh %0, %0;\n\t" "rotri %0, %0, 16;\n\t":"=r"(ret) - :"r"(addr)); - - return ret; -} - -static __inline__ unsigned long -ldl_u(unsigned int *p) -{ - unsigned long addr = (unsigned long) p; - unsigned int ret; - - __asm__ __volatile__("lmw.bi %0, [%1], %0, 0;\n\t" - "wsbh %0, %0;\n\t" "rotri %0, %0, 16;\n\t":"=r"(ret) - :"r"(addr)); - - return ret; -} - -static __inline__ void -stq_u(unsigned long val, unsigned long *p) -{ - unsigned long addr = (unsigned long) p; - - __asm__ __volatile__("wsbh %0, %0;\n\t" "rotri %0, %0, 16;\n\t" "smw.bi %0, [%1], %0, 0;\n\t": /* No outputs */ - :"r"(val), "r"(addr)); -} - -static __inline__ void -stl_u(unsigned long val, unsigned int *p) -{ - unsigned long addr = (unsigned long) p; - - __asm__ __volatile__("wsbh %0, %0;\n\t" "rotri %0, %0, 16;\n\t" "smw.bi %0, [%1], %0, 0;\n\t": /* No outputs */ - :"r"(val), "r"(addr)); -} - #else /* !NDS32_MMIO_SWAP */ static __inline__ void outb(unsigned PORT_SIZE port, unsigned char val) @@ -1291,124 +965,9 @@ inl(unsigned PORT_SIZE port) return *(volatile unsigned int *) (((unsigned PORT_SIZE) (port))); } -static __inline__ unsigned long -ldq_u(unsigned long *p) -{ - unsigned long addr = (unsigned long) p; - unsigned int ret; - - __asm__ __volatile__("lmw.bi %0, [%1], %0, 0;\n\t":"=r"(ret) - :"r"(addr)); - - return ret; -} - -static __inline__ unsigned long -ldl_u(unsigned int *p) -{ - unsigned long addr = (unsigned long) p; - unsigned int ret; - - __asm__ __volatile__("lmw.bi %0, [%1], %0, 0;\n\t":"=r"(ret) - :"r"(addr)); - - return ret; -} - -static __inline__ void -stq_u(unsigned long val, unsigned long *p) -{ - unsigned long addr = (unsigned long) p; - - __asm__ __volatile__("smw.bi %0, [%1], %0, 0;\n\t": /* No outputs */ - :"r"(val), "r"(addr)); -} - -static __inline__ void -stl_u(unsigned long val, unsigned int *p) -{ - unsigned long addr = (unsigned long) p; - - __asm__ __volatile__("smw.bi %0, [%1], %0, 0;\n\t": /* No outputs */ - :"r"(val), "r"(addr)); -} #endif /* NDS32_MMIO_SWAP */ -#if (((X_BYTE_ORDER == X_BIG_ENDIAN) && !defined(NDS32_MMIO_SWAP)) || ((X_BYTE_ORDER != X_BIG_ENDIAN) && defined(NDS32_MMIO_SWAP))) -#define ldw_u(p) ((*(unsigned char *)(p)) << 8 | \ - (*((unsigned char *)(p)+1))) -#define stw_u(v,p) (*(unsigned char *)(p)) = ((v) >> 8); \ - (*((unsigned char *)(p)+1)) = (v) -#else -#define ldw_u(p) ((*(unsigned char *)(p)) | \ - (*((unsigned char *)(p)+1)<<8)) -#define stw_u(v,p) (*(unsigned char *)(p)) = (v); \ - (*((unsigned char *)(p)+1)) = ((v) >> 8) -#endif - -#define mem_barrier() /* XXX: nop for now */ -#define write_mem_barrier() /* XXX: nop for now */ - -#else /* ix86 */ - -#if !defined(__SUNPRO_C) -#if !defined(FAKEIT) && !defined(__mc68000__) && !defined(__arm__) && \ - !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && \ - !defined(__m32r__) && !defined(__aarch64__) && !defined(__arc__) && \ - !defined(__xtensa__) -#ifdef GCCUSESGAS - -/* - * If gcc uses gas rather than the native assembler, the syntax of these - * inlines has to be different. DHD - */ - -static __inline__ void -outb(unsigned short port, unsigned char val) -{ - __asm__ __volatile__("outb %0,%1"::"a"(val), "d"(port)); -} - -static __inline__ void -outw(unsigned short port, unsigned short val) -{ - __asm__ __volatile__("outw %0,%1"::"a"(val), "d"(port)); -} - -static __inline__ void -outl(unsigned short port, unsigned int val) -{ - __asm__ __volatile__("outl %0,%1"::"a"(val), "d"(port)); -} - -static __inline__ unsigned int -inb(unsigned short port) -{ - unsigned char ret; - __asm__ __volatile__("inb %1,%0":"=a"(ret):"d"(port)); - - return ret; -} - -static __inline__ unsigned int -inw(unsigned short port) -{ - unsigned short ret; - __asm__ __volatile__("inw %1,%0":"=a"(ret):"d"(port)); - - return ret; -} - -static __inline__ unsigned int -inl(unsigned short port) -{ - unsigned int ret; - __asm__ __volatile__("inl %1,%0":"=a"(ret):"d"(port)); - - return ret; -} - -#else /* GCCUSESGAS */ +#elif defined(__i386__) || defined(__ia64__) static __inline__ void outb(unsigned short port, unsigned char val) @@ -1455,47 +1014,7 @@ inl(unsigned short port) return ret; } -#endif /* GCCUSESGAS */ - -#else /* !defined(FAKEIT) && !defined(__mc68000__) && !defined(__arm__) && !defined(__sh__) && !defined(__hppa__) && !defined(__m32r__) && !defined(__arc__) */ - -static __inline__ void -outb(unsigned short port, unsigned char val) -{ -} - -static __inline__ void -outw(unsigned short port, unsigned short val) -{ -} - -static __inline__ void -outl(unsigned short port, unsigned int val) -{ -} - -static __inline__ unsigned int -inb(unsigned short port) -{ - return 0; -} - -static __inline__ unsigned int -inw(unsigned short port) -{ - return 0; -} - -static __inline__ unsigned int -inl(unsigned short port) -{ - return 0; -} - -#endif /* FAKEIT */ -#endif /* __SUNPRO_C */ - -#endif /* ix86 */ +#endif /* arch madness */ #else /* !GNUC */ #if defined(__STDC__) && (__STDC__ == 1) @@ -1506,18 +1025,12 @@ inl(unsigned short port) #if !defined(__SUNPRO_C) && !defined(_MSC_VER) #include <sys/inline.h> #endif -#if (!defined(__HIGHC__) && !defined(__SUNPRO_C) && !defined(_MSC_VER)) || \ - defined(__USLC__) -#pragma asm partial_optimization outl -#pragma asm partial_optimization outw -#pragma asm partial_optimization outb -#pragma asm partial_optimization inl -#pragma asm partial_optimization inw -#pragma asm partial_optimization inb -#endif #endif /* __GNUC__ */ -#endif /* NO_INLINE */ +#if !defined(MMIO_IS_BE) && \ + (defined(SPARC_MMIO_IS_BE) || defined(PPC_MMIO_IS_BE)) +#define MMIO_IS_BE +#endif #ifdef __alpha__ /* entry points for Mmio memory access routines */ @@ -1538,9 +1051,6 @@ xf86ReadMmio32(void *Base, unsigned long Offset) extern _X_EXPORT void (*xf86WriteMmio8) (int, void *, unsigned long); extern _X_EXPORT void (*xf86WriteMmio16) (int, void *, unsigned long); extern _X_EXPORT void (*xf86WriteMmio32) (int, void *, unsigned long); -extern _X_EXPORT void (*xf86WriteMmioNB8) (int, void *, unsigned long); -extern _X_EXPORT void (*xf86WriteMmioNB16) (int, void *, unsigned long); -extern _X_EXPORT void (*xf86WriteMmioNB32) (int, void *, unsigned long); extern _X_EXPORT void xf86SlowBCopyFromBus(unsigned char *, unsigned char *, int); extern _X_EXPORT void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int); @@ -1560,43 +1070,29 @@ extern _X_EXPORT void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int); write_mem_barrier(); \ *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset)) = (val); \ } while (0) -#define MMIO_ONB32(base, offset, val) \ - *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset)) = (val) #define MMIO_OUT8(base, offset, val) \ (*xf86WriteMmio8)((CARD8)(val), base, offset) #define MMIO_OUT16(base, offset, val) \ (*xf86WriteMmio16)((CARD16)(val), base, offset) -#define MMIO_ONB8(base, offset, val) \ - (*xf86WriteMmioNB8)((CARD8)(val), base, offset) -#define MMIO_ONB16(base, offset, val) \ - (*xf86WriteMmioNB16)((CARD16)(val), base, offset) -#define MMIO_MOVE32(base, offset, val) \ - MMIO_OUT32(base, offset, val) -#elif defined(__powerpc__) +#elif defined(__powerpc__) || defined(__sparc__) /* * we provide byteswapping and no byteswapping functions here * with byteswapping as default, - * drivers that don't need byteswapping should define PPC_MMIO_IS_BE + * drivers that don't need byteswapping should define MMIO_IS_BE */ #define MMIO_IN8(base, offset) xf86ReadMmio8(base, offset) #define MMIO_OUT8(base, offset, val) \ xf86WriteMmio8(base, offset, (CARD8)(val)) -#define MMIO_ONB8(base, offset, val) \ - xf86WriteMmioNB8(base, offset, (CARD8)(val)) -#if defined(PPC_MMIO_IS_BE) /* No byteswapping */ +#if defined(MMIO_IS_BE) /* No byteswapping */ #define MMIO_IN16(base, offset) xf86ReadMmio16Be(base, offset) #define MMIO_IN32(base, offset) xf86ReadMmio32Be(base, offset) #define MMIO_OUT16(base, offset, val) \ xf86WriteMmio16Be(base, offset, (CARD16)(val)) #define MMIO_OUT32(base, offset, val) \ xf86WriteMmio32Be(base, offset, (CARD32)(val)) -#define MMIO_ONB16(base, offset, val) \ - xf86WriteMmioNB16Be(base, offset, (CARD16)(val)) -#define MMIO_ONB32(base, offset, val) \ - xf86WriteMmioNB32Be(base, offset, (CARD32)(val)) #else /* byteswapping is the default */ #define MMIO_IN16(base, offset) xf86ReadMmio16Le(base, offset) #define MMIO_IN32(base, offset) xf86ReadMmio32Le(base, offset) @@ -1604,56 +1100,8 @@ extern _X_EXPORT void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int); xf86WriteMmio16Le(base, offset, (CARD16)(val)) #define MMIO_OUT32(base, offset, val) \ xf86WriteMmio32Le(base, offset, (CARD32)(val)) -#define MMIO_ONB16(base, offset, val) \ - xf86WriteMmioNB16Le(base, offset, (CARD16)(val)) -#define MMIO_ONB32(base, offset, val) \ - xf86WriteMmioNB32Le(base, offset, (CARD32)(val)) #endif -#define MMIO_MOVE32(base, offset, val) \ - xf86WriteMmio32Be(base, offset, (CARD32)(val)) - -#elif defined(__sparc__) || defined(sparc) || defined(__sparc) - /* - * Like powerpc, we provide byteswapping and no byteswapping functions - * here with byteswapping as default, drivers that don't need byteswapping - * should define SPARC_MMIO_IS_BE (perhaps create a generic macro so that we - * do not need to use PPC_MMIO_IS_BE and the sparc one in all the same places - * of drivers?). - */ -#define MMIO_IN8(base, offset) xf86ReadMmio8(base, offset) -#define MMIO_OUT8(base, offset, val) \ - xf86WriteMmio8(base, offset, (CARD8)(val)) -#define MMIO_ONB8(base, offset, val) \ - xf86WriteMmio8NB(base, offset, (CARD8)(val)) - -#if defined(SPARC_MMIO_IS_BE) /* No byteswapping */ -#define MMIO_IN16(base, offset) xf86ReadMmio16Be(base, offset) -#define MMIO_IN32(base, offset) xf86ReadMmio32Be(base, offset) -#define MMIO_OUT16(base, offset, val) \ - xf86WriteMmio16Be(base, offset, (CARD16)(val)) -#define MMIO_OUT32(base, offset, val) \ - xf86WriteMmio32Be(base, offset, (CARD32)(val)) -#define MMIO_ONB16(base, offset, val) \ - xf86WriteMmio16BeNB(base, offset, (CARD16)(val)) -#define MMIO_ONB32(base, offset, val) \ - xf86WriteMmio32BeNB(base, offset, (CARD32)(val)) -#else /* byteswapping is the default */ -#define MMIO_IN16(base, offset) xf86ReadMmio16Le(base, offset) -#define MMIO_IN32(base, offset) xf86ReadMmio32Le(base, offset) -#define MMIO_OUT16(base, offset, val) \ - xf86WriteMmio16Le(base, offset, (CARD16)(val)) -#define MMIO_OUT32(base, offset, val) \ - xf86WriteMmio32Le(base, offset, (CARD32)(val)) -#define MMIO_ONB16(base, offset, val) \ - xf86WriteMmio16LeNB(base, offset, (CARD16)(val)) -#define MMIO_ONB32(base, offset, val) \ - xf86WriteMmio32LeNB(base, offset, (CARD32)(val)) -#endif - -#define MMIO_MOVE32(base, offset, val) \ - xf86WriteMmio32Be(base, offset, (CARD32)(val)) - #elif defined(__nds32__) /* * we provide byteswapping and no byteswapping functions here @@ -1664,8 +1112,6 @@ extern _X_EXPORT void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int); #define MMIO_IN8(base, offset) xf86ReadMmio8(base, offset) #define MMIO_OUT8(base, offset, val) \ xf86WriteMmio8(base, offset, (CARD8)(val)) -#define MMIO_ONB8(base, offset, val) \ - xf86WriteMmioNB8(base, offset, (CARD8)(val)) #if defined(NDS32_MMIO_SWAP) /* byteswapping */ #define MMIO_IN16(base, offset) xf86ReadMmio16Swap(base, offset) @@ -1674,10 +1120,6 @@ extern _X_EXPORT void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int); xf86WriteMmio16Swap(base, offset, (CARD16)(val)) #define MMIO_OUT32(base, offset, val) \ xf86WriteMmio32Swap(base, offset, (CARD32)(val)) -#define MMIO_ONB16(base, offset, val) \ - xf86WriteMmioNB16Swap(base, offset, (CARD16)(val)) -#define MMIO_ONB32(base, offset, val) \ - xf86WriteMmioNB32Swap(base, offset, (CARD32)(val)) #else /* no byteswapping is the default */ #define MMIO_IN16(base, offset) xf86ReadMmio16(base, offset) #define MMIO_IN32(base, offset) xf86ReadMmio32(base, offset) @@ -1685,30 +1127,6 @@ extern _X_EXPORT void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int); xf86WriteMmio16(base, offset, (CARD16)(val)) #define MMIO_OUT32(base, offset, val) \ xf86WriteMmio32(base, offset, (CARD32)(val)) -#define MMIO_ONB16(base, offset, val) \ - xf86WriteMmioNB16(base, offset, (CARD16)(val)) -#define MMIO_ONB32(base, offset, val) \ - xf86WriteMmioNB32(base, offset, (CARD32)(val)) -#endif - -#define MMIO_MOVE32(base, offset, val) \ - xf86WriteMmio32(base, offset, (CARD32)(val)) - -#ifdef N1213_HC /* for NDS32 N1213 hardcore */ -static __inline__ void -nds32_flush_icache(char *addr) -{ - __asm__ volatile ("isync %0;" - "msync;" - "isb;" - "cctl %0,L1I_VA_INVAL;" "isb;"::"r" (addr):"memory"); -} -#else -static __inline__ void -nds32_flush_icache(char *addr) -{ - __asm__ volatile ("isync %0;" "isb;"::"r" (addr):"memory"); -} #endif #else /* !__alpha__ && !__powerpc__ && !__sparc__ */ @@ -1725,11 +1143,6 @@ nds32_flush_icache(char *addr) *(volatile CARD16 *)(void *)(((CARD8*)(base)) + (offset)) = (val) #define MMIO_OUT32(base, offset, val) \ *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset)) = (val) -#define MMIO_ONB8(base, offset, val) MMIO_OUT8(base, offset, val) -#define MMIO_ONB16(base, offset, val) MMIO_OUT16(base, offset, val) -#define MMIO_ONB32(base, offset, val) MMIO_OUT32(base, offset, val) - -#define MMIO_MOVE32(base, offset, val) MMIO_OUT32(base, offset, val) #endif /* __alpha__ */ diff --git a/xorg-server/hw/xfree86/common/xf86.h b/xorg-server/hw/xfree86/common/xf86.h index cec31354e..49ff35b86 100644 --- a/xorg-server/hw/xfree86/common/xf86.h +++ b/xorg-server/hw/xfree86/common/xf86.h @@ -129,14 +129,6 @@ extern _X_EXPORT ScrnInfoPtr xf86ConfigPciEntity(ScrnInfoPtr pScrn, EntityProc enter, EntityProc leave, void *private); -/* Obsolete! don't use */ -extern _X_EXPORT Bool xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, - int entityIndex, - PciChipsets * p_chip, - void *dummy, EntityProc init, - EntityProc enter, - EntityProc leave, - void *private); #else #define xf86VGAarbiterInit() do {} while (0) #define xf86VGAarbiterFini() do {} while (0) diff --git a/xorg-server/hw/xfree86/common/xf86Cursor.c b/xorg-server/hw/xfree86/common/xf86Cursor.c index 7d0776eaa..92c08af9e 100644 --- a/xorg-server/hw/xfree86/common/xf86Cursor.c +++ b/xorg-server/hw/xfree86/common/xf86Cursor.c @@ -37,8 +37,6 @@ #include "scrnintstr.h" #include "globals.h" -#include "compiler.h" - #include "xf86.h" #include "xf86Priv.h" #include "xf86_OSproc.h" @@ -76,8 +74,6 @@ static miPointerScreenFuncRec xf86PointerScreenFuncs = { static xf86ScreenLayoutRec xf86ScreenLayout[MAXSCREENS]; -static Bool HardEdges; - /* * xf86InitViewport -- * Initialize paning & zooming parameters, so that a driver must only @@ -431,16 +427,6 @@ xf86CursorOffScreen(ScreenPtr *pScreen, int *x, int *y) } } -#if 0 - /* This presents problems for overlapping screens when - HardEdges is used. Have to think about the logic more */ - if ((*x < 0) || (*x >= (*pScreen)->width) || - (*y < 0) || (*y >= (*pScreen)->height)) { - /* We may have crossed more than one screen */ - xf86CursorOffScreen(pScreen, x, y); - } -#endif - return TRUE; } @@ -584,9 +570,6 @@ xf86InitOrigins(void) xf86ScreenLayoutPtr pLayout; Bool OldStyleConfig = FALSE; - /* need to have this set up with a config file option */ - HardEdges = FALSE; - memset(xf86ScreenLayout, 0, MAXSCREENS * sizeof(xf86ScreenLayoutRec)); screensLeft = prevScreensLeft = (1 << xf86NumScreens) - 1; @@ -838,7 +821,7 @@ xf86InitOrigins(void) } } - if (!HardEdges && !OldStyleConfig) { + if (!OldStyleConfig) { for (i = 0; i < xf86NumScreens; i++) { pLayout = &xf86ScreenLayout[i]; pScreen = xf86Screens[i]->pScreen; diff --git a/xorg-server/hw/xfree86/common/xf86Events.c b/xorg-server/hw/xfree86/common/xf86Events.c index 35a673d15..16b3e2821 100644 --- a/xorg-server/hw/xfree86/common/xf86Events.c +++ b/xorg-server/hw/xfree86/common/xf86Events.c @@ -58,7 +58,6 @@ #include <X11/Xproto.h> #include <X11/Xatom.h> #include "misc.h" -#include "compiler.h" #include "xf86.h" #include "xf86Priv.h" #define XF86_OS_PRIVS diff --git a/xorg-server/hw/xfree86/common/xf86Init.c b/xorg-server/hw/xfree86/common/xf86Init.c index 5a45004f5..b197c1c38 100644 --- a/xorg-server/hw/xfree86/common/xf86Init.c +++ b/xorg-server/hw/xfree86/common/xf86Init.c @@ -56,8 +56,6 @@ #include "dbus-core.h" #include "systemd-logind.h" -#include "compiler.h" - #include "loaderProcs.h" #ifdef XFreeXDGA #include "dgaproc.h" diff --git a/xorg-server/hw/xfree86/common/xf86RandR.c b/xorg-server/hw/xfree86/common/xf86RandR.c index 2418731dc..08f656b30 100644 --- a/xorg-server/hw/xfree86/common/xf86RandR.c +++ b/xorg-server/hw/xfree86/common/xf86RandR.c @@ -37,7 +37,6 @@ #include "inputstr.h" typedef struct _xf86RandRInfo { - CreateScreenResourcesProcPtr CreateScreenResources; CloseScreenProcPtr CloseScreen; int virtualX; int virtualY; @@ -336,34 +335,6 @@ xf86RandRSetConfig(ScreenPtr pScreen, } /* - * Wait until the screen is initialized before whacking the - * sizes around; otherwise the screen pixmap will be allocated - * at the current mode size rather than the maximum size - */ -static Bool -xf86RandRCreateScreenResources(ScreenPtr pScreen) -{ - XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen); - -#if 0 - ScrnInfoPtr scrp = xf86ScreenToScrn(pScreen); - DisplayModePtr mode; -#endif - - pScreen->CreateScreenResources = randrp->CreateScreenResources; - if (!(*pScreen->CreateScreenResources) (pScreen)) - return FALSE; - -#if 0 - mode = scrp->currentMode; - if (mode) - xf86RandRSetMode(pScreen, mode, TRUE); -#endif - - return TRUE; -} - -/* * Reset size back to original */ static Bool @@ -463,9 +434,6 @@ xf86RandRInit(ScreenPtr pScreen) randrp->mmWidth = pScreen->mmWidth; randrp->mmHeight = pScreen->mmHeight; - randrp->CreateScreenResources = pScreen->CreateScreenResources; - pScreen->CreateScreenResources = xf86RandRCreateScreenResources; - randrp->CloseScreen = pScreen->CloseScreen; pScreen->CloseScreen = xf86RandRCloseScreen; diff --git a/xorg-server/hw/xfree86/common/xf86pciBus.c b/xorg-server/hw/xfree86/common/xf86pciBus.c index c06b04033..e86ecb9d4 100644 --- a/xorg-server/hw/xfree86/common/xf86pciBus.c +++ b/xorg-server/hw/xfree86/common/xf86pciBus.c @@ -1061,33 +1061,6 @@ xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex, return pScrn; } -/* - * OBSOLETE ! xf86ConfigActivePciEntity() is an obsolete function. - * It is likely to be removed. Don't use! - */ -Bool -xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex, - PciChipsets * p_chip, void *dummy, EntityProc init, - EntityProc enter, EntityProc leave, void *private) -{ - EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex); - - if (!pEnt) - return FALSE; - - if (!pEnt->active || !(pEnt->location.type == BUS_PCI)) { - free(pEnt); - return FALSE; - } - xf86AddEntityToScreen(pScrn, entityIndex); - - free(pEnt); - if (!xf86SetEntityFuncs(entityIndex, init, enter, leave, private)) - return FALSE; - - return TRUE; -} - int xf86VideoPtrToDriverList(struct pci_device *dev, char *returnList[], int returnListMax) @@ -1500,15 +1473,3 @@ xf86PciConfigureNewDev(void *busData, struct pci_device *pVideo, if (*chipset < 0) *chipset = (pVideo->vendor_id << 16) | pVideo->device_id; } - -struct pci_io_handle * -xf86MapLegacyIO(struct pci_device *dev) -{ - return pci_legacy_open_io(dev, 0, 64 * 1024); -} - -void -xf86UnmapLegacyIO(struct pci_device *dev, struct pci_io_handle *handle) -{ - pci_device_close_io(dev, handle); -} diff --git a/xorg-server/hw/xfree86/common/xf86platformBus.c b/xorg-server/hw/xfree86/common/xf86platformBus.c index 22e4603e6..946039940 100644 --- a/xorg-server/hw/xfree86/common/xf86platformBus.c +++ b/xorg-server/hw/xfree86/common/xf86platformBus.c @@ -348,7 +348,7 @@ static Bool doPlatformProbe(struct xf86_platform_device *dev, DriverPtr drvp, GDevPtr gdev, int flags, intptr_t match_data) { Bool foundScreen = FALSE; - int entity, fd, major, minor; + int entity; if (gdev && gdev->screen == 0 && !xf86_check_platform_slot(dev)) return FALSE; @@ -374,10 +374,7 @@ static Bool doPlatformProbe(struct xf86_platform_device *dev, DriverPtr drvp, if (entity != -1) { if ((dev->flags & XF86_PDEV_SERVER_FD) && (!drvp->driverFunc || !drvp->driverFunc(NULL, SUPPORTS_SERVER_FDS, NULL))) { - fd = dev->attribs->fd; - major = dev->attribs->major; - minor = dev->attribs->minor; - systemd_logind_release_fd(major, minor, fd); + systemd_logind_release_fd(dev->attribs->major, dev->attribs->minor, dev->attribs->fd); dev->attribs->fd = -1; dev->flags &= ~XF86_PDEV_SERVER_FD; } diff --git a/xorg-server/hw/xfree86/common/xf86xv.c b/xorg-server/hw/xfree86/common/xf86xv.c index e212a7387..d342bdecc 100644 --- a/xorg-server/hw/xfree86/common/xf86xv.c +++ b/xorg-server/hw/xfree86/common/xf86xv.c @@ -54,38 +54,31 @@ #include "xf86xvpriv.h" -/* XvScreenRec fields */ - -static Bool xf86XVCloseScreen(ScreenPtr); -static int xf86XVQueryAdaptors(ScreenPtr, XvAdaptorPtr *, int *); - /* XvAdaptorRec fields */ -static int xf86XVAllocatePort(unsigned long, XvPortPtr, XvPortPtr *); -static int xf86XVFreePort(XvPortPtr); -static int xf86XVPutVideo(ClientPtr, DrawablePtr, XvPortPtr, GCPtr, +static int xf86XVPutVideo(DrawablePtr, XvPortPtr, GCPtr, INT16, INT16, CARD16, CARD16, INT16, INT16, CARD16, CARD16); -static int xf86XVPutStill(ClientPtr, DrawablePtr, XvPortPtr, GCPtr, +static int xf86XVPutStill(DrawablePtr, XvPortPtr, GCPtr, INT16, INT16, CARD16, CARD16, INT16, INT16, CARD16, CARD16); -static int xf86XVGetVideo(ClientPtr, DrawablePtr, XvPortPtr, GCPtr, +static int xf86XVGetVideo(DrawablePtr, XvPortPtr, GCPtr, INT16, INT16, CARD16, CARD16, INT16, INT16, CARD16, CARD16); -static int xf86XVGetStill(ClientPtr, DrawablePtr, XvPortPtr, GCPtr, +static int xf86XVGetStill(DrawablePtr, XvPortPtr, GCPtr, INT16, INT16, CARD16, CARD16, INT16, INT16, CARD16, CARD16); -static int xf86XVStopVideo(ClientPtr, XvPortPtr, DrawablePtr); -static int xf86XVSetPortAttribute(ClientPtr, XvPortPtr, Atom, INT32); -static int xf86XVGetPortAttribute(ClientPtr, XvPortPtr, Atom, INT32 *); -static int xf86XVQueryBestSize(ClientPtr, XvPortPtr, CARD8, +static int xf86XVStopVideo(XvPortPtr, DrawablePtr); +static int xf86XVSetPortAttribute(XvPortPtr, Atom, INT32); +static int xf86XVGetPortAttribute(XvPortPtr, Atom, INT32 *); +static int xf86XVQueryBestSize(XvPortPtr, CARD8, CARD16, CARD16, CARD16, CARD16, unsigned int *, unsigned int *); -static int xf86XVPutImage(ClientPtr, DrawablePtr, XvPortPtr, GCPtr, +static int xf86XVPutImage(DrawablePtr, XvPortPtr, GCPtr, INT16, INT16, CARD16, CARD16, INT16, INT16, CARD16, CARD16, XvImagePtr, unsigned char *, Bool, CARD16, CARD16); -static int xf86XVQueryImageAttributes(ClientPtr, XvPortPtr, XvImagePtr, +static int xf86XVQueryImageAttributes(XvPortPtr, XvImagePtr, CARD16 *, CARD16 *, int *, int *); /* ScreenRec fields */ @@ -95,6 +88,7 @@ static void xf86XVWindowExposures(WindowPtr pWin, RegionPtr r1, RegionPtr r2); static void xf86XVPostValidateTree(WindowPtr pWin, WindowPtr pLayerWin, VTKind kind); static void xf86XVClipNotify(WindowPtr pWin, int dx, int dy); +static Bool xf86XVCloseScreen(ScreenPtr); #define PostValidateTreeUndefined ((PostValidateTreeProcPtr)-1) @@ -113,7 +107,10 @@ static DevPrivateKeyRec XF86XVWindowKeyRec; #define XF86XVWindowKey (&XF86XVWindowKeyRec) +/* dixmain.c XvScreenPtr screen private */ DevPrivateKey XF86XvScreenKey; +/** xf86xv.c XF86XVScreenPtr screen private */ +static DevPrivateKeyRec XF86XVScreenPrivateKey; static unsigned long PortResource = 0; @@ -121,7 +118,7 @@ static unsigned long PortResource = 0; ((XvScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, XF86XvScreenKey)) #define GET_XF86XV_SCREEN(pScreen) \ - ((XF86XVScreenPtr)(GET_XV_SCREEN(pScreen)->devPriv.ptr)) + ((XF86XVScreenPtr)(dixGetPrivate(&pScreen->devPrivates, &XF86XVScreenPrivateKey))) #define GET_XF86XV_WINDOW(pWin) \ ((XF86XVWindowPtr)dixLookupPrivate(&(pWin)->devPrivates, XF86XVWindowKey)) @@ -232,7 +229,6 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * adaptors, int num) { ScrnInfoPtr pScrn; XF86XVScreenPtr ScreenPriv; - XvScreenPtr pxvs; if (num <= 0 || noXvExtension) return FALSE; @@ -242,26 +238,15 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * adaptors, int num) if (!dixRegisterPrivateKey(&XF86XVWindowKeyRec, PRIVATE_WINDOW, 0)) return FALSE; + if (!dixRegisterPrivateKey(&XF86XVScreenPrivateKey, PRIVATE_SCREEN, 0)) + return FALSE; XF86XvScreenKey = XvGetScreenKey(); PortResource = XvGetRTPort(); - pxvs = GET_XV_SCREEN(pScreen); - - /* Anyone initializing the Xv layer must provide these two. - The Xv di layer calls them without even checking if they exist! */ - - pxvs->ddCloseScreen = xf86XVCloseScreen; - pxvs->ddQueryAdaptors = xf86XVQueryAdaptors; - - /* The Xv di layer provides us with a private hook so that we don't - have to allocate our own screen private. They also provide - a CloseScreen hook so that we don't have to wrap it. I'm not - sure that I appreciate that. */ - ScreenPriv = malloc(sizeof(XF86XVScreenRec)); - pxvs->devPriv.ptr = (void *) ScreenPriv; + dixSetPrivate(&pScreen->devPrivates, &XF86XVScreenPrivateKey, ScreenPriv); if (!ScreenPriv) return FALSE; @@ -272,6 +257,7 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * adaptors, int num) ScreenPriv->WindowExposures = pScreen->WindowExposures; ScreenPriv->PostValidateTree = PostValidateTreeUndefined; ScreenPriv->ClipNotify = pScreen->ClipNotify; + ScreenPriv->CloseScreen = pScreen->CloseScreen; ScreenPriv->EnterVT = pScrn->EnterVT; ScreenPriv->LeaveVT = pScrn->LeaveVT; ScreenPriv->AdjustFrame = pScrn->AdjustFrame; @@ -280,6 +266,7 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * adaptors, int num) pScreen->DestroyWindow = xf86XVDestroyWindow; pScreen->WindowExposures = xf86XVWindowExposures; pScreen->ClipNotify = xf86XVClipNotify; + pScreen->CloseScreen = xf86XVCloseScreen; pScrn->EnterVT = xf86XVEnterVT; pScrn->LeaveVT = xf86XVLeaveVT; if (pScrn->AdjustFrame) @@ -297,21 +284,6 @@ xf86XVFreeAdaptor(XvAdaptorPtr pAdaptor) { int i; - free(pAdaptor->name); - pAdaptor->name = NULL; - - if (pAdaptor->pEncodings) { - XvEncodingPtr pEncode = pAdaptor->pEncodings; - - for (i = 0; i < pAdaptor->nEncodings; i++, pEncode++) - free(pEncode->name); - free(pAdaptor->pEncodings); - pAdaptor->pEncodings = NULL; - } - - free(pAdaptor->pFormats); - pAdaptor->pFormats = NULL; - if (pAdaptor->pPorts) { XvPortPtr pPort = pAdaptor->pPorts; XvPortRecPrivatePtr pPriv; @@ -328,23 +300,9 @@ xf86XVFreeAdaptor(XvAdaptorPtr pAdaptor) free(pPriv); } } - free(pAdaptor->pPorts); - pAdaptor->pPorts = NULL; - } - - if (pAdaptor->pAttributes) { - XvAttributePtr pAttribute = pAdaptor->pAttributes; - - for (i = 0; i < pAdaptor->nAttributes; i++, pAttribute++) - free(pAttribute->name); - free(pAdaptor->pAttributes); - pAdaptor->pAttributes = NULL; } - free(pAdaptor->pImages); - free(pAdaptor->devPriv.ptr); - pAdaptor->pImages = NULL; - pAdaptor->devPriv.ptr = NULL; + XvFreeAdaptor(pAdaptor); } static Bool @@ -409,8 +367,6 @@ xf86XVInitAdaptors(ScreenPtr pScreen, XF86VideoAdaptorPtr * infoPtr, int number) continue; pa->pScreen = pScreen; - pa->ddAllocatePort = xf86XVAllocatePort; - pa->ddFreePort = xf86XVFreePort; pa->ddPutVideo = xf86XVPutVideo; pa->ddPutStill = xf86XVPutStill; pa->ddGetVideo = xf86XVGetVideo; @@ -712,10 +668,6 @@ xf86XVRegetVideo(XvPortRecPrivatePtr portPriv) goto CLIP_VIDEO_BAILOUT; } - if (portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) { - RegionSubtract(&ClipRegion, &WinRegion, &ClipRegion); - } - ret = (*portPriv->AdaptorRec->GetVideo) (portPriv->pScrn, portPriv->vid_x, portPriv->vid_y, WinBox.x1, WinBox.y1, @@ -788,22 +740,6 @@ xf86XVReputVideo(XvPortRecPrivatePtr portPriv) goto CLIP_VIDEO_BAILOUT; } - /* bailout if we have to clip but the hardware doesn't support it */ - if (portPriv->AdaptorRec->flags & VIDEO_NO_CLIPPING) { - BoxPtr clipBox = RegionRects(&ClipRegion); - - if ((RegionNumRects(&ClipRegion) != 1) || - (clipBox->x1 != WinBox.x1) || (clipBox->x2 != WinBox.x2) || - (clipBox->y1 != WinBox.y1) || (clipBox->y2 != WinBox.y2)) { - clippedAway = TRUE; - goto CLIP_VIDEO_BAILOUT; - } - } - - if (portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) { - RegionSubtract(&ClipRegion, &WinRegion, &ClipRegion); - } - ret = (*portPriv->AdaptorRec->PutVideo) (portPriv->pScrn, portPriv->vid_x, portPriv->vid_y, WinBox.x1, WinBox.y1, @@ -882,22 +818,6 @@ xf86XVReputImage(XvPortRecPrivatePtr portPriv) goto CLIP_VIDEO_BAILOUT; } - /* bailout if we have to clip but the hardware doesn't support it */ - if (portPriv->AdaptorRec->flags & VIDEO_NO_CLIPPING) { - BoxPtr clipBox = RegionRects(&ClipRegion); - - if ((RegionNumRects(&ClipRegion) != 1) || - (clipBox->x1 != WinBox.x1) || (clipBox->x2 != WinBox.x2) || - (clipBox->y1 != WinBox.y1) || (clipBox->y2 != WinBox.y2)) { - clippedAway = TRUE; - goto CLIP_VIDEO_BAILOUT; - } - } - - if (portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) { - RegionSubtract(&ClipRegion, &WinRegion, &ClipRegion); - } - ret = (*portPriv->AdaptorRec->ReputImage) (portPriv->pScrn, portPriv->vid_x, portPriv->vid_y, WinBox.x1, WinBox.y1, @@ -1235,6 +1155,7 @@ xf86XVCloseScreen(ScreenPtr pScreen) pScreen->DestroyWindow = ScreenPriv->DestroyWindow; pScreen->WindowExposures = ScreenPriv->WindowExposures; pScreen->ClipNotify = ScreenPriv->ClipNotify; + pScreen->CloseScreen = ScreenPriv->CloseScreen; pScrn->EnterVT = ScreenPriv->EnterVT; pScrn->LeaveVT = ScreenPriv->LeaveVT; @@ -1247,19 +1168,8 @@ xf86XVCloseScreen(ScreenPtr pScreen) free(pxvs->pAdaptors); free(ScreenPriv); - return TRUE; -} - -static int -xf86XVQueryAdaptors(ScreenPtr pScreen, - XvAdaptorPtr * p_pAdaptors, int *p_nAdaptors) -{ - XvScreenPtr pxvs = GET_XV_SCREEN(pScreen); - *p_nAdaptors = pxvs->nAdaptors; - *p_pAdaptors = pxvs->pAdaptors; - - return Success; + return pScreen->CloseScreen(pScreen); } /**** ScrnInfoRec fields ****/ @@ -1361,21 +1271,7 @@ xf86XVModeSet(ScrnInfoPtr pScrn) /**** XvAdaptorRec fields ****/ static int -xf86XVAllocatePort(unsigned long port, XvPortPtr pPort, XvPortPtr * ppPort) -{ - *ppPort = pPort; - return Success; -} - -static int -xf86XVFreePort(XvPortPtr pPort) -{ - return Success; -} - -static int -xf86XVPutVideo(ClientPtr client, - DrawablePtr pDraw, +xf86XVPutVideo(DrawablePtr pDraw, XvPortPtr pPort, GCPtr pGC, INT16 vid_x, INT16 vid_y, @@ -1425,8 +1321,7 @@ xf86XVPutVideo(ClientPtr client, } static int -xf86XVPutStill(ClientPtr client, - DrawablePtr pDraw, +xf86XVPutStill(DrawablePtr pDraw, XvPortPtr pPort, GCPtr pGC, INT16 vid_x, INT16 vid_y, @@ -1480,21 +1375,6 @@ xf86XVPutStill(ClientPtr client, goto PUT_STILL_BAILOUT; } - if (portPriv->AdaptorRec->flags & VIDEO_NO_CLIPPING) { - BoxPtr clipBox = RegionRects(&ClipRegion); - - if ((RegionNumRects(&ClipRegion) != 1) || - (clipBox->x1 != WinBox.x1) || (clipBox->x2 != WinBox.x2) || - (clipBox->y1 != WinBox.y1) || (clipBox->y2 != WinBox.y2)) { - clippedAway = TRUE; - goto PUT_STILL_BAILOUT; - } - } - - if (portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) { - RegionSubtract(&ClipRegion, &WinRegion, &ClipRegion); - } - ret = (*portPriv->AdaptorRec->PutStill) (portPriv->pScrn, vid_x, vid_y, WinBox.x1, WinBox.y1, vid_w, vid_h, drw_w, drw_h, @@ -1538,8 +1418,7 @@ xf86XVPutStill(ClientPtr client, } static int -xf86XVGetVideo(ClientPtr client, - DrawablePtr pDraw, +xf86XVGetVideo(DrawablePtr pDraw, XvPortPtr pPort, GCPtr pGC, INT16 vid_x, INT16 vid_y, @@ -1589,8 +1468,7 @@ xf86XVGetVideo(ClientPtr client, } static int -xf86XVGetStill(ClientPtr client, - DrawablePtr pDraw, +xf86XVGetStill(DrawablePtr pDraw, XvPortPtr pPort, GCPtr pGC, INT16 vid_x, INT16 vid_y, @@ -1628,10 +1506,6 @@ xf86XVGetStill(ClientPtr client, goto GET_STILL_BAILOUT; } - if (portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) { - RegionSubtract(&ClipRegion, &WinRegion, &ClipRegion); - } - ret = (*portPriv->AdaptorRec->GetStill) (portPriv->pScrn, vid_x, vid_y, WinBox.x1, WinBox.y1, vid_w, vid_h, drw_w, drw_h, @@ -1653,7 +1527,7 @@ xf86XVGetStill(ClientPtr client, } static int -xf86XVStopVideo(ClientPtr client, XvPortPtr pPort, DrawablePtr pDraw) +xf86XVStopVideo(XvPortPtr pPort, DrawablePtr pDraw) { XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr) (pPort->devPriv.ptr); @@ -1677,8 +1551,7 @@ xf86XVStopVideo(ClientPtr client, XvPortPtr pPort, DrawablePtr pDraw) } static int -xf86XVSetPortAttribute(ClientPtr client, - XvPortPtr pPort, Atom attribute, INT32 value) +xf86XVSetPortAttribute(XvPortPtr pPort, Atom attribute, INT32 value) { XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr) (pPort->devPriv.ptr); @@ -1688,8 +1561,7 @@ xf86XVSetPortAttribute(ClientPtr client, } static int -xf86XVGetPortAttribute(ClientPtr client, - XvPortPtr pPort, Atom attribute, INT32 *p_value) +xf86XVGetPortAttribute(XvPortPtr pPort, Atom attribute, INT32 *p_value) { XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr) (pPort->devPriv.ptr); @@ -1699,8 +1571,7 @@ xf86XVGetPortAttribute(ClientPtr client, } static int -xf86XVQueryBestSize(ClientPtr client, - XvPortPtr pPort, +xf86XVQueryBestSize(XvPortPtr pPort, CARD8 motion, CARD16 vid_w, CARD16 vid_h, CARD16 drw_w, CARD16 drw_h, @@ -1717,8 +1588,7 @@ xf86XVQueryBestSize(ClientPtr client, } static int -xf86XVPutImage(ClientPtr client, - DrawablePtr pDraw, +xf86XVPutImage(DrawablePtr pDraw, XvPortPtr pPort, GCPtr pGC, INT16 src_x, INT16 src_y, @@ -1780,21 +1650,6 @@ xf86XVPutImage(ClientPtr client, goto PUT_IMAGE_BAILOUT; } - if (portPriv->AdaptorRec->flags & VIDEO_NO_CLIPPING) { - BoxPtr clipBox = RegionRects(&ClipRegion); - - if ((RegionNumRects(&ClipRegion) != 1) || - (clipBox->x1 != WinBox.x1) || (clipBox->x2 != WinBox.x2) || - (clipBox->y1 != WinBox.y1) || (clipBox->y2 != WinBox.y2)) { - clippedAway = TRUE; - goto PUT_IMAGE_BAILOUT; - } - } - - if (portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) { - RegionSubtract(&ClipRegion, &WinRegion, &ClipRegion); - } - ret = (*portPriv->AdaptorRec->PutImage) (portPriv->pScrn, src_x, src_y, WinBox.x1, WinBox.y1, src_w, src_h, drw_w, drw_h, @@ -1838,8 +1693,7 @@ xf86XVPutImage(ClientPtr client, } static int -xf86XVQueryImageAttributes(ClientPtr client, - XvPortPtr pPort, +xf86XVQueryImageAttributes(XvPortPtr pPort, XvImagePtr format, CARD16 *width, CARD16 *height, int *pitches, int *offsets) @@ -1856,34 +1710,11 @@ void xf86XVFillKeyHelperDrawable(DrawablePtr pDraw, CARD32 key, RegionPtr fillboxes) { ScreenPtr pScreen = pDraw->pScreen; - ChangeGCVal pval[2]; - BoxPtr pbox = RegionRects(fillboxes); - int i, nbox = RegionNumRects(fillboxes); - xRectangle *rects; - GCPtr gc; if (!xf86ScreenToScrn(pScreen)->vtSema) return; - gc = GetScratchGC(pDraw->depth, pScreen); - pval[0].val = key; - pval[1].val = IncludeInferiors; - (void) ChangeGC(NullClient, gc, GCForeground | GCSubwindowMode, pval); - ValidateGC(pDraw, gc); - - rects = malloc(nbox * sizeof(xRectangle)); - - for (i = 0; i < nbox; i++, pbox++) { - rects[i].x = pbox->x1 - pDraw->x; - rects[i].y = pbox->y1 - pDraw->y; - rects[i].width = pbox->x2 - pbox->x1; - rects[i].height = pbox->y2 - pbox->y1; - } - - (*gc->ops->PolyFillRect) (pDraw, gc, nbox, rects); - - free(rects); - FreeScratchGC(gc); + XvFillColorKey(pDraw, key, fillboxes); } void diff --git a/xorg-server/hw/xfree86/common/xf86xv.h b/xorg-server/hw/xfree86/common/xf86xv.h index de17eb133..c6455d703 100644 --- a/xorg-server/hw/xfree86/common/xf86xv.h +++ b/xorg-server/hw/xfree86/common/xf86xv.h @@ -32,8 +32,6 @@ #include "xvdix.h" #include "xf86str.h" -#define VIDEO_NO_CLIPPING 0x00000001 -#define VIDEO_INVERT_CLIPLIST 0x00000002 #define VIDEO_OVERLAID_IMAGES 0x00000004 #define VIDEO_OVERLAID_STILLS 0x00000008 /* diff --git a/xorg-server/hw/xfree86/common/xf86xvpriv.h b/xorg-server/hw/xfree86/common/xf86xvpriv.h index e95f959a8..c0dff16d5 100644 --- a/xorg-server/hw/xfree86/common/xf86xvpriv.h +++ b/xorg-server/hw/xfree86/common/xf86xvpriv.h @@ -45,6 +45,7 @@ typedef struct { Bool (*EnterVT) (ScrnInfoPtr); void (*LeaveVT) (ScrnInfoPtr); xf86ModeSetProc *ModeSet; + CloseScreenProcPtr CloseScreen; } XF86XVScreenRec, *XF86XVScreenPtr; typedef struct { diff --git a/xorg-server/hw/xfree86/doc/ddxDesign.xml b/xorg-server/hw/xfree86/doc/ddxDesign.xml index d1fd9af7b..6a9de9e7f 100644 --- a/xorg-server/hw/xfree86/doc/ddxDesign.xml +++ b/xorg-server/hw/xfree86/doc/ddxDesign.xml @@ -4543,31 +4543,6 @@ as follows: <variablelist> <varlistentry> - <term><constant>VIDEO_NO_CLIPPING</constant></term> - <listitem><para> - This indicates that the video adaptor does not support - clipping. The driver will never receive <quote>Put</quote> requests - where less than the entire area determined by - <parameter>drw_x</parameter>, <parameter>drw_y</parameter>, - <parameter>drw_w</parameter> and <parameter>drw_h</parameter> is visible. - This flag does not apply to <quote>Get</quote> requests. Hardware - that is incapable of clipping <quote>Gets</quote> may punt or get - the extents of the clipping region passed to it. - </para></listitem> - - </varlistentry> - - <varlistentry> - <term><constant>VIDEO_INVERT_CLIPLIST</constant></term> - <listitem><para> - This indicates that the video driver requires the clip - list to contain the regions which are obscured rather - than the regions which are are visible. - </para></listitem> - - </varlistentry> - - <varlistentry> <term><constant>VIDEO_OVERLAID_STILLS</constant></term> <listitem><para> Implementing PutStill for hardware that does video as an @@ -4724,18 +4699,13 @@ as follows: </para> <para> - If the <constant>VIDEO_NO_CLIPPING</constant> - flag is set, the <literal remap="tt">clipBoxes</literal> may be ignored by - the driver. <literal remap="tt">ClipBoxes</literal> is an <literal remap="tt">X-Y</literal> + <literal remap="tt">ClipBoxes</literal> is an <literal remap="tt">X-Y</literal> banded region identical to those used throughout the server. The clipBoxes represent the visible portions of the area determined by <literal remap="tt">drw_x</literal>, <literal remap="tt">drw_y</literal>, <literal remap="tt">drw_w</literal> and <literal remap="tt">drw_h</literal> in the Get/Put function. The boxes are in screen coordinates, are guaranteed not to overlap and an empty region will never be passed. - If the driver has specified <constant>VIDEO_INVERT_CLIPLIST</constant>, - <literal remap="tt">clipBoxes</literal> will indicate the areas of the primitive - which are obscured rather than the areas visible. </para></listitem></varlistentry> </variablelist> @@ -9094,8 +9064,7 @@ ZZZScreenInit(ScreenPtr pScreen, int argc, char **argv) xf86SetBlackWhitePixels(pScreen); /* - * Install colourmap functions. If using the vgahw module, - * vgaHandleColormaps would usually be called here. + * Install colourmap functions. */ ... diff --git a/xorg-server/hw/xfree86/dri/dri.c b/xorg-server/hw/xfree86/dri/dri.c index 95828bbac..3f2f6a9b3 100644 --- a/xorg-server/hw/xfree86/dri/dri.c +++ b/xorg-server/hw/xfree86/dri/dri.c @@ -595,14 +595,6 @@ DRIFinishScreenInit(ScreenPtr pScreen) DRIInfoPtr pDRIInfo = pDRIPriv->pDriverInfo; /* Wrap DRI support */ - if (pDRIInfo->wrap.ValidateTree) { - pDRIPriv->wrap.ValidateTree = pScreen->ValidateTree; - pScreen->ValidateTree = pDRIInfo->wrap.ValidateTree; - } - if (pDRIInfo->wrap.PostValidateTree) { - pDRIPriv->wrap.PostValidateTree = pScreen->PostValidateTree; - pScreen->PostValidateTree = pDRIInfo->wrap.PostValidateTree; - } if (pDRIInfo->wrap.WindowExposures) { pDRIPriv->wrap.WindowExposures = pScreen->WindowExposures; pScreen->WindowExposures = pDRIInfo->wrap.WindowExposures; @@ -652,14 +644,6 @@ DRICloseScreen(ScreenPtr pScreen) if (pDRIPriv->wrapped) { /* Unwrap DRI Functions */ - if (pDRIInfo->wrap.ValidateTree) { - pScreen->ValidateTree = pDRIPriv->wrap.ValidateTree; - pDRIPriv->wrap.ValidateTree = NULL; - } - if (pDRIInfo->wrap.PostValidateTree) { - pScreen->PostValidateTree = pDRIPriv->wrap.PostValidateTree; - pDRIPriv->wrap.PostValidateTree = NULL; - } if (pDRIInfo->wrap.WindowExposures) { pScreen->WindowExposures = pDRIPriv->wrap.WindowExposures; pDRIPriv->wrap.WindowExposures = NULL; @@ -1601,8 +1585,6 @@ DRICreateInfoRec(void) inforec->wrap.BlockHandler = DRIDoBlockHandler; inforec->wrap.WindowExposures = DRIWindowExposures; inforec->wrap.CopyWindow = DRICopyWindow; - inforec->wrap.ValidateTree = DRIValidateTree; - inforec->wrap.PostValidateTree = DRIPostValidateTree; inforec->wrap.ClipNotify = DRIClipNotify; inforec->wrap.AdjustFrame = DRIAdjustFrame; @@ -2064,61 +2046,6 @@ DRILockTree(ScreenPtr pScreen) } } -int -DRIValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind) -{ - ScreenPtr pScreen = pParent->drawable.pScreen; - DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); - - int returnValue = 1; /* always return 1, not checked by dix/window.c */ - - if (!pDRIPriv) - return returnValue; - - /* call lower wrapped functions */ - if (pDRIPriv->wrap.ValidateTree) { - /* unwrap */ - pScreen->ValidateTree = pDRIPriv->wrap.ValidateTree; - - /* call lower layers */ - returnValue = (*pScreen->ValidateTree) (pParent, pChild, kind); - - /* rewrap */ - pDRIPriv->wrap.ValidateTree = pScreen->ValidateTree; - pScreen->ValidateTree = DRIValidateTree; - } - - return returnValue; -} - -void -DRIPostValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind) -{ - ScreenPtr pScreen; - DRIScreenPrivPtr pDRIPriv; - - if (pParent) { - pScreen = pParent->drawable.pScreen; - } - else { - pScreen = pChild->drawable.pScreen; - } - if (!(pDRIPriv = DRI_SCREEN_PRIV(pScreen))) - return; - - if (pDRIPriv->wrap.PostValidateTree) { - /* unwrap */ - pScreen->PostValidateTree = pDRIPriv->wrap.PostValidateTree; - - /* call lower layers */ - (*pScreen->PostValidateTree) (pParent, pChild, kind); - - /* rewrap */ - pDRIPriv->wrap.PostValidateTree = pScreen->PostValidateTree; - pScreen->PostValidateTree = DRIPostValidateTree; - } -} - void DRIClipNotify(WindowPtr pWin, int dx, int dy) { diff --git a/xorg-server/hw/xfree86/dri/dri.h b/xorg-server/hw/xfree86/dri/dri.h index 64cd7c9d4..dec688582 100644 --- a/xorg-server/hw/xfree86/dri/dri.h +++ b/xorg-server/hw/xfree86/dri/dri.h @@ -85,8 +85,6 @@ typedef struct { ScreenBlockHandlerProcPtr BlockHandler; WindowExposuresProcPtr WindowExposures; CopyWindowProcPtr CopyWindow; - ValidateTreeProcPtr ValidateTree; - PostValidateTreeProcPtr PostValidateTree; ClipNotifyProcPtr ClipNotify; AdjustFramePtr AdjustFrame; } DRIWrappedFuncsRec, *DRIWrappedFuncsPtr; @@ -290,12 +288,6 @@ extern _X_EXPORT Bool DRIDestroyWindow(WindowPtr pWin); extern _X_EXPORT void DRICopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc); -extern _X_EXPORT int DRIValidateTree(WindowPtr pParent, - WindowPtr pChild, VTKind kind); - -extern _X_EXPORT void DRIPostValidateTree(WindowPtr pParent, - WindowPtr pChild, VTKind kind); - extern _X_EXPORT void DRIClipNotify(WindowPtr pWin, int dx, int dy); extern _X_EXPORT CARD32 DRIGetDrawableIndex(WindowPtr pWin); diff --git a/xorg-server/hw/xfree86/int10/generic.c b/xorg-server/hw/xfree86/int10/generic.c index abbd36f3c..73a1e5e49 100644 --- a/xorg-server/hw/xfree86/int10/generic.c +++ b/xorg-server/hw/xfree86/int10/generic.c @@ -20,6 +20,42 @@ #define ALLOC_ENTRIES(x) ((V_RAM / x) - 1) +#include <string.h> /* needed for memmove */ + +static __inline__ uint32_t +ldl_u(uint32_t * p) +{ + uint32_t ret; + + memmove(&ret, p, sizeof(*p)); + return ret; +} + +static __inline__ uint16_t +ldw_u(uint16_t * p) +{ + uint16_t ret; + + memmove(&ret, p, sizeof(*p)); + return ret; +} + +static __inline__ void +stl_u(uint32_t val, uint32_t * p) +{ + uint32_t tmp = val; + + memmove(p, &tmp, sizeof(*p)); +} + +static __inline__ void +stw_u(uint16_t val, uint16_t * p) +{ + uint16_t tmp = val; + + memmove(p, &tmp, sizeof(*p)); +} + static uint8_t read_b(xf86Int10InfoPtr pInt, int addr); static uint16_t read_w(xf86Int10InfoPtr pInt, int addr); static uint32_t read_l(xf86Int10InfoPtr pInt, int addr); diff --git a/xorg-server/hw/xfree86/loader/loader.c b/xorg-server/hw/xfree86/loader/loader.c index 64c69bb8a..cc41dcb4c 100644 --- a/xorg-server/hw/xfree86/loader/loader.c +++ b/xorg-server/hw/xfree86/loader/loader.c @@ -65,7 +65,6 @@ #include "loaderProcs.h" #include "xf86.h" #include "xf86Priv.h" -#include "compiler.h" #ifdef HAVE_DLFCN_H diff --git a/xorg-server/hw/xfree86/modes/xf86Rotate.c b/xorg-server/hw/xfree86/modes/xf86Rotate.c index 1627e61dd..9c00a443f 100644 --- a/xorg-server/hw/xfree86/modes/xf86Rotate.c +++ b/xorg-server/hw/xfree86/modes/xf86Rotate.c @@ -35,7 +35,6 @@ #include "xf86.h" #include "xf86DDC.h" -#include "fb.h" #include "windowstr.h" #include "xf86Crtc.h" #include "xf86Modes.h" @@ -310,6 +309,8 @@ xf86RotateCloseScreen(ScreenPtr screen) xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); int c; + /* This has already been destroyed when the root window was destroyed */ + xf86_config->rotation_damage = NULL; for (c = 0; c < xf86_config->num_crtc; c++) xf86RotateDestroy(xf86_config->crtc[c]); } diff --git a/xorg-server/hw/xfree86/os-support/bsd/alpha_video.c b/xorg-server/hw/xfree86/os-support/bsd/alpha_video.c index 95bd0591a..f656f5595 100644 --- a/xorg-server/hw/xfree86/os-support/bsd/alpha_video.c +++ b/xorg-server/hw/xfree86/os-support/bsd/alpha_video.c @@ -431,12 +431,6 @@ extern int readDense8(void *Base, register unsigned long Offset); extern int readDense16(void *Base, register unsigned long Offset); extern int readDense32(void *Base, register unsigned long Offset); extern void - writeDenseNB8(int Value, void *Base, register unsigned long Offset); -extern void - writeDenseNB16(int Value, void *Base, register unsigned long Offset); -extern void - writeDenseNB32(int Value, void *Base, register unsigned long Offset); -extern void writeDense8(int Value, void *Base, register unsigned long Offset); extern void writeDense16(int Value, void *Base, register unsigned long Offset); @@ -666,12 +660,6 @@ void (*xf86WriteMmio16) (int Value, void *Base, unsigned long Offset) = writeDense16; void (*xf86WriteMmio32) (int Value, void *Base, unsigned long Offset) = writeDense32; -void (*xf86WriteMmioNB8) (int Value, void *Base, unsigned long Offset) - = writeDenseNB8; -void (*xf86WriteMmioNB16) (int Value, void *Base, unsigned long Offset) - = writeDenseNB16; -void (*xf86WriteMmioNB32) (int Value, void *Base, unsigned long Offset) - = writeDenseNB32; int (*xf86ReadMmio8) (void *Base, unsigned long Offset) = readDense8; int (*xf86ReadMmio16) (void *Base, unsigned long Offset) diff --git a/xorg-server/hw/xfree86/os-support/bsd/arm_video.c b/xorg-server/hw/xfree86/os-support/bsd/arm_video.c index 6a977c2db..e295c9244 100644 --- a/xorg-server/hw/xfree86/os-support/bsd/arm_video.c +++ b/xorg-server/hw/xfree86/os-support/bsd/arm_video.c @@ -487,142 +487,3 @@ xf86DisableIO() } #endif /* USE_ARC_MMAP */ - -#if 0 -/* - * XXX This is here for reference. It needs to be handled differently for the - * ND. - */ -#if defined(USE_ARC_MMAP) || defined(__arm32__) - -#ifdef USE_ARM32_MMAP -#define DEV_MEM_IOBASE 0x43000000 -#endif - -static Bool ScreenEnabled[MAXSCREENS]; -static Bool ExtendedEnabled = FALSE; -static Bool InitDone = FALSE; - -Bool -xf86EnableIOPorts(ScreenNum) -int ScreenNum; -{ - int i; - int fd; - void *base; - -#ifdef __arm32__ - struct memAccess *memInfoP; - int *Size; -#endif - - ScreenEnabled[ScreenNum] = TRUE; - - if (ExtendedEnabled) - return TRUE; - -#ifdef USE_ARC_MMAP - if ((fd = open("/dev/ttyC0", O_RDWR)) >= 0) { - /* Try to map a page at the pccons I/O space */ - base = (void *) mmap((caddr_t) 0, 65536, PROT_READ | PROT_WRITE, - MAP_FLAGS, fd, (off_t) 0x0000); - - if (base != (void *) -1) { - IOPortBase = base; - } - else { - xf86Msg(X_ERROR, - "EnableIOPorts: failed to mmap %s (%s)\n", - "/dev/ttyC0", strerror(errno)); - } - } - else { - xf86Msg(X_ERROR, "EnableIOPorts: failed to open %s (%s)\n", - "/dev/ttyC0", strerror(errno)); - } -#endif - -#ifdef __arm32__ - IOPortBase = (unsigned int) -1; - - if ((memInfoP = checkMapInfo(TRUE, MMIO_REGION)) != NULL) { - /* - * xf86MapInfoMap maps an offset from the start of video IO - * space (e.g. 0x3B0), but IOPortBase is expected to map to - * physical address 0x000, so subtract the start of video I/O - * space from the result. This is safe for now becase we - * actually mmap the start of the page, then the start of video - * I/O space is added as an internal offset. - */ - IOPortBase = (unsigned int) xf86MapInfoMap(memInfoP, (caddr_t) 0x0, 0L) - - memInfoP->memInfo.u.map_info_mmap.internal_offset; - ExtendedEnabled = TRUE; - return TRUE; - } -#ifdef USE_ARM32_MMAP - checkDevMem(TRUE); - - if (devMemFd >= 0 && useDevMem) { - base = (void *) mmap((caddr_t) 0, 0x400, PROT_READ | PROT_WRITE, - MAP_FLAGS, devMemFd, (off_t) DEV_MEM_IOBASE); - - if (base != (void *) -1) - IOPortBase = (unsigned int) base; - } - - if (IOPortBase == (unsigned int) -1) { - xf86Msg(X_WARNING, - "xf86EnableIOPorts: failed to open mem device or map IO base. \n\ -Make sure you have the Aperture Driver installed, or a kernel built with the INSECURE option\n"); - return FALSE; - } -#else - /* We don't have the IOBASE, so we can't map the address */ - xf86Msg(X_WARNING, - "xf86EnableIOPorts: failed to open mem device or map IO base. \n\ -Try building the server with USE_ARM32_MMAP defined\n"); - return FALSE; -#endif -#endif - - ExtendedEnabled = TRUE; - - return TRUE; -} - -void -xf86DisableIOPorts(ScreenNum) -int ScreenNum; -{ - int i; - -#ifdef __arm32__ - struct memAccess *memInfoP; -#endif - - ScreenEnabled[ScreenNum] = FALSE; - -#ifdef __arm32__ - if ((memInfoP = checkMapInfo(FALSE, MMIO_REGION)) != NULL) { - xf86MapInfoUnmap(memInfoP, 0); - } -#endif - -#ifdef USE_ARM32_MMAP - if (!ExtendedEnabled) - return; - - for (i = 0; i < MAXSCREENS; i++) - if (ScreenEnabled[i]) - return; - - munmap((caddr_t) IOPortBase, 0x400); - IOPortBase = (unsigned int) -1; - ExtendedEnabled = FALSE; -#endif - - return; -} - -#endif /* USE_ARC_MMAP || USE_ARM32_MMAP */ -#endif diff --git a/xorg-server/hw/xfree86/os-support/bsd/bsd_ev56.c b/xorg-server/hw/xfree86/os-support/bsd/bsd_ev56.c index 320bb23b6..95883491b 100644 --- a/xorg-server/hw/xfree86/os-support/bsd/bsd_ev56.c +++ b/xorg-server/hw/xfree86/os-support/bsd/bsd_ev56.c @@ -26,12 +26,6 @@ int readDense8(void *Base, register unsigned long Offset); int readDense16(void *Base, register unsigned long Offset); int readDense32(void *Base, register unsigned long Offset); void - writeDenseNB8(int Value, void *Base, register unsigned long Offset); -void - writeDenseNB16(int Value, void *Base, register unsigned long Offset); -void - writeDenseNB32(int Value, void *Base, register unsigned long Offset); -void writeDense8(int Value, void *Base, register unsigned long Offset); void writeDense16(int Value, void *Base, register unsigned long Offset); @@ -60,24 +54,6 @@ readDense32(void *Base, register unsigned long Offset) } void -writeDenseNB8(int Value, void *Base, register unsigned long Offset) -{ - alpha_stb((void *) ((unsigned long) Base + (Offset)), Value); -} - -void -writeDenseNB16(int Value, void *Base, register unsigned long Offset) -{ - alpha_stw((void *) ((unsigned long) Base + (Offset)), Value); -} - -void -writeDenseNB32(int Value, void *Base, register unsigned long Offset) -{ - *(volatile CARD32 *) ((unsigned long) Base + (Offset)) = Value; -} - -void writeDense8(int Value, void *Base, register unsigned long Offset) { write_mem_barrier(); diff --git a/xorg-server/hw/xfree86/os-support/bus/xf86Pci.h b/xorg-server/hw/xfree86/os-support/bus/xf86Pci.h index f69e55b39..210ab3d89 100644 --- a/xorg-server/hw/xfree86/os-support/bus/xf86Pci.h +++ b/xorg-server/hw/xfree86/os-support/bus/xf86Pci.h @@ -232,28 +232,7 @@ * Typedefs, etc... */ -/* Primitive Types */ -typedef unsigned long ADDRESS; /* Memory/PCI address */ -typedef unsigned long IOADDRESS _X_DEPRECATED; /* Must be large enough for a pointer */ -typedef CARD32 PCITAG _X_DEPRECATED; - -typedef enum { - PCI_MEM, - PCI_MEM_SIZE, - PCI_MEM_SPARSE_BASE, - PCI_MEM_SPARSE_MASK, - PCI_IO, - PCI_IO_SIZE, - PCI_IO_SPARSE_BASE, - PCI_IO_SPARSE_MASK -} PciAddrType; - /* Public PCI access functions */ extern _X_EXPORT Bool xf86scanpci(void); -/* Domain access functions. Some of these probably shouldn't be public */ -extern _X_EXPORT struct pci_io_handle *xf86MapLegacyIO(struct pci_device *dev); -extern _X_EXPORT void xf86UnmapLegacyIO(struct pci_device *, - struct pci_io_handle *); - #endif /* _XF86PCI_H */ diff --git a/xorg-server/hw/xfree86/os-support/linux/lnx_ev56.c b/xorg-server/hw/xfree86/os-support/linux/lnx_ev56.c index b6950009c..4e886b6ce 100644 --- a/xorg-server/hw/xfree86/os-support/linux/lnx_ev56.c +++ b/xorg-server/hw/xfree86/os-support/linux/lnx_ev56.c @@ -10,12 +10,6 @@ int readDense8(void *Base, register unsigned long Offset); int readDense16(void *Base, register unsigned long Offset); int readDense32(void *Base, register unsigned long Offset); void - writeDenseNB8(int Value, void *Base, register unsigned long Offset); -void - writeDenseNB16(int Value, void *Base, register unsigned long Offset); -void - writeDenseNB32(int Value, void *Base, register unsigned long Offset); -void writeDense8(int Value, void *Base, register unsigned long Offset); void writeDense16(int Value, void *Base, register unsigned long Offset); @@ -44,24 +38,6 @@ readDense32(void *Base, register unsigned long Offset) } void -writeDenseNB8(int Value, void *Base, register unsigned long Offset) -{ - *(volatile CARD8 *) ((unsigned long) Base + (Offset)) = Value; -} - -void -writeDenseNB16(int Value, void *Base, register unsigned long Offset) -{ - *(volatile CARD16 *) ((unsigned long) Base + (Offset)) = Value; -} - -void -writeDenseNB32(int Value, void *Base, register unsigned long Offset) -{ - *(volatile CARD32 *) ((unsigned long) Base + (Offset)) = Value; -} - -void writeDense8(int Value, void *Base, register unsigned long Offset) { write_mem_barrier(); diff --git a/xorg-server/hw/xfree86/os-support/linux/lnx_video.c b/xorg-server/hw/xfree86/os-support/linux/lnx_video.c index 652f963a2..ffffc81c5 100644 --- a/xorg-server/hw/xfree86/os-support/linux/lnx_video.c +++ b/xorg-server/hw/xfree86/os-support/linux/lnx_video.c @@ -571,12 +571,6 @@ extern int readDense8(void *Base, register unsigned long Offset); extern int readDense16(void *Base, register unsigned long Offset); extern int readDense32(void *Base, register unsigned long Offset); extern void - writeDenseNB8(int Value, void *Base, register unsigned long Offset); -extern void - writeDenseNB16(int Value, void *Base, register unsigned long Offset); -extern void - writeDenseNB32(int Value, void *Base, register unsigned long Offset); -extern void writeDense8(int Value, void *Base, register unsigned long Offset); extern void writeDense16(int Value, void *Base, register unsigned long Offset); @@ -867,12 +861,6 @@ void (*xf86WriteMmio16) (int Value, void *Base, unsigned long Offset) = writeDense16; void (*xf86WriteMmio32) (int Value, void *Base, unsigned long Offset) = writeDense32; -void (*xf86WriteMmioNB8) (int Value, void *Base, unsigned long Offset) - = writeDenseNB8; -void (*xf86WriteMmioNB16) (int Value, void *Base, unsigned long Offset) - = writeDenseNB16; -void (*xf86WriteMmioNB32) (int Value, void *Base, unsigned long Offset) - = writeDenseNB32; int (*xf86ReadMmio8) (void *Base, unsigned long Offset) = readDense8; int (*xf86ReadMmio16) (void *Base, unsigned long Offset) diff --git a/xorg-server/hw/xfree86/os-support/xf86OSpriv.h b/xorg-server/hw/xfree86/os-support/xf86OSpriv.h index 7f003e8ce..b56f45a3e 100644 --- a/xorg-server/hw/xfree86/os-support/xf86OSpriv.h +++ b/xorg-server/hw/xfree86/os-support/xf86OSpriv.h @@ -36,14 +36,12 @@ typedef void *(*MapMemProcPtr) (int, unsigned long, unsigned long, int); typedef void (*UnmapMemProcPtr) (int, void *, unsigned long); typedef void *(*SetWCProcPtr) (int, unsigned long, unsigned long, Bool, MessageType); -typedef void (*ProtectMemProcPtr) (int, void *, unsigned long, Bool); typedef void (*UndoWCProcPtr) (int, void *); typedef struct { Bool initialised; MapMemProcPtr mapMem; UnmapMemProcPtr unmapMem; - ProtectMemProcPtr protectMem; SetWCProcPtr setWC; UndoWCProcPtr undoWC; Bool linearSupported; diff --git a/xorg-server/hw/xfree86/os-support/xf86_OSlib.h b/xorg-server/hw/xfree86/os-support/xf86_OSlib.h index eb0a338c9..9120bd7dc 100644 --- a/xorg-server/hw/xfree86/os-support/xf86_OSlib.h +++ b/xorg-server/hw/xfree86/os-support/xf86_OSlib.h @@ -364,8 +364,4 @@ struct pcvtid { #define XF86_OS_PRIVS #include "xf86_OSproc.h" -#ifndef NO_COMPILER_H -#include "compiler.h" -#endif - #endif /* _XF86_OSLIB_H */ diff --git a/xorg-server/hw/xfree86/ramdac/xf86RamDacCmap.c b/xorg-server/hw/xfree86/ramdac/xf86RamDacCmap.c index fa7a86663..2a0f75569 100644 --- a/xorg-server/hw/xfree86/ramdac/xf86RamDacCmap.c +++ b/xorg-server/hw/xfree86/ramdac/xf86RamDacCmap.c @@ -35,7 +35,6 @@ #include "micmap.h" #include "xf86.h" -#include "compiler.h" #include "colormapst.h" #include "xf86RamDacPriv.h" diff --git a/xorg-server/hw/xfree86/vgahw/Makefile.am b/xorg-server/hw/xfree86/vgahw/Makefile.am index 4b718b489..b8196a695 100644 --- a/xorg-server/hw/xfree86/vgahw/Makefile.am +++ b/xorg-server/hw/xfree86/vgahw/Makefile.am @@ -6,5 +6,3 @@ AM_CPPFLAGS = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) sdk_HEADERS = vgaHW.h - -EXTRA_DIST = vgaCmap.c diff --git a/xorg-server/hw/xfree86/vgahw/vgaCmap.c b/xorg-server/hw/xfree86/vgahw/vgaCmap.c deleted file mode 100644 index 6e028a7f5..000000000 --- a/xorg-server/hw/xfree86/vgahw/vgaCmap.c +++ /dev/null @@ -1,276 +0,0 @@ -/* - * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Thomas Roell not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Thomas Roell makes no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - * - */ - -#ifdef HAVE_XORG_CONFIG_H -#include <xorg-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "windowstr.h" -#include "compiler.h" -#include "mipointer.h" -#include "micmap.h" - -#include "xf86.h" -#include "vgaHW.h" - -#include <X11/extensions/xf86dgaproto.h> -#include "dgaproc.h" - -#define NOMAPYET (ColormapPtr) 0 - -int -vgaListInstalledColormaps(pScreen, pmaps) -ScreenPtr pScreen; -Colormap *pmaps; -{ - /* By the time we are processing requests, we can guarantee that there - * is always a colormap installed */ - - *pmaps = GetInstalledmiColormap(pScreen)->mid; - return 1; -} - -int -vgaGetInstalledColormaps(pScreen, pmaps) -ScreenPtr pScreen; -ColormapPtr *pmaps; -{ - /* By the time we are processing requests, we can guarantee that there - * is always a colormap installed */ - - *pmaps = GetInstalledmiColormap(pScreen); - return 1; -} - -int -vgaCheckColorMap(ColormapPtr pmap) -{ - return (pmap != GetInstalledmiColormap(pmap->pScreen)); -} - -void -vgaStoreColors(pmap, ndef, pdefs) -ColormapPtr pmap; -int ndef; -xColorItem *pdefs; -{ - int i; - unsigned char *cmap, *tmp = NULL; - xColorItem directDefs[256]; - Bool new_overscan = FALSE; - Bool writeColormap; - int scrnIndex = pmap->pScreen->myNum; - ScrnInfoPtr scrninfp = xf86ScreenToScrn(pmap->pScreen); - vgaHWPtr hwp = VGAHWPTR(scrninfp); - - unsigned char overscan = hwp->ModeReg.Attribute[OVERSCAN]; - unsigned char tmp_overscan = 0; - - if (vgaCheckColorMap(pmap)) - return; - - if ((pmap->pVisual->class | DynamicClass) == DirectColor) { - ndef = miExpandDirectColors(pmap, ndef, pdefs, directDefs); - pdefs = directDefs; - } - - writeColormap = scrninfp->vtSema; - if (DGAScreenAvailable(pmap->pScreen)) { - writeColormap = writeColormap || - (DGAGetDirectMode(scrnIndex) && - !(DGAGetFlags(scrnIndex) & XF86DGADirectColormap)) || - (DGAGetFlags(scrnIndex) & XF86DGAHasColormap); - } - - if (writeColormap) - hwp->enablePalette(hwp); - - for (i = 0; i < ndef; i++) { - if (pdefs[i].pixel == overscan) { - new_overscan = TRUE; - } - cmap = &(hwp->ModeReg.DAC[pdefs[i].pixel * 3]); - if (scrninfp->rgbBits == 8) { - cmap[0] = pdefs[i].red >> 8; - cmap[1] = pdefs[i].green >> 8; - cmap[2] = pdefs[i].blue >> 8; - } - else { - cmap[0] = pdefs[i].red >> 10; - cmap[1] = pdefs[i].green >> 10; - cmap[2] = pdefs[i].blue >> 10; - } -#if 0 - if (clgd6225Lcd) { - /* The LCD doesn't like white */ - if (cmap[0] == 63) - cmap[0] = 62; - if (cmap[1] == 63) - cmap[1] = 62; - if (cmap[2] == 63) - cmap[2] = 62; - } -#endif - - if (writeColormap) { - if (hwp->ShowOverscan && i == 255) - continue; - hwp->writeDacWriteAddr(hwp, pdefs[i].pixel); - DACDelay(hwp); - hwp->writeDacData(hwp, cmap[0]); - DACDelay(hwp); - hwp->writeDacData(hwp, cmap[1]); - DACDelay(hwp); - hwp->writeDacData(hwp, cmap[2]); - DACDelay(hwp); - } - } - if (new_overscan && !hwp->ShowOverscan) { - new_overscan = FALSE; - for (i = 0; i < ndef; i++) { - if (pdefs[i].pixel == overscan) { - if ((pdefs[i].red != 0) || - (pdefs[i].green != 0) || (pdefs[i].blue != 0)) { - new_overscan = TRUE; - tmp_overscan = overscan; - tmp = &(hwp->ModeReg.DAC[pdefs[i].pixel * 3]); - } - break; - } - } - if (new_overscan) { - /* - * Find a black pixel, or the nearest match. - */ - for (i = 255; i >= 0; i--) { - cmap = &(hwp->ModeReg.DAC[i * 3]); - if ((cmap[0] == 0) && (cmap[1] == 0) && (cmap[2] == 0)) { - overscan = i; - break; - } - else { - if ((cmap[0] < tmp[0]) && - (cmap[1] < tmp[1]) && (cmap[2] < tmp[2])) { - tmp = cmap; - tmp_overscan = i; - } - } - } - if (i < 0) { - overscan = tmp_overscan; - } - hwp->ModeReg.Attribute[OVERSCAN] = overscan; - if (writeColormap) { - hwp->writeAttr(hwp, OVERSCAN, overscan); - } - } - } - - if (writeColormap) - hwp->disablePalette(hwp); -} - -void -vgaInstallColormap(pmap) -ColormapPtr pmap; -{ - ColormapPtr oldmap = GetInstalledmiColormap(pmap->pScreen); - int entries; - Pixel *ppix; - xrgb *prgb; - xColorItem *defs; - int i; - - if (pmap == oldmap) - return; - - if ((pmap->pVisual->class | DynamicClass) == DirectColor) - entries = (pmap->pVisual->redMask | - pmap->pVisual->greenMask | pmap->pVisual->blueMask) + 1; - else - entries = pmap->pVisual->ColormapEntries; - - ppix = (Pixel *) malloc(entries * sizeof(Pixel)); - prgb = (xrgb *) malloc(entries * sizeof(xrgb)); - defs = (xColorItem *) malloc(entries * sizeof(xColorItem)); - - if (oldmap != NOMAPYET) - WalkTree(pmap->pScreen, TellLostMap, &oldmap->mid); - - SetInstalledmiColormap(pmap->pScreen, pmap); - - for (i = 0; i < entries; i++) - ppix[i] = i; - - QueryColors(pmap, entries, ppix, prgb, serverClient); - - for (i = 0; i < entries; i++) { /* convert xrgbs to xColorItems */ - defs[i].pixel = ppix[i]; - defs[i].red = prgb[i].red; - defs[i].green = prgb[i].green; - defs[i].blue = prgb[i].blue; - defs[i].flags = DoRed | DoGreen | DoBlue; - } - pmap->pScreen->StoreColors(pmap, entries, defs); - - WalkTree(pmap->pScreen, TellGainedMap, &pmap->mid); - - free(ppix); - free(prgb); - free(defs); -} - -void -vgaUninstallColormap(pmap) -ColormapPtr pmap; -{ - - ColormapPtr defColormap; - - if (pmap != GetInstalledmiColormap(pmap->pScreen)) - return; - - dixLookupResourceByType((void **) &defColormap, - pmap->pScreen->defColormap, RT_COLORMAP, - serverClient, DixInstallAccess); - - if (defColormap == GetInstalledmiColormap(pmap->pScreen)) - return; - - (*pmap->pScreen->InstallColormap) (defColormap); -} - -void -vgaHandleColormaps(ScreenPtr pScreen, ScrnInfoPtr scrnp) -{ - if (scrnp->bitsPerPixel > 1) { - if (scrnp->bitsPerPixel <= 8) { /* For 8bpp SVGA and VGA16 */ - pScreen->InstallColormap = vgaInstallColormap; - pScreen->UninstallColormap = vgaUninstallColormap; - pScreen->ListInstalledColormaps = vgaListInstalledColormaps; - pScreen->StoreColors = vgaStoreColors; - } - } -} |