Merge branch 'master' into my-XACE-SELINUX
This commit is contained in:
commit
04632835b7
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* (C) Copyright IBM Corporation 2006, 2007
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sub license,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice (including the next
|
||||||
|
* paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
* Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDERS, THE AUTHORS, AND/OR THEIR SUPPLIERS BE LIABLE FOR
|
||||||
|
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||||
|
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file glxbyteorder.h
|
||||||
|
* Platform glue for handling byte-ordering issues in GLX protocol.
|
||||||
|
*
|
||||||
|
* \author Ian Romanick <idr@us.ibm.com>
|
||||||
|
*/
|
||||||
|
#if !defined(__GLXBYTEORDER_H__)
|
||||||
|
#define __GLXBYTEORDER_H__
|
||||||
|
|
||||||
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
|
#include <dix-config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_BYTESWAP_H
|
||||||
|
#include <byteswap.h>
|
||||||
|
#elif defined(USE_SYS_ENDIAN_H)
|
||||||
|
#include <sys/endian.h>
|
||||||
|
#else
|
||||||
|
#define bswap_16(value) \
|
||||||
|
((((value) & 0xff) << 8) | ((value) >> 8))
|
||||||
|
|
||||||
|
#define bswap_32(value) \
|
||||||
|
(((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \
|
||||||
|
(uint32_t)bswap_16((uint16_t)((value) >> 16)))
|
||||||
|
|
||||||
|
#define bswap_64(value) \
|
||||||
|
(((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \
|
||||||
|
<< 32) | \
|
||||||
|
(uint64_t)bswap_32((uint32_t)((value) >> 32)))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !defined(__GLXBYTEORDER_H__) */
|
|
@ -864,6 +864,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
int api_ver = COPY_SUB_BUFFER_INTERNAL_VERSION;
|
int api_ver = COPY_SUB_BUFFER_INTERNAL_VERSION;
|
||||||
drm_magic_t magic;
|
drm_magic_t magic;
|
||||||
drmVersionPtr version;
|
drmVersionPtr version;
|
||||||
|
int newlyopened;
|
||||||
char *driverName;
|
char *driverName;
|
||||||
drm_handle_t hFB;
|
drm_handle_t hFB;
|
||||||
int junk;
|
int junk;
|
||||||
|
@ -914,10 +915,10 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = drmOpen(NULL, BusID);
|
fd = drmOpenOnce(NULL, BusID, &newlyopened);
|
||||||
|
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
LogMessage(X_ERROR, "AIGLX error: drmOpen failed (%s)\n",
|
LogMessage(X_ERROR, "AIGLX error: drmOpenOnce failed (%s)\n",
|
||||||
strerror(-fd));
|
strerror(-fd));
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
}
|
}
|
||||||
|
@ -940,7 +941,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
drm_version.patch = -1;
|
drm_version.patch = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!DRIAuthConnection(pScreen, magic)) {
|
if (newlyopened && !DRIAuthConnection(pScreen, magic)) {
|
||||||
LogMessage(X_ERROR, "AIGLX error: DRIAuthConnection failed\n");
|
LogMessage(X_ERROR, "AIGLX error: DRIAuthConnection failed\n");
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
}
|
}
|
||||||
|
@ -1082,7 +1083,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
xfree(dev_priv);
|
xfree(dev_priv);
|
||||||
|
|
||||||
if (fd >= 0)
|
if (fd >= 0)
|
||||||
drmClose(fd);
|
drmCloseOnce(fd);
|
||||||
|
|
||||||
DRICloseConnection(pScreen);
|
DRICloseConnection(pScreen);
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "indirect_size_get.h"
|
#include "indirect_size_get.h"
|
||||||
#include "indirect_dispatch.h"
|
#include "indirect_dispatch.h"
|
||||||
#include "glxserver.h"
|
#include "glxserver.h"
|
||||||
|
#include "glxbyteorder.h"
|
||||||
#include "indirect_util.h"
|
#include "indirect_util.h"
|
||||||
#include "singlesize.h"
|
#include "singlesize.h"
|
||||||
#include "glapitable.h"
|
#include "glapitable.h"
|
||||||
|
|
|
@ -28,24 +28,12 @@
|
||||||
#include <X11/Xmd.h>
|
#include <X11/Xmd.h>
|
||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
#include <GL/glxproto.h>
|
#include <GL/glxproto.h>
|
||||||
#if defined(__linux__) || defined (__GLIBC__) || defined(__GNU__)
|
|
||||||
#include <byteswap.h>
|
|
||||||
#elif defined(__OpenBSD__)
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#define bswap_16 __swap16
|
|
||||||
#define bswap_32 __swap32
|
|
||||||
#define bswap_64 __swap64
|
|
||||||
#else
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#define bswap_16 bswap16
|
|
||||||
#define bswap_32 bswap32
|
|
||||||
#define bswap_64 bswap64
|
|
||||||
#endif
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include "indirect_size.h"
|
#include "indirect_size.h"
|
||||||
#include "indirect_size_get.h"
|
#include "indirect_size_get.h"
|
||||||
#include "indirect_dispatch.h"
|
#include "indirect_dispatch.h"
|
||||||
#include "glxserver.h"
|
#include "glxserver.h"
|
||||||
|
#include "glxbyteorder.h"
|
||||||
#include "indirect_util.h"
|
#include "indirect_util.h"
|
||||||
#include "singlesize.h"
|
#include "singlesize.h"
|
||||||
#include "glapitable.h"
|
#include "glapitable.h"
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "glxserver.h"
|
#include "glxserver.h"
|
||||||
|
#include "glxbyteorder.h"
|
||||||
#include "glxext.h"
|
#include "glxext.h"
|
||||||
#include "singlesize.h"
|
#include "singlesize.h"
|
||||||
#include "unpack.h"
|
#include "unpack.h"
|
||||||
|
@ -46,20 +47,6 @@
|
||||||
#include "dispatch.h"
|
#include "dispatch.h"
|
||||||
#include "glapioffsets.h"
|
#include "glapioffsets.h"
|
||||||
|
|
||||||
#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
|
|
||||||
#include <byteswap.h>
|
|
||||||
#elif defined(__OpenBSD__)
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#define bswap_16 __swap16
|
|
||||||
#define bswap_32 __swap32
|
|
||||||
#define bswap_64 __swap64
|
|
||||||
#else
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#define bswap_16 bswap16
|
|
||||||
#define bswap_32 bswap32
|
|
||||||
#define bswap_64 bswap64
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte *pc,
|
static int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte *pc,
|
||||||
unsigned get_programiv_offset, unsigned get_program_string_offset,
|
unsigned get_programiv_offset, unsigned get_program_string_offset,
|
||||||
Bool do_swap);
|
Bool do_swap);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -83,14 +83,15 @@ extern PURE HIDDEN int __glXConvolutionParameterivReqSize(const GLbyte *pc, Bool
|
||||||
extern PURE HIDDEN int __glXSeparableFilter2DReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXSeparableFilter2DReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXTexImage3DReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXTexImage3DReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXTexSubImage3DReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXTexSubImage3DReqSize(const GLbyte *pc, Bool swap);
|
||||||
|
extern PURE HIDDEN int __glXCompressedTexImage1DARBReqSize(const GLbyte *pc, Bool swap);
|
||||||
|
extern PURE HIDDEN int __glXCompressedTexImage2DARBReqSize(const GLbyte *pc, Bool swap);
|
||||||
|
extern PURE HIDDEN int __glXCompressedTexImage3DARBReqSize(const GLbyte *pc, Bool swap);
|
||||||
|
extern PURE HIDDEN int __glXCompressedTexSubImage1DARBReqSize(const GLbyte *pc, Bool swap);
|
||||||
|
extern PURE HIDDEN int __glXCompressedTexSubImage2DARBReqSize(const GLbyte *pc, Bool swap);
|
||||||
|
extern PURE HIDDEN int __glXCompressedTexSubImage3DARBReqSize(const GLbyte *pc, Bool swap);
|
||||||
|
extern PURE HIDDEN int __glXProgramStringARBReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXDrawBuffersARBReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXDrawBuffersARBReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXPointParameterfvEXTReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXPointParameterfvEXTReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXCompressedTexImage3DARBReqSize(const GLbyte *pc, Bool swap);
|
|
||||||
extern PURE HIDDEN int __glXCompressedTexImage2DARBReqSize(const GLbyte *pc, Bool swap);
|
|
||||||
extern PURE HIDDEN int __glXCompressedTexImage1DARBReqSize(const GLbyte *pc, Bool swap);
|
|
||||||
extern PURE HIDDEN int __glXCompressedTexSubImage3DARBReqSize(const GLbyte *pc, Bool swap);
|
|
||||||
extern PURE HIDDEN int __glXCompressedTexSubImage2DARBReqSize(const GLbyte *pc, Bool swap);
|
|
||||||
extern PURE HIDDEN int __glXCompressedTexSubImage1DARBReqSize(const GLbyte *pc, Bool swap);
|
|
||||||
extern PURE HIDDEN int __glXLoadProgramNVReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXLoadProgramNVReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXProgramParameters4dvNVReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXProgramParameters4dvNVReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXProgramParameters4fvNVReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXProgramParameters4fvNVReqSize(const GLbyte *pc, Bool swap);
|
||||||
|
@ -109,11 +110,10 @@ extern PURE HIDDEN int __glXVertexAttribs4fvNVReqSize(const GLbyte *pc, Bool swa
|
||||||
extern PURE HIDDEN int __glXVertexAttribs4svNVReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXVertexAttribs4svNVReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXVertexAttribs4ubvNVReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXVertexAttribs4ubvNVReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXPointParameterivNVReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXPointParameterivNVReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXProgramStringARBReqSize(const GLbyte *pc, Bool swap);
|
|
||||||
extern PURE HIDDEN int __glXProgramNamedParameter4fvNVReqSize(const GLbyte *pc, Bool swap);
|
|
||||||
extern PURE HIDDEN int __glXProgramNamedParameter4dvNVReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXProgramNamedParameter4dvNVReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXDeleteRenderbuffersEXTReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXProgramNamedParameter4fvNVReqSize(const GLbyte *pc, Bool swap);
|
||||||
extern PURE HIDDEN int __glXDeleteFramebuffersEXTReqSize(const GLbyte *pc, Bool swap);
|
extern PURE HIDDEN int __glXDeleteFramebuffersEXTReqSize(const GLbyte *pc, Bool swap);
|
||||||
|
extern PURE HIDDEN int __glXDeleteRenderbuffersEXTReqSize(const GLbyte *pc, Bool swap);
|
||||||
|
|
||||||
# undef HIDDEN
|
# undef HIDDEN
|
||||||
# undef PURE
|
# undef PURE
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "glxserver.h"
|
#include "glxserver.h"
|
||||||
|
#include "glxbyteorder.h"
|
||||||
#include "glxext.h"
|
#include "glxext.h"
|
||||||
#include "singlesize.h"
|
#include "singlesize.h"
|
||||||
#include "unpack.h"
|
#include "unpack.h"
|
||||||
|
@ -39,20 +40,6 @@
|
||||||
#include "glthread.h"
|
#include "glthread.h"
|
||||||
#include "dispatch.h"
|
#include "dispatch.h"
|
||||||
|
|
||||||
#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
|
|
||||||
#include <byteswap.h>
|
|
||||||
#elif defined(__OpenBSD__)
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#define bswap_16 __swap16
|
|
||||||
#define bswap_32 __swap32
|
|
||||||
#define bswap_64 __swap64
|
|
||||||
#else
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#define bswap_16 bswap16
|
|
||||||
#define bswap_32 bswap32
|
|
||||||
#define bswap_64 bswap64
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte *pc)
|
int __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte *pc)
|
||||||
{
|
{
|
||||||
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
|
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
|
||||||
|
|
|
@ -23,29 +23,21 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
|
#include <dix-config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <X11/Xmd.h>
|
#include <X11/Xmd.h>
|
||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
#include <GL/glxproto.h>
|
#include <GL/glxproto.h>
|
||||||
#if defined(__linux__) || defined (__GLIBC__) || defined(__GNU__)
|
|
||||||
#include <byteswap.h>
|
|
||||||
#elif defined(__OpenBSD__)
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#define bswap_16 __swap16
|
|
||||||
#define bswap_32 __swap32
|
|
||||||
#define bswap_64 __swap64
|
|
||||||
#else
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#define bswap_16 bswap16
|
|
||||||
#define bswap_32 bswap32
|
|
||||||
#define bswap_64 bswap64
|
|
||||||
#endif
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include "indirect_size.h"
|
#include "indirect_size.h"
|
||||||
#include "indirect_size_get.h"
|
#include "indirect_size_get.h"
|
||||||
#include "indirect_dispatch.h"
|
#include "indirect_dispatch.h"
|
||||||
#include "glxserver.h"
|
#include "glxserver.h"
|
||||||
|
#include "glxbyteorder.h"
|
||||||
#include "singlesize.h"
|
#include "singlesize.h"
|
||||||
#include "glapitable.h"
|
#include "glapitable.h"
|
||||||
#include "glapi.h"
|
#include "glapi.h"
|
||||||
|
|
|
@ -39,20 +39,7 @@
|
||||||
#include "glthread.h"
|
#include "glthread.h"
|
||||||
#include "dispatch.h"
|
#include "dispatch.h"
|
||||||
#include "glapioffsets.h"
|
#include "glapioffsets.h"
|
||||||
|
#include "glxbyteorder.h"
|
||||||
#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
|
|
||||||
#include <byteswap.h>
|
|
||||||
#elif defined(__OpenBSD__)
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#define bswap_16 __swap16
|
|
||||||
#define bswap_32 __swap32
|
|
||||||
#define bswap_64 __swap64
|
|
||||||
#else
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#define bswap_16 bswap16
|
|
||||||
#define bswap_32 bswap32
|
|
||||||
#define bswap_64 bswap64
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int DoSwapInterval(__GLXclientState *cl, GLbyte *pc, int do_swap);
|
static int DoSwapInterval(__GLXclientState *cl, GLbyte *pc, int do_swap);
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,6 @@ X/drivers
|
||||||
X/glxheader.h
|
X/glxheader.h
|
||||||
X/xmesaP.h
|
X/xmesaP.h
|
||||||
X/xm*.c
|
X/xm*.c
|
||||||
array_cache/*.c
|
|
||||||
array_cache/*.h
|
|
||||||
mesa/drivers
|
mesa/drivers
|
||||||
mesa/glxheader.h
|
mesa/glxheader.h
|
||||||
mesa/xm*.c
|
mesa/xm*.c
|
||||||
|
@ -30,3 +28,5 @@ tnl/*.c
|
||||||
tnl/*.h
|
tnl/*.h
|
||||||
x86
|
x86
|
||||||
x86-64
|
x86-64
|
||||||
|
vbo/*.c
|
||||||
|
vbo/*.h
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
SUBDIRS = main math array_cache swrast swrast_setup tnl shader X glapi
|
SUBDIRS = main math swrast swrast_setup tnl shader X glapi vbo
|
||||||
|
|
||||||
noinst_LTLIBRARIES = libGLcore.la
|
noinst_LTLIBRARIES = libGLcore.la
|
||||||
|
|
||||||
libGLcore_la_SOURCES = dummy.c
|
libGLcore_la_SOURCES = dummy.c
|
||||||
libGLcore_la_LIBADD = main/libmain.la \
|
libGLcore_la_LIBADD = main/libmain.la \
|
||||||
math/libmath.la \
|
math/libmath.la \
|
||||||
array_cache/libac.la \
|
|
||||||
swrast/libswrast.la \
|
swrast/libswrast.la \
|
||||||
swrast_setup/libss.la \
|
swrast_setup/libss.la \
|
||||||
tnl/libtnl.la \
|
tnl/libtnl.la \
|
||||||
shader/libshader.la \
|
shader/libshader.la \
|
||||||
shader/grammar/libgrammar.la \
|
shader/grammar/libgrammar.la \
|
||||||
shader/slang/libslang.la \
|
shader/slang/libslang.la \
|
||||||
|
vbo/libvbo.la \
|
||||||
X/libX.la
|
X/libX.la
|
||||||
|
|
|
@ -2,7 +2,6 @@ noinst_LTLIBRARIES = libX.la
|
||||||
|
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I../X \
|
-I../X \
|
||||||
-I../array_cache \
|
|
||||||
-I../glapi \
|
-I../glapi \
|
||||||
-I../main \
|
-I../main \
|
||||||
-I../math \
|
-I../math \
|
||||||
|
|
|
@ -78,6 +78,7 @@ typedef struct __GLXMESAdrawable __GLXMESAdrawable;
|
||||||
struct __GLXMESAscreen {
|
struct __GLXMESAscreen {
|
||||||
__GLXscreen base;
|
__GLXscreen base;
|
||||||
int index;
|
int index;
|
||||||
|
int num_vis;
|
||||||
XMesaVisual *xm_vis;
|
XMesaVisual *xm_vis;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -280,7 +281,7 @@ __glXMesaScreenDestroy(__GLXscreen *screen)
|
||||||
__GLXMESAscreen *mesaScreen = (__GLXMESAscreen *) screen;
|
__GLXMESAscreen *mesaScreen = (__GLXMESAscreen *) screen;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < screen->numVisuals; i++) {
|
for (i = 0; i < mesaScreen->num_vis; i++) {
|
||||||
if (mesaScreen->xm_vis[i])
|
if (mesaScreen->xm_vis[i])
|
||||||
XMesaDestroyVisual(mesaScreen->xm_vis[i]);
|
XMesaDestroyVisual(mesaScreen->xm_vis[i]);
|
||||||
}
|
}
|
||||||
|
@ -389,6 +390,7 @@ static void init_screen_visuals(__GLXMESAscreen *screen)
|
||||||
|
|
||||||
xfree(used);
|
xfree(used);
|
||||||
|
|
||||||
|
screen->num_vis = pScreen->numVisuals;
|
||||||
screen->xm_vis = pXMesaVisual;
|
screen->xm_vis = pXMesaVisual;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
noinst_LTLIBRARIES = libac.la
|
|
||||||
|
|
||||||
AM_CFLAGS = \
|
|
||||||
$(DIX_CFLAGS) \
|
|
||||||
-DXFree86Server \
|
|
||||||
@GLX_DEFINES@
|
|
||||||
|
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
|
||||||
-I../X \
|
|
||||||
-I../array_cache \
|
|
||||||
-I../glapi \
|
|
||||||
-I../main \
|
|
||||||
-I../math \
|
|
||||||
-I../shader \
|
|
||||||
-I../swrast \
|
|
||||||
-I../swrast_setup \
|
|
||||||
-I../tnl \
|
|
||||||
-I.. \
|
|
||||||
-I$(top_srcdir)/hw/xfree86/os-support
|
|
||||||
|
|
||||||
nodist_libac_la_SOURCES = ac_context.c ac_import.c
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
||||||
|
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I../X \
|
-I../X \
|
||||||
-I../array_cache \
|
|
||||||
-I../glapi \
|
-I../glapi \
|
||||||
-I../main \
|
-I../main \
|
||||||
-I../math \
|
-I../math \
|
||||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
||||||
|
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I../X \
|
-I../X \
|
||||||
-I../array_cache \
|
|
||||||
-I../glapi \
|
-I../glapi \
|
||||||
-I../main \
|
-I../main \
|
||||||
-I../math \
|
-I../math \
|
||||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
||||||
|
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I../X \
|
-I../X \
|
||||||
-I../array_cache \
|
|
||||||
-I../glapi \
|
-I../glapi \
|
||||||
-I../main \
|
-I../main \
|
||||||
-I../math \
|
-I../math \
|
||||||
|
|
|
@ -9,7 +9,6 @@ AM_CFLAGS = \
|
||||||
|
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I../X \
|
-I../X \
|
||||||
-I../array_cache \
|
|
||||||
-I../glapi \
|
-I../glapi \
|
||||||
-I../main \
|
-I../main \
|
||||||
-I../math \
|
-I../math \
|
||||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
||||||
|
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I../../X \
|
-I../../X \
|
||||||
-I../../array_cache \
|
|
||||||
-I../../glapi \
|
-I../../glapi \
|
||||||
-I../../main \
|
-I../../main \
|
||||||
-I../../math \
|
-I../../math \
|
||||||
|
|
|
@ -8,7 +8,6 @@ AM_CFLAGS = \
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I../grammar \
|
-I../grammar \
|
||||||
-I../../X \
|
-I../../X \
|
||||||
-I../../array_cache \
|
|
||||||
-I../../glapi \
|
-I../../glapi \
|
||||||
-I../../main \
|
-I../../main \
|
||||||
-I../../math \
|
-I../../math \
|
||||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
||||||
|
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I../X \
|
-I../X \
|
||||||
-I../array_cache \
|
|
||||||
-I../glapi \
|
-I../glapi \
|
||||||
-I../main \
|
-I../main \
|
||||||
-I../math \
|
-I../math \
|
||||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
||||||
|
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I../X \
|
-I../X \
|
||||||
-I../array_cache \
|
|
||||||
-I../glapi \
|
-I../glapi \
|
||||||
-I../main \
|
-I../main \
|
||||||
-I../math \
|
-I../math \
|
||||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
||||||
|
|
||||||
INCLUDES = -I@MESA_SOURCE@/include \
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I../X \
|
-I../X \
|
||||||
-I../array_cache \
|
|
||||||
-I../glapi \
|
-I../glapi \
|
||||||
-I../main \
|
-I../main \
|
||||||
-I../math \
|
-I../math \
|
||||||
|
@ -19,13 +18,9 @@ INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
-I.. \
|
-I.. \
|
||||||
-I$(top_srcdir)/hw/xfree86/os-support
|
-I$(top_srcdir)/hw/xfree86/os-support
|
||||||
|
|
||||||
nodist_libtnl_la_SOURCES = t_array_api.c \
|
nodist_libtnl_la_SOURCES = t_context.c \
|
||||||
t_array_import.c \
|
t_draw.c \
|
||||||
t_context.c \
|
|
||||||
t_pipeline.c \
|
t_pipeline.c \
|
||||||
t_save_api.c \
|
|
||||||
t_save_loopback.c \
|
|
||||||
t_save_playback.c \
|
|
||||||
t_vb_arbprogram.c \
|
t_vb_arbprogram.c \
|
||||||
t_vb_arbprogram_sse.c \
|
t_vb_arbprogram_sse.c \
|
||||||
t_vb_arbshader.c \
|
t_vb_arbshader.c \
|
||||||
|
@ -42,9 +37,4 @@ nodist_libtnl_la_SOURCES = t_array_api.c \
|
||||||
t_vertex.c \
|
t_vertex.c \
|
||||||
t_vertex_generic.c \
|
t_vertex_generic.c \
|
||||||
t_vertex_sse.c \
|
t_vertex_sse.c \
|
||||||
t_vp_build.c \
|
t_vp_build.c
|
||||||
t_vtx_api.c \
|
|
||||||
t_vtx_eval.c \
|
|
||||||
t_vtx_exec.c \
|
|
||||||
t_vtx_generic.c \
|
|
||||||
t_vtx_x86.c
|
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
noinst_LTLIBRARIES = libvbo.la
|
||||||
|
|
||||||
|
AM_CFLAGS = \
|
||||||
|
$(DIX_CFLAGS) \
|
||||||
|
-DXFree86Server \
|
||||||
|
@GLX_DEFINES@
|
||||||
|
|
||||||
|
INCLUDES = -I@MESA_SOURCE@/include \
|
||||||
|
-I../X \
|
||||||
|
-I../glapi \
|
||||||
|
-I../main \
|
||||||
|
-I../math \
|
||||||
|
-I../shader \
|
||||||
|
-I../shader/slang \
|
||||||
|
-I../shader/slang \
|
||||||
|
-I../swrast \
|
||||||
|
-I../swrast_setup \
|
||||||
|
-I../tnl \
|
||||||
|
-I.. \
|
||||||
|
-I$(top_srcdir)/hw/xfree86/os-support
|
||||||
|
|
||||||
|
nodist_libvbo_la_SOURCES = vbo_context.c \
|
||||||
|
vbo_exec_api.c \
|
||||||
|
vbo_exec_array.c \
|
||||||
|
vbo_exec.c \
|
||||||
|
vbo_exec_draw.c \
|
||||||
|
vbo_exec_eval.c \
|
||||||
|
vbo_rebase.c \
|
||||||
|
vbo_save_api.c \
|
||||||
|
vbo_save.c \
|
||||||
|
vbo_save_draw.c \
|
||||||
|
vbo_save_loopback.c \
|
||||||
|
vbo_split.c \
|
||||||
|
vbo_split_copy.c \
|
||||||
|
vbo_split_inplace.c
|
|
@ -85,15 +85,6 @@ symlink_mesa_math() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_mesa_ac() {
|
|
||||||
src_dir src/mesa/array_cache
|
|
||||||
dst_dir mesa/array_cache
|
|
||||||
|
|
||||||
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
||||||
action `basename $src`
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
symlink_mesa_swrast() {
|
symlink_mesa_swrast() {
|
||||||
src_dir src/mesa/swrast
|
src_dir src/mesa/swrast
|
||||||
dst_dir mesa/swrast
|
dst_dir mesa/swrast
|
||||||
|
@ -157,6 +148,15 @@ symlink_mesa_shader_slang_library() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
symlink_mesa_vbo() {
|
||||||
|
src_dir src/mesa/vbo
|
||||||
|
dst_dir mesa/vbo
|
||||||
|
|
||||||
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
||||||
|
action `basename $src`
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
symlink_mesa_x() {
|
symlink_mesa_x() {
|
||||||
src_dir src/mesa/drivers/x11
|
src_dir src/mesa/drivers/x11
|
||||||
dst_dir mesa/X
|
dst_dir mesa/X
|
||||||
|
@ -203,7 +203,6 @@ symlink_mesa_x8664() {
|
||||||
symlink_mesa() {
|
symlink_mesa() {
|
||||||
symlink_mesa_main
|
symlink_mesa_main
|
||||||
symlink_mesa_math
|
symlink_mesa_math
|
||||||
symlink_mesa_ac
|
|
||||||
symlink_mesa_swrast
|
symlink_mesa_swrast
|
||||||
symlink_mesa_ss
|
symlink_mesa_ss
|
||||||
symlink_mesa_tnl
|
symlink_mesa_tnl
|
||||||
|
@ -215,6 +214,7 @@ symlink_mesa() {
|
||||||
symlink_mesa_glapi
|
symlink_mesa_glapi
|
||||||
symlink_mesa_ppc
|
symlink_mesa_ppc
|
||||||
symlink_mesa_sparc
|
symlink_mesa_sparc
|
||||||
|
symlink_mesa_vbo
|
||||||
symlink_mesa_x86
|
symlink_mesa_x86
|
||||||
symlink_mesa_x8664
|
symlink_mesa_x8664
|
||||||
}
|
}
|
||||||
|
|
|
@ -946,10 +946,10 @@ SecurityAuditResourceIDAccess(
|
||||||
* rtype is its type or class.
|
* rtype is its type or class.
|
||||||
* access_mode represents the intended use of the resource; see
|
* access_mode represents the intended use of the resource; see
|
||||||
* resource.h.
|
* resource.h.
|
||||||
* rval is a pointer to the resource structure for this resource.
|
* res is a pointer to the resource structure for this resource.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Returns:
|
||||||
* If access is granted, the value of rval that was passed in, else NULL.
|
* If access is granted, the value of rval that was passed in, else FALSE.
|
||||||
*
|
*
|
||||||
* Side Effects:
|
* Side Effects:
|
||||||
* Disallowed resource accesses are audited.
|
* Disallowed resource accesses are audited.
|
||||||
|
|
|
@ -32,10 +32,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#include <X11/Xmd.h>
|
#include <X11/Xmd.h>
|
||||||
#include "servermd.h"
|
#include "servermd.h"
|
||||||
#if defined(XFREE86) || ( defined(__OpenBSD__) && defined(__alpha__) ) \
|
|
||||||
|| (defined(__bsdi__))
|
|
||||||
#include "compiler.h"
|
#include "compiler.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ==========================================================================
|
* ==========================================================================
|
||||||
|
|
99
configure.ac
99
configure.ac
|
@ -99,6 +99,64 @@ fi
|
||||||
|
|
||||||
AC_TYPE_PID_T
|
AC_TYPE_PID_T
|
||||||
|
|
||||||
|
# Checks for headers/macros for byte swapping
|
||||||
|
# Known variants:
|
||||||
|
# <byteswap.h> bswap_16, bswap_32, bswap_64 (glibc)
|
||||||
|
# <sys/endian.h> __swap16, __swap32, __swap64 (OpenBSD)
|
||||||
|
# <sys/endian.h> bswap16, bswap32, bswap64 (other BSD's)
|
||||||
|
# and a fallback to local macros if none of the above are found
|
||||||
|
|
||||||
|
# if <byteswap.h> is found, assume it's the correct version
|
||||||
|
AC_CHECK_HEADERS([byteswap.h])
|
||||||
|
|
||||||
|
# if <sys/endian.h> is found, have to check which version
|
||||||
|
AC_CHECK_HEADER([sys/endian.h], [HAVE_SYS_ENDIAN_H="yes"], [HAVE_SYS_ENDIAN_H="no"])
|
||||||
|
|
||||||
|
if test "x$HAVE_SYS_ENDIAN_H" = "xyes" ; then
|
||||||
|
AC_MSG_CHECKING([for __swap16 variant of <sys/endian.h> byteswapping macros])
|
||||||
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([
|
||||||
|
#include <sys/endian.h>
|
||||||
|
], [
|
||||||
|
int a = 1, b;
|
||||||
|
b = __swap16(a);
|
||||||
|
])
|
||||||
|
], [SYS_ENDIAN__SWAP='yes'], [SYS_ENDIAN__SWAP='no'])
|
||||||
|
AC_MSG_RESULT([$SYS_ENDIAN__SWAP])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for bswap_16 variant of <sys/endian.h> byteswapping macros])
|
||||||
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([
|
||||||
|
#include <sys/endian.h>
|
||||||
|
], [
|
||||||
|
int a = 1, b;
|
||||||
|
b = bswap_16(a);
|
||||||
|
])
|
||||||
|
], [SYS_ENDIAN_BSWAP='yes'], [SYS_ENDIAN_BSWAP='no'])
|
||||||
|
AC_MSG_RESULT([$SYS_ENDIAN_BSWAP])
|
||||||
|
|
||||||
|
if test "$SYS_ENDIAN_BSWAP" = "yes" ; then
|
||||||
|
USE_SYS_ENDIAN_H=yes
|
||||||
|
BSWAP=bswap_
|
||||||
|
else
|
||||||
|
if test "$SYS_ENDIAN__SWAP" = "yes" ; then
|
||||||
|
USE_SYS_ENDIAN_H=yes
|
||||||
|
BSWAP=__swap
|
||||||
|
else
|
||||||
|
USE_SYS_ENDIAN_H=no
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$USE_SYS_ENDIAN_H" = "yes" ; then
|
||||||
|
AC_DEFINE([USE_SYS_ENDIAN_H], 1,
|
||||||
|
[Define to use byteswap macros from <sys/endian.h>])
|
||||||
|
AC_DEFINE_UNQUOTED([bswap_16], ${BSWAP}16,
|
||||||
|
[Define to 16-bit byteswap macro])
|
||||||
|
AC_DEFINE_UNQUOTED([bswap_32], ${BSWAP}32,
|
||||||
|
[Define to 32-bit byteswap macro])
|
||||||
|
AC_DEFINE_UNQUOTED([bswap_64], ${BSWAP}64,
|
||||||
|
[Define to 64-bit byteswap macro])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
dnl Checks for library functions.
|
dnl Checks for library functions.
|
||||||
AC_FUNC_VPRINTF
|
AC_FUNC_VPRINTF
|
||||||
AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \
|
AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \
|
||||||
|
@ -295,6 +353,9 @@ case $host_os in
|
||||||
DRI=yes
|
DRI=yes
|
||||||
KDRIVE_HW=yes
|
KDRIVE_HW=yes
|
||||||
;;
|
;;
|
||||||
|
*solaris*)
|
||||||
|
PKG_CHECK_EXISTS(libdrm, DRI=yes, DRI=no)
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
AM_CONDITIONAL(KDRIVE_HW, test "x$KDRIVE_HW" = xyes)
|
AM_CONDITIONAL(KDRIVE_HW, test "x$KDRIVE_HW" = xyes)
|
||||||
|
|
||||||
|
@ -305,6 +366,8 @@ if test "x$use_x86_asm" = xyes && test "x$GCC" = xyes ; then
|
||||||
#error Not supported
|
#error Not supported
|
||||||
#endif
|
#endif
|
||||||
], mmx_capable=yes, mmx_capable=no)
|
], mmx_capable=yes, mmx_capable=no)
|
||||||
|
else
|
||||||
|
mmx_capable=no
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT([$mmx_capable])
|
AC_MSG_RESULT([$mmx_capable])
|
||||||
AM_CONDITIONAL(MMX_CAPABLE, [test "x$mmx_capable" = xyes])
|
AM_CONDITIONAL(MMX_CAPABLE, [test "x$mmx_capable" = xyes])
|
||||||
|
@ -335,11 +398,11 @@ AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],
|
||||||
AC_ARG_WITH(int10, AS_HELP_STRING([--with-int10=BACKEND], [int10 backend: vm86, x86emu or stub]),
|
AC_ARG_WITH(int10, AS_HELP_STRING([--with-int10=BACKEND], [int10 backend: vm86, x86emu or stub]),
|
||||||
[INT10="$withval"],
|
[INT10="$withval"],
|
||||||
[INT10="$DEFAULT_INT10"])
|
[INT10="$DEFAULT_INT10"])
|
||||||
AC_ARG_WITH(vendor-name, AS_HELP_STRING([--with-vendor-string=VENDOR],
|
AC_ARG_WITH(vendor-name, AS_HELP_STRING([--with-vendor-name=VENDOR],
|
||||||
[Vendor string reported by the server]),
|
[Vendor string reported by the server]),
|
||||||
[ VENDOR_STRING="$withval" ],
|
[ VENDOR_STRING="$withval" ],
|
||||||
[ VENDOR_STRING="$DEFAULT_VENDOR_NAME" ])
|
[ VENDOR_STRING="$DEFAULT_VENDOR_NAME" ])
|
||||||
AC_ARG_WITH(vendor-name-short, AS_HELP_STRING([--with-vendor-string-short=VENDOR],
|
AC_ARG_WITH(vendor-name-short, AS_HELP_STRING([--with-vendor-name-short=VENDOR],
|
||||||
[Short version of vendor string reported by the server]),
|
[Short version of vendor string reported by the server]),
|
||||||
[ VENDOR_STRING_SHORT="$withval" ],
|
[ VENDOR_STRING_SHORT="$withval" ],
|
||||||
[ VENDOR_STRING_SHORT="$DEFAULT_VENDOR_NAME_SHORT" ])
|
[ VENDOR_STRING_SHORT="$DEFAULT_VENDOR_NAME_SHORT" ])
|
||||||
|
@ -385,6 +448,9 @@ AC_ARG_WITH(os-name, AS_HELP_STRING([--with-os-name=OSNAME], [Name of OS
|
||||||
AC_ARG_WITH(os-vendor, AS_HELP_STRING([--with-os-vendor=OSVENDOR], [Name of OS vendor]),
|
AC_ARG_WITH(os-vendor, AS_HELP_STRING([--with-os-vendor=OSVENDOR], [Name of OS vendor]),
|
||||||
[ OSVENDOR="$withval" ],
|
[ OSVENDOR="$withval" ],
|
||||||
[ OSVENDOR="" ])
|
[ OSVENDOR="" ])
|
||||||
|
AC_ARG_WITH(builderstring, AS_HELP_STRING([--with-builderstring=BUILDERSTRING], [Additional builder string]),
|
||||||
|
[ BUILDERSTRING="$withval" ]
|
||||||
|
[ ])
|
||||||
AC_ARG_WITH(mesa-source, AS_HELP_STRING([--with-mesa-source=MESA_SOURCE], [Path to Mesa source tree]),
|
AC_ARG_WITH(mesa-source, AS_HELP_STRING([--with-mesa-source=MESA_SOURCE], [Path to Mesa source tree]),
|
||||||
[ MESA_SOURCE="$withval" ],
|
[ MESA_SOURCE="$withval" ],
|
||||||
[ MESA_SOURCE="" ])
|
[ MESA_SOURCE="" ])
|
||||||
|
@ -546,7 +612,7 @@ XEXT_LIB='$(top_builddir)/Xext/libXext.la'
|
||||||
XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
|
XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
|
||||||
|
|
||||||
dnl Core modules for most extensions, et al.
|
dnl Core modules for most extensions, et al.
|
||||||
REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto [inputproto >= 1.4] [kbproto >= 1.0.3]"
|
REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto xproto xtrans [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto [inputproto >= 1.4] [kbproto >= 1.0.3]"
|
||||||
REQUIRED_LIBS="xfont xau fontenc"
|
REQUIRED_LIBS="xfont xau fontenc"
|
||||||
|
|
||||||
if test "x$DBUS" = xauto; then
|
if test "x$DBUS" = xauto; then
|
||||||
|
@ -617,7 +683,7 @@ fi
|
||||||
|
|
||||||
if test "x$GLX" = xyes && ! test "x$MESA_SOURCE" = x; then
|
if test "x$GLX" = xyes && ! test "x$MESA_SOURCE" = x; then
|
||||||
PKG_CHECK_MODULES([XLIB], [x11])
|
PKG_CHECK_MODULES([XLIB], [x11])
|
||||||
PKG_CHECK_MODULES([GL], [glproto >= 1.4.7])
|
PKG_CHECK_MODULES([GL], [glproto >= 1.4.8])
|
||||||
AC_SUBST(XLIB_CFLAGS)
|
AC_SUBST(XLIB_CFLAGS)
|
||||||
AC_DEFINE(GLXEXT, 1, [Build GLX extension])
|
AC_DEFINE(GLXEXT, 1, [Build GLX extension])
|
||||||
GLX_LIBS='$(top_builddir)/GL/glx/libglx.la $(top_builddir)/GL/mesa/libGLcore.la'
|
GLX_LIBS='$(top_builddir)/GL/glx/libglx.la $(top_builddir)/GL/mesa/libGLcore.la'
|
||||||
|
@ -885,6 +951,8 @@ AC_DEFINE_UNQUOTED(XORG_MAN_VERSION, ["$VENDOR_MAN_VERSION"], [Vendor man versio
|
||||||
AC_DEFINE_UNQUOTED(BUILDERADDR, ["$BUILDERADDR"], [Builder address])
|
AC_DEFINE_UNQUOTED(BUILDERADDR, ["$BUILDERADDR"], [Builder address])
|
||||||
AC_DEFINE_UNQUOTED(OSNAME, ["$OSNAME"], [Operating System Name])
|
AC_DEFINE_UNQUOTED(OSNAME, ["$OSNAME"], [Operating System Name])
|
||||||
AC_DEFINE_UNQUOTED(OSVENDOR, ["$OSVENDOR"], [Operating System Vendor])
|
AC_DEFINE_UNQUOTED(OSVENDOR, ["$OSVENDOR"], [Operating System Vendor])
|
||||||
|
AC_DEFINE_UNQUOTED(BUILDERSTRING, ["$BUILDERSTRING"], [Builder string])
|
||||||
|
|
||||||
AC_SUBST([VENDOR_STRING])
|
AC_SUBST([VENDOR_STRING])
|
||||||
AC_SUBST([VENDOR_STRING_SHORT])
|
AC_SUBST([VENDOR_STRING_SHORT])
|
||||||
AC_SUBST([VENDOR_RELEASE])
|
AC_SUBST([VENDOR_RELEASE])
|
||||||
|
@ -1708,20 +1776,13 @@ AC_SUBST(XKB_COMPILED_DIR)
|
||||||
dnl and the rest of these are generic, so they're in config.h
|
dnl and the rest of these are generic, so they're in config.h
|
||||||
AC_DEFINE(XResExtension, 1, [Build XRes extension])
|
AC_DEFINE(XResExtension, 1, [Build XRes extension])
|
||||||
|
|
||||||
dnl CYGWIN does not define fd_set if _POSIX_SOURCE is defined
|
AC_TRY_COMPILE([
|
||||||
dnl _*_SOURCE on Solaris restricts to the standards, and removes non-standard
|
#include <features.h>
|
||||||
dnl functions which X uses
|
#ifndef __GLIBC__
|
||||||
case $host_os in
|
#error not glibc
|
||||||
cygwin*) ;;
|
#endif
|
||||||
solaris*) ;;
|
], [], [AC_DEFINE(_GNU_SOURCE, 1,
|
||||||
darwin*) ;;
|
[ Enable GNU and other extensions to the C environment for glibc])])
|
||||||
freebsd*|netbsd*|openbsd*) ;;
|
|
||||||
*)
|
|
||||||
AC_DEFINE(_POSIX_SOURCE, 1, [POSIX-compliant source])
|
|
||||||
AC_DEFINE(_XOPEN_SOURCE, 500, [X/Open-compliant source])
|
|
||||||
AC_DEFINE(_BSD_SOURCE, 1, [BSD-compliant source])
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
|
AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
|
||||||
|
|
||||||
|
@ -1796,7 +1857,6 @@ Makefile
|
||||||
GL/Makefile
|
GL/Makefile
|
||||||
GL/glx/Makefile
|
GL/glx/Makefile
|
||||||
GL/mesa/Makefile
|
GL/mesa/Makefile
|
||||||
GL/mesa/array_cache/Makefile
|
|
||||||
GL/mesa/glapi/Makefile
|
GL/mesa/glapi/Makefile
|
||||||
GL/mesa/main/Makefile
|
GL/mesa/main/Makefile
|
||||||
GL/mesa/math/Makefile
|
GL/mesa/math/Makefile
|
||||||
|
@ -1806,6 +1866,7 @@ GL/mesa/shader/slang/Makefile
|
||||||
GL/mesa/swrast/Makefile
|
GL/mesa/swrast/Makefile
|
||||||
GL/mesa/swrast_setup/Makefile
|
GL/mesa/swrast_setup/Makefile
|
||||||
GL/mesa/tnl/Makefile
|
GL/mesa/tnl/Makefile
|
||||||
|
GL/mesa/vbo/Makefile
|
||||||
GL/mesa/X/Makefile
|
GL/mesa/X/Makefile
|
||||||
include/Makefile
|
include/Makefile
|
||||||
afb/Makefile
|
afb/Makefile
|
||||||
|
|
|
@ -35,6 +35,13 @@ int DamageClientPrivateIndex;
|
||||||
RESTYPE DamageExtType;
|
RESTYPE DamageExtType;
|
||||||
RESTYPE DamageExtWinType;
|
RESTYPE DamageExtWinType;
|
||||||
|
|
||||||
|
/* Version of the damage extension supported by the server, as opposed to the
|
||||||
|
* DAMAGE_* defines from damageproto for what version the proto header
|
||||||
|
* supports.
|
||||||
|
*/
|
||||||
|
#define SERVER_DAMAGE_MAJOR 1
|
||||||
|
#define SERVER_DAMAGE_MINOR 1
|
||||||
|
|
||||||
#define prScreen screenInfo.screens[0]
|
#define prScreen screenInfo.screens[0]
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -143,16 +150,16 @@ ProcDamageQueryVersion(ClientPtr client)
|
||||||
rep.type = X_Reply;
|
rep.type = X_Reply;
|
||||||
rep.length = 0;
|
rep.length = 0;
|
||||||
rep.sequenceNumber = client->sequence;
|
rep.sequenceNumber = client->sequence;
|
||||||
if (stuff->majorVersion < DAMAGE_MAJOR) {
|
if (stuff->majorVersion < SERVER_DAMAGE_MAJOR) {
|
||||||
rep.majorVersion = stuff->majorVersion;
|
rep.majorVersion = stuff->majorVersion;
|
||||||
rep.minorVersion = stuff->minorVersion;
|
rep.minorVersion = stuff->minorVersion;
|
||||||
} else {
|
} else {
|
||||||
rep.majorVersion = DAMAGE_MAJOR;
|
rep.majorVersion = SERVER_DAMAGE_MAJOR;
|
||||||
if (stuff->majorVersion == DAMAGE_MAJOR &&
|
if (stuff->majorVersion == SERVER_DAMAGE_MAJOR &&
|
||||||
stuff->minorVersion < DAMAGE_MINOR)
|
stuff->minorVersion < SERVER_DAMAGE_MINOR)
|
||||||
rep.minorVersion = stuff->minorVersion;
|
rep.minorVersion = stuff->minorVersion;
|
||||||
else
|
else
|
||||||
rep.minorVersion = DAMAGE_MINOR;
|
rep.minorVersion = SERVER_DAMAGE_MINOR;
|
||||||
}
|
}
|
||||||
pDamageClient->major_version = rep.majorVersion;
|
pDamageClient->major_version = rep.majorVersion;
|
||||||
pDamageClient->minor_version = rep.minorVersion;
|
pDamageClient->minor_version = rep.minorVersion;
|
||||||
|
@ -279,10 +286,35 @@ ProcDamageSubtract (ClientPtr client)
|
||||||
return (client->noClientException);
|
return (client->noClientException);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
ProcDamageAdd (ClientPtr client)
|
||||||
|
{
|
||||||
|
REQUEST(xDamageAddReq);
|
||||||
|
DrawablePtr pDrawable;
|
||||||
|
RegionPtr pRegion;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
REQUEST_SIZE_MATCH(xDamageAddReq);
|
||||||
|
VERIFY_REGION(pRegion, stuff->region, client, DixWriteAccess);
|
||||||
|
rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
|
||||||
|
DixReadAccess);
|
||||||
|
if (rc != Success)
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
/* The region is relative to the drawable origin, so translate it out to
|
||||||
|
* screen coordinates like damage expects.
|
||||||
|
*/
|
||||||
|
REGION_TRANSLATE(pScreen, pRegion, pDrawable->x, pDrawable->y);
|
||||||
|
DamageDamageRegion(pDrawable, pRegion);
|
||||||
|
REGION_TRANSLATE(pScreen, pRegion, -pDrawable->x, -pDrawable->y);
|
||||||
|
|
||||||
|
return (client->noClientException);
|
||||||
|
}
|
||||||
|
|
||||||
/* Major version controls available requests */
|
/* Major version controls available requests */
|
||||||
static const int version_requests[] = {
|
static const int version_requests[] = {
|
||||||
X_DamageQueryVersion, /* before client sends QueryVersion */
|
X_DamageQueryVersion, /* before client sends QueryVersion */
|
||||||
X_DamageSubtract, /* Version 1 */
|
X_DamageAdd, /* Version 1 */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NUM_VERSION_REQUESTS (sizeof (version_requests) / sizeof (version_requests[0]))
|
#define NUM_VERSION_REQUESTS (sizeof (version_requests) / sizeof (version_requests[0]))
|
||||||
|
@ -293,6 +325,8 @@ int (*ProcDamageVector[XDamageNumberRequests])(ClientPtr) = {
|
||||||
ProcDamageCreate,
|
ProcDamageCreate,
|
||||||
ProcDamageDestroy,
|
ProcDamageDestroy,
|
||||||
ProcDamageSubtract,
|
ProcDamageSubtract,
|
||||||
|
/*************** Version 1.1 ****************/
|
||||||
|
ProcDamageAdd,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -361,12 +395,27 @@ SProcDamageSubtract (ClientPtr client)
|
||||||
return (*ProcDamageVector[stuff->damageReqType]) (client);
|
return (*ProcDamageVector[stuff->damageReqType]) (client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
SProcDamageAdd (ClientPtr client)
|
||||||
|
{
|
||||||
|
register int n;
|
||||||
|
REQUEST(xDamageAddReq);
|
||||||
|
|
||||||
|
swaps (&stuff->length, n);
|
||||||
|
REQUEST_SIZE_MATCH(xDamageSubtractReq);
|
||||||
|
swapl (&stuff->drawable, n);
|
||||||
|
swapl (&stuff->region, n);
|
||||||
|
return (*ProcDamageVector[stuff->damageReqType]) (client);
|
||||||
|
}
|
||||||
|
|
||||||
int (*SProcDamageVector[XDamageNumberRequests])(ClientPtr) = {
|
int (*SProcDamageVector[XDamageNumberRequests])(ClientPtr) = {
|
||||||
/*************** Version 1 ******************/
|
/*************** Version 1 ******************/
|
||||||
SProcDamageQueryVersion,
|
SProcDamageQueryVersion,
|
||||||
SProcDamageCreate,
|
SProcDamageCreate,
|
||||||
SProcDamageDestroy,
|
SProcDamageDestroy,
|
||||||
SProcDamageSubtract,
|
SProcDamageSubtract,
|
||||||
|
/*************** Version 1.1 ****************/
|
||||||
|
SProcDamageAdd,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
34
dbe/dbe.c
34
dbe/dbe.c
|
@ -39,6 +39,11 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#if HAVE_STDINT_H
|
||||||
|
#include <stdint.h>
|
||||||
|
#elif !defined(UINT32_MAX)
|
||||||
|
#define UINT32_MAX 0xffffffffU
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
|
@ -711,11 +716,14 @@ ProcDbeSwapBuffers(ClientPtr client)
|
||||||
return(Success);
|
return(Success);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (nStuff > UINT32_MAX / sizeof(DbeSwapInfoRec))
|
||||||
|
return BadAlloc;
|
||||||
|
|
||||||
/* Get to the swap info appended to the end of the request. */
|
/* Get to the swap info appended to the end of the request. */
|
||||||
dbeSwapInfo = (xDbeSwapInfo *)&stuff[1];
|
dbeSwapInfo = (xDbeSwapInfo *)&stuff[1];
|
||||||
|
|
||||||
/* Allocate array to record swap information. */
|
/* Allocate array to record swap information. */
|
||||||
swapInfo = (DbeSwapInfoPtr)ALLOCATE_LOCAL(nStuff * sizeof(DbeSwapInfoRec));
|
swapInfo = (DbeSwapInfoPtr)Xalloc(nStuff * sizeof(DbeSwapInfoRec));
|
||||||
if (swapInfo == NULL)
|
if (swapInfo == NULL)
|
||||||
{
|
{
|
||||||
return(BadAlloc);
|
return(BadAlloc);
|
||||||
|
@ -730,14 +738,14 @@ ProcDbeSwapBuffers(ClientPtr client)
|
||||||
error = dixLookupWindow(&pWin, dbeSwapInfo[i].window, client,
|
error = dixLookupWindow(&pWin, dbeSwapInfo[i].window, client,
|
||||||
DixWriteAccess);
|
DixWriteAccess);
|
||||||
if (error != Success) {
|
if (error != Success) {
|
||||||
DEALLOCATE_LOCAL(swapInfo);
|
Xfree(swapInfo);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Each window must be double-buffered - BadMatch. */
|
/* Each window must be double-buffered - BadMatch. */
|
||||||
if (DBE_WINDOW_PRIV(pWin) == NULL)
|
if (DBE_WINDOW_PRIV(pWin) == NULL)
|
||||||
{
|
{
|
||||||
DEALLOCATE_LOCAL(swapInfo);
|
Xfree(swapInfo);
|
||||||
return(BadMatch);
|
return(BadMatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -746,7 +754,7 @@ ProcDbeSwapBuffers(ClientPtr client)
|
||||||
{
|
{
|
||||||
if (dbeSwapInfo[i].window == dbeSwapInfo[j].window)
|
if (dbeSwapInfo[i].window == dbeSwapInfo[j].window)
|
||||||
{
|
{
|
||||||
DEALLOCATE_LOCAL(swapInfo);
|
Xfree(swapInfo);
|
||||||
return(BadMatch);
|
return(BadMatch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -757,7 +765,7 @@ ProcDbeSwapBuffers(ClientPtr client)
|
||||||
(dbeSwapInfo[i].swapAction != XdbeUntouched ) &&
|
(dbeSwapInfo[i].swapAction != XdbeUntouched ) &&
|
||||||
(dbeSwapInfo[i].swapAction != XdbeCopied ))
|
(dbeSwapInfo[i].swapAction != XdbeCopied ))
|
||||||
{
|
{
|
||||||
DEALLOCATE_LOCAL(swapInfo);
|
Xfree(swapInfo);
|
||||||
return(BadValue);
|
return(BadValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -787,12 +795,12 @@ ProcDbeSwapBuffers(ClientPtr client)
|
||||||
error = (*pDbeScreenPriv->SwapBuffers)(client, &nStuff, swapInfo);
|
error = (*pDbeScreenPriv->SwapBuffers)(client, &nStuff, swapInfo);
|
||||||
if (error != Success)
|
if (error != Success)
|
||||||
{
|
{
|
||||||
DEALLOCATE_LOCAL(swapInfo);
|
Xfree(swapInfo);
|
||||||
return(error);
|
return(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DEALLOCATE_LOCAL(swapInfo);
|
Xfree(swapInfo);
|
||||||
return(Success);
|
return(Success);
|
||||||
|
|
||||||
} /* ProcDbeSwapBuffers() */
|
} /* ProcDbeSwapBuffers() */
|
||||||
|
@ -874,10 +882,12 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
||||||
|
|
||||||
REQUEST_AT_LEAST_SIZE(xDbeGetVisualInfoReq);
|
REQUEST_AT_LEAST_SIZE(xDbeGetVisualInfoReq);
|
||||||
|
|
||||||
|
if (stuff->n > UINT32_MAX / sizeof(DrawablePtr))
|
||||||
|
return BadAlloc;
|
||||||
/* Make sure any specified drawables are valid. */
|
/* Make sure any specified drawables are valid. */
|
||||||
if (stuff->n != 0)
|
if (stuff->n != 0)
|
||||||
{
|
{
|
||||||
if (!(pDrawables = (DrawablePtr *)ALLOCATE_LOCAL(stuff->n *
|
if (!(pDrawables = (DrawablePtr *)Xalloc(stuff->n *
|
||||||
sizeof(DrawablePtr))))
|
sizeof(DrawablePtr))))
|
||||||
{
|
{
|
||||||
return(BadAlloc);
|
return(BadAlloc);
|
||||||
|
@ -890,7 +900,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
||||||
rc = dixLookupDrawable(pDrawables+i, drawables[i], client, 0,
|
rc = dixLookupDrawable(pDrawables+i, drawables[i], client, 0,
|
||||||
DixReadAccess);
|
DixReadAccess);
|
||||||
if (rc != Success) {
|
if (rc != Success) {
|
||||||
DEALLOCATE_LOCAL(pDrawables);
|
Xfree(pDrawables);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -902,7 +912,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
||||||
{
|
{
|
||||||
if (pDrawables)
|
if (pDrawables)
|
||||||
{
|
{
|
||||||
DEALLOCATE_LOCAL(pDrawables);
|
Xfree(pDrawables);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(BadAlloc);
|
return(BadAlloc);
|
||||||
|
@ -929,7 +939,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
||||||
/* Free pDrawables if we needed to allocate it above. */
|
/* Free pDrawables if we needed to allocate it above. */
|
||||||
if (pDrawables)
|
if (pDrawables)
|
||||||
{
|
{
|
||||||
DEALLOCATE_LOCAL(pDrawables);
|
Xfree(pDrawables);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(BadAlloc);
|
return(BadAlloc);
|
||||||
|
@ -1010,7 +1020,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
||||||
|
|
||||||
if (pDrawables)
|
if (pDrawables)
|
||||||
{
|
{
|
||||||
DEALLOCATE_LOCAL(pDrawables);
|
Xfree(pDrawables);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(client->noClientException);
|
return(client->noClientException);
|
||||||
|
|
|
@ -219,7 +219,7 @@ dixLookupDrawable(DrawablePtr *pDraw, XID id, ClientPtr client,
|
||||||
pTmp = client->lastDrawable;
|
pTmp = client->lastDrawable;
|
||||||
|
|
||||||
/* an access check is required for cached drawables */
|
/* an access check is required for cached drawables */
|
||||||
rtype = (pTmp->type | M_WINDOW) ? RT_WINDOW : RT_PIXMAP;
|
rtype = (type & M_WINDOW) ? RT_WINDOW : RT_PIXMAP;
|
||||||
if (!XaceHook(XACE_RESOURCE_ACCESS, client, id, rtype, access, pTmp))
|
if (!XaceHook(XACE_RESOURCE_ACCESS, client, id, rtype, access, pTmp))
|
||||||
return BadDrawable;
|
return BadDrawable;
|
||||||
} else
|
} else
|
||||||
|
@ -227,10 +227,10 @@ dixLookupDrawable(DrawablePtr *pDraw, XID id, ClientPtr client,
|
||||||
access);
|
access);
|
||||||
if (!pTmp)
|
if (!pTmp)
|
||||||
return BadDrawable;
|
return BadDrawable;
|
||||||
if (!((1 << pTmp->type) | (type ? type : M_DRAWABLE)))
|
if (!((1 << pTmp->type) & (type ? type : M_DRAWABLE)))
|
||||||
return BadMatch;
|
return BadMatch;
|
||||||
|
|
||||||
if (pTmp->type | M_DRAWABLE) {
|
if (type & M_DRAWABLE) {
|
||||||
client->lastDrawable = pTmp;
|
client->lastDrawable = pTmp;
|
||||||
client->lastDrawableID = id;
|
client->lastDrawableID = id;
|
||||||
client->lastGCID = INVALID;
|
client->lastGCID = INVALID;
|
||||||
|
|
|
@ -489,6 +489,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
Bool sendValuators = (type == MotionNotify || flags & POINTER_ABSOLUTE);
|
Bool sendValuators = (type == MotionNotify || flags & POINTER_ABSOLUTE);
|
||||||
DeviceIntPtr cp = inputInfo.pointer;
|
DeviceIntPtr cp = inputInfo.pointer;
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
|
Bool coreOnly = (pDev == inputInfo.pointer);
|
||||||
|
|
||||||
/* Sanity checks. */
|
/* Sanity checks. */
|
||||||
if (type != MotionNotify && type != ButtonPress && type != ButtonRelease)
|
if (type != MotionNotify && type != ButtonPress && type != ButtonRelease)
|
||||||
|
@ -497,7 +498,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
if ((type == ButtonPress || type == ButtonRelease) && !pDev->button)
|
if ((type == ButtonPress || type == ButtonRelease) && !pDev->button)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (pDev->coreEvents)
|
if (!coreOnly && pDev->coreEvents)
|
||||||
num_events = 2;
|
num_events = 2;
|
||||||
else
|
else
|
||||||
num_events = 1;
|
num_events = 1;
|
||||||
|
@ -507,7 +508,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Do we need to send a DeviceValuator event? */
|
/* Do we need to send a DeviceValuator event? */
|
||||||
if (sendValuators) {
|
if (!coreOnly && sendValuators) {
|
||||||
if ((((num_valuators - 1) / 6) + 1) > MAX_VALUATOR_EVENTS)
|
if ((((num_valuators - 1) / 6) + 1) > MAX_VALUATOR_EVENTS)
|
||||||
num_valuators = MAX_VALUATOR_EVENTS * 6;
|
num_valuators = MAX_VALUATOR_EVENTS * 6;
|
||||||
num_events += ((num_valuators - 1) / 6) + 1;
|
num_events += ((num_valuators - 1) / 6) + 1;
|
||||||
|
@ -521,10 +522,6 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
|
|
||||||
ms = GetTimeInMillis();
|
ms = GetTimeInMillis();
|
||||||
|
|
||||||
kbp = (deviceKeyButtonPointer *) events;
|
|
||||||
kbp->time = ms;
|
|
||||||
kbp->deviceid = pDev->id;
|
|
||||||
|
|
||||||
/* Set x and y based on whether this is absolute or relative, and
|
/* Set x and y based on whether this is absolute or relative, and
|
||||||
* accelerate if we need to. */
|
* accelerate if we need to. */
|
||||||
if (flags & POINTER_ABSOLUTE) {
|
if (flags & POINTER_ABSOLUTE) {
|
||||||
|
@ -602,29 +599,37 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
pDev->valuator->lastx = x;
|
pDev->valuator->lastx = x;
|
||||||
pDev->valuator->lasty = y;
|
pDev->valuator->lasty = y;
|
||||||
|
|
||||||
if (type == MotionNotify) {
|
if (!coreOnly)
|
||||||
kbp->type = DeviceMotionNotify;
|
{
|
||||||
}
|
kbp = (deviceKeyButtonPointer *) events;
|
||||||
else {
|
kbp->time = ms;
|
||||||
if (type == ButtonPress)
|
kbp->deviceid = pDev->id;
|
||||||
kbp->type = DeviceButtonPress;
|
|
||||||
else if (type == ButtonRelease)
|
if (type == MotionNotify) {
|
||||||
kbp->type = DeviceButtonRelease;
|
kbp->type = DeviceMotionNotify;
|
||||||
kbp->detail = pDev->button->map[buttons];
|
}
|
||||||
|
else {
|
||||||
|
if (type == ButtonPress)
|
||||||
|
kbp->type = DeviceButtonPress;
|
||||||
|
else if (type == ButtonRelease)
|
||||||
|
kbp->type = DeviceButtonRelease;
|
||||||
|
kbp->detail = pDev->button->map[buttons];
|
||||||
|
}
|
||||||
|
|
||||||
|
kbp->root_x = x;
|
||||||
|
kbp->root_y = y;
|
||||||
|
|
||||||
|
events++;
|
||||||
|
if (sendValuators) {
|
||||||
|
kbp->deviceid |= MORE_EVENTS;
|
||||||
|
clipValuators(pDev, first_valuator, num_valuators, valuators);
|
||||||
|
events = getValuatorEvents(events, pDev, first_valuator,
|
||||||
|
num_valuators, valuators);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kbp->root_x = x;
|
/* for some reason inputInfo.pointer does not have coreEvents set */
|
||||||
kbp->root_y = y;
|
if (coreOnly || pDev->coreEvents) {
|
||||||
|
|
||||||
events++;
|
|
||||||
if (sendValuators) {
|
|
||||||
kbp->deviceid |= MORE_EVENTS;
|
|
||||||
clipValuators(pDev, first_valuator, num_valuators, valuators);
|
|
||||||
events = getValuatorEvents(events, pDev, first_valuator,
|
|
||||||
num_valuators, valuators);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pDev->coreEvents) {
|
|
||||||
events->u.u.type = type;
|
events->u.u.type = type;
|
||||||
events->u.keyButtonPointer.time = ms;
|
events->u.keyButtonPointer.time = ms;
|
||||||
events->u.keyButtonPointer.rootX = x;
|
events->u.keyButtonPointer.rootX = x;
|
||||||
|
@ -761,7 +766,7 @@ SwitchCorePointer(DeviceIntPtr pDev)
|
||||||
* to shift the pointer to get it inside the new bounds.
|
* to shift the pointer to get it inside the new bounds.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
PostSyntheticMotion(int x, int y, ScreenPtr pScreen, unsigned long time)
|
PostSyntheticMotion(int x, int y, int screen, unsigned long time)
|
||||||
{
|
{
|
||||||
xEvent xE;
|
xEvent xE;
|
||||||
|
|
||||||
|
@ -770,8 +775,8 @@ PostSyntheticMotion(int x, int y, ScreenPtr pScreen, unsigned long time)
|
||||||
will translate from sprite screen to screen 0 upon reentry
|
will translate from sprite screen to screen 0 upon reentry
|
||||||
to the DIX layer. */
|
to the DIX layer. */
|
||||||
if (!noPanoramiXExtension) {
|
if (!noPanoramiXExtension) {
|
||||||
x += panoramiXdataPtr[0].x - panoramiXdataPtr[pScreen->myNum].x;
|
x += panoramiXdataPtr[0].x - panoramiXdataPtr[screen].x;
|
||||||
y += panoramiXdataPtr[0].y - panoramiXdataPtr[pScreen->myNum].y;
|
y += panoramiXdataPtr[0].y - panoramiXdataPtr[screen].y;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -100,11 +100,6 @@ specifies a file which contains a collection of authorization records used
|
||||||
to authenticate access. See also the \fIxdm\fP(1) and
|
to authenticate access. See also the \fIxdm\fP(1) and
|
||||||
\fIXsecurity\fP(__miscmansuffix__) manual pages.
|
\fIXsecurity\fP(__miscmansuffix__) manual pages.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B bc
|
|
||||||
disables certain kinds of error checking, for bug compatibility with
|
|
||||||
previous releases (e.g., to work around bugs in R2 and R3 xterms and toolkits).
|
|
||||||
Deprecated.
|
|
||||||
.TP 8
|
|
||||||
.B \-bs
|
.B \-bs
|
||||||
disables backing store support on all screens.
|
disables backing store support on all screens.
|
||||||
.TP 8
|
.TP 8
|
||||||
|
@ -266,6 +261,10 @@ required by the X protocol, which allows the server to exceed the
|
||||||
client's backing store expectations but does not provide a way to tell
|
client's backing store expectations but does not provide a way to tell
|
||||||
the client that it is doing so.
|
the client that it is doing so.
|
||||||
.TP 8
|
.TP 8
|
||||||
|
.B \-wr
|
||||||
|
sets the default root window to solid white instead of the standard root weave
|
||||||
|
pattern.
|
||||||
|
.TP 8
|
||||||
.B \-x \fIextension\fP
|
.B \-x \fIextension\fP
|
||||||
loads the specified extension at init.
|
loads the specified extension at init.
|
||||||
This is a no-op for most implementations.
|
This is a no-op for most implementations.
|
||||||
|
@ -398,20 +397,14 @@ base directory for keyboard layout files. This option is not available
|
||||||
for setuid X servers (i.e., when the X server's real and effective uids
|
for setuid X servers (i.e., when the X server's real and effective uids
|
||||||
are different).
|
are different).
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-ar1 \fImilliseconds\fP
|
.B \-ardelay \fImilliseconds\fP
|
||||||
sets the autorepeat delay (length of time in milliseconds that a key must
|
sets the autorepeat delay (length of time in milliseconds that a key must
|
||||||
be depressed before autorepeat starts).
|
be depressed before autorepeat starts).
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-ar2 \fImilliseconds\fP
|
.B \-arinterval \fImilliseconds\fP
|
||||||
sets the autorepeat interval (length of time in milliseconds that should
|
sets the autorepeat interval (length of time in milliseconds that should
|
||||||
elapse between autorepeat-generated keystrokes).
|
elapse between autorepeat-generated keystrokes).
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-noloadxkb
|
|
||||||
disables loading of an XKB keymap description on server startup.
|
|
||||||
.TP 8
|
|
||||||
.B \-xkbdb \fIfilename\fP
|
|
||||||
uses \fIfilename\fP for default keyboard keymaps.
|
|
||||||
.TP 8
|
|
||||||
.B \-xkbmap \fIfilename\fP
|
.B \-xkbmap \fIfilename\fP
|
||||||
loads keyboard description in \fIfilename\fP on server startup.
|
loads keyboard description in \fIfilename\fP on server startup.
|
||||||
.SH SECURITY EXTENSION OPTIONS
|
.SH SECURITY EXTENSION OPTIONS
|
||||||
|
|
130
exa/exa.c
130
exa/exa.c
|
@ -121,18 +121,78 @@ exaGetDrawablePixmap(DrawablePtr pDrawable)
|
||||||
return (PixmapPtr) pDrawable;
|
return (PixmapPtr) pDrawable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the offsets to add to coordinates to make them address the same bits in
|
||||||
|
* the backing drawable. These coordinates are nonzero only for redirected
|
||||||
|
* windows.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
exaGetDrawableDeltas (DrawablePtr pDrawable, PixmapPtr pPixmap,
|
||||||
|
int *xp, int *yp)
|
||||||
|
{
|
||||||
|
#ifdef COMPOSITE
|
||||||
|
if (pDrawable->type == DRAWABLE_WINDOW) {
|
||||||
|
*xp = -pPixmap->screen_x;
|
||||||
|
*yp = -pPixmap->screen_y;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
*xp = 0;
|
||||||
|
*yp = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* exaPixmapDirty() marks a pixmap as dirty, allowing for
|
||||||
|
* optimizations in pixmap migration when no changes have occurred.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
exaPixmapDirty (PixmapPtr pPix, int x1, int y1, int x2, int y2)
|
||||||
|
{
|
||||||
|
ExaPixmapPriv(pPix);
|
||||||
|
BoxRec box;
|
||||||
|
RegionPtr pDamageReg;
|
||||||
|
RegionRec region;
|
||||||
|
|
||||||
|
if (!pExaPixmap)
|
||||||
|
return;
|
||||||
|
|
||||||
|
box.x1 = max(x1, 0);
|
||||||
|
box.y1 = max(y1, 0);
|
||||||
|
box.x2 = min(x2, pPix->drawable.width);
|
||||||
|
box.y2 = min(y2, pPix->drawable.height);
|
||||||
|
|
||||||
|
if (box.x1 >= box.x2 || box.y1 >= box.y2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
pDamageReg = DamageRegion(pExaPixmap->pDamage);
|
||||||
|
|
||||||
|
REGION_INIT(pScreen, ®ion, &box, 1);
|
||||||
|
REGION_UNION(pScreen, pDamageReg, pDamageReg, ®ion);
|
||||||
|
REGION_UNINIT(pScreen, ®ion);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* exaDrawableDirty() marks a pixmap backing a drawable as dirty, allowing for
|
* exaDrawableDirty() marks a pixmap backing a drawable as dirty, allowing for
|
||||||
* optimizations in pixmap migration when no changes have occurred.
|
* optimizations in pixmap migration when no changes have occurred.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
exaDrawableDirty (DrawablePtr pDrawable)
|
exaDrawableDirty (DrawablePtr pDrawable, int x1, int y1, int x2, int y2)
|
||||||
{
|
{
|
||||||
ExaPixmapPrivPtr pExaPixmap;
|
PixmapPtr pPix = exaGetDrawablePixmap(pDrawable);
|
||||||
|
int xoff, yoff;
|
||||||
|
|
||||||
pExaPixmap = ExaGetPixmapPriv(exaGetDrawablePixmap (pDrawable));
|
x1 = max(x1, pDrawable->x);
|
||||||
if (pExaPixmap != NULL)
|
y1 = max(y1, pDrawable->y);
|
||||||
pExaPixmap->dirty = TRUE;
|
x2 = min(x2, pDrawable->x + pDrawable->width);
|
||||||
|
y2 = min(y2, pDrawable->y + pDrawable->height);
|
||||||
|
|
||||||
|
if (x1 >= x2 || y1 >= y2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
exaGetDrawableDeltas(pDrawable, pPix, &xoff, &yoff);
|
||||||
|
|
||||||
|
exaPixmapDirty(pPix, x1 + xoff, y1 + yoff, x2 + xoff, y2 + yoff);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
|
@ -153,6 +213,7 @@ exaDestroyPixmap (PixmapPtr pPixmap)
|
||||||
pPixmap->devPrivate.ptr = pExaPixmap->sys_ptr;
|
pPixmap->devPrivate.ptr = pExaPixmap->sys_ptr;
|
||||||
pPixmap->devKind = pExaPixmap->sys_pitch;
|
pPixmap->devKind = pExaPixmap->sys_pitch;
|
||||||
}
|
}
|
||||||
|
REGION_UNINIT(pPixmap->drawable.pScreen, &pExaPixmap->validReg);
|
||||||
}
|
}
|
||||||
return fbDestroyPixmap (pPixmap);
|
return fbDestroyPixmap (pPixmap);
|
||||||
}
|
}
|
||||||
|
@ -220,7 +281,20 @@ exaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pExaPixmap->dirty = FALSE;
|
/* Set up damage tracking */
|
||||||
|
pExaPixmap->pDamage = DamageCreate (NULL, NULL, DamageReportNone, TRUE,
|
||||||
|
pScreen, pPixmap);
|
||||||
|
|
||||||
|
if (pExaPixmap->pDamage == NULL) {
|
||||||
|
fbDestroyPixmap (pPixmap);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
DamageRegister (&pPixmap->drawable, pExaPixmap->pDamage);
|
||||||
|
DamageSetReportAfterOp (pExaPixmap->pDamage, TRUE);
|
||||||
|
|
||||||
|
/* None of the pixmap bits are valid initially */
|
||||||
|
REGION_NULL(pScreen, &pExaPixmap->validReg);
|
||||||
|
|
||||||
return pPixmap;
|
return pPixmap;
|
||||||
}
|
}
|
||||||
|
@ -265,32 +339,14 @@ exaDrawableIsOffscreen (DrawablePtr pDrawable)
|
||||||
/**
|
/**
|
||||||
* Returns the pixmap which backs a drawable, and the offsets to add to
|
* Returns the pixmap which backs a drawable, and the offsets to add to
|
||||||
* coordinates to make them address the same bits in the backing drawable.
|
* coordinates to make them address the same bits in the backing drawable.
|
||||||
* These coordinates are nonzero only for redirected windows.
|
|
||||||
*/
|
*/
|
||||||
PixmapPtr
|
PixmapPtr
|
||||||
exaGetOffscreenPixmap (DrawablePtr pDrawable, int *xp, int *yp)
|
exaGetOffscreenPixmap (DrawablePtr pDrawable, int *xp, int *yp)
|
||||||
{
|
{
|
||||||
PixmapPtr pPixmap;
|
PixmapPtr pPixmap = exaGetDrawablePixmap (pDrawable);
|
||||||
int x, y;
|
|
||||||
|
exaGetDrawableDeltas (pDrawable, pPixmap, xp, yp);
|
||||||
|
|
||||||
if (pDrawable->type == DRAWABLE_WINDOW) {
|
|
||||||
pPixmap = (*pDrawable->pScreen->GetWindowPixmap) ((WindowPtr) pDrawable);
|
|
||||||
#ifdef COMPOSITE
|
|
||||||
x = -pPixmap->screen_x;
|
|
||||||
y = -pPixmap->screen_y;
|
|
||||||
#else
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pPixmap = (PixmapPtr) pDrawable;
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
}
|
|
||||||
*xp = x;
|
|
||||||
*yp = y;
|
|
||||||
if (exaPixmapIsOffscreen (pPixmap))
|
if (exaPixmapIsOffscreen (pPixmap))
|
||||||
return pPixmap;
|
return pPixmap;
|
||||||
else
|
else
|
||||||
|
@ -338,8 +394,7 @@ exaPrepareAccess(DrawablePtr pDrawable, int index)
|
||||||
/**
|
/**
|
||||||
* exaFinishAccess() is EXA's wrapper for the driver's FinishAccess() handler.
|
* exaFinishAccess() is EXA's wrapper for the driver's FinishAccess() handler.
|
||||||
*
|
*
|
||||||
* It deals with marking drawables as dirty, and calling the driver's
|
* It deals with calling the driver's FinishAccess() only if necessary.
|
||||||
* FinishAccess() only if necessary.
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
exaFinishAccess(DrawablePtr pDrawable, int index)
|
exaFinishAccess(DrawablePtr pDrawable, int index)
|
||||||
|
@ -349,9 +404,6 @@ exaFinishAccess(DrawablePtr pDrawable, int index)
|
||||||
PixmapPtr pPixmap;
|
PixmapPtr pPixmap;
|
||||||
ExaPixmapPrivPtr pExaPixmap;
|
ExaPixmapPrivPtr pExaPixmap;
|
||||||
|
|
||||||
if (index == EXA_PREPARE_DEST)
|
|
||||||
exaDrawableDirty (pDrawable);
|
|
||||||
|
|
||||||
pPixmap = exaGetDrawablePixmap (pDrawable);
|
pPixmap = exaGetDrawablePixmap (pDrawable);
|
||||||
|
|
||||||
pExaPixmap = ExaGetPixmapPriv(pPixmap);
|
pExaPixmap = ExaGetPixmapPriv(pPixmap);
|
||||||
|
@ -377,7 +429,7 @@ exaFinishAccess(DrawablePtr pDrawable, int index)
|
||||||
* accelerated or may sync the card and fall back to fb.
|
* accelerated or may sync the card and fall back to fb.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
exaValidateGC (GCPtr pGC, Mask changes, DrawablePtr pDrawable)
|
exaValidateGC (GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)
|
||||||
{
|
{
|
||||||
/* fbValidateGC will do direct access to pixmaps if the tiling has changed.
|
/* fbValidateGC will do direct access to pixmaps if the tiling has changed.
|
||||||
* Preempt fbValidateGC by doing its work and masking the change out, so
|
* Preempt fbValidateGC by doing its work and masking the change out, so
|
||||||
|
@ -408,6 +460,7 @@ exaValidateGC (GCPtr pGC, Mask changes, DrawablePtr pDrawable)
|
||||||
exaPrepareAccess(&pOldTile->drawable, EXA_PREPARE_SRC);
|
exaPrepareAccess(&pOldTile->drawable, EXA_PREPARE_SRC);
|
||||||
pNewTile = fb24_32ReformatTile (pOldTile,
|
pNewTile = fb24_32ReformatTile (pOldTile,
|
||||||
pDrawable->bitsPerPixel);
|
pDrawable->bitsPerPixel);
|
||||||
|
exaPixmapDirty(pNewTile, 0, 0, pNewTile->drawable.width, pNewTile->drawable.height);
|
||||||
exaFinishAccess(&pOldTile->drawable, EXA_PREPARE_SRC);
|
exaFinishAccess(&pOldTile->drawable, EXA_PREPARE_SRC);
|
||||||
}
|
}
|
||||||
if (pNewTile)
|
if (pNewTile)
|
||||||
|
@ -423,9 +476,14 @@ exaValidateGC (GCPtr pGC, Mask changes, DrawablePtr pDrawable)
|
||||||
if (!pGC->tileIsPixel && FbEvenTile (pGC->tile.pixmap->drawable.width *
|
if (!pGC->tileIsPixel && FbEvenTile (pGC->tile.pixmap->drawable.width *
|
||||||
pDrawable->bitsPerPixel))
|
pDrawable->bitsPerPixel))
|
||||||
{
|
{
|
||||||
exaPrepareAccess(&pGC->tile.pixmap->drawable, EXA_PREPARE_SRC);
|
/* XXX This fixes corruption with tiled pixmaps, but may just be a
|
||||||
|
* workaround for broken drivers
|
||||||
|
*/
|
||||||
|
exaMoveOutPixmap(pGC->tile.pixmap);
|
||||||
fbPadPixmap (pGC->tile.pixmap);
|
fbPadPixmap (pGC->tile.pixmap);
|
||||||
exaFinishAccess(&pGC->tile.pixmap->drawable, EXA_PREPARE_SRC);
|
exaPixmapDirty(pGC->tile.pixmap, 0, 0,
|
||||||
|
pGC->tile.pixmap->drawable.width,
|
||||||
|
pGC->tile.pixmap->drawable.height);
|
||||||
}
|
}
|
||||||
/* Mask out the GCTile change notification, now that we've done FB's
|
/* Mask out the GCTile change notification, now that we've done FB's
|
||||||
* job for it.
|
* job for it.
|
||||||
|
@ -564,7 +622,7 @@ exaDriverInit (ScreenPtr pScreen,
|
||||||
|
|
||||||
pScreen->devPrivates[exaScreenPrivateIndex].ptr = (pointer) pExaScr;
|
pScreen->devPrivates[exaScreenPrivateIndex].ptr = (pointer) pExaScr;
|
||||||
|
|
||||||
pExaScr->migration = ExaMigrationSmart;
|
pExaScr->migration = ExaMigrationAlways;
|
||||||
|
|
||||||
exaDDXDriverInit(pScreen);
|
exaDDXDriverInit(pScreen);
|
||||||
|
|
||||||
|
|
12
exa/exa.h
12
exa/exa.h
|
@ -39,7 +39,7 @@
|
||||||
#include "fb.h"
|
#include "fb.h"
|
||||||
|
|
||||||
#define EXA_VERSION_MAJOR 2
|
#define EXA_VERSION_MAJOR 2
|
||||||
#define EXA_VERSION_MINOR 0
|
#define EXA_VERSION_MINOR 1
|
||||||
#define EXA_VERSION_RELEASE 0
|
#define EXA_VERSION_RELEASE 0
|
||||||
|
|
||||||
typedef struct _ExaOffscreenArea ExaOffscreenArea;
|
typedef struct _ExaOffscreenArea ExaOffscreenArea;
|
||||||
|
@ -73,8 +73,8 @@ struct _ExaOffscreenArea {
|
||||||
typedef struct _ExaDriver {
|
typedef struct _ExaDriver {
|
||||||
/**
|
/**
|
||||||
* exa_major and exa_minor should be set by the driver to the version of
|
* exa_major and exa_minor should be set by the driver to the version of
|
||||||
* EXA which the driver was compiled for (or configures itself at runtime to
|
* EXA which the driver was compiled for (or configures itself at runtime
|
||||||
* support). This allows EXA to extend the structure for new features
|
* to support). This allows EXA to extend the structure for new features
|
||||||
* without breaking ABI for drivers compiled against older versions.
|
* without breaking ABI for drivers compiled against older versions.
|
||||||
*/
|
*/
|
||||||
int exa_major, exa_minor;
|
int exa_major, exa_minor;
|
||||||
|
@ -716,6 +716,12 @@ exaGetPixmapSize(PixmapPtr pPix);
|
||||||
void
|
void
|
||||||
exaEnableDisableFBAccess (int index, Bool enable);
|
exaEnableDisableFBAccess (int index, Bool enable);
|
||||||
|
|
||||||
|
void
|
||||||
|
exaMoveInPixmap (PixmapPtr pPixmap);
|
||||||
|
|
||||||
|
void
|
||||||
|
exaMoveOutPixmap (PixmapPtr pPixmap);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns TRUE if the given planemask covers all the significant bits in the
|
* Returns TRUE if the given planemask covers all the significant bits in the
|
||||||
* pixel values for pDrawable.
|
* pixel values for pDrawable.
|
||||||
|
|
120
exa/exa_accel.c
120
exa/exa_accel.c
|
@ -20,6 +20,11 @@
|
||||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Eric Anholt <eric@anholt.net>
|
||||||
|
* Michel Dänzer <michel@tungstengraphics.com>
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
|
@ -104,6 +109,8 @@ exaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n,
|
||||||
(*pExaScr->info->Solid) (pPixmap,
|
(*pExaScr->info->Solid) (pPixmap,
|
||||||
fullX1 + off_x, fullY1 + off_y,
|
fullX1 + off_x, fullY1 + off_y,
|
||||||
fullX2 + off_x, fullY1 + 1 + off_y);
|
fullX2 + off_x, fullY1 + 1 + off_y);
|
||||||
|
exaPixmapDirty (pPixmap, fullX1 + off_x, fullY1 + off_y,
|
||||||
|
fullX2 + off_x, fullY1 + 1 + off_y);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -118,17 +125,19 @@ exaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n,
|
||||||
partX2 = pbox->x2;
|
partX2 = pbox->x2;
|
||||||
if (partX2 > fullX2)
|
if (partX2 > fullX2)
|
||||||
partX2 = fullX2;
|
partX2 = fullX2;
|
||||||
if (partX2 > partX1)
|
if (partX2 > partX1) {
|
||||||
(*pExaScr->info->Solid) (pPixmap,
|
(*pExaScr->info->Solid) (pPixmap,
|
||||||
partX1 + off_x, fullY1 + off_y,
|
partX1 + off_x, fullY1 + off_y,
|
||||||
partX2 + off_x, fullY1 + 1 + off_y);
|
partX2 + off_x, fullY1 + 1 + off_y);
|
||||||
|
exaPixmapDirty (pPixmap, partX1 + off_x, fullY1 + off_y,
|
||||||
|
partX2 + off_x, fullY1 + 1 + off_y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(*pExaScr->info->DoneSolid) (pPixmap);
|
(*pExaScr->info->DoneSolid) (pPixmap);
|
||||||
exaDrawableDirty (pDrawable);
|
|
||||||
exaMarkSync(pScreen);
|
exaMarkSync(pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,8 +231,8 @@ exaPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
|
||||||
|
|
||||||
exaFinishAccess(pDrawable, EXA_PREPARE_DEST);
|
exaFinishAccess(pDrawable, EXA_PREPARE_DEST);
|
||||||
}
|
}
|
||||||
|
exaPixmapDirty(pPix, x1 + xoff, y1 + yoff, x2 + xoff, y2 + yoff);
|
||||||
}
|
}
|
||||||
exaDrawableDirty(pDrawable);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -351,11 +360,12 @@ exaCopyNtoNTwoDir (DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable,
|
||||||
dst_off_y + pbox->y1 + i,
|
dst_off_y + pbox->y1 + i,
|
||||||
pbox->x2 - pbox->x1, 1);
|
pbox->x2 - pbox->x1, 1);
|
||||||
}
|
}
|
||||||
|
exaPixmapDirty(pDstPixmap, dst_off_x + pbox->x1, dst_off_y + pbox->y1,
|
||||||
|
dst_off_x + pbox->x2, dst_off_y + pbox->y2);
|
||||||
}
|
}
|
||||||
if (dirsetup != 0)
|
if (dirsetup != 0)
|
||||||
pExaScr->info->DoneCopy(pDstPixmap);
|
pExaScr->info->DoneCopy(pDstPixmap);
|
||||||
exaMarkSync(pDstDrawable->pScreen);
|
exaMarkSync(pDstDrawable->pScreen);
|
||||||
exaDrawableDirty(pDstDrawable);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,11 +434,13 @@ exaCopyNtoN (DrawablePtr pSrcDrawable,
|
||||||
pbox->x1 + dst_off_x, pbox->y1 + dst_off_y,
|
pbox->x1 + dst_off_x, pbox->y1 + dst_off_y,
|
||||||
pbox->x2 - pbox->x1,
|
pbox->x2 - pbox->x1,
|
||||||
pbox->y2 - pbox->y1);
|
pbox->y2 - pbox->y1);
|
||||||
|
exaPixmapDirty (pDstPixmap,
|
||||||
|
pbox->x1 + dst_off_x, pbox->y1 + dst_off_y,
|
||||||
|
pbox->x2 + dst_off_x, pbox->y2 + dst_off_y);
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
(*pExaScr->info->DoneCopy) (pDstPixmap);
|
(*pExaScr->info->DoneCopy) (pDstPixmap);
|
||||||
exaMarkSync(pDstDrawable->pScreen);
|
exaMarkSync(pDstDrawable->pScreen);
|
||||||
exaDrawableDirty (pDstDrawable);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -443,6 +455,11 @@ fallback:
|
||||||
bitplane, closure);
|
bitplane, closure);
|
||||||
exaFinishAccess (pSrcDrawable, EXA_PREPARE_SRC);
|
exaFinishAccess (pSrcDrawable, EXA_PREPARE_SRC);
|
||||||
exaFinishAccess (pDstDrawable, EXA_PREPARE_DEST);
|
exaFinishAccess (pDstDrawable, EXA_PREPARE_DEST);
|
||||||
|
while (nbox--)
|
||||||
|
{
|
||||||
|
exaDrawableDirty (pDstDrawable, pbox->x1, pbox->y1, pbox->x2, pbox->y2);
|
||||||
|
pbox++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RegionPtr
|
RegionPtr
|
||||||
|
@ -631,6 +648,14 @@ exaPolyFillRect(DrawablePtr pDrawable,
|
||||||
{
|
{
|
||||||
exaDoMigration (pixmaps, 1, FALSE);
|
exaDoMigration (pixmaps, 1, FALSE);
|
||||||
ExaCheckPolyFillRect (pDrawable, pGC, nrect, prect);
|
ExaCheckPolyFillRect (pDrawable, pGC, nrect, prect);
|
||||||
|
while (nrect-- >= 0) {
|
||||||
|
exaDrawableDirty(pDrawable,
|
||||||
|
pDrawable->x + prect->x,
|
||||||
|
pDrawable->y + prect->y,
|
||||||
|
pDrawable->x + prect->x + prect->width,
|
||||||
|
pDrawable->y + prect->y + prect->height);
|
||||||
|
prect++;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
exaDoMigration (pixmaps, 1, TRUE);
|
exaDoMigration (pixmaps, 1, TRUE);
|
||||||
|
@ -682,6 +707,8 @@ exaPolyFillRect(DrawablePtr pDrawable,
|
||||||
(*pExaScr->info->Solid) (pPixmap,
|
(*pExaScr->info->Solid) (pPixmap,
|
||||||
fullX1 + xoff, fullY1 + yoff,
|
fullX1 + xoff, fullY1 + yoff,
|
||||||
fullX2 + xoff, fullY2 + yoff);
|
fullX2 + xoff, fullY2 + yoff);
|
||||||
|
exaPixmapDirty (pPixmap, fullX1 + xoff, fullY1 + yoff,
|
||||||
|
fullX2 + xoff, fullY2 + yoff);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -707,15 +734,17 @@ exaPolyFillRect(DrawablePtr pDrawable,
|
||||||
|
|
||||||
pbox++;
|
pbox++;
|
||||||
|
|
||||||
if (partX1 < partX2 && partY1 < partY2)
|
if (partX1 < partX2 && partY1 < partY2) {
|
||||||
(*pExaScr->info->Solid) (pPixmap,
|
(*pExaScr->info->Solid) (pPixmap,
|
||||||
partX1 + xoff, partY1 + yoff,
|
partX1 + xoff, partY1 + yoff,
|
||||||
partX2 + xoff, partY2 + yoff);
|
partX2 + xoff, partY2 + yoff);
|
||||||
|
exaPixmapDirty (pPixmap, partX1 + xoff, partY1 + yoff,
|
||||||
|
partX2 + xoff, partY2 + yoff);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(*pExaScr->info->DoneSolid) (pPixmap);
|
(*pExaScr->info->DoneSolid) (pPixmap);
|
||||||
exaDrawableDirty (pDrawable);
|
|
||||||
exaMarkSync(pDrawable->pScreen);
|
exaMarkSync(pDrawable->pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -736,11 +765,12 @@ exaSolidBoxClipped (DrawablePtr pDrawable,
|
||||||
int xoff, yoff;
|
int xoff, yoff;
|
||||||
int partX1, partX2, partY1, partY2;
|
int partX1, partX2, partY1, partY2;
|
||||||
ExaMigrationRec pixmaps[1];
|
ExaMigrationRec pixmaps[1];
|
||||||
|
Bool fallback = FALSE;
|
||||||
|
|
||||||
pixmaps[0].as_dst = TRUE;
|
pixmaps[0].as_dst = TRUE;
|
||||||
pixmaps[0].as_src = FALSE;
|
pixmaps[0].as_src = FALSE;
|
||||||
pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
|
pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
|
||||||
|
|
||||||
if (pExaScr->swappedOut ||
|
if (pExaScr->swappedOut ||
|
||||||
pPixmap->drawable.width > pExaScr->info->maxX ||
|
pPixmap->drawable.width > pExaScr->info->maxX ||
|
||||||
pPixmap->drawable.height > pExaScr->info->maxY)
|
pPixmap->drawable.height > pExaScr->info->maxY)
|
||||||
|
@ -751,19 +781,21 @@ exaSolidBoxClipped (DrawablePtr pDrawable,
|
||||||
exaDoMigration (pixmaps, 1, TRUE);
|
exaDoMigration (pixmaps, 1, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff)) ||
|
pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
|
||||||
|
|
||||||
|
if (!pPixmap ||
|
||||||
!(*pExaScr->info->PrepareSolid) (pPixmap, GXcopy, pm, fg))
|
!(*pExaScr->info->PrepareSolid) (pPixmap, GXcopy, pm, fg))
|
||||||
{
|
{
|
||||||
fallback:
|
fallback:
|
||||||
EXA_FALLBACK(("to %p (%c)\n", pDrawable,
|
EXA_FALLBACK(("to %p (%c)\n", pDrawable,
|
||||||
exaDrawableLocation(pDrawable)));
|
exaDrawableLocation(pDrawable)));
|
||||||
|
fallback = TRUE;
|
||||||
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
|
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
|
||||||
fg = fbReplicatePixel (fg, pDrawable->bitsPerPixel);
|
fg = fbReplicatePixel (fg, pDrawable->bitsPerPixel);
|
||||||
fbSolidBoxClipped (pDrawable, pClip, x1, y1, x2, y2,
|
fbSolidBoxClipped (pDrawable, pClip, x1, y1, x2, y2,
|
||||||
fbAnd (GXcopy, fg, pm),
|
fbAnd (GXcopy, fg, pm),
|
||||||
fbXor (GXcopy, fg, pm));
|
fbXor (GXcopy, fg, pm));
|
||||||
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
for (nbox = REGION_NUM_RECTS(pClip), pbox = REGION_RECTS(pClip);
|
for (nbox = REGION_NUM_RECTS(pClip), pbox = REGION_RECTS(pClip);
|
||||||
nbox--;
|
nbox--;
|
||||||
|
@ -791,12 +823,20 @@ fallback:
|
||||||
if (partY2 <= partY1)
|
if (partY2 <= partY1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
(*pExaScr->info->Solid) (pPixmap,
|
if (!fallback) {
|
||||||
partX1 + xoff, partY1 + yoff,
|
(*pExaScr->info->Solid) (pPixmap,
|
||||||
partX2 + xoff, partY2 + yoff);
|
partX1 + xoff, partY1 + yoff,
|
||||||
|
partX2 + xoff, partY2 + yoff);
|
||||||
|
exaPixmapDirty (pPixmap, partX1 + xoff, partY1 + yoff,
|
||||||
|
partX2 + xoff, partY2 + yoff);
|
||||||
|
} else
|
||||||
|
exaDrawableDirty (pDrawable, partX1, partY1, partX2, partY2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fallback)
|
||||||
|
return;
|
||||||
|
|
||||||
(*pExaScr->info->DoneSolid) (pPixmap);
|
(*pExaScr->info->DoneSolid) (pPixmap);
|
||||||
exaDrawableDirty (pDrawable);
|
|
||||||
exaMarkSync(pDrawable->pScreen);
|
exaMarkSync(pDrawable->pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -909,12 +949,17 @@ exaImageGlyphBlt (DrawablePtr pDrawable,
|
||||||
pPriv->fg,
|
pPriv->fg,
|
||||||
gx + dstXoff,
|
gx + dstXoff,
|
||||||
gHeight);
|
gHeight);
|
||||||
|
exaDrawableDirty (pDrawable, gx, gy, gx + gWidth, gy + gHeight);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
RegionPtr pClip = fbGetCompositeClip(pGC);
|
||||||
|
int nbox;
|
||||||
|
BoxPtr pbox;
|
||||||
|
|
||||||
gStride = GLYPHWIDTHBYTESPADDED(pci) / sizeof (FbStip);
|
gStride = GLYPHWIDTHBYTESPADDED(pci) / sizeof (FbStip);
|
||||||
fbPutXYImage (pDrawable,
|
fbPutXYImage (pDrawable,
|
||||||
fbGetCompositeClip(pGC),
|
pClip,
|
||||||
pPriv->fg,
|
pPriv->fg,
|
||||||
pPriv->bg,
|
pPriv->bg,
|
||||||
pPriv->pm,
|
pPriv->pm,
|
||||||
|
@ -928,6 +973,18 @@ exaImageGlyphBlt (DrawablePtr pDrawable,
|
||||||
(FbStip *) pglyph,
|
(FbStip *) pglyph,
|
||||||
gStride,
|
gStride,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
for (nbox = REGION_NUM_RECTS(pClip), pbox = REGION_RECTS(pClip);
|
||||||
|
nbox--; pbox++) {
|
||||||
|
int x1 = max(gx, pbox->x1), x2 = min(gx + gWidth, pbox->x2);
|
||||||
|
int y1 = max(gy, pbox->y1), y2 = min(gy + gHeight, pbox->y2);
|
||||||
|
|
||||||
|
if (x1 >= x2 || y1 >= y2)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
exaDrawableDirty (pDrawable, gx, gy, gx + gWidth,
|
||||||
|
gy + gHeight);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
x += pci->metrics.characterWidth;
|
x += pci->metrics.characterWidth;
|
||||||
|
@ -995,6 +1052,8 @@ exaFillRegionSolid (DrawablePtr pDrawable,
|
||||||
PixmapPtr pPixmap;
|
PixmapPtr pPixmap;
|
||||||
int xoff, yoff;
|
int xoff, yoff;
|
||||||
ExaMigrationRec pixmaps[1];
|
ExaMigrationRec pixmaps[1];
|
||||||
|
int nbox = REGION_NUM_RECTS (pRegion);
|
||||||
|
BoxPtr pBox = REGION_RECTS (pRegion);
|
||||||
|
|
||||||
pixmaps[0].as_dst = TRUE;
|
pixmaps[0].as_dst = TRUE;
|
||||||
pixmaps[0].as_src = FALSE;
|
pixmaps[0].as_src = FALSE;
|
||||||
|
@ -1012,19 +1071,17 @@ exaFillRegionSolid (DrawablePtr pDrawable,
|
||||||
if ((pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff)) &&
|
if ((pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff)) &&
|
||||||
(*pExaScr->info->PrepareSolid) (pPixmap, GXcopy, FB_ALLONES, pixel))
|
(*pExaScr->info->PrepareSolid) (pPixmap, GXcopy, FB_ALLONES, pixel))
|
||||||
{
|
{
|
||||||
int nbox = REGION_NUM_RECTS (pRegion);
|
|
||||||
BoxPtr pBox = REGION_RECTS (pRegion);
|
|
||||||
|
|
||||||
while (nbox--)
|
while (nbox--)
|
||||||
{
|
{
|
||||||
(*pExaScr->info->Solid) (pPixmap,
|
(*pExaScr->info->Solid) (pPixmap,
|
||||||
pBox->x1 + xoff, pBox->y1 + yoff,
|
pBox->x1 + xoff, pBox->y1 + yoff,
|
||||||
pBox->x2 + xoff, pBox->y2 + yoff);
|
pBox->x2 + xoff, pBox->y2 + yoff);
|
||||||
|
exaPixmapDirty (pPixmap, pBox->x1 + xoff, pBox->y1 + yoff,
|
||||||
|
pBox->x2 + xoff, pBox->y2 + yoff);
|
||||||
pBox++;
|
pBox++;
|
||||||
}
|
}
|
||||||
(*pExaScr->info->DoneSolid) (pPixmap);
|
(*pExaScr->info->DoneSolid) (pPixmap);
|
||||||
exaMarkSync(pDrawable->pScreen);
|
exaMarkSync(pDrawable->pScreen);
|
||||||
exaDrawableDirty (pDrawable);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1035,6 +1092,11 @@ fallback:
|
||||||
fbFillRegionSolid (pDrawable, pRegion, 0,
|
fbFillRegionSolid (pDrawable, pRegion, 0,
|
||||||
fbReplicatePixel (pixel, pDrawable->bitsPerPixel));
|
fbReplicatePixel (pixel, pDrawable->bitsPerPixel));
|
||||||
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
||||||
|
while (nbox--)
|
||||||
|
{
|
||||||
|
exaDrawableDirty (pDrawable, pBox->x1, pBox->y1, pBox->x2, pBox->y2);
|
||||||
|
pBox++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1048,9 +1110,11 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
||||||
{
|
{
|
||||||
ExaScreenPriv(pDrawable->pScreen);
|
ExaScreenPriv(pDrawable->pScreen);
|
||||||
PixmapPtr pPixmap;
|
PixmapPtr pPixmap;
|
||||||
int xoff, yoff;
|
int xoff, yoff, tileXoff, tileYoff;
|
||||||
int tileWidth, tileHeight;
|
int tileWidth, tileHeight;
|
||||||
ExaMigrationRec pixmaps[2];
|
ExaMigrationRec pixmaps[2];
|
||||||
|
int nbox = REGION_NUM_RECTS (pRegion);
|
||||||
|
BoxPtr pBox = REGION_RECTS (pRegion);
|
||||||
|
|
||||||
tileWidth = pTile->drawable.width;
|
tileWidth = pTile->drawable.width;
|
||||||
tileHeight = pTile->drawable.height;
|
tileHeight = pTile->drawable.height;
|
||||||
|
@ -1082,18 +1146,16 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
|
|
||||||
pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
|
pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
|
||||||
|
|
||||||
if (!pPixmap)
|
if (!pPixmap)
|
||||||
goto fallback;
|
goto fallback;
|
||||||
|
|
||||||
if (!exaPixmapIsOffscreen(pTile))
|
if (!exaPixmapIsOffscreen(pTile))
|
||||||
goto fallback;
|
goto fallback;
|
||||||
|
|
||||||
if ((*pExaScr->info->PrepareCopy) (pTile, pPixmap, 0, 0, GXcopy,
|
if ((*pExaScr->info->PrepareCopy) (exaGetOffscreenPixmap((DrawablePtr)pTile, &tileXoff, &tileYoff), pPixmap, 0, 0, GXcopy,
|
||||||
FB_ALLONES))
|
FB_ALLONES))
|
||||||
{
|
{
|
||||||
int nbox = REGION_NUM_RECTS (pRegion);
|
|
||||||
BoxPtr pBox = REGION_RECTS (pRegion);
|
|
||||||
|
|
||||||
while (nbox--)
|
while (nbox--)
|
||||||
{
|
{
|
||||||
int height = pBox->y2 - pBox->y1;
|
int height = pBox->y2 - pBox->y1;
|
||||||
|
@ -1119,7 +1181,7 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
||||||
width -= w;
|
width -= w;
|
||||||
|
|
||||||
(*pExaScr->info->Copy) (pPixmap,
|
(*pExaScr->info->Copy) (pPixmap,
|
||||||
tileX, tileY,
|
tileX + tileXoff, tileY + tileYoff,
|
||||||
dstX + xoff, dstY + yoff,
|
dstX + xoff, dstY + yoff,
|
||||||
w, h);
|
w, h);
|
||||||
dstX += w;
|
dstX += w;
|
||||||
|
@ -1128,11 +1190,12 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
||||||
dstY += h;
|
dstY += h;
|
||||||
tileY = 0;
|
tileY = 0;
|
||||||
}
|
}
|
||||||
|
exaPixmapDirty (pPixmap, pBox->x1 + xoff, pBox->y1 + yoff,
|
||||||
|
pBox->x2 + xoff, pBox->y2 + yoff);
|
||||||
pBox++;
|
pBox++;
|
||||||
}
|
}
|
||||||
(*pExaScr->info->DoneCopy) (pPixmap);
|
(*pExaScr->info->DoneCopy) (pPixmap);
|
||||||
exaMarkSync(pDrawable->pScreen);
|
exaMarkSync(pDrawable->pScreen);
|
||||||
exaDrawableDirty (pDrawable);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1145,6 +1208,11 @@ fallback:
|
||||||
fbFillRegionTiled (pDrawable, pRegion, pTile);
|
fbFillRegionTiled (pDrawable, pRegion, pTile);
|
||||||
exaFinishAccess ((DrawablePtr)pTile, EXA_PREPARE_SRC);
|
exaFinishAccess ((DrawablePtr)pTile, EXA_PREPARE_SRC);
|
||||||
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
||||||
|
while (nbox--)
|
||||||
|
{
|
||||||
|
exaDrawableDirty (pDrawable, pBox->x1, pBox->y1, pBox->x2, pBox->y2);
|
||||||
|
pBox++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Eric Anholt <eric@anholt.net>
|
* Eric Anholt <eric@anholt.net>
|
||||||
|
* Michel Dänzer <michel@tungstengraphics.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -57,6 +58,27 @@ exaPixmapIsPinned (PixmapPtr pPix)
|
||||||
return pExaPixmap == NULL || pExaPixmap->score == EXA_PIXMAP_SCORE_PINNED;
|
return pExaPixmap == NULL || pExaPixmap->score == EXA_PIXMAP_SCORE_PINNED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The fallback path for UTS/DFS failing is to just memcpy. exaCopyDirtyToSys
|
||||||
|
* and exaCopyDirtyToFb both needed to do this loop.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
exaMemcpyBox (PixmapPtr pPixmap, BoxPtr pbox, CARD8 *src, int src_pitch,
|
||||||
|
CARD8 *dst, int dst_pitch)
|
||||||
|
{
|
||||||
|
int i, cpp = pPixmap->drawable.bitsPerPixel / 8;
|
||||||
|
int bytes = (pbox->x2 - pbox->x1) * cpp;
|
||||||
|
|
||||||
|
src += pbox->y1 * src_pitch + pbox->x1 * cpp;
|
||||||
|
dst += pbox->y1 * dst_pitch + pbox->x1 * cpp;
|
||||||
|
|
||||||
|
for (i = pbox->y2 - pbox->y1; i; i--) {
|
||||||
|
memcpy (dst, src, bytes);
|
||||||
|
src += src_pitch;
|
||||||
|
dst += dst_pitch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns TRUE if the pixmap is dirty (has been modified in its current
|
* Returns TRUE if the pixmap is dirty (has been modified in its current
|
||||||
* location compared to the other), or lacks a private for tracking
|
* location compared to the other), or lacks a private for tracking
|
||||||
|
@ -67,7 +89,8 @@ exaPixmapIsDirty (PixmapPtr pPix)
|
||||||
{
|
{
|
||||||
ExaPixmapPriv (pPix);
|
ExaPixmapPriv (pPix);
|
||||||
|
|
||||||
return pExaPixmap == NULL || pExaPixmap->dirty == TRUE;
|
return pExaPixmap == NULL ||
|
||||||
|
REGION_NOTEMPTY (pScreen, DamageRegion(pExaPixmap->pDamage));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -98,54 +121,62 @@ exaCopyDirtyToSys (PixmapPtr pPixmap)
|
||||||
{
|
{
|
||||||
ExaScreenPriv (pPixmap->drawable.pScreen);
|
ExaScreenPriv (pPixmap->drawable.pScreen);
|
||||||
ExaPixmapPriv (pPixmap);
|
ExaPixmapPriv (pPixmap);
|
||||||
|
RegionPtr pRegion = DamageRegion (pExaPixmap->pDamage);
|
||||||
CARD8 *save_ptr;
|
CARD8 *save_ptr;
|
||||||
int save_pitch;
|
int save_pitch;
|
||||||
|
BoxPtr pBox = REGION_RECTS(pRegion);
|
||||||
if (!pExaPixmap->dirty)
|
int nbox = REGION_NUM_RECTS(pRegion);
|
||||||
return;
|
Bool do_sync = FALSE;
|
||||||
|
|
||||||
save_ptr = pPixmap->devPrivate.ptr;
|
save_ptr = pPixmap->devPrivate.ptr;
|
||||||
save_pitch = pPixmap->devKind;
|
save_pitch = pPixmap->devKind;
|
||||||
pPixmap->devPrivate.ptr = pExaPixmap->fb_ptr;
|
pPixmap->devPrivate.ptr = pExaPixmap->fb_ptr;
|
||||||
pPixmap->devKind = pExaPixmap->fb_pitch;
|
pPixmap->devKind = pExaPixmap->fb_pitch;
|
||||||
|
|
||||||
if (pExaScr->info->DownloadFromScreen == NULL ||
|
while (nbox--) {
|
||||||
!pExaScr->info->DownloadFromScreen (pPixmap,
|
pBox->x1 = max(pBox->x1, 0);
|
||||||
0,
|
pBox->y1 = max(pBox->y1, 0);
|
||||||
0,
|
pBox->x2 = min(pBox->x2, pPixmap->drawable.width);
|
||||||
pPixmap->drawable.width,
|
pBox->y2 = min(pBox->y2, pPixmap->drawable.height);
|
||||||
pPixmap->drawable.height,
|
|
||||||
pExaPixmap->sys_ptr,
|
|
||||||
pExaPixmap->sys_pitch))
|
|
||||||
{
|
|
||||||
char *src, *dst;
|
|
||||||
int src_pitch, dst_pitch, i, bytes;
|
|
||||||
|
|
||||||
exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
if (pBox->x1 >= pBox->x2 || pBox->y1 >= pBox->y2)
|
||||||
|
continue;
|
||||||
|
|
||||||
dst = pExaPixmap->sys_ptr;
|
if (pExaScr->info->DownloadFromScreen == NULL ||
|
||||||
dst_pitch = pExaPixmap->sys_pitch;
|
!pExaScr->info->DownloadFromScreen (pPixmap,
|
||||||
src = pExaPixmap->fb_ptr;
|
pBox->x1, pBox->y1,
|
||||||
src_pitch = pExaPixmap->fb_pitch;
|
pBox->x2 - pBox->x1,
|
||||||
bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
|
pBox->y2 - pBox->y1,
|
||||||
|
pExaPixmap->sys_ptr
|
||||||
for (i = 0; i < pPixmap->drawable.height; i++) {
|
+ pBox->y1 * pExaPixmap->sys_pitch
|
||||||
memcpy (dst, src, bytes);
|
+ pBox->x1 * pPixmap->drawable.bitsPerPixel / 8,
|
||||||
dst += dst_pitch;
|
pExaPixmap->sys_pitch))
|
||||||
src += src_pitch;
|
{
|
||||||
|
exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
||||||
|
exaMemcpyBox (pPixmap, pBox,
|
||||||
|
pExaPixmap->fb_ptr, pExaPixmap->fb_pitch,
|
||||||
|
pExaPixmap->sys_ptr, pExaPixmap->sys_pitch);
|
||||||
|
exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
||||||
}
|
}
|
||||||
exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
else
|
||||||
|
do_sync = TRUE;
|
||||||
|
|
||||||
|
pBox++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure the bits have actually landed, since we don't necessarily sync
|
/* Make sure the bits have actually landed, since we don't necessarily sync
|
||||||
* when accessing pixmaps in system memory.
|
* when accessing pixmaps in system memory.
|
||||||
*/
|
*/
|
||||||
exaWaitSync (pPixmap->drawable.pScreen);
|
if (do_sync)
|
||||||
|
exaWaitSync (pPixmap->drawable.pScreen);
|
||||||
|
|
||||||
pPixmap->devPrivate.ptr = save_ptr;
|
pPixmap->devPrivate.ptr = save_ptr;
|
||||||
pPixmap->devKind = save_pitch;
|
pPixmap->devKind = save_pitch;
|
||||||
|
|
||||||
pExaPixmap->dirty = FALSE;
|
/* The previously damaged bits are now no longer damaged but valid */
|
||||||
|
REGION_UNION(pPixmap->drawable.pScreen,
|
||||||
|
&pExaPixmap->validReg, &pExaPixmap->validReg, pRegion);
|
||||||
|
DamageEmpty (pExaPixmap->pDamage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -158,49 +189,59 @@ exaCopyDirtyToFb (PixmapPtr pPixmap)
|
||||||
{
|
{
|
||||||
ExaScreenPriv (pPixmap->drawable.pScreen);
|
ExaScreenPriv (pPixmap->drawable.pScreen);
|
||||||
ExaPixmapPriv (pPixmap);
|
ExaPixmapPriv (pPixmap);
|
||||||
|
RegionPtr pRegion = DamageRegion (pExaPixmap->pDamage);
|
||||||
CARD8 *save_ptr;
|
CARD8 *save_ptr;
|
||||||
int save_pitch;
|
int save_pitch;
|
||||||
|
BoxPtr pBox = REGION_RECTS(pRegion);
|
||||||
if (!pExaPixmap->dirty)
|
int nbox = REGION_NUM_RECTS(pRegion);
|
||||||
return;
|
Bool do_sync = FALSE;
|
||||||
|
|
||||||
save_ptr = pPixmap->devPrivate.ptr;
|
save_ptr = pPixmap->devPrivate.ptr;
|
||||||
save_pitch = pPixmap->devKind;
|
save_pitch = pPixmap->devKind;
|
||||||
pPixmap->devPrivate.ptr = pExaPixmap->fb_ptr;
|
pPixmap->devPrivate.ptr = pExaPixmap->fb_ptr;
|
||||||
pPixmap->devKind = pExaPixmap->fb_pitch;
|
pPixmap->devKind = pExaPixmap->fb_pitch;
|
||||||
|
|
||||||
if (pExaScr->info->UploadToScreen == NULL ||
|
while (nbox--) {
|
||||||
!pExaScr->info->UploadToScreen (pPixmap,
|
pBox->x1 = max(pBox->x1, 0);
|
||||||
0,
|
pBox->y1 = max(pBox->y1, 0);
|
||||||
0,
|
pBox->x2 = min(pBox->x2, pPixmap->drawable.width);
|
||||||
pPixmap->drawable.width,
|
pBox->y2 = min(pBox->y2, pPixmap->drawable.height);
|
||||||
pPixmap->drawable.height,
|
|
||||||
pExaPixmap->sys_ptr,
|
|
||||||
pExaPixmap->sys_pitch))
|
|
||||||
{
|
|
||||||
char *src, *dst;
|
|
||||||
int src_pitch, dst_pitch, i, bytes;
|
|
||||||
|
|
||||||
exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_DEST);
|
if (pBox->x1 >= pBox->x2 || pBox->y1 >= pBox->y2)
|
||||||
|
continue;
|
||||||
|
|
||||||
dst = pExaPixmap->fb_ptr;
|
if (pExaScr->info->UploadToScreen == NULL ||
|
||||||
dst_pitch = pExaPixmap->fb_pitch;
|
!pExaScr->info->UploadToScreen (pPixmap,
|
||||||
src = pExaPixmap->sys_ptr;
|
pBox->x1, pBox->y1,
|
||||||
src_pitch = pExaPixmap->sys_pitch;
|
pBox->x2 - pBox->x1,
|
||||||
bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
|
pBox->y2 - pBox->y1,
|
||||||
|
pExaPixmap->sys_ptr
|
||||||
for (i = 0; i < pPixmap->drawable.height; i++) {
|
+ pBox->y1 * pExaPixmap->sys_pitch
|
||||||
memcpy (dst, src, bytes);
|
+ pBox->x1 * pPixmap->drawable.bitsPerPixel / 8,
|
||||||
dst += dst_pitch;
|
pExaPixmap->sys_pitch))
|
||||||
src += src_pitch;
|
{
|
||||||
|
exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_DEST);
|
||||||
|
exaMemcpyBox (pPixmap, pBox,
|
||||||
|
pExaPixmap->sys_ptr, pExaPixmap->sys_pitch,
|
||||||
|
pExaPixmap->fb_ptr, pExaPixmap->fb_pitch);
|
||||||
|
exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_DEST);
|
||||||
}
|
}
|
||||||
exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_DEST);
|
else
|
||||||
|
do_sync = TRUE;
|
||||||
|
|
||||||
|
pBox++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (do_sync)
|
||||||
|
exaMarkSync (pPixmap->drawable.pScreen);
|
||||||
|
|
||||||
pPixmap->devPrivate.ptr = save_ptr;
|
pPixmap->devPrivate.ptr = save_ptr;
|
||||||
pPixmap->devKind = save_pitch;
|
pPixmap->devKind = save_pitch;
|
||||||
|
|
||||||
pExaPixmap->dirty = FALSE;
|
/* The previously damaged bits are now no longer damaged but valid */
|
||||||
|
REGION_UNION(pPixmap->drawable.pScreen,
|
||||||
|
&pExaPixmap->validReg, &pExaPixmap->validReg, pRegion);
|
||||||
|
DamageEmpty (pExaPixmap->pDamage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -208,11 +249,12 @@ exaCopyDirtyToFb (PixmapPtr pPixmap)
|
||||||
* Called when the memory manager decides it's time to kick the pixmap out of
|
* Called when the memory manager decides it's time to kick the pixmap out of
|
||||||
* framebuffer entirely.
|
* framebuffer entirely.
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area)
|
exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area)
|
||||||
{
|
{
|
||||||
PixmapPtr pPixmap = area->privData;
|
PixmapPtr pPixmap = area->privData;
|
||||||
ExaPixmapPriv(pPixmap);
|
ExaPixmapPriv(pPixmap);
|
||||||
|
RegionPtr pDamageReg = DamageRegion(pExaPixmap->pDamage);
|
||||||
|
|
||||||
DBG_MIGRATE (("Save %p (%p) (%dx%d) (%c)\n", pPixmap,
|
DBG_MIGRATE (("Save %p (%p) (%dx%d) (%c)\n", pPixmap,
|
||||||
(void*)(ExaGetPixmapPriv(pPixmap)->area ?
|
(void*)(ExaGetPixmapPriv(pPixmap)->area ?
|
||||||
|
@ -231,10 +273,9 @@ exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area)
|
||||||
pExaPixmap->fb_ptr = NULL;
|
pExaPixmap->fb_ptr = NULL;
|
||||||
pExaPixmap->area = NULL;
|
pExaPixmap->area = NULL;
|
||||||
|
|
||||||
/* Mark it dirty now, to say that there is important data in the
|
/* Mark all valid bits as damaged, so they'll get copied to FB next time */
|
||||||
* system-memory copy.
|
REGION_UNION(pPixmap->drawable.pScreen, pDamageReg, pDamageReg,
|
||||||
*/
|
&pExaPixmap->validReg);
|
||||||
pExaPixmap->dirty = TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -413,32 +454,57 @@ exaMigrateTowardSys (PixmapPtr pPixmap)
|
||||||
* If the pixmap has both a framebuffer and system memory copy, this function
|
* If the pixmap has both a framebuffer and system memory copy, this function
|
||||||
* asserts that both of them are the same.
|
* asserts that both of them are the same.
|
||||||
*/
|
*/
|
||||||
static void
|
static Bool
|
||||||
exaAssertNotDirty (PixmapPtr pPixmap)
|
exaAssertNotDirty (PixmapPtr pPixmap)
|
||||||
{
|
{
|
||||||
ExaPixmapPriv (pPixmap);
|
ExaPixmapPriv (pPixmap);
|
||||||
CARD8 *dst, *src;
|
CARD8 *dst, *src;
|
||||||
int dst_pitch, src_pitch, data_row_bytes, y;
|
RegionPtr pValidReg = &pExaPixmap->validReg;
|
||||||
|
int dst_pitch, src_pitch, cpp, y, nbox = REGION_NUM_RECTS(pValidReg);
|
||||||
|
BoxPtr pBox = REGION_RECTS(pValidReg);
|
||||||
|
Bool ret = TRUE;
|
||||||
|
|
||||||
if (pExaPixmap == NULL || pExaPixmap->fb_ptr == NULL)
|
if (pExaPixmap == NULL || pExaPixmap->fb_ptr == NULL)
|
||||||
return;
|
return ret;
|
||||||
|
|
||||||
dst = pExaPixmap->sys_ptr;
|
dst = pExaPixmap->sys_ptr;
|
||||||
dst_pitch = pExaPixmap->sys_pitch;
|
dst_pitch = pExaPixmap->sys_pitch;
|
||||||
src = pExaPixmap->fb_ptr;
|
src = pExaPixmap->fb_ptr;
|
||||||
src_pitch = pExaPixmap->fb_pitch;
|
src_pitch = pExaPixmap->fb_pitch;
|
||||||
data_row_bytes = pPixmap->drawable.width *
|
cpp = pPixmap->drawable.bitsPerPixel / 8;
|
||||||
pPixmap->drawable.bitsPerPixel / 8;
|
|
||||||
|
|
||||||
exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
||||||
for (y = 0; y < pPixmap->drawable.height; y++) {
|
while (nbox--) {
|
||||||
if (memcmp(dst, src, data_row_bytes) != 0) {
|
int rowbytes;
|
||||||
abort();
|
|
||||||
}
|
pBox->x1 = max(pBox->x1, 0);
|
||||||
dst += dst_pitch;
|
pBox->y1 = max(pBox->y1, 0);
|
||||||
src += src_pitch;
|
pBox->x2 = min(pBox->x2, pPixmap->drawable.width);
|
||||||
|
pBox->y2 = min(pBox->y2, pPixmap->drawable.height);
|
||||||
|
|
||||||
|
if (pBox->x1 >= pBox->x2 || pBox->y1 >= pBox->y2)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
rowbytes = (pBox->x2 - pBox->x1) * cpp;
|
||||||
|
src += pBox->y1 * src_pitch + pBox->x1 * cpp;
|
||||||
|
dst += pBox->y1 * dst_pitch + pBox->x1 * cpp;
|
||||||
|
|
||||||
|
for (y = pBox->y2 - pBox->y1; y; y--) {
|
||||||
|
if (memcmp(dst + pBox->y1 * dst_pitch + pBox->x1 * cpp,
|
||||||
|
src + pBox->y1 * src_pitch + pBox->x1 * cpp,
|
||||||
|
(pBox->x2 - pBox->x1) * cpp) != 0) {
|
||||||
|
ret = FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
src += src_pitch;
|
||||||
|
dst += dst_pitch;
|
||||||
|
}
|
||||||
|
src -= pBox->y1 * src_pitch + pBox->x1 * cpp;
|
||||||
|
dst -= pBox->y1 * dst_pitch + pBox->x1 * cpp;
|
||||||
}
|
}
|
||||||
exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -462,8 +528,9 @@ exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel)
|
||||||
*/
|
*/
|
||||||
if (pExaScr->checkDirtyCorrectness) {
|
if (pExaScr->checkDirtyCorrectness) {
|
||||||
for (i = 0; i < npixmaps; i++) {
|
for (i = 0; i < npixmaps; i++) {
|
||||||
if (!exaPixmapIsDirty (pixmaps[i].pPix))
|
if (!exaPixmapIsDirty (pixmaps[i].pPix) &&
|
||||||
exaAssertNotDirty (pixmaps[i].pPix);
|
!exaAssertNotDirty (pixmaps[i].pPix))
|
||||||
|
ErrorF("%s: Pixmap %d dirty but not marked as such!\n", __func__, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* If anything is pinned in system memory, we won't be able to
|
/* If anything is pinned in system memory, we won't be able to
|
||||||
|
|
|
@ -81,15 +81,14 @@ ExaOffscreenKickOut (ScreenPtr pScreen, ExaOffscreenArea *area)
|
||||||
* @param save callback for when the area is evicted from memory
|
* @param save callback for when the area is evicted from memory
|
||||||
* @param privdata private data for the save callback.
|
* @param privdata private data for the save callback.
|
||||||
*
|
*
|
||||||
* Allocates offscreen memory from the device associated with pScreen. size and
|
* Allocates offscreen memory from the device associated with pScreen. size
|
||||||
* align deteremine where and how large the allocated area is, and locked will
|
* and align deteremine where and how large the allocated area is, and locked
|
||||||
* mark whether it should be held in card memory. privdata may be any pointer
|
* will mark whether it should be held in card memory. privdata may be any
|
||||||
* for the save callback when the area is removed.
|
* pointer for the save callback when the area is removed.
|
||||||
*
|
*
|
||||||
* Note that locked areas do get evicted on VT switch, because during that time
|
* Note that locked areas do get evicted on VT switch unless the driver
|
||||||
* all offscreen memory becomes inaccessible. This may change in the future,
|
* requested version 2.1 or newer behavior. In that case, the save callback is
|
||||||
* but drivers should be aware of this and provide a callback to mark that their
|
* still called.
|
||||||
* locked allocation was evicted, and then restore it if necessary on EnterVT.
|
|
||||||
*/
|
*/
|
||||||
ExaOffscreenArea *
|
ExaOffscreenArea *
|
||||||
exaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
|
exaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
|
||||||
|
@ -256,6 +255,9 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
|
||||||
return area;
|
return area;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ejects all offscreen areas, and uninitializes the offscreen memory manager.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
ExaOffscreenSwapOut (ScreenPtr pScreen)
|
ExaOffscreenSwapOut (ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
@ -283,12 +285,56 @@ ExaOffscreenSwapOut (ScreenPtr pScreen)
|
||||||
ExaOffscreenFini (pScreen);
|
ExaOffscreenFini (pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Ejects all pixmaps managed by EXA. */
|
||||||
|
static void
|
||||||
|
ExaOffscreenEjectPixmaps (ScreenPtr pScreen)
|
||||||
|
{
|
||||||
|
ExaScreenPriv (pScreen);
|
||||||
|
|
||||||
|
ExaOffscreenValidate (pScreen);
|
||||||
|
/* loop until a single free area spans the space */
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
ExaOffscreenArea *area;
|
||||||
|
|
||||||
|
for (area = pExaScr->info->offScreenAreas; area != NULL;
|
||||||
|
area = area->next)
|
||||||
|
{
|
||||||
|
if (area->state == ExaOffscreenRemovable &&
|
||||||
|
area->save == exaPixmapSave)
|
||||||
|
{
|
||||||
|
(void) ExaOffscreenKickOut (pScreen, area);
|
||||||
|
ExaOffscreenValidate (pScreen);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (area == NULL)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ExaOffscreenValidate (pScreen);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ExaOffscreenSwapIn (ScreenPtr pScreen)
|
ExaOffscreenSwapIn (ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
exaOffscreenInit (pScreen);
|
exaOffscreenInit (pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepares EXA for disabling of FB access, or restoring it.
|
||||||
|
*
|
||||||
|
* In version 2.1, the disabling results in pixmaps being ejected, while other
|
||||||
|
* allocations remain. With this plus the prevention of migration while
|
||||||
|
* swappedOut is set, EXA by itself should not cause any access of the
|
||||||
|
* framebuffer to occur while swapped out. Any remaining issues are the
|
||||||
|
* responsibility of the driver.
|
||||||
|
*
|
||||||
|
* Prior to version 2.1, all allocations, including locked ones, are ejected
|
||||||
|
* when access is disabled, and the allocator is torn down while swappedOut
|
||||||
|
* is set. This is more drastic, and caused implementation difficulties for
|
||||||
|
* many drivers that could otherwise handle the lack of FB access while
|
||||||
|
* swapped out.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
exaEnableDisableFBAccess (int index, Bool enable)
|
exaEnableDisableFBAccess (int index, Bool enable)
|
||||||
{
|
{
|
||||||
|
@ -296,10 +342,14 @@ exaEnableDisableFBAccess (int index, Bool enable)
|
||||||
ExaScreenPriv (pScreen);
|
ExaScreenPriv (pScreen);
|
||||||
|
|
||||||
if (!enable) {
|
if (!enable) {
|
||||||
ExaOffscreenSwapOut (pScreen);
|
if (pExaScr->info->exa_minor < 1)
|
||||||
|
ExaOffscreenSwapOut (pScreen);
|
||||||
|
else
|
||||||
|
ExaOffscreenEjectPixmaps (pScreen);
|
||||||
pExaScr->swappedOut = TRUE;
|
pExaScr->swappedOut = TRUE;
|
||||||
} else {
|
} else {
|
||||||
ExaOffscreenSwapIn (pScreen);
|
if (pExaScr->info->exa_minor < 1)
|
||||||
|
ExaOffscreenSwapIn (pScreen);
|
||||||
pExaScr->swappedOut = FALSE;
|
pExaScr->swappedOut = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -390,6 +440,7 @@ ExaOffscreenMarkUsed (PixmapPtr pPixmap)
|
||||||
if (area->state == ExaOffscreenRemovable)
|
if (area->state == ExaOffscreenRemovable)
|
||||||
area->score = (area->score * 7) / 8;
|
area->score = (area->score * 7) / 8;
|
||||||
}
|
}
|
||||||
|
iter = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
#ifdef RENDER
|
#ifdef RENDER
|
||||||
#include "fbpict.h"
|
#include "fbpict.h"
|
||||||
#endif
|
#endif
|
||||||
|
#include "damage.h"
|
||||||
|
|
||||||
#define DEBUG_TRACE_FALL 0
|
#define DEBUG_TRACE_FALL 0
|
||||||
#define DEBUG_MIGRATE 0
|
#define DEBUG_MIGRATE 0
|
||||||
|
@ -160,16 +161,16 @@ typedef struct {
|
||||||
unsigned int fb_size; /**< size of pixmap in framebuffer memory */
|
unsigned int fb_size; /**< size of pixmap in framebuffer memory */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If area is NULL, then dirty == TRUE means that the pixmap has been
|
* The damage record contains the areas of the pixmap's current location
|
||||||
* modified, so the contents are defined. Used to avoid uploads of
|
* (framebuffer or system) that have been damaged compared to the other
|
||||||
* undefined data.
|
* location.
|
||||||
*
|
|
||||||
* If area is non-NULL, then dirty == TRUE means that the pixmap data at
|
|
||||||
* pPixmap->devPrivate.ptr (either fb_ptr or sys_ptr) has been changed
|
|
||||||
* compared to the copy in the other location. This is used to avoid
|
|
||||||
* uploads/downloads of unmodified data.
|
|
||||||
*/
|
*/
|
||||||
Bool dirty;
|
DamagePtr pDamage;
|
||||||
|
/**
|
||||||
|
* The valid region marks the valid bits of a drawable (at least, as it's
|
||||||
|
* derived from damage, which may be overreported).
|
||||||
|
*/
|
||||||
|
RegionRec validReg;
|
||||||
} ExaPixmapPrivRec, *ExaPixmapPrivPtr;
|
} ExaPixmapPrivRec, *ExaPixmapPrivPtr;
|
||||||
|
|
||||||
typedef struct _ExaMigrationRec {
|
typedef struct _ExaMigrationRec {
|
||||||
|
@ -315,7 +316,7 @@ ExaCheckComposite (CARD8 op,
|
||||||
CARD16 height);
|
CARD16 height);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* exaoffscreen.c */
|
/* exa_offscreen.c */
|
||||||
void
|
void
|
||||||
ExaOffscreenMarkUsed (PixmapPtr pPixmap);
|
ExaOffscreenMarkUsed (PixmapPtr pPixmap);
|
||||||
|
|
||||||
|
@ -339,7 +340,10 @@ void
|
||||||
exaFinishAccess(DrawablePtr pDrawable, int index);
|
exaFinishAccess(DrawablePtr pDrawable, int index);
|
||||||
|
|
||||||
void
|
void
|
||||||
exaDrawableDirty(DrawablePtr pDrawable);
|
exaPixmapDirty(PixmapPtr pPix, int x1, int y1, int x2, int y2);
|
||||||
|
|
||||||
|
void
|
||||||
|
exaDrawableDirty(DrawablePtr pDrawable, int x1, int y1, int x2, int y2);
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
exaDrawableIsOffscreen (DrawablePtr pDrawable);
|
exaDrawableIsOffscreen (DrawablePtr pDrawable);
|
||||||
|
@ -409,9 +413,6 @@ void
|
||||||
exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
|
exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
|
||||||
|
|
||||||
void
|
void
|
||||||
exaMoveInPixmap (PixmapPtr pPixmap);
|
exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area);
|
||||||
|
|
||||||
void
|
|
||||||
exaMoveOutPixmap (PixmapPtr pPixmap);
|
|
||||||
|
|
||||||
#endif /* EXAPRIV_H */
|
#endif /* EXAPRIV_H */
|
||||||
|
|
|
@ -302,12 +302,12 @@ exaTryDriverSolidFill(PicturePtr pSrc,
|
||||||
(*pExaScr->info->Solid) (pDstPix,
|
(*pExaScr->info->Solid) (pDstPix,
|
||||||
pbox->x1 + dst_off_x, pbox->y1 + dst_off_y,
|
pbox->x1 + dst_off_x, pbox->y1 + dst_off_y,
|
||||||
pbox->x2 + dst_off_x, pbox->y2 + dst_off_y);
|
pbox->x2 + dst_off_x, pbox->y2 + dst_off_y);
|
||||||
|
exaPixmapDirty (pDstPix, pbox->x1 + dst_off_x, pbox->y1 + dst_off_y,
|
||||||
|
pbox->x2 + dst_off_x, pbox->y2 + dst_off_y);
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*pExaScr->info->DoneSolid) (pDstPix);
|
(*pExaScr->info->DoneSolid) (pDstPix);
|
||||||
exaMarkSync(pDst->pDrawable->pScreen);
|
exaMarkSync(pDst->pDrawable->pScreen);
|
||||||
exaDrawableDirty (pDst->pDrawable);
|
|
||||||
|
|
||||||
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -446,12 +446,12 @@ exaTryDriverComposite(CARD8 op,
|
||||||
pbox->y1 + dst_off_y,
|
pbox->y1 + dst_off_y,
|
||||||
pbox->x2 - pbox->x1,
|
pbox->x2 - pbox->x1,
|
||||||
pbox->y2 - pbox->y1);
|
pbox->y2 - pbox->y1);
|
||||||
|
exaPixmapDirty (pDstPix, pbox->x1 + dst_off_x, pbox->y1 + dst_off_y,
|
||||||
|
pbox->x2 + dst_off_x, pbox->y2 + dst_off_y);
|
||||||
pbox++;
|
pbox++;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*pExaScr->info->DoneComposite) (pDstPix);
|
(*pExaScr->info->DoneComposite) (pDstPix);
|
||||||
exaMarkSync(pDst->pDrawable->pScreen);
|
exaMarkSync(pDst->pDrawable->pScreen);
|
||||||
exaDrawableDirty (pDst->pDrawable);
|
|
||||||
|
|
||||||
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -572,9 +572,7 @@ exaComposite(CARD8 op,
|
||||||
if (pExaScr->swappedOut ||
|
if (pExaScr->swappedOut ||
|
||||||
pSrc->pDrawable == NULL || (pMask != NULL && pMask->pDrawable == NULL))
|
pSrc->pDrawable == NULL || (pMask != NULL && pMask->pDrawable == NULL))
|
||||||
{
|
{
|
||||||
ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
|
goto fallback;
|
||||||
xMask, yMask, xDst, yDst, width, height);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove repeat in source if useless */
|
/* Remove repeat in source if useless */
|
||||||
|
@ -683,12 +681,18 @@ exaComposite(CARD8 op,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fallback:
|
||||||
#if DEBUG_TRACE_FALL
|
#if DEBUG_TRACE_FALL
|
||||||
exaPrintCompositeFallback (op, pSrc, pMask, pDst);
|
exaPrintCompositeFallback (op, pSrc, pMask, pDst);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
|
ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
|
||||||
xMask, yMask, xDst, yDst, width, height);
|
xMask, yMask, xDst, yDst, width, height);
|
||||||
|
exaDrawableDirty(pDst->pDrawable,
|
||||||
|
pDst->pDrawable->x + xDst,
|
||||||
|
pDst->pDrawable->y + yDst,
|
||||||
|
pDst->pDrawable->x + xDst + width,
|
||||||
|
pDst->pDrawable->y + yDst + height);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
pSrc->repeat = saveSrcRepeat;
|
pSrc->repeat = saveSrcRepeat;
|
||||||
|
@ -710,16 +714,19 @@ void
|
||||||
exaRasterizeTrapezoid (PicturePtr pPicture, xTrapezoid *trap,
|
exaRasterizeTrapezoid (PicturePtr pPicture, xTrapezoid *trap,
|
||||||
int x_off, int y_off)
|
int x_off, int y_off)
|
||||||
{
|
{
|
||||||
|
DrawablePtr pDraw = pPicture->pDrawable;
|
||||||
ExaMigrationRec pixmaps[1];
|
ExaMigrationRec pixmaps[1];
|
||||||
|
|
||||||
pixmaps[0].as_dst = TRUE;
|
pixmaps[0].as_dst = TRUE;
|
||||||
pixmaps[0].as_src = TRUE;
|
pixmaps[0].as_src = TRUE;
|
||||||
pixmaps[0].pPix = exaGetDrawablePixmap (pPicture->pDrawable);
|
pixmaps[0].pPix = exaGetDrawablePixmap (pDraw);
|
||||||
exaDoMigration(pixmaps, 1, FALSE);
|
exaDoMigration(pixmaps, 1, FALSE);
|
||||||
|
|
||||||
exaPrepareAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
|
exaPrepareAccess(pDraw, EXA_PREPARE_DEST);
|
||||||
fbRasterizeTrapezoid(pPicture, trap, x_off, y_off);
|
fbRasterizeTrapezoid(pPicture, trap, x_off, y_off);
|
||||||
exaFinishAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
|
exaDrawableDirty(pDraw, pDraw->x, pDraw->y,
|
||||||
|
pDraw->x + pDraw->width, pDraw->y + pDraw->height);
|
||||||
|
exaFinishAccess(pDraw, EXA_PREPARE_DEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -730,16 +737,19 @@ void
|
||||||
exaAddTriangles (PicturePtr pPicture, INT16 x_off, INT16 y_off, int ntri,
|
exaAddTriangles (PicturePtr pPicture, INT16 x_off, INT16 y_off, int ntri,
|
||||||
xTriangle *tris)
|
xTriangle *tris)
|
||||||
{
|
{
|
||||||
|
DrawablePtr pDraw = pPicture->pDrawable;
|
||||||
ExaMigrationRec pixmaps[1];
|
ExaMigrationRec pixmaps[1];
|
||||||
|
|
||||||
pixmaps[0].as_dst = TRUE;
|
pixmaps[0].as_dst = TRUE;
|
||||||
pixmaps[0].as_src = TRUE;
|
pixmaps[0].as_src = TRUE;
|
||||||
pixmaps[0].pPix = exaGetDrawablePixmap (pPicture->pDrawable);
|
pixmaps[0].pPix = exaGetDrawablePixmap (pDraw);
|
||||||
exaDoMigration(pixmaps, 1, FALSE);
|
exaDoMigration(pixmaps, 1, FALSE);
|
||||||
|
|
||||||
exaPrepareAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
|
exaPrepareAccess(pDraw, EXA_PREPARE_DEST);
|
||||||
fbAddTriangles(pPicture, x_off, y_off, ntri, tris);
|
fbAddTriangles(pPicture, x_off, y_off, ntri, tris);
|
||||||
exaFinishAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
|
exaDrawableDirty(pDraw, pDraw->x, pDraw->y,
|
||||||
|
pDraw->x + pDraw->width, pDraw->y + pDraw->height);
|
||||||
|
exaFinishAccess(pDraw, EXA_PREPARE_DEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -989,15 +999,17 @@ exaGlyphs (CARD8 op,
|
||||||
* First we try to use UploadToScreen, if we can, then we fall back
|
* First we try to use UploadToScreen, if we can, then we fall back
|
||||||
* to a plain exaCopyArea in case of failure.
|
* to a plain exaCopyArea in case of failure.
|
||||||
*/
|
*/
|
||||||
if (!pExaScr->info->UploadToScreen ||
|
if (pExaScr->info->UploadToScreen &&
|
||||||
!exaPixmapIsOffscreen(pPixmap) ||
|
exaPixmapIsOffscreen(pPixmap) &&
|
||||||
!(*pExaScr->info->UploadToScreen) (pPixmap, 0, 0,
|
(*pExaScr->info->UploadToScreen) (pPixmap, 0, 0,
|
||||||
glyph->info.width,
|
glyph->info.width,
|
||||||
glyph->info.height,
|
glyph->info.height,
|
||||||
glyphdata,
|
glyphdata,
|
||||||
PixmapBytePad(glyph->info.width,
|
PixmapBytePad(glyph->info.width,
|
||||||
list->format->depth)))
|
list->format->depth)))
|
||||||
{
|
{
|
||||||
|
exaMarkSync (pScreen);
|
||||||
|
} else {
|
||||||
/* Set up the scratch pixmap/GC for doing a CopyArea. */
|
/* Set up the scratch pixmap/GC for doing a CopyArea. */
|
||||||
if (pScratchPixmap == NULL) {
|
if (pScratchPixmap == NULL) {
|
||||||
/* Get a scratch pixmap to wrap the original glyph data */
|
/* Get a scratch pixmap to wrap the original glyph data */
|
||||||
|
@ -1028,10 +1040,11 @@ exaGlyphs (CARD8 op,
|
||||||
|
|
||||||
exaCopyArea (&pScratchPixmap->drawable, &pPixmap->drawable, pGC,
|
exaCopyArea (&pScratchPixmap->drawable, &pPixmap->drawable, pGC,
|
||||||
0, 0, glyph->info.width, glyph->info.height, 0, 0);
|
0, 0, glyph->info.width, glyph->info.height, 0, 0);
|
||||||
} else {
|
|
||||||
exaDrawableDirty (&pPixmap->drawable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exaPixmapDirty (pPixmap, 0, 0,
|
||||||
|
glyph->info.width, glyph->info.height);
|
||||||
|
|
||||||
if (maskFormat)
|
if (maskFormat)
|
||||||
{
|
{
|
||||||
exaComposite (PictOpAdd, pPicture, NULL, pMask, 0, 0, 0, 0,
|
exaComposite (PictOpAdd, pPicture, NULL, pMask, 0, 0, 0, 0,
|
||||||
|
|
|
@ -200,11 +200,33 @@ ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
|
||||||
int nrect, xRectangle *prect)
|
int nrect, xRectangle *prect)
|
||||||
{
|
{
|
||||||
EXA_FALLBACK(("to %p (%c)\n", pDrawable, exaDrawableLocation(pDrawable)));
|
EXA_FALLBACK(("to %p (%c)\n", pDrawable, exaDrawableLocation(pDrawable)));
|
||||||
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
|
|
||||||
exaPrepareAccessGC (pGC);
|
if (nrect) {
|
||||||
fbPolyFillRect (pDrawable, pGC, nrect, prect);
|
int x1 = max(prect->x, 0), y1 = max(prect->y, 0);
|
||||||
exaFinishAccessGC (pGC);
|
int x2 = min(prect->x + prect->width, pDrawable->width);
|
||||||
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
int y2 = min(prect->y + prect->height, pDrawable->height);
|
||||||
|
|
||||||
|
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
|
||||||
|
exaPrepareAccessGC (pGC);
|
||||||
|
fbPolyFillRect (pDrawable, pGC, nrect, prect);
|
||||||
|
exaFinishAccessGC (pGC);
|
||||||
|
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
||||||
|
|
||||||
|
/* Only track bounding box of damage, as this path can degenerate to
|
||||||
|
* zillions of damage boxes
|
||||||
|
*/
|
||||||
|
while (--nrect)
|
||||||
|
{
|
||||||
|
prect++;
|
||||||
|
x1 = min(x1, prect->x);
|
||||||
|
x2 = max(x2, prect->x + prect->width);
|
||||||
|
y1 = min(y1, prect->y);
|
||||||
|
y2 = max(y2, prect->y + prect->height);
|
||||||
|
}
|
||||||
|
|
||||||
|
exaDrawableDirty (pDrawable, pDrawable->x + x1, pDrawable->y + y1,
|
||||||
|
pDrawable->x + x2, pDrawable->y + y2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
98
fb/fbmmx.c
98
fb/fbmmx.c
|
@ -1338,6 +1338,104 @@ fbCompositeSrc_8888x8888mmx (CARD8 op,
|
||||||
_mm_empty();
|
_mm_empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
fbCompositeSrc_8888x0565mmx (CARD8 op,
|
||||||
|
PicturePtr pSrc,
|
||||||
|
PicturePtr pMask,
|
||||||
|
PicturePtr pDst,
|
||||||
|
INT16 xSrc,
|
||||||
|
INT16 ySrc,
|
||||||
|
INT16 xMask,
|
||||||
|
INT16 yMask,
|
||||||
|
INT16 xDst,
|
||||||
|
INT16 yDst,
|
||||||
|
CARD16 width,
|
||||||
|
CARD16 height)
|
||||||
|
{
|
||||||
|
CARD16 *dstLine, *dst;
|
||||||
|
CARD32 *srcLine, *src;
|
||||||
|
FbStride dstStride, srcStride;
|
||||||
|
CARD16 w;
|
||||||
|
|
||||||
|
CHECKPOINT();
|
||||||
|
|
||||||
|
fbComposeGetStart (pDst, xDst, yDst, CARD16, dstStride, dstLine, 1);
|
||||||
|
fbComposeGetStart (pSrc, xSrc, ySrc, CARD32, srcStride, srcLine, 1);
|
||||||
|
|
||||||
|
assert (pSrc->pDrawable == pMask->pDrawable);
|
||||||
|
|
||||||
|
while (height--)
|
||||||
|
{
|
||||||
|
dst = dstLine;
|
||||||
|
dstLine += dstStride;
|
||||||
|
src = srcLine;
|
||||||
|
srcLine += srcStride;
|
||||||
|
w = width;
|
||||||
|
|
||||||
|
CHECKPOINT();
|
||||||
|
|
||||||
|
while (w && (unsigned long)dst & 7)
|
||||||
|
{
|
||||||
|
__m64 vsrc = load8888 (*src);
|
||||||
|
ullong d = *dst;
|
||||||
|
__m64 vdest = expand565 ((__m64)d, 0);
|
||||||
|
|
||||||
|
vdest = pack565(over(vsrc, expand_alpha(vsrc), vdest), vdest, 0);
|
||||||
|
|
||||||
|
*dst = (ullong)vdest;
|
||||||
|
|
||||||
|
w--;
|
||||||
|
dst++;
|
||||||
|
src++;
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECKPOINT();
|
||||||
|
|
||||||
|
while (w >= 4)
|
||||||
|
{
|
||||||
|
__m64 vsrc0, vsrc1, vsrc2, vsrc3;
|
||||||
|
__m64 vdest;
|
||||||
|
|
||||||
|
vsrc0 = load8888(*(src + 0));
|
||||||
|
vsrc1 = load8888(*(src + 1));
|
||||||
|
vsrc2 = load8888(*(src + 2));
|
||||||
|
vsrc3 = load8888(*(src + 3));
|
||||||
|
|
||||||
|
vdest = *(__m64 *)dst;
|
||||||
|
|
||||||
|
vdest = pack565(over(vsrc0, expand_alpha(vsrc0), expand565(vdest, 0)), vdest, 0);
|
||||||
|
vdest = pack565(over(vsrc1, expand_alpha(vsrc1), expand565(vdest, 1)), vdest, 1);
|
||||||
|
vdest = pack565(over(vsrc2, expand_alpha(vsrc2), expand565(vdest, 2)), vdest, 2);
|
||||||
|
vdest = pack565(over(vsrc3, expand_alpha(vsrc3), expand565(vdest, 3)), vdest, 3);
|
||||||
|
|
||||||
|
*(__m64 *)dst = vdest;
|
||||||
|
|
||||||
|
w -= 4;
|
||||||
|
dst += 4;
|
||||||
|
src += 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECKPOINT();
|
||||||
|
|
||||||
|
while (w)
|
||||||
|
{
|
||||||
|
__m64 vsrc = load8888 (*src);
|
||||||
|
ullong d = *dst;
|
||||||
|
__m64 vdest = expand565 ((__m64)d, 0);
|
||||||
|
|
||||||
|
vdest = pack565(over(vsrc, expand_alpha(vsrc), vdest), vdest, 0);
|
||||||
|
|
||||||
|
*dst = (ullong)vdest;
|
||||||
|
|
||||||
|
w--;
|
||||||
|
dst++;
|
||||||
|
src++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_mm_empty();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
fbCompositeSolidMask_nx8x8888mmx (CARD8 op,
|
fbCompositeSolidMask_nx8x8888mmx (CARD8 op,
|
||||||
PicturePtr pSrc,
|
PicturePtr pSrc,
|
||||||
|
|
12
fb/fbmmx.h
12
fb/fbmmx.h
|
@ -130,6 +130,18 @@ void fbCompositeSrc_8888RevNPx8888mmx (CARD8 op,
|
||||||
INT16 yDst,
|
INT16 yDst,
|
||||||
CARD16 width,
|
CARD16 width,
|
||||||
CARD16 height);
|
CARD16 height);
|
||||||
|
void fbCompositeSrc_8888x0565mmx (CARD8 op,
|
||||||
|
PicturePtr pSrc,
|
||||||
|
PicturePtr pMask,
|
||||||
|
PicturePtr pDst,
|
||||||
|
INT16 xSrc,
|
||||||
|
INT16 ySrc,
|
||||||
|
INT16 xMask,
|
||||||
|
INT16 yMask,
|
||||||
|
INT16 xDst,
|
||||||
|
INT16 yDst,
|
||||||
|
CARD16 width,
|
||||||
|
CARD16 height);
|
||||||
void fbCompositeSrc_8888RevNPx0565mmx (CARD8 op,
|
void fbCompositeSrc_8888RevNPx0565mmx (CARD8 op,
|
||||||
PicturePtr pSrc,
|
PicturePtr pSrc,
|
||||||
PicturePtr pMask,
|
PicturePtr pMask,
|
||||||
|
|
18
fb/fbpict.c
18
fb/fbpict.c
|
@ -1175,7 +1175,12 @@ fbComposite (CARD8 op,
|
||||||
func = fbCompositeSrc_8888x0888;
|
func = fbCompositeSrc_8888x0888;
|
||||||
break;
|
break;
|
||||||
case PICT_r5g6b5:
|
case PICT_r5g6b5:
|
||||||
func = fbCompositeSrc_8888x0565;
|
#ifdef USE_MMX
|
||||||
|
if (fbHaveMMX())
|
||||||
|
func = fbCompositeSrc_8888x0565mmx;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
func = fbCompositeSrc_8888x0565;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -1221,7 +1226,12 @@ fbComposite (CARD8 op,
|
||||||
func = fbCompositeSrc_8888x0888;
|
func = fbCompositeSrc_8888x0888;
|
||||||
break;
|
break;
|
||||||
case PICT_b5g6r5:
|
case PICT_b5g6r5:
|
||||||
func = fbCompositeSrc_8888x0565;
|
#ifdef USE_MMX
|
||||||
|
if (fbHaveMMX())
|
||||||
|
func = fbCompositeSrc_8888x0565mmx;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
func = fbCompositeSrc_8888x0565;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -1516,7 +1526,9 @@ static unsigned int detectCPUFeatures(void) {
|
||||||
features |= SSE;
|
features |= SSE;
|
||||||
if (result & (1 << 26))
|
if (result & (1 << 26))
|
||||||
features |= SSE2;
|
features |= SSE2;
|
||||||
if ((result & MMX) && !(result & SSE) && (strcmp(vendor, "AuthenticAMD") == 0)) {
|
if ((features & MMX) && !(features & SSE) &&
|
||||||
|
(strcmp(vendor, "AuthenticAMD") == 0 ||
|
||||||
|
strcmp(vendor, "Geode by NSC") == 0)) {
|
||||||
/* check for AMD MMX extensions */
|
/* check for AMD MMX extensions */
|
||||||
|
|
||||||
unsigned int result;
|
unsigned int result;
|
||||||
|
|
|
@ -105,9 +105,6 @@ fbCanGetSolid(PicturePtr pict)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define fbCanGetSolid(pict) \
|
|
||||||
(pict->pDrawable != NULL && pict->pDrawable->width == 1 && pict->pDrawable->height == 1)
|
|
||||||
|
|
||||||
#define fbComposeGetSolid(pict, bits, fmt) { \
|
#define fbComposeGetSolid(pict, bits, fmt) { \
|
||||||
FbBits *__bits__; \
|
FbBits *__bits__; \
|
||||||
FbStride __stride__; \
|
FbStride __stride__; \
|
||||||
|
|
|
@ -1,52 +1,249 @@
|
||||||
|
noinst_LIBRARIES = libdarwinShared.a
|
||||||
|
libdarwin_XINPUT_SRCS = darwinXinput.c
|
||||||
|
|
||||||
|
AM_CFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
|
||||||
|
AM_CPPFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
|
||||||
|
INCLUDES = @XORG_INCS@
|
||||||
|
|
||||||
|
DEFS = @DEFS@ -DUSE_NEW_CLUT
|
||||||
|
|
||||||
|
if XQUARTZ
|
||||||
|
XQUARTZ_SUBDIRS = bundle quartz
|
||||||
|
endif
|
||||||
|
|
||||||
|
SUBDIRS = \
|
||||||
|
iokit \
|
||||||
|
$(XQUARTZ_SUBDIRS) \
|
||||||
|
utils \
|
||||||
|
.
|
||||||
|
|
||||||
|
|
||||||
|
darwinappdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app
|
||||||
|
|
||||||
|
|
||||||
|
libdarwinShared_a_SOURCES = darwin.c \
|
||||||
|
darwinEvents.c \
|
||||||
|
darwinKeyboard.c \
|
||||||
|
$(darwin_XINPUT_SRCS)
|
||||||
|
|
||||||
|
bin_PROGRAMS = XDarwin
|
||||||
|
XDarwin_SOURCES = \
|
||||||
|
$(top_srcdir)/fb/fbcmap.c \
|
||||||
|
$(top_srcdir)/mi/miinitext.c \
|
||||||
|
$(top_srcdir)/Xi/stubs.c
|
||||||
|
XDarwin_LDADD = \
|
||||||
|
$(top_builddir)/dix/dixfonts.lo \
|
||||||
|
$(top_builddir)/dix/libdix.la \
|
||||||
|
$(top_builddir)/config/libconfig.a \
|
||||||
|
$(top_builddir)/os/libos.la \
|
||||||
|
./libdarwinShared.a \
|
||||||
|
./iokit/libiokit.a \
|
||||||
|
$(top_builddir)/dix/libxpstubs.la \
|
||||||
|
$(top_builddir)/miext/shadow/libshadow.la \
|
||||||
|
$(top_builddir)/fb/libfb.la \
|
||||||
|
$(top_builddir)/composite/libcomposite.la \
|
||||||
|
$(top_builddir)/damageext/libdamageext.la \
|
||||||
|
$(top_builddir)/miext/damage/libdamage.la \
|
||||||
|
$(top_builddir)/xfixes/libxfixes.la \
|
||||||
|
$(top_builddir)/miext/cw/libcw.la \
|
||||||
|
$(top_builddir)/Xext/libXext.la \
|
||||||
|
$(top_builddir)/xkb/libxkb.la \
|
||||||
|
$(top_builddir)/xkb/libxkbstubs.la \
|
||||||
|
$(top_builddir)/Xi/libXi.la \
|
||||||
|
$(top_builddir)/dbe/libdbe.la \
|
||||||
|
$(top_builddir)/record/librecord.la \
|
||||||
|
$(top_builddir)/XTrap/libxtrap.la \
|
||||||
|
$(XGLX_LIBS) \
|
||||||
|
$(top_builddir)/miext/rootless/librootless.la \
|
||||||
|
$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
|
||||||
|
$(top_builddir)/miext/rootless/accel/librlAccel.la \
|
||||||
|
@XORG_LIBS@ \
|
||||||
|
-lXau -lXdmcp -lXfont -lfreetype
|
||||||
|
|
||||||
|
XDarwin_LDFLAGS = \
|
||||||
|
-XCClinker -Objc \
|
||||||
|
-Wl,-u,_miDCInitialize \
|
||||||
|
-Wl,-framework,IOKit
|
||||||
|
|
||||||
|
XDarwin_CFLAGS = -DINXDARWIN
|
||||||
|
if XQUARTZ
|
||||||
|
macosdir = $(darwinappdir)/Contents/MacOS
|
||||||
|
|
||||||
|
DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server
|
||||||
|
|
||||||
|
macos_PROGRAMS = XDarwinApp
|
||||||
|
|
||||||
|
XDarwinApp_SOURCES = \
|
||||||
|
$(top_srcdir)/fb/fbcmap.c \
|
||||||
|
$(top_srcdir)/mi/miinitext.c \
|
||||||
|
$(top_srcdir)/Xi/stubs.c
|
||||||
|
|
||||||
|
XDarwinApp_LDADD = \
|
||||||
|
$(top_builddir)/dix/dixfonts.lo \
|
||||||
|
$(top_builddir)/dix/libdix.la \
|
||||||
|
$(top_builddir)/config/libconfig.a \
|
||||||
|
$(top_builddir)/os/libos.la \
|
||||||
|
./quartz/XApplication.o \
|
||||||
|
./libdarwinShared.a \
|
||||||
|
./quartz/libXQuartz.a \
|
||||||
|
$(top_builddir)/dix/libxpstubs.la \
|
||||||
|
$(top_builddir)/miext/shadow/libshadow.la \
|
||||||
|
$(top_builddir)/fb/libfb.la \
|
||||||
|
$(top_builddir)/composite/libcomposite.la \
|
||||||
|
$(top_builddir)/damageext/libdamageext.la \
|
||||||
|
$(top_builddir)/miext/damage/libdamage.la \
|
||||||
|
$(top_builddir)/xfixes/libxfixes.la \
|
||||||
|
$(top_builddir)/miext/cw/libcw.la \
|
||||||
|
$(top_builddir)/Xext/libXext.la \
|
||||||
|
$(top_builddir)/xkb/libxkb.la \
|
||||||
|
$(top_builddir)/xkb/libxkbstubs.la \
|
||||||
|
$(top_builddir)/Xi/libXi.la \
|
||||||
|
$(top_builddir)/dbe/libdbe.la \
|
||||||
|
$(top_builddir)/record/librecord.la \
|
||||||
|
$(top_builddir)/XTrap/libxtrap.la \
|
||||||
|
$(XGLX_LIBS) \
|
||||||
|
$(top_builddir)/miext/rootless/librootless.la \
|
||||||
|
$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
|
||||||
|
$(top_builddir)/miext/rootless/accel/librlAccel.la \
|
||||||
|
@XORG_LIBS@ \
|
||||||
|
-lXau -lXdmcp -lXfont -lfreetype \
|
||||||
|
$(top_builddir)/fb/libfb.la
|
||||||
|
|
||||||
|
XDarwinApp_LDFLAGS = \
|
||||||
|
-XCClinker -Objc \
|
||||||
|
-Wl,-u,_miDCInitialize \
|
||||||
|
-Wl,-framework,Carbon \
|
||||||
|
-Wl,-framework,ApplicationServices \
|
||||||
|
-Wl,-framework,Cocoa \
|
||||||
|
-Wl,-framework,CoreAudio \
|
||||||
|
-Wl,-framework,IOKit
|
||||||
|
|
||||||
|
HOOK_TARGETS = xquartz-install-hook
|
||||||
|
|
||||||
|
|
||||||
|
crplugindir = $(darwinappdir)/Contents/Resources/cr.bundle/Contents/MacOS
|
||||||
|
crplugin_LTLIBRARIES = cr.la
|
||||||
|
cr_la_SOURCES =
|
||||||
|
cr_la_LIBADD = \
|
||||||
|
quartz/cr/crAppleWM.o \
|
||||||
|
quartz/cr/crFrame.o \
|
||||||
|
quartz/cr/crScreen.o \
|
||||||
|
quartz/fullscreen/quartzCursor.o \
|
||||||
|
quartz/cr/XView.o \
|
||||||
|
$(top_builddir)/miext/rootless/librootless.la \
|
||||||
|
$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
|
||||||
|
$(top_builddir)/miext/rootless/accel/librlAccel.la
|
||||||
|
cr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
|
||||||
|
-Wl,-framework,Cocoa \
|
||||||
|
-Wl,-framework,Carbon \
|
||||||
|
-XCClinker -ObjC \
|
||||||
|
-XCClinker -bundle_loader -XCClinker XDarwinApp \
|
||||||
|
-module -avoid-version -no-undefined
|
||||||
|
cr_la_DEPENDENCIES = XDarwinApp
|
||||||
|
|
||||||
|
fullscreenplugindir = $(darwinappdir)/Contents/Resources/fullscreen.bundle/Contents/MacOS
|
||||||
|
fullscreenplugin_LTLIBRARIES = fullscreen.la
|
||||||
|
fullscreen_la_SOURCES =
|
||||||
|
fullscreen_la_LIBADD = \
|
||||||
|
quartz/fullscreen/fullscreen.o \
|
||||||
|
quartz/fullscreen/quartzCursor.o \
|
||||||
|
$(top_builddir)/miext/shadow/libshadow.la
|
||||||
|
|
||||||
|
fullscreen_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
|
||||||
|
-XCClinker -bundle_loader -XCClinker XDarwinApp \
|
||||||
|
-module -avoid-version -no-undefined
|
||||||
|
fullscreen_la_DEPENDENCIES = XDarwinApp
|
||||||
|
|
||||||
|
if GLX
|
||||||
|
glxMesaplugindir = $(darwinappdir)/Contents/Resources/glxMesa.bundle/Contents/MacOS
|
||||||
|
glxMesaplugin_LTLIBRARIES = glxMesa.la
|
||||||
|
glxMesa_la_SOURCES =
|
||||||
|
glxMesa_la_LIBADD = \
|
||||||
|
$(top_builddir)/GL/glx/libglx.la \
|
||||||
|
$(top_builddir)/GL/mesa/libGLcore.la
|
||||||
|
glxMesa_la_LDFLAGS = -shrext '' \
|
||||||
|
-Wl,-framework,AGL \
|
||||||
|
-Wl,-framework,OpenGL \
|
||||||
|
-XCClinker -ObjC \
|
||||||
|
-XCClinker -bundle_loader -XCClinker XDarwinApp \
|
||||||
|
-module -avoid-version -no-undefined
|
||||||
|
glxMesa_la_DEPENDENCIES = XDarwinApp
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
if HAVE_X_PLUGIN
|
||||||
|
|
||||||
|
xprplugindir = $(darwinappdir)/Contents/Resources/xpr.bundle/Contents/MacOS
|
||||||
|
xprplugin_LTLIBRARIES = xpr.la
|
||||||
|
xpr_la_SOURCES =
|
||||||
|
xpr_la_LIBADD = \
|
||||||
|
quartz/xpr/appledri.o \
|
||||||
|
quartz/xpr/dri.o \
|
||||||
|
quartz/xpr/xprAppleWM.o \
|
||||||
|
quartz/xpr/xprCursor.o \
|
||||||
|
quartz/xpr/xprFrame.o \
|
||||||
|
quartz/xpr/xprScreen.o \
|
||||||
|
quartz/xpr/x-hash.o \
|
||||||
|
quartz/xpr/x-hook.o \
|
||||||
|
quartz/xpr/x-list.o \
|
||||||
|
$(top_builddir)/miext/rootless/librootless.la \
|
||||||
|
$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
|
||||||
|
$(top_builddir)/miext/rootless/accel/librlAccel.la
|
||||||
|
xpr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
|
||||||
|
-lXplugin \
|
||||||
|
-XCClinker -bundle_loader -XCClinker XDarwinApp \
|
||||||
|
-module -avoid-version -no-undefined
|
||||||
|
xpr_la_DEPENDENCIES = XDarwinApp
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
if HAVE_AGL_FRAMEWORK
|
||||||
|
glxCGLplugindir = $(darwinappdir)/Contents/Resources/glxCGL.bundle/Contents/MacOS
|
||||||
|
glxCGLplugin_LTLIBRARIES = glxCGL.la
|
||||||
|
glxCGL_la_SOURCES =
|
||||||
|
glxCGL_la_LIBADD = \
|
||||||
|
$(top_builddir)/GL/glx/glxext.o \
|
||||||
|
$(top_builddir)/GL/glx/libglx.a \
|
||||||
|
$(top_builddir)/GL/apple/libAGLcore.a
|
||||||
|
glxCGL_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
|
||||||
|
-Wl,-framework,AGL \
|
||||||
|
-Wl,-framework,OpenGL \
|
||||||
|
-XCClinker -ObjC \
|
||||||
|
-XCClinker -bundle_loader -XCClinker XDarwinApp \
|
||||||
|
-module -avoid-version -no-undefined
|
||||||
|
glxCGL_la_DEPENDENCIES = XDarwinApp
|
||||||
|
|
||||||
|
|
||||||
|
glxAGLplugindir = $(darwinappdir)/Contents/Resources/glxAGL.bundle/Contents/MacOS
|
||||||
|
glxAGLplugin_LTLIBRARIES = glxAGL.la
|
||||||
|
glxAGL_la_SOURCES =
|
||||||
|
glxAGL_la_LIBADD = \
|
||||||
|
$(top_builddir)/GL/glx/glxext.o \
|
||||||
|
$(top_builddir)/GL/glx/libglx.a \
|
||||||
|
$(top_builddir)/GL/apple/libAGLcore.a
|
||||||
|
glxAGL_la_LDFLAGS = -shrext '' \
|
||||||
|
-Wl,-framework,AGL \
|
||||||
|
-Wl,-framework,OpenGL \
|
||||||
|
-XCClinker -ObjC \
|
||||||
|
-XCClinker -bundle_loader -XCClinker XDarwinApp \
|
||||||
|
-module -avoid-version -no-undefined
|
||||||
|
glxAGL_la_DEPENDENCIES = XDarwinApp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
man1_MANS = XDarwin.man
|
||||||
|
|
||||||
|
uninstall-hook:
|
||||||
|
rm -rf $(DESTDIR)$(macosdir)/XDarwin
|
||||||
|
|
||||||
|
install-data-hook: $(HOOK_TARGETS)
|
||||||
|
|
||||||
|
xquartz-install-hook:
|
||||||
|
mv $(DESTDIR)$(macosdir)/XDarwinApp $(DESTDIR)$(macosdir)/XDarwin
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
bundle/Dutch.lproj/Credits.rtf \
|
|
||||||
bundle/Dutch.lproj/Localizable.strings \
|
|
||||||
bundle/Dutch.lproj/MainMenu.nib/classes.nib \
|
|
||||||
bundle/Dutch.lproj/MainMenu.nib/objects.nib \
|
|
||||||
bundle/Dutch.lproj/XDarwinHelp.html.cpp \
|
|
||||||
bundle/English.lproj/Credits.rtf \
|
|
||||||
bundle/English.lproj/InfoPlist.strings.cpp \
|
|
||||||
bundle/English.lproj/Localizable.strings \
|
|
||||||
bundle/English.lproj/MainMenu.nib/classes.nib \
|
|
||||||
bundle/English.lproj/MainMenu.nib/objects.nib \
|
|
||||||
bundle/English.lproj/XDarwinHelp.html.cpp \
|
|
||||||
bundle/French.lproj/Credits.rtf \
|
|
||||||
bundle/French.lproj/Localizable.strings \
|
|
||||||
bundle/French.lproj/MainMenu.nib/classes.nib \
|
|
||||||
bundle/French.lproj/MainMenu.nib/objects.nib \
|
|
||||||
bundle/French.lproj/XDarwinHelp.html.cpp \
|
|
||||||
bundle/German.lproj/Credits.rtf \
|
|
||||||
bundle/German.lproj/Localizable.strings \
|
|
||||||
bundle/German.lproj/MainMenu.nib/classes.nib \
|
|
||||||
bundle/German.lproj/MainMenu.nib/objects.nib \
|
|
||||||
bundle/German.lproj/XDarwinHelp.html.cpp \
|
|
||||||
bundle/Japanese.lproj/Credits.rtf \
|
|
||||||
bundle/Japanese.lproj/Localizable.strings \
|
|
||||||
bundle/Japanese.lproj/MainMenu.nib/classes.nib \
|
|
||||||
bundle/Japanese.lproj/MainMenu.nib/objects.nib \
|
|
||||||
bundle/Japanese.lproj/XDarwinHelp.html.cpp \
|
|
||||||
bundle/ko.lproj/Credits.rtf \
|
|
||||||
bundle/ko.lproj/Localizable.strings \
|
|
||||||
bundle/ko.lproj/MainMenu.nib/classes.nib \
|
|
||||||
bundle/ko.lproj/MainMenu.nib/objects.nib \
|
|
||||||
bundle/ko.lproj/XDarwinHelp.html.cpp \
|
|
||||||
bundle/Portuguese.lproj/Credits.rtf \
|
|
||||||
bundle/Portuguese.lproj/Localizable.strings \
|
|
||||||
bundle/Portuguese.lproj/MainMenu.nib/classes.nib \
|
|
||||||
bundle/Portuguese.lproj/MainMenu.nib/objects.nib \
|
|
||||||
bundle/Portuguese.lproj/XDarwinHelp.html.cpp \
|
|
||||||
bundle/Spanish.lproj/Credits.rtf \
|
|
||||||
bundle/Spanish.lproj/Localizable.strings \
|
|
||||||
bundle/Spanish.lproj/MainMenu.nib/classes.nib \
|
|
||||||
bundle/Spanish.lproj/MainMenu.nib/objects.nib \
|
|
||||||
bundle/Spanish.lproj/XDarwinHelp.html.cpp \
|
|
||||||
bundle/startXClients.cpp \
|
|
||||||
bundle/Swedish.lproj/Credits.rtf \
|
|
||||||
bundle/Swedish.lproj/Localizable.strings \
|
|
||||||
bundle/Swedish.lproj/MainMenu.nib/classes.nib \
|
|
||||||
bundle/Swedish.lproj/MainMenu.nib/objects.nib \
|
|
||||||
bundle/Swedish.lproj/XDarwinHelp.html.cpp \
|
|
||||||
bundle/XDarwin.icns \
|
|
||||||
darwin.c \
|
darwin.c \
|
||||||
darwinClut8.h \
|
darwinClut8.h \
|
||||||
darwinEvents.c \
|
darwinEvents.c \
|
||||||
|
@ -54,64 +251,4 @@ EXTRA_DIST = \
|
||||||
darwinKeyboard.c \
|
darwinKeyboard.c \
|
||||||
darwinKeyboard.h \
|
darwinKeyboard.h \
|
||||||
darwinXinput.c \
|
darwinXinput.c \
|
||||||
iokit/xfIOKit.c \
|
|
||||||
iokit/xfIOKitCursor.c \
|
|
||||||
iokit/xfIOKit.h \
|
|
||||||
iokit/xfIOKitStartup.c \
|
|
||||||
Makefile.am \
|
|
||||||
quartz/applewm.c \
|
|
||||||
quartz/applewmExt.h \
|
|
||||||
quartz/cr/crAppleWM.m \
|
|
||||||
quartz/cr/crFrame.m \
|
|
||||||
quartz/cr/cr.h \
|
|
||||||
quartz/cr/crScreen.m \
|
|
||||||
quartz/cr/XView.h \
|
|
||||||
quartz/cr/XView.m \
|
|
||||||
quartz/fullscreen/fullscreen.c \
|
|
||||||
quartz/fullscreen/quartzCursor.c \
|
|
||||||
quartz/fullscreen/quartzCursor.h \
|
|
||||||
quartz/keysym2ucs.c \
|
|
||||||
quartz/keysym2ucs.h \
|
|
||||||
quartz/Preferences.h \
|
|
||||||
quartz/Preferences.m \
|
|
||||||
quartz/pseudoramiX.c \
|
|
||||||
quartz/pseudoramiX.h \
|
|
||||||
quartz/quartzAudio.c \
|
|
||||||
quartz/quartzAudio.h \
|
|
||||||
quartz/quartz.c \
|
|
||||||
quartz/quartzCocoa.m \
|
|
||||||
quartz/quartzCommon.h \
|
|
||||||
quartz/quartzCursor.c \
|
|
||||||
quartz/quartzCursor.h \
|
|
||||||
quartz/quartz.h \
|
|
||||||
quartz/quartzKeyboard.c \
|
|
||||||
quartz/quartzPasteboard.c \
|
|
||||||
quartz/quartzPasteboard.h \
|
|
||||||
quartz/quartzStartup.c \
|
|
||||||
quartz/XApplication.h \
|
|
||||||
quartz/XApplication.m \
|
|
||||||
quartz/XDarwin.pbproj/project.pbxproj \
|
|
||||||
quartz/XDarwinStartup.c \
|
|
||||||
quartz/XDarwinStartup.man \
|
|
||||||
quartz/xpr/appledri.c \
|
|
||||||
quartz/xpr/dri.c \
|
|
||||||
quartz/xpr/dri.h \
|
|
||||||
quartz/xpr/dristruct.h \
|
|
||||||
quartz/xpr/x-hash.c \
|
|
||||||
quartz/xpr/x-hash.h \
|
|
||||||
quartz/xpr/x-hook.c \
|
|
||||||
quartz/xpr/x-hook.h \
|
|
||||||
quartz/xpr/x-list.c \
|
|
||||||
quartz/xpr/x-list.h \
|
|
||||||
quartz/xpr/Xplugin.h \
|
|
||||||
quartz/xpr/xprAppleWM.c \
|
|
||||||
quartz/xpr/xprCursor.c \
|
|
||||||
quartz/xpr/xprFrame.c \
|
|
||||||
quartz/xpr/xpr.h \
|
|
||||||
quartz/xpr/xprScreen.c \
|
|
||||||
quartz/XServer.h \
|
|
||||||
quartz/XServer.m \
|
|
||||||
utils/dumpkeymap.c \
|
|
||||||
utils/dumpkeymap.man \
|
|
||||||
utils/README.txt \
|
|
||||||
XDarwin.man
|
XDarwin.man
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
BINDIR = ${bindir}
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
XINITDIR = $(libdir)/X11/xinit
|
||||||
|
XDEFS = \
|
||||||
|
-DX_VERSION="$(PLIST_VERSION_STRING)" \
|
||||||
|
-DX_PRE_RELEASE="$(PRE)" \
|
||||||
|
-DX_REL_DATE="$(XORG_DATE)" \
|
||||||
|
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
|
||||||
|
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
|
||||||
|
|
||||||
|
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
|
||||||
|
|
||||||
|
Dutchlprojdir = $(resourcesdir)/Dutch.lproj
|
||||||
|
|
||||||
|
Dutchlproj_DATA = \
|
||||||
|
XDarwinHelp.html \
|
||||||
|
InfoPlist.strings \
|
||||||
|
Credits.rtf Localizable.strings
|
||||||
|
|
||||||
|
Dutchlprojnibdir = $(Dutchlprojdir)/MainMenu.nib
|
||||||
|
Dutchlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
|
||||||
|
|
||||||
|
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
|
||||||
|
|
||||||
|
XDarwinHelp.html: XDarwinHelp.html.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
|
||||||
|
CLEANFILES = XDarwinHelp.html InfoPlist.strings
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
Credits.rtf Localizable.strings \
|
||||||
|
MainMenu.nib/classes.nib \
|
||||||
|
MainMenu.nib/objects.nib \
|
||||||
|
XDarwinHelp.html.cpp
|
|
@ -0,0 +1,35 @@
|
||||||
|
BINDIR = ${bindir}
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
XINITDIR = $(libdir)/X11/xinit
|
||||||
|
XDEFS = \
|
||||||
|
-DX_VERSION="$(PLIST_VERSION_STRING)" \
|
||||||
|
-DX_PRE_RELEASE="$(PRE)" \
|
||||||
|
-DX_REL_DATE="$(XORG_DATE)" \
|
||||||
|
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
|
||||||
|
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
|
||||||
|
|
||||||
|
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
|
||||||
|
|
||||||
|
Englishlprojdir = $(resourcesdir)/English.lproj
|
||||||
|
Englishlproj_DATA = \
|
||||||
|
XDarwinHelp.html \
|
||||||
|
InfoPlist.strings \
|
||||||
|
Credits.rtf Localizable.strings
|
||||||
|
|
||||||
|
Englishlprojnibdir = $(Englishlprojdir)/MainMenu.nib
|
||||||
|
Englishlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
|
||||||
|
|
||||||
|
InfoPlist.strings: InfoPlist.strings.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
|
||||||
|
|
||||||
|
XDarwinHelp.html: XDarwinHelp.html.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
|
||||||
|
CLEANFILES = XDarwinHelp.html InfoPlist.strings
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
Credits.rtf Localizable.strings \
|
||||||
|
MainMenu.nib/classes.nib \
|
||||||
|
MainMenu.nib/objects.nib \
|
||||||
|
XDarwinHelp.html.cpp \
|
||||||
|
InfoPlist.strings.cpp
|
|
@ -0,0 +1,38 @@
|
||||||
|
BINDIR = ${bindir}
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
XINITDIR = $(libdir)/X11/xinit
|
||||||
|
|
||||||
|
XDEFS = \
|
||||||
|
-DX_VERSION="$(PLIST_VERSION_STRING)" \
|
||||||
|
-DX_PRE_RELEASE="$(PRE)" \
|
||||||
|
-DX_REL_DATE="$(XORG_DATE)" \
|
||||||
|
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
|
||||||
|
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
|
||||||
|
|
||||||
|
|
||||||
|
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
|
||||||
|
|
||||||
|
Frenchlprojdir = $(resourcesdir)/French.lproj
|
||||||
|
|
||||||
|
Frenchlproj_DATA = \
|
||||||
|
XDarwinHelp.html \
|
||||||
|
InfoPlist.strings \
|
||||||
|
Credits.rtf Localizable.strings
|
||||||
|
|
||||||
|
Frenchlprojnibdir = $(Frenchlprojdir)/MainMenu.nib
|
||||||
|
Frenchlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
|
||||||
|
|
||||||
|
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
|
||||||
|
|
||||||
|
XDarwinHelp.html: XDarwinHelp.html.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
|
||||||
|
CLEANFILES = XDarwinHelp.html InfoPlist.strings
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
Credits.rtf Localizable.strings \
|
||||||
|
Localizable.strings \
|
||||||
|
MainMenu.nib/classes.nib \
|
||||||
|
MainMenu.nib/objects.nib \
|
||||||
|
XDarwinHelp.html.cpp
|
|
@ -0,0 +1,36 @@
|
||||||
|
BINDIR = ${bindir}
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
XINITDIR = $(libdir)/X11/xinit
|
||||||
|
XDEFS = \
|
||||||
|
-DX_VERSION="$(PLIST_VERSION_STRING)" \
|
||||||
|
-DX_PRE_RELEASE="$(PRE)" \
|
||||||
|
-DX_REL_DATE="$(XORG_DATE)" \
|
||||||
|
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
|
||||||
|
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
|
||||||
|
|
||||||
|
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
|
||||||
|
|
||||||
|
Germanlprojdir = $(resourcesdir)/German.lproj
|
||||||
|
|
||||||
|
Germanlproj_DATA = \
|
||||||
|
XDarwinHelp.html \
|
||||||
|
InfoPlist.strings \
|
||||||
|
Credits.rtf Localizable.strings
|
||||||
|
|
||||||
|
Germanlprojnibdir = $(Germanlprojdir)/MainMenu.nib
|
||||||
|
Germanlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
|
||||||
|
|
||||||
|
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
|
||||||
|
|
||||||
|
XDarwinHelp.html: XDarwinHelp.html.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
|
||||||
|
CLEANFILES = XDarwinHelp.html InfoPlist.strings
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
Credits.rtf Localizable.strings \
|
||||||
|
Localizable.strings \
|
||||||
|
MainMenu.nib/classes.nib \
|
||||||
|
MainMenu.nib/objects.nib \
|
||||||
|
XDarwinHelp.html.cpp
|
|
@ -0,0 +1,66 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleDocumentTypes</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeExtensions</key>
|
||||||
|
<array>
|
||||||
|
<string>x11app</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>X11 Application</string>
|
||||||
|
<key>CFBundleTypeOSTypes</key>
|
||||||
|
<array>
|
||||||
|
<string>****</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeRole</key>
|
||||||
|
<string>Viewer</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeExtensions</key>
|
||||||
|
<array>
|
||||||
|
<string>tool</string>
|
||||||
|
<string>*</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>UNIX Application</string>
|
||||||
|
<key>CFBundleTypeOSTypes</key>
|
||||||
|
<array>
|
||||||
|
<string>****</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeRole</key>
|
||||||
|
<string>Viewer</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>XDarwin</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string>XDarwin 1.4.0, X.Org Foundation</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>XDarwin.icns</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>org.x.XDarwin</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>XDarwin</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>XDarwin 1.4.0</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string></string>
|
||||||
|
<key>NSHelpFile</key>
|
||||||
|
<string>XDarwinHelp.html</string>
|
||||||
|
<key>NSMainNibFile</key>
|
||||||
|
<string>MainMenu</string>
|
||||||
|
<key>NSPrincipalClass</key>
|
||||||
|
<string>XApplication</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
|
@ -0,0 +1,37 @@
|
||||||
|
BINDIR = ${bindir}
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
XINITDIR = $(libdir)/X11/xinit
|
||||||
|
XDEFS = \
|
||||||
|
-DX_VERSION="$(PLIST_VERSION_STRING)" \
|
||||||
|
-DX_PRE_RELEASE="$(PRE)" \
|
||||||
|
-DX_REL_DATE="$(XORG_DATE)" \
|
||||||
|
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
|
||||||
|
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
|
||||||
|
|
||||||
|
|
||||||
|
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
|
||||||
|
|
||||||
|
Japaneselprojdir = $(resourcesdir)/Japanese.lproj
|
||||||
|
|
||||||
|
Japaneselproj_DATA = \
|
||||||
|
XDarwinHelp.html \
|
||||||
|
InfoPlist.strings \
|
||||||
|
Credits.rtf Localizable.strings
|
||||||
|
|
||||||
|
Japaneselprojnibdir = $(Japaneselprojdir)/MainMenu.nib
|
||||||
|
Japaneselprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
|
||||||
|
|
||||||
|
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
|
||||||
|
|
||||||
|
XDarwinHelp.html: XDarwinHelp.html.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
|
||||||
|
CLEANFILES = XDarwinHelp.html InfoPlist.strings
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
Credits.rtf Localizable.strings \
|
||||||
|
Localizable.strings \
|
||||||
|
MainMenu.nib/classes.nib \
|
||||||
|
MainMenu.nib/objects.nib \
|
||||||
|
XDarwinHelp.html.cpp
|
|
@ -0,0 +1,38 @@
|
||||||
|
BINDIR = ${bindir}
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
XINITDIR = $(libdir)/X11/xinit
|
||||||
|
XDEFS = \
|
||||||
|
-DX_VERSION="$(PLIST_VERSION_STRING)" \
|
||||||
|
-DX_PRE_RELEASE="$(PRE)" \
|
||||||
|
-DX_REL_DATE="$(XORG_DATE)" \
|
||||||
|
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
|
||||||
|
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
|
||||||
|
|
||||||
|
SUBDIRS = English.lproj Dutch.lproj French.lproj German.lproj Japanese.lproj \
|
||||||
|
ko.lproj Portuguese.lproj Spanish.lproj Swedish.lproj
|
||||||
|
|
||||||
|
bin_SCRIPTS = startXClients
|
||||||
|
|
||||||
|
startXClients: $(srcdir)/startXClients.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) -DXINITDIR=$(XINITDIR) -DXBINDIR=$(BINDIR) $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
-chmod 755 startXClients
|
||||||
|
|
||||||
|
contentsdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents
|
||||||
|
resourcesdir = $(contentsdir)/Resources
|
||||||
|
|
||||||
|
contents_DATA = Info.plist
|
||||||
|
resources_DATA = XDarwin.icns startXClients
|
||||||
|
|
||||||
|
install-data-hook:
|
||||||
|
chmod 755 $(DESTDIR)$(resourcesdir)/startXClients
|
||||||
|
echo "APPL????" > $(DESTDIR)$(contentsdir)/PkgInfo
|
||||||
|
touch $(DESTDIR)@APPLE_APPLICATIONS_DIR@/XDarwin.app
|
||||||
|
|
||||||
|
uninstall-hook:
|
||||||
|
rm -rf $(DESTDIR)$(contentsdir)/PkgInfo
|
||||||
|
|
||||||
|
CLEANFILES = startXClients
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
XDarwin.icns \
|
||||||
|
Info.plist
|
|
@ -0,0 +1,36 @@
|
||||||
|
BINDIR = ${bindir}
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
XINITDIR = $(libdir)/X11/xinit
|
||||||
|
XDEFS = \
|
||||||
|
-DX_VERSION="$(PLIST_VERSION_STRING)" \
|
||||||
|
-DX_PRE_RELEASE="$(PRE)" \
|
||||||
|
-DX_REL_DATE="$(XORG_DATE)" \
|
||||||
|
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
|
||||||
|
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
|
||||||
|
|
||||||
|
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
|
||||||
|
|
||||||
|
Portugueselprojdir = $(resourcesdir)/Portuguese.lproj
|
||||||
|
|
||||||
|
Portugueselproj_DATA = \
|
||||||
|
XDarwinHelp.html \
|
||||||
|
InfoPlist.strings \
|
||||||
|
Credits.rtf Localizable.strings
|
||||||
|
|
||||||
|
Portugueselprojnibdir = $(Portugueselprojdir)/MainMenu.nib
|
||||||
|
Portugueselprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
|
||||||
|
|
||||||
|
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
|
||||||
|
|
||||||
|
XDarwinHelp.html: XDarwinHelp.html.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
|
||||||
|
CLEANFILES = XDarwinHelp.html InfoPlist.strings
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
Credits.rtf Localizable.strings \
|
||||||
|
Localizable.strings \
|
||||||
|
MainMenu.nib/classes.nib \
|
||||||
|
MainMenu.nib/objects.nib \
|
||||||
|
XDarwinHelp.html.cpp
|
|
@ -0,0 +1,36 @@
|
||||||
|
BINDIR = ${bindir}
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
XINITDIR = $(libdir)/X11/xinit
|
||||||
|
XDEFS = \
|
||||||
|
-DX_VERSION="$(PLIST_VERSION_STRING)" \
|
||||||
|
-DX_PRE_RELEASE="$(PRE)" \
|
||||||
|
-DX_REL_DATE="$(XORG_DATE)" \
|
||||||
|
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
|
||||||
|
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
|
||||||
|
|
||||||
|
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
|
||||||
|
|
||||||
|
Spanishlprojdir = $(resourcesdir)/Spanish.lproj
|
||||||
|
|
||||||
|
Spanishlproj_DATA = \
|
||||||
|
XDarwinHelp.html \
|
||||||
|
InfoPlist.strings \
|
||||||
|
Credits.rtf Localizable.strings
|
||||||
|
|
||||||
|
Spanishlprojnibdir = $(Spanishlprojdir)/MainMenu.nib
|
||||||
|
Spanishlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
|
||||||
|
|
||||||
|
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
|
||||||
|
|
||||||
|
XDarwinHelp.html: XDarwinHelp.html.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
|
||||||
|
CLEANFILES = XDarwinHelp.html InfoPlist.strings
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
Credits.rtf Localizable.strings \
|
||||||
|
Localizable.strings \
|
||||||
|
MainMenu.nib/classes.nib \
|
||||||
|
MainMenu.nib/objects.nib \
|
||||||
|
XDarwinHelp.html.cpp
|
|
@ -0,0 +1,36 @@
|
||||||
|
BINDIR = ${bindir}
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
XINITDIR = $(libdir)/X11/xinit
|
||||||
|
XDEFS = \
|
||||||
|
-DX_VERSION="$(PLIST_VERSION_STRING)" \
|
||||||
|
-DX_PRE_RELEASE="$(PRE)" \
|
||||||
|
-DX_REL_DATE="$(XORG_DATE)" \
|
||||||
|
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
|
||||||
|
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
|
||||||
|
|
||||||
|
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
|
||||||
|
|
||||||
|
Swedishlprojdir = $(resourcesdir)/Swedish.lproj
|
||||||
|
|
||||||
|
Swedishlproj_DATA = \
|
||||||
|
XDarwinHelp.html \
|
||||||
|
InfoPlist.strings \
|
||||||
|
Credits.rtf Localizable.strings
|
||||||
|
|
||||||
|
Swedishlprojnibdir = $(Swedishlprojdir)/MainMenu.nib
|
||||||
|
Swedishlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
|
||||||
|
|
||||||
|
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
|
||||||
|
|
||||||
|
XDarwinHelp.html: XDarwinHelp.html.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
|
||||||
|
CLEANFILES = XDarwinHelp.html InfoPlist.strings
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
Credits.rtf Localizable.strings \
|
||||||
|
Localizable.strings \
|
||||||
|
MainMenu.nib/classes.nib \
|
||||||
|
MainMenu.nib/objects.nib \
|
||||||
|
XDarwinHelp.html.cpp
|
|
@ -0,0 +1,37 @@
|
||||||
|
BINDIR = ${bindir}
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
XINITDIR = $(libdir)/X11/xinit
|
||||||
|
XDEFS = \
|
||||||
|
-DX_VERSION="$(PLIST_VERSION_STRING)" \
|
||||||
|
-DX_PRE_RELEASE="$(PRE)" \
|
||||||
|
-DX_REL_DATE="$(XORG_DATE)" \
|
||||||
|
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
|
||||||
|
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
|
||||||
|
|
||||||
|
|
||||||
|
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
|
||||||
|
|
||||||
|
kolprojdir = $(resourcesdir)/ko.lproj
|
||||||
|
|
||||||
|
kolproj_DATA = \
|
||||||
|
XDarwinHelp.html \
|
||||||
|
InfoPlist.strings \
|
||||||
|
Credits.rtf Localizable.strings
|
||||||
|
|
||||||
|
kolprojnibdir = $(kolprojdir)/MainMenu.nib
|
||||||
|
kolprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
|
||||||
|
|
||||||
|
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
|
||||||
|
|
||||||
|
XDarwinHelp.html: XDarwinHelp.html.cpp
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
|
||||||
|
CLEANFILES = XDarwinHelp.html InfoPlist.strings
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
Credits.rtf Localizable.strings \
|
||||||
|
Localizable.strings \
|
||||||
|
MainMenu.nib/classes.nib \
|
||||||
|
MainMenu.nib/objects.nib \
|
||||||
|
XDarwinHelp.html.cpp
|
|
@ -30,6 +30,10 @@
|
||||||
* use or other dealings in this Software without prior written authorization.
|
* use or other dealings in this Software without prior written authorization.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_XORG_CONFIG_H
|
||||||
|
#include <xorg-config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
@ -409,9 +413,9 @@ static int DarwinMouseProc(
|
||||||
InitPointerDeviceStruct( (DevicePtr)pPointer,
|
InitPointerDeviceStruct( (DevicePtr)pPointer,
|
||||||
map,
|
map,
|
||||||
5, // numbuttons (4 & 5 are scroll wheel)
|
5, // numbuttons (4 & 5 are scroll wheel)
|
||||||
miPointerGetMotionEvents,
|
GetMotionHistory,
|
||||||
DarwinChangePointerControl,
|
DarwinChangePointerControl,
|
||||||
0 );
|
GetMotionHistorySize(), 2 );
|
||||||
#ifdef XINPUT
|
#ifdef XINPUT
|
||||||
InitValuatorAxisStruct( pPointer,
|
InitValuatorAxisStruct( pPointer,
|
||||||
0, // X axis
|
0, // X axis
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "inputstr.h"
|
#include "inputstr.h"
|
||||||
#include "scrnintstr.h"
|
#include "scrnintstr.h"
|
||||||
#include <X11/extensions/XKB.h>
|
#include <X11/extensions/XKB.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
void *framebuffer;
|
void *framebuffer;
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
#include <architecture/byte_order.h> // For the NXSwap*
|
#include <architecture/byte_order.h> // For the NXSwap*
|
||||||
#include "darwin.h"
|
#include "darwin.h"
|
||||||
#include "darwinKeyboard.h"
|
#include "darwinKeyboard.h"
|
||||||
|
#include <assert.h>
|
||||||
#define AltMask Mod1Mask
|
#define AltMask Mod1Mask
|
||||||
#define MetaMask Mod2Mask
|
#define MetaMask Mod2Mask
|
||||||
#define FunctionMask Mod3Mask
|
#define FunctionMask Mod3Mask
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
#define XK_TECHNICAL // needed to get XK_Escape
|
#define XK_TECHNICAL // needed to get XK_Escape
|
||||||
#define XK_PUBLISHING
|
#define XK_PUBLISHING
|
||||||
#include "keysym.h"
|
#include "X11/keysym.h"
|
||||||
#include "inputstr.h"
|
#include "inputstr.h"
|
||||||
|
|
||||||
// Each key can generate 4 glyphs. They are, in order:
|
// Each key can generate 4 glyphs. They are, in order:
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
noinst_LIBRARIES = libiokit.a
|
||||||
|
|
||||||
|
AM_CFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
|
||||||
|
INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@
|
||||||
|
AM_DEFS =
|
||||||
|
if XQUARTZ
|
||||||
|
AM_DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server
|
||||||
|
XQUARTZ_SUBDIRS = bundle quartz
|
||||||
|
endif
|
||||||
|
DEFS = @DEFS@ $(AM_DEFS)
|
||||||
|
|
||||||
|
libiokit_a_SOURCES = xfIOKit.c \
|
||||||
|
xfIOKitCursor.c \
|
||||||
|
xfIOKitStartup.c
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
xfIOKit.h
|
|
@ -34,6 +34,10 @@
|
||||||
* use or other dealings in this Software without prior written authorization.
|
* use or other dealings in this Software without prior written authorization.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if HAVE_XORG_CONFIG_H
|
||||||
|
#include <xorg-config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#include <X11/Xproto.h>
|
#include <X11/Xproto.h>
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
@ -51,6 +55,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
#include <mach/mach_interface.h>
|
#include <mach/mach_interface.h>
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,9 @@
|
||||||
* use or other dealings in this Software without prior written authorization.
|
* use or other dealings in this Software without prior written authorization.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if HAVE_XORG_CONFIG_H
|
||||||
|
#include <xorg-config.h>
|
||||||
|
#endif
|
||||||
#include "scrnintstr.h"
|
#include "scrnintstr.h"
|
||||||
#include "cursorstr.h"
|
#include "cursorstr.h"
|
||||||
#include "mipointrst.h"
|
#include "mipointrst.h"
|
||||||
|
@ -67,7 +70,7 @@
|
||||||
#include <IOKit/hidsystem/IOHIDLib.h>
|
#include <IOKit/hidsystem/IOHIDLib.h>
|
||||||
#include "darwin.h"
|
#include "darwin.h"
|
||||||
#include "xfIOKit.h"
|
#include "xfIOKit.h"
|
||||||
|
#include <assert.h>
|
||||||
#define DUMP_DARWIN_CURSOR FALSE
|
#define DUMP_DARWIN_CURSOR FALSE
|
||||||
|
|
||||||
#define CURSOR_PRIV(pScreen) \
|
#define CURSOR_PRIV(pScreen) \
|
||||||
|
|
|
@ -29,6 +29,11 @@
|
||||||
* use or other dealings in this Software without prior written authorization.
|
* use or other dealings in this Software without prior written authorization.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#if HAVE_XORG_CONFIG_H
|
||||||
|
#include <xorg-config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "darwin.h"
|
#include "darwin.h"
|
||||||
#include "darwinKeyboard.h"
|
#include "darwinKeyboard.h"
|
||||||
#include "micmap.h"
|
#include "micmap.h"
|
||||||
|
@ -57,7 +62,9 @@ void DarwinHandleGUI(
|
||||||
*/
|
*/
|
||||||
void DarwinGlxExtensionInit(void)
|
void DarwinGlxExtensionInit(void)
|
||||||
{
|
{
|
||||||
GlxExtensionInit();
|
#ifdef GLXEXT
|
||||||
|
GlxExtensionInit();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,7 +74,9 @@ void DarwinGlxExtensionInit(void)
|
||||||
void DarwinGlxWrapInitVisuals(
|
void DarwinGlxWrapInitVisuals(
|
||||||
miInitVisualsProcPtr *procPtr)
|
miInitVisualsProcPtr *procPtr)
|
||||||
{
|
{
|
||||||
|
#ifdef GLXEXT
|
||||||
GlxWrapInitVisuals(procPtr);
|
GlxWrapInitVisuals(procPtr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ DIST_SUBDIRS = input config glxProxy examples doc
|
||||||
|
|
||||||
SUBDIRS = input config examples
|
SUBDIRS = input config examples
|
||||||
bin_PROGRAMS = Xdmx
|
bin_PROGRAMS = Xdmx
|
||||||
|
noinst_LIBRARIES = libfbcmap.a
|
||||||
|
|
||||||
if XINERAMA
|
if XINERAMA
|
||||||
PANORAMIX_SRCS = $(top_srcdir)/Xext/panoramiX.c
|
PANORAMIX_SRCS = $(top_srcdir)/Xext/panoramiX.c
|
||||||
|
@ -16,13 +17,20 @@ GLX_INCS = -I$(top_srcdir)/hw/xfree86/dixmods/extmod \
|
||||||
GLX_DEFS = @GL_CFLAGS@
|
GLX_DEFS = @GL_CFLAGS@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# It's essential that fbcmap.c be compiled with this flag for DMX to work!!
|
|
||||||
DMX_CFLAGS = -DXFree86Server=1
|
|
||||||
|
|
||||||
if BUILDDOCS
|
if BUILDDOCS
|
||||||
SUBDIRS += doc
|
SUBDIRS += doc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
AM_CFLAGS = \
|
||||||
|
-DHAVE_DMX_CONFIG_H \
|
||||||
|
$(DIX_CFLAGS) \
|
||||||
|
$(GLX_INCS) \
|
||||||
|
$(GLX_DEFS) \
|
||||||
|
@DMXMODULES_CFLAGS@
|
||||||
|
|
||||||
|
libfbcmap_a_SOURCES = libfbcmap.a
|
||||||
|
libfbcmap_a_CFLAGS = $(AM_CFLAGS) -DXFree86Server
|
||||||
|
|
||||||
Xdmx_SOURCES = dmx.c \
|
Xdmx_SOURCES = dmx.c \
|
||||||
dmxcb.c \
|
dmxcb.c \
|
||||||
dmxcb.h \
|
dmxcb.h \
|
||||||
|
@ -67,7 +75,6 @@ Xdmx_SOURCES = dmx.c \
|
||||||
dmxvisual.h \
|
dmxvisual.h \
|
||||||
dmxwindow.c \
|
dmxwindow.c \
|
||||||
dmxwindow.h \
|
dmxwindow.h \
|
||||||
$(top_srcdir)/fb/fbcmap.c \
|
|
||||||
$(top_srcdir)/mi/miinitext.c \
|
$(top_srcdir)/mi/miinitext.c \
|
||||||
$(GLX_SRCS)
|
$(GLX_SRCS)
|
||||||
|
|
||||||
|
@ -82,16 +89,9 @@ Xdmx_LDADD = $(XORG_CORE_LIBS) \
|
||||||
$(GLX_LIBS) \
|
$(GLX_LIBS) \
|
||||||
input/libdmxinput.a \
|
input/libdmxinput.a \
|
||||||
config/libdmxconfig.a \
|
config/libdmxconfig.a \
|
||||||
|
libfbcmap.a \
|
||||||
@DMXMODULES_LIBS@
|
@DMXMODULES_LIBS@
|
||||||
|
|
||||||
Xdmx_CFLAGS = \
|
|
||||||
-DHAVE_DMX_CONFIG_H \
|
|
||||||
$(DIX_CFLAGS) \
|
|
||||||
$(GLX_INCS) \
|
|
||||||
$(GLX_DEFS) \
|
|
||||||
$(DMX_CFLAGS) \
|
|
||||||
@DMXMODULES_CFLAGS@
|
|
||||||
|
|
||||||
# Man page
|
# Man page
|
||||||
appmandir = $(APP_MAN_DIR)
|
appmandir = $(APP_MAN_DIR)
|
||||||
|
|
||||||
|
|
|
@ -49,58 +49,6 @@ typedef struct {
|
||||||
|
|
||||||
} __GLXpixmap;
|
} __GLXpixmap;
|
||||||
|
|
||||||
struct __GLXdrawablePrivateRec {
|
|
||||||
/*
|
|
||||||
** list of drawable private structs
|
|
||||||
*/
|
|
||||||
struct __GLXdrawablePrivateRec *last;
|
|
||||||
struct __GLXdrawablePrivateRec *next;
|
|
||||||
|
|
||||||
DrawablePtr pDraw;
|
|
||||||
XID drawId;
|
|
||||||
__GLXpixmap *pGlxPixmap;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Either DRAWABLE_PIXMAP or DRAWABLE_WINDOW, copied from pDraw above.
|
|
||||||
** Needed by the resource freer because pDraw might already have been
|
|
||||||
** freed.
|
|
||||||
*/
|
|
||||||
int type;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Configuration of the visual to which this drawable was created.
|
|
||||||
*/
|
|
||||||
__GLXvisualConfig *pGlxVisual;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** cached drawable size and origin
|
|
||||||
*/
|
|
||||||
GLint xorigin, yorigin;
|
|
||||||
GLint width, height;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** list of contexts bound to this drawable
|
|
||||||
*/
|
|
||||||
struct __GLXcontextRec *glxc;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** "methods" that the drawble should be able to respond to.
|
|
||||||
*/
|
|
||||||
void (*freeBuffers)(struct __GLXdrawablePrivateRec *);
|
|
||||||
void (*updatePalette)(struct __GLXdrawablePrivateRec *);
|
|
||||||
GLboolean (*swapBuffers)(struct __GLXdrawablePrivateRec *);
|
|
||||||
|
|
||||||
/*
|
|
||||||
** The GL drawable (information shared between GLX and the GL core)
|
|
||||||
*/
|
|
||||||
__GLdrawablePrivate glPriv;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** reference count
|
|
||||||
*/
|
|
||||||
int refCount;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
DrawablePtr pDraw;
|
DrawablePtr pDraw;
|
||||||
int type;
|
int type;
|
||||||
|
|
|
@ -58,9 +58,6 @@
|
||||||
#include <GL/glxproto.h>
|
#include <GL/glxproto.h>
|
||||||
#include <GL/glxint.h>
|
#include <GL/glxint.h>
|
||||||
|
|
||||||
/* For glxscreens.h */
|
|
||||||
typedef struct __GLXdrawablePrivateRec __GLXdrawablePrivate;
|
|
||||||
|
|
||||||
#include "glxscreens.h"
|
#include "glxscreens.h"
|
||||||
#include "glxdrawable.h"
|
#include "glxdrawable.h"
|
||||||
#include "glxcontext.h"
|
#include "glxcontext.h"
|
||||||
|
|
|
@ -81,7 +81,8 @@ Bool
|
||||||
ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
|
ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
|
||||||
{
|
{
|
||||||
int width = 640, height = 480;
|
int width = 640, height = 480;
|
||||||
|
unsigned long redMask, greenMask, blueMask;
|
||||||
|
|
||||||
if (hostx_want_screen_size(&width, &height)
|
if (hostx_want_screen_size(&width, &height)
|
||||||
|| !screen->width || !screen->height)
|
|| !screen->width || !screen->height)
|
||||||
{
|
{
|
||||||
|
@ -133,30 +134,24 @@ ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
|
||||||
{
|
{
|
||||||
screen->fb[0].depth = 15;
|
screen->fb[0].depth = 15;
|
||||||
screen->fb[0].bitsPerPixel = 16;
|
screen->fb[0].bitsPerPixel = 16;
|
||||||
|
|
||||||
hostx_get_visual_masks (&screen->fb[0].redMask,
|
|
||||||
&screen->fb[0].greenMask,
|
|
||||||
&screen->fb[0].blueMask);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (screen->fb[0].depth <= 16)
|
else if (screen->fb[0].depth <= 16)
|
||||||
{
|
{
|
||||||
screen->fb[0].depth = 16;
|
screen->fb[0].depth = 16;
|
||||||
screen->fb[0].bitsPerPixel = 16;
|
screen->fb[0].bitsPerPixel = 16;
|
||||||
|
|
||||||
hostx_get_visual_masks (&screen->fb[0].redMask,
|
|
||||||
&screen->fb[0].greenMask,
|
|
||||||
&screen->fb[0].blueMask);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
screen->fb[0].depth = 24;
|
screen->fb[0].depth = 24;
|
||||||
screen->fb[0].bitsPerPixel = 32;
|
screen->fb[0].bitsPerPixel = 32;
|
||||||
|
|
||||||
hostx_get_visual_masks (&screen->fb[0].redMask,
|
|
||||||
&screen->fb[0].greenMask,
|
|
||||||
&screen->fb[0].blueMask);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hostx_get_visual_masks (&redMask, &greenMask, &blueMask);
|
||||||
|
|
||||||
|
screen->fb[0].redMask = (Pixel) redMask;
|
||||||
|
screen->fb[0].greenMask = (Pixel) greenMask;
|
||||||
|
screen->fb[0].blueMask = (Pixel) blueMask;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
scrpriv->randr = screen->randr;
|
scrpriv->randr = screen->randr;
|
||||||
|
|
|
@ -1,12 +1,21 @@
|
||||||
bin_PROGRAMS = Xvfb
|
bin_PROGRAMS = Xvfb
|
||||||
|
noinst_LIBRARIES = libfbcmap.a
|
||||||
|
|
||||||
|
AM_CFLAGS = -DHAVE_DIX_CONFIG_H \
|
||||||
|
-DNO_HW_ONLY_EXTS \
|
||||||
|
-DNO_MODULE_EXTS \
|
||||||
|
$(XVFBMODULES_CFLAGS) \
|
||||||
|
$(DIX_CFLAGS)
|
||||||
|
|
||||||
SRCS = InitInput.c \
|
SRCS = InitInput.c \
|
||||||
InitOutput.c \
|
InitOutput.c \
|
||||||
lk201kbd.h \
|
lk201kbd.h \
|
||||||
$(top_srcdir)/Xext/dpmsstubs.c \
|
$(top_srcdir)/Xext/dpmsstubs.c \
|
||||||
$(top_srcdir)/Xi/stubs.c \
|
$(top_srcdir)/Xi/stubs.c \
|
||||||
$(top_srcdir)/mi/miinitext.c \
|
$(top_srcdir)/mi/miinitext.c
|
||||||
$(top_srcdir)/fb/fbcmap.c
|
|
||||||
|
libfbcmap_a_CFLAGS = $(AM_CFLAGS) -DXFree86Server
|
||||||
|
libfbcmap_a_SOURCES = $(top_srcdir)/fb/fbcmap.c
|
||||||
|
|
||||||
Xvfb_SOURCES = $(SRCS)
|
Xvfb_SOURCES = $(SRCS)
|
||||||
|
|
||||||
|
@ -14,16 +23,8 @@ Xvfb_LDADD = $(XORG_CORE_LIBS) \
|
||||||
$(XVFB_LIBS) \
|
$(XVFB_LIBS) \
|
||||||
$(XSERVER_LIBS) \
|
$(XSERVER_LIBS) \
|
||||||
$(EXTENSION_LIBS) \
|
$(EXTENSION_LIBS) \
|
||||||
$(XVFBMODULES_LIBS)
|
$(XVFBMODULES_LIBS) \
|
||||||
|
libfbcmap.a
|
||||||
Xvfb_LDFLAGS =
|
|
||||||
|
|
||||||
AM_CFLAGS = -DHAVE_DIX_CONFIG_H \
|
|
||||||
-DNO_HW_ONLY_EXTS \
|
|
||||||
-DNO_MODULE_EXTS \
|
|
||||||
-DXFree86Server \
|
|
||||||
$(XVFBMODULES_CFLAGS) \
|
|
||||||
$(DIX_CFLAGS)
|
|
||||||
|
|
||||||
# Man page
|
# Man page
|
||||||
include $(top_srcdir)/cpprules.in
|
include $(top_srcdir)/cpprules.in
|
||||||
|
|
|
@ -47,13 +47,6 @@ configurations, doing batch processing with \fIXvfb\fP as a background
|
||||||
rendering engine, load testing, as an aid to porting the X server to a
|
rendering engine, load testing, as an aid to porting the X server to a
|
||||||
new platform, and providing an unobtrusive way to run applications
|
new platform, and providing an unobtrusive way to run applications
|
||||||
that don't really need an X server but insist on having one anyway.
|
that don't really need an X server but insist on having one anyway.
|
||||||
.SH BUILDING
|
|
||||||
To build \fIXvfb\fP, put the following in your host.def and remake.
|
|
||||||
.PP
|
|
||||||
\&#define BuildServer YES /\(** if you aren't already building other servers */
|
|
||||||
.br
|
|
||||||
\&#define XVirtualFramebufferServer YES
|
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.PP
|
.PP
|
||||||
In addition to the normal server options described in the \fIXserver(1)\fP
|
In addition to the normal server options described in the \fIXserver(1)\fP
|
||||||
|
@ -116,14 +109,14 @@ The server will listen for connections as server number 1, will have the
|
||||||
default screen configuration (one screen, 1280x1024x12), and screen 1
|
default screen configuration (one screen, 1280x1024x12), and screen 1
|
||||||
will be depth 16 1600x1200.
|
will be depth 16 1600x1200.
|
||||||
.TP 8
|
.TP 8
|
||||||
Xvfb -pixdepths 3 27 -fbdir /usr/tmp
|
Xvfb -pixdepths 3 27 -fbdir /var/tmp
|
||||||
The server will listen for connections as server number 0, will have the
|
The server will listen for connections as server number 0, will have the
|
||||||
default screen configuration (one screen, 1280x1024x12),
|
default screen configuration (one screen, 1280x1024x12),
|
||||||
will also support pixmap
|
will also support pixmap
|
||||||
depths of 3 and 27,
|
depths of 3 and 27,
|
||||||
and will use memory mapped files in /usr/tmp for the framebuffer.
|
and will use memory mapped files in /var/tmp for the framebuffer.
|
||||||
.TP 8
|
.TP 8
|
||||||
xwud -in /usr/tmp/Xvfb_screen0
|
xwud -in /var/tmp/Xvfb_screen0
|
||||||
Displays screen 0 of the server started by the preceding example.
|
Displays screen 0 of the server started by the preceding example.
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.PP
|
.PP
|
||||||
|
|
|
@ -725,47 +725,13 @@ xf86SetModeCrtc(DisplayModePtr p, int adjustFlags)
|
||||||
p->CrtcVSyncEnd *= p->VScan;
|
p->CrtcVSyncEnd *= p->VScan;
|
||||||
p->CrtcVTotal *= p->VScan;
|
p->CrtcVTotal *= p->VScan;
|
||||||
}
|
}
|
||||||
p->CrtcHAdjusted = FALSE;
|
|
||||||
p->CrtcVAdjusted = FALSE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* XXX
|
|
||||||
*
|
|
||||||
* The following is taken from VGA, but applies to other cores as well.
|
|
||||||
*/
|
|
||||||
p->CrtcVBlankStart = min(p->CrtcVSyncStart, p->CrtcVDisplay);
|
p->CrtcVBlankStart = min(p->CrtcVSyncStart, p->CrtcVDisplay);
|
||||||
p->CrtcVBlankEnd = max(p->CrtcVSyncEnd, p->CrtcVTotal);
|
p->CrtcVBlankEnd = max(p->CrtcVSyncEnd, p->CrtcVTotal);
|
||||||
if ((p->CrtcVBlankEnd - p->CrtcVBlankStart) >= 127) {
|
|
||||||
/*
|
|
||||||
* V Blanking size must be < 127.
|
|
||||||
* Moving blank start forward is safer than moving blank end
|
|
||||||
* back, since monitors clamp just AFTER the sync pulse (or in
|
|
||||||
* the sync pulse), but never before.
|
|
||||||
*/
|
|
||||||
p->CrtcVBlankStart = p->CrtcVBlankEnd - 127;
|
|
||||||
/*
|
|
||||||
* If VBlankStart is now > VSyncStart move VBlankStart
|
|
||||||
* to VSyncStart using the maximum width that fits into
|
|
||||||
* VTotal.
|
|
||||||
*/
|
|
||||||
if (p->CrtcVBlankStart > p->CrtcVSyncStart) {
|
|
||||||
p->CrtcVBlankStart = p->CrtcVSyncStart;
|
|
||||||
p->CrtcVBlankEnd = min(p->CrtcHBlankStart + 127, p->CrtcVTotal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
p->CrtcHBlankStart = min(p->CrtcHSyncStart, p->CrtcHDisplay);
|
p->CrtcHBlankStart = min(p->CrtcHSyncStart, p->CrtcHDisplay);
|
||||||
p->CrtcHBlankEnd = max(p->CrtcHSyncEnd, p->CrtcHTotal);
|
p->CrtcHBlankEnd = max(p->CrtcHSyncEnd, p->CrtcHTotal);
|
||||||
|
|
||||||
if ((p->CrtcHBlankEnd - p->CrtcHBlankStart) >= 63 * 8) {
|
p->CrtcHAdjusted = FALSE;
|
||||||
/*
|
p->CrtcVAdjusted = FALSE;
|
||||||
* H Blanking size must be < 63*8. Same remark as above.
|
|
||||||
*/
|
|
||||||
p->CrtcHBlankStart = p->CrtcHBlankEnd - 63 * 8;
|
|
||||||
if (p->CrtcHBlankStart > p->CrtcHSyncStart) {
|
|
||||||
p->CrtcHBlankStart = p->CrtcHSyncStart;
|
|
||||||
p->CrtcHBlankEnd = min(p->CrtcHBlankStart + 63 * 8, p->CrtcHTotal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -84,7 +84,7 @@ typedef enum {
|
||||||
* mask is 0xFFFF0000.
|
* mask is 0xFFFF0000.
|
||||||
*/
|
*/
|
||||||
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 3)
|
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 3)
|
||||||
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(1, 1)
|
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(1, 2)
|
||||||
#define ABI_XINPUT_VERSION SET_ABI_VERSION(1, 0)
|
#define ABI_XINPUT_VERSION SET_ABI_VERSION(1, 0)
|
||||||
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 3)
|
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 3)
|
||||||
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 5)
|
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 5)
|
||||||
|
|
|
@ -368,10 +368,8 @@ AllocateArea(
|
||||||
/* look through the free boxes */
|
/* look through the free boxes */
|
||||||
for(i = 0; i < num; i++, boxp++) {
|
for(i = 0; i < num; i++, boxp++) {
|
||||||
x = boxp->x1;
|
x = boxp->x1;
|
||||||
if(granularity) {
|
if (granularity > 1)
|
||||||
int tmp = x % granularity;
|
x = ((x + granularity - 1) / granularity) * granularity;
|
||||||
if(tmp) x += (granularity - tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(((boxp->y2 - boxp->y1) < h) || ((boxp->x2 - x) < w))
|
if(((boxp->y2 - boxp->y1) < h) || ((boxp->x2 - x) < w))
|
||||||
continue;
|
continue;
|
||||||
|
@ -398,10 +396,8 @@ AllocateArea(
|
||||||
|
|
||||||
boxp = &(link->area.box);
|
boxp = &(link->area.box);
|
||||||
x = boxp->x1;
|
x = boxp->x1;
|
||||||
if(granularity) {
|
if (granularity > 1)
|
||||||
int tmp = x % granularity;
|
x = ((x + granularity - 1) / granularity) * granularity;
|
||||||
if(tmp) x += (granularity - tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(((boxp->y2 - boxp->y1) < h) || ((boxp->x2 - x) < w)) {
|
if(((boxp->y2 - boxp->y1) < h) || ((boxp->x2 - x) < w)) {
|
||||||
link = link->next;
|
link = link->next;
|
||||||
|
@ -685,10 +681,8 @@ localQueryLargestOffscreenArea(
|
||||||
|
|
||||||
while(nbox--) {
|
while(nbox--) {
|
||||||
x = pbox->x1;
|
x = pbox->x1;
|
||||||
if(granularity) {
|
if (granularity > 1)
|
||||||
int tmp = x % granularity;
|
x = ((x + granularity - 1) / granularity) * granularity;
|
||||||
if(tmp) x += (granularity - tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
w = pbox->x2 - x;
|
w = pbox->x2 - x;
|
||||||
h = pbox->y2 - pbox->y1;
|
h = pbox->y2 - pbox->y1;
|
||||||
|
@ -845,7 +839,9 @@ AllocateLinear(
|
||||||
while (linear) {
|
while (linear) {
|
||||||
/* Make sure we get a free area that's not an XY fallback case */
|
/* Make sure we get a free area that's not an XY fallback case */
|
||||||
if (!linear->area && linear->free) {
|
if (!linear->area && linear->free) {
|
||||||
offset = (linear->linear.offset + granularity) & ~granularity;
|
offset = linear->linear.offset;
|
||||||
|
if (granularity > 1)
|
||||||
|
offset = ((offset + granularity - 1) / granularity) * granularity;
|
||||||
end = offset+size;
|
end = offset+size;
|
||||||
if (end <= (linear->linear.offset + linear->linear.size))
|
if (end <= (linear->linear.offset + linear->linear.size))
|
||||||
break;
|
break;
|
||||||
|
@ -935,17 +931,20 @@ localAllocateOffscreenLinear(
|
||||||
extents = REGION_EXTENTS(pScreen, offman->InitialBoxes);
|
extents = REGION_EXTENTS(pScreen, offman->InitialBoxes);
|
||||||
pitch = extents->x2 - extents->x1;
|
pitch = extents->x2 - extents->x1;
|
||||||
|
|
||||||
if (gran && gran > pitch) {
|
if (gran > 1) {
|
||||||
/* we can't match the specified alignment with XY allocations */
|
if (gran > pitch) {
|
||||||
xfree(link);
|
/* we can't match the specified alignment with XY allocations */
|
||||||
return NULL;
|
xfree(link);
|
||||||
}
|
return NULL;
|
||||||
if (gran && (pitch % gran)) {
|
}
|
||||||
/* pitch and granularity aren't a perfect match, let's allocate
|
|
||||||
* a bit more so we can align later on
|
if (pitch % gran) {
|
||||||
*/
|
/* pitch and granularity aren't a perfect match, let's allocate
|
||||||
length += gran - 1;
|
* a bit more so we can align later on
|
||||||
}
|
*/
|
||||||
|
length += gran - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(length < pitch) { /* special case */
|
if(length < pitch) { /* special case */
|
||||||
w = length;
|
w = length;
|
||||||
|
@ -968,8 +967,8 @@ localAllocateOffscreenLinear(
|
||||||
linear->pScreen = pScreen;
|
linear->pScreen = pScreen;
|
||||||
linear->size = h * w;
|
linear->size = h * w;
|
||||||
linear->offset = (pitch * area->box.y1) + area->box.x1;
|
linear->offset = (pitch * area->box.y1) + area->box.x1;
|
||||||
if (gran && linear->offset % gran)
|
if (gran > 1)
|
||||||
linear->offset += gran - (linear->offset % gran);
|
linear->offset += ((linear->offset + gran - 1) / gran) * gran;
|
||||||
linear->granularity = gran;
|
linear->granularity = gran;
|
||||||
linear->MoveLinearCallback = moveCB;
|
linear->MoveLinearCallback = moveCB;
|
||||||
linear->RemoveLinearCallback = removeCB;
|
linear->RemoveLinearCallback = removeCB;
|
||||||
|
@ -1435,9 +1434,12 @@ xf86AllocateLinearOffscreenArea (
|
||||||
extents = REGION_EXTENTS(pScreen, offman->InitialBoxes);
|
extents = REGION_EXTENTS(pScreen, offman->InitialBoxes);
|
||||||
w = extents->x2 - extents->x1;
|
w = extents->x2 - extents->x1;
|
||||||
|
|
||||||
if(gran && ((gran > w) || (w % gran))) {
|
if (gran > 1) {
|
||||||
/* we can't match the specified alignment with XY allocations */
|
if (gran > w)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
if (w % gran)
|
||||||
|
length += gran - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(length <= w) { /* special case */
|
if(length <= w) { /* special case */
|
||||||
|
|
|
@ -35,6 +35,6 @@ Default: No.
|
||||||
Chooses an alternate pixmap migration heuristic, for debugging purposes. The
|
Chooses an alternate pixmap migration heuristic, for debugging purposes. The
|
||||||
default is intended to be the best performing one for general use, though others
|
default is intended to be the best performing one for general use, though others
|
||||||
may help with specific use cases. Available options include \*qalways\*q,
|
may help with specific use cases. Available options include \*qalways\*q,
|
||||||
\*qgreedy\*q, and \*qsmart\*q. Default: smart.
|
\*qgreedy\*q, and \*qsmart\*q. Default: always.
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
Authors include: Keith Packard, Eric Anholt, Zack Rusin, and Michel Dänzer
|
Authors include: Keith Packard, Eric Anholt, Zack Rusin, and Michel Dänzer
|
||||||
|
|
|
@ -183,12 +183,20 @@ print_xfree_mode(char *txt, DisplayModePtr mode)
|
||||||
static void
|
static void
|
||||||
xfree2fbdev_fblayout(ScrnInfoPtr pScrn, struct fb_var_screeninfo *var)
|
xfree2fbdev_fblayout(ScrnInfoPtr pScrn, struct fb_var_screeninfo *var)
|
||||||
{
|
{
|
||||||
var->xres_virtual = pScrn->virtualX;
|
var->xres_virtual = pScrn->displayWidth ? pScrn->displayWidth :
|
||||||
|
pScrn->virtualX;
|
||||||
var->yres_virtual = pScrn->virtualY;
|
var->yres_virtual = pScrn->virtualY;
|
||||||
var->bits_per_pixel = pScrn->bitsPerPixel;
|
var->bits_per_pixel = pScrn->bitsPerPixel;
|
||||||
var->red.length = pScrn->weight.red;
|
if (pScrn->defaultVisual == TrueColor ||
|
||||||
var->green.length = pScrn->weight.green;
|
pScrn->defaultVisual == DirectColor) {
|
||||||
var->blue.length = pScrn->weight.blue;
|
var->red.length = pScrn->weight.red;
|
||||||
|
var->green.length = pScrn->weight.green;
|
||||||
|
var->blue.length = pScrn->weight.blue;
|
||||||
|
} else {
|
||||||
|
var->red.length = 8;
|
||||||
|
var->green.length = 8;
|
||||||
|
var->blue.length = 8;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -227,6 +235,26 @@ xfree2fbdev_timing(DisplayModePtr mode, struct fb_var_screeninfo *var)
|
||||||
var->vmode = FB_VMODE_NONINTERLACED;
|
var->vmode = FB_VMODE_NONINTERLACED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
fbdev_modes_equal(struct fb_var_screeninfo *set, struct fb_var_screeninfo *req)
|
||||||
|
{
|
||||||
|
return (set->xres_virtual >= req->xres_virtual &&
|
||||||
|
set->yres_virtual == req->yres_virtual &&
|
||||||
|
set->bits_per_pixel == req->bits_per_pixel &&
|
||||||
|
set->red.length == req->red.length &&
|
||||||
|
set->green.length == req->green.length &&
|
||||||
|
set->blue.length == req->blue.length &&
|
||||||
|
set->xres == req->xres && set->yres == req->yres &&
|
||||||
|
set->pixclock == req->pixclock &&
|
||||||
|
set->right_margin == req->right_margin &&
|
||||||
|
set->hsync_len == req->hsync_len &&
|
||||||
|
set->left_margin == req->left_margin &&
|
||||||
|
set->lower_margin == req->lower_margin &&
|
||||||
|
set->vsync_len == req->vsync_len &&
|
||||||
|
set->upper_margin == req->upper_margin &&
|
||||||
|
set->sync == req->sync && set->vmode == req->vmode);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fbdev2xfree_timing(struct fb_var_screeninfo *var, DisplayModePtr mode)
|
fbdev2xfree_timing(struct fb_var_screeninfo *var, DisplayModePtr mode)
|
||||||
{
|
{
|
||||||
|
@ -470,13 +498,53 @@ fbdevHWGetVidmem(ScrnInfoPtr pScrn)
|
||||||
return fPtr->fix.smem_len;
|
return fPtr->fix.smem_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
fbdevHWSetMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool check)
|
||||||
|
{
|
||||||
|
fbdevHWPtr fPtr = FBDEVHWPTR(pScrn);
|
||||||
|
struct fb_var_screeninfo req_var = fPtr->var, set_var;
|
||||||
|
|
||||||
|
TRACE_ENTER("SetMode");
|
||||||
|
|
||||||
|
xfree2fbdev_fblayout(pScrn, &req_var);
|
||||||
|
xfree2fbdev_timing(mode, &req_var);
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
print_xfree_mode("init", mode);
|
||||||
|
print_fbdev_mode("init", &req_var);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
set_var = req_var;
|
||||||
|
|
||||||
|
if (check)
|
||||||
|
set_var.activate = FB_ACTIVATE_TEST;
|
||||||
|
|
||||||
|
if (0 != ioctl(fPtr->fd, FBIOPUT_VSCREENINFO, (void*)(&set_var))) {
|
||||||
|
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
||||||
|
"FBIOPUT_VSCREENINFO: %s\n", strerror(errno));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fbdev_modes_equal(&set_var, &req_var)) {
|
||||||
|
if (!check)
|
||||||
|
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
||||||
|
"FBIOPUT_VSCREENINFO succeeded but modified "
|
||||||
|
"mode\n");
|
||||||
|
#if DEBUG
|
||||||
|
print_fbdev_mode("returned", &set_var);
|
||||||
|
#endif
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!check)
|
||||||
|
fPtr->var = set_var;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
fbdevHWSetVideoModes(ScrnInfoPtr pScrn)
|
fbdevHWSetVideoModes(ScrnInfoPtr pScrn)
|
||||||
{
|
{
|
||||||
fbdevHWPtr fPtr = FBDEVHWPTR(pScrn);
|
|
||||||
int virtX = pScrn->display->virtualX;
|
|
||||||
int virtY = pScrn->display->virtualY;
|
|
||||||
struct fb_var_screeninfo var;
|
|
||||||
char **modename;
|
char **modename;
|
||||||
DisplayModePtr mode,this,last = pScrn->modes;
|
DisplayModePtr mode,this,last = pScrn->modes;
|
||||||
|
|
||||||
|
@ -484,6 +552,9 @@ fbdevHWSetVideoModes(ScrnInfoPtr pScrn)
|
||||||
if (NULL == pScrn->display->modes)
|
if (NULL == pScrn->display->modes)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
pScrn->virtualX = pScrn->display->virtualX;
|
||||||
|
pScrn->virtualY = pScrn->display->virtualY;
|
||||||
|
|
||||||
for (modename = pScrn->display->modes; *modename != NULL; modename++) {
|
for (modename = pScrn->display->modes; *modename != NULL; modename++) {
|
||||||
for (mode = pScrn->monitor->Modes; mode != NULL; mode = mode->next)
|
for (mode = pScrn->monitor->Modes; mode != NULL; mode = mode->next)
|
||||||
if (0 == strcmp(mode->name,*modename))
|
if (0 == strcmp(mode->name,*modename))
|
||||||
|
@ -493,27 +564,20 @@ fbdevHWSetVideoModes(ScrnInfoPtr pScrn)
|
||||||
"\tmode \"%s\" not found\n", *modename);
|
"\tmode \"%s\" not found\n", *modename);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
memset(&var,0,sizeof(var));
|
|
||||||
xfree2fbdev_timing(mode,&var);
|
|
||||||
var.xres_virtual = virtX;
|
|
||||||
var.yres_virtual = virtY;
|
|
||||||
var.bits_per_pixel = pScrn->bitsPerPixel;
|
|
||||||
var.red.length = pScrn->weight.red;
|
|
||||||
var.green.length = pScrn->weight.green;
|
|
||||||
var.blue.length = pScrn->weight.blue;
|
|
||||||
|
|
||||||
var.activate = FB_ACTIVATE_TEST;
|
if (!fbdevHWSetMode(pScrn, mode, TRUE)) {
|
||||||
if (var.xres_virtual < var.xres) var.xres_virtual = var.xres;
|
|
||||||
if (var.yres_virtual < var.yres) var.yres_virtual = var.yres;
|
|
||||||
if (-1 == ioctl(fPtr->fd,FBIOPUT_VSCREENINFO,(void*)(&var))) {
|
|
||||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||||
"\tmode \"%s\" test failed\n", *modename);
|
"\tmode \"%s\" test failed\n", *modename);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||||
"\tmode \"%s\" ok\n", *modename);
|
"\tmode \"%s\" ok\n", *modename);
|
||||||
if (virtX < var.xres) virtX = var.xres;
|
|
||||||
if (virtY < var.yres) virtY = var.yres;
|
if (pScrn->virtualX < mode->HDisplay)
|
||||||
|
pScrn->virtualX = mode->HDisplay;
|
||||||
|
if (pScrn->virtualY < mode->VDisplay)
|
||||||
|
pScrn->virtualY = mode->VDisplay;
|
||||||
|
|
||||||
if (NULL == pScrn->modes) {
|
if (NULL == pScrn->modes) {
|
||||||
pScrn->modes = xnfalloc(sizeof(DisplayModeRec));
|
pScrn->modes = xnfalloc(sizeof(DisplayModeRec));
|
||||||
this = pScrn->modes;
|
this = pScrn->modes;
|
||||||
|
@ -530,8 +594,6 @@ fbdevHWSetVideoModes(ScrnInfoPtr pScrn)
|
||||||
}
|
}
|
||||||
last = this;
|
last = this;
|
||||||
}
|
}
|
||||||
pScrn->virtualX = virtX;
|
|
||||||
pScrn->virtualY = virtY;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayModePtr
|
DisplayModePtr
|
||||||
|
@ -673,21 +735,12 @@ fbdevHWModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
|
||||||
{
|
{
|
||||||
fbdevHWPtr fPtr = FBDEVHWPTR(pScrn);
|
fbdevHWPtr fPtr = FBDEVHWPTR(pScrn);
|
||||||
|
|
||||||
TRACE_ENTER("ModeInit");
|
|
||||||
xfree2fbdev_fblayout(pScrn, &fPtr->var);
|
|
||||||
xfree2fbdev_timing(mode, &fPtr->var);
|
|
||||||
#if DEBUG
|
|
||||||
print_xfree_mode("init",mode);
|
|
||||||
print_fbdev_mode("init",&fPtr->var);
|
|
||||||
#endif
|
|
||||||
pScrn->vtSema = TRUE;
|
pScrn->vtSema = TRUE;
|
||||||
|
|
||||||
/* set */
|
/* set */
|
||||||
if (0 != ioctl(fPtr->fd,FBIOPUT_VSCREENINFO,(void*)(&fPtr->var))) {
|
if (!fbdevHWSetMode(pScrn, mode, FALSE))
|
||||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
|
||||||
"FBIOPUT_VSCREENINFO: %s\n", strerror(errno));
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
/* read back */
|
/* read back */
|
||||||
if (0 != ioctl(fPtr->fd,FBIOGET_FSCREENINFO,(void*)(&fPtr->fix))) {
|
if (0 != ioctl(fPtr->fd,FBIOGET_FSCREENINFO,(void*)(&fPtr->fix))) {
|
||||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
||||||
|
@ -699,6 +752,20 @@ fbdevHWModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
|
||||||
"FBIOGET_VSCREENINFO: %s\n", strerror(errno));
|
"FBIOGET_VSCREENINFO: %s\n", strerror(errno));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pScrn->defaultVisual == TrueColor ||
|
||||||
|
pScrn->defaultVisual == DirectColor) {
|
||||||
|
/* XXX: This is a hack, but it should be a NOP for all the setups that
|
||||||
|
* worked before and actually seems to fix some others...
|
||||||
|
*/
|
||||||
|
pScrn->offset.red = fPtr->var.red.offset;
|
||||||
|
pScrn->offset.green = fPtr->var.green.offset;
|
||||||
|
pScrn->offset.blue = fPtr->var.blue.offset;
|
||||||
|
pScrn->mask.red = ((1 << fPtr->var.red.length) - 1) << fPtr->var.red.offset;
|
||||||
|
pScrn->mask.green = ((1 << fPtr->var.green.length) - 1) << fPtr->var.green.offset;
|
||||||
|
pScrn->mask.blue = ((1 << fPtr->var.blue.length) - 1) << fPtr->var.blue.offset;
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -767,18 +834,12 @@ ModeStatus
|
||||||
fbdevHWValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
|
fbdevHWValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
|
||||||
{
|
{
|
||||||
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
||||||
fbdevHWPtr fPtr = FBDEVHWPTR(pScrn);
|
|
||||||
struct fb_var_screeninfo var;
|
|
||||||
|
|
||||||
TRACE_ENTER("ValidMode");
|
TRACE_ENTER("ValidMode");
|
||||||
memcpy(&var,&fPtr->var,sizeof(var));
|
|
||||||
xfree2fbdev_timing(mode, &var);
|
if (!fbdevHWSetMode(pScrn, mode, TRUE))
|
||||||
var.activate = FB_ACTIVATE_TEST;
|
|
||||||
if (0 != ioctl(fPtr->fd,FBIOPUT_VSCREENINFO,(void*)(&fPtr->var))) {
|
|
||||||
xf86DrvMsg(scrnIndex, X_ERROR,
|
|
||||||
"FBIOPUT_VSCREENINFO: %s\n", strerror(errno));
|
|
||||||
return MODE_BAD;
|
return MODE_BAD;
|
||||||
}
|
|
||||||
return MODE_OK;
|
return MODE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -786,15 +847,12 @@ Bool
|
||||||
fbdevHWSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
|
fbdevHWSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
|
||||||
{
|
{
|
||||||
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
||||||
fbdevHWPtr fPtr = FBDEVHWPTR(pScrn);
|
|
||||||
|
|
||||||
TRACE_ENTER("SwitchMode");
|
TRACE_ENTER("SwitchMode");
|
||||||
xfree2fbdev_timing(mode, &fPtr->var);
|
|
||||||
if (0 != ioctl(fPtr->fd,FBIOPUT_VSCREENINFO,(void*)(&fPtr->var))) {
|
if (!fbdevHWSetMode(pScrn, mode, FALSE))
|
||||||
xf86DrvMsg(scrnIndex, X_ERROR,
|
|
||||||
"FBIOPUT_VSCREENINFO: %s\n", strerror(errno));
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -113,6 +113,10 @@ DLFindSymbol(const char *name)
|
||||||
DLModuleList *l;
|
DLModuleList *l;
|
||||||
void *p;
|
void *p;
|
||||||
|
|
||||||
|
p = dlsym(RTLD_DEFAULT, name);
|
||||||
|
if (p != NULL)
|
||||||
|
return p;
|
||||||
|
|
||||||
for (l = dlModuleList; l != NULL; l = l->next) {
|
for (l = dlModuleList; l != NULL; l = l->next) {
|
||||||
p = DLFindSymbolLocal(l->module, name);
|
p = DLFindSymbolLocal(l->module, name);
|
||||||
if (p)
|
if (p)
|
||||||
|
|
|
@ -903,7 +903,7 @@ doLoadModule(const char *module, const char *path, const char **subdirlist,
|
||||||
* check the elements in the path
|
* check the elements in the path
|
||||||
*/
|
*/
|
||||||
if (PathIsAbsolute(module))
|
if (PathIsAbsolute(module))
|
||||||
xstrdup(module);
|
found = xstrdup(module);
|
||||||
path_elem = pathlist;
|
path_elem = pathlist;
|
||||||
while (!found && *path_elem != NULL) {
|
while (!found && *path_elem != NULL) {
|
||||||
found = FindModule(m, *path_elem, subdirlist, patterns);
|
found = FindModule(m, *path_elem, subdirlist, patterns);
|
||||||
|
|
|
@ -570,7 +570,8 @@ linuxMapPci(int ScreenNum, int Flags, PCITAG Tag,
|
||||||
|
|
||||||
xf86InitVidMem();
|
xf86InitVidMem();
|
||||||
|
|
||||||
if (((fd = linuxPciOpenFile(Tag ,FALSE)) < 0) ||
|
prot = ((Flags & VIDMEM_READONLY) == 0);
|
||||||
|
if (((fd = linuxPciOpenFile(Tag, prot)) < 0) ||
|
||||||
(ioctl(fd, mmap_ioctl, 0) < 0))
|
(ioctl(fd, mmap_ioctl, 0) < 0))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,14 @@ PLATFORM_DEFINES = -DOS_PROBE_PCI_CHIPSET=lnxProbePciChipset
|
||||||
PLATFORM_INCLUDES = -I$(srcdir)/../shared
|
PLATFORM_INCLUDES = -I$(srcdir)/../shared
|
||||||
endif
|
endif
|
||||||
if LINUX_ALPHA
|
if LINUX_ALPHA
|
||||||
PLATFORM_PCI_SUPPORT = lnx_ev56.c \
|
noinst_LTLIBRARIES += liblinuxev56.la
|
||||||
|
PLATFORM_PCI_SUPPORT = \
|
||||||
$(srcdir)/lnx_axp.c \
|
$(srcdir)/lnx_axp.c \
|
||||||
$(srcdir)/../shared/xf86Axp.c
|
$(srcdir)/../shared/xf86Axp.c
|
||||||
|
|
||||||
|
liblinuxev56_la_CFLAGS = -mcpu=ev56
|
||||||
|
|
||||||
|
liblinuxev56_la_SOURCES = lnx_ev56.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if LNXACPI
|
if LNXACPI
|
||||||
|
@ -48,3 +53,7 @@ EXTRA_DIST = \
|
||||||
$(LNX_EXTRA_SRCS) \
|
$(LNX_EXTRA_SRCS) \
|
||||||
lnx.h \
|
lnx.h \
|
||||||
$(srcdir)/../shared/xf86Axp.h
|
$(srcdir)/../shared/xf86Axp.h
|
||||||
|
|
||||||
|
if LINUX_ALPHA
|
||||||
|
liblinux_la_LIBADD = liblinuxev56.la
|
||||||
|
endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
/* This file has to be built with -mcpu=ev56 */
|
||||||
#ifdef HAVE_XORG_CONFIG_H
|
#ifdef HAVE_XORG_CONFIG_H
|
||||||
#include <xorg-config.h>
|
#include <xorg-config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -428,7 +428,7 @@ typedef int xf86jmp_buf[1024];
|
||||||
#define toupper(i) xf86toupper(i)
|
#define toupper(i) xf86toupper(i)
|
||||||
#undef ungetc
|
#undef ungetc
|
||||||
#define ungetc(i,FP) xf86ungetc(i,FP)
|
#define ungetc(i,FP) xf86ungetc(i,FP)
|
||||||
#undef vfprinf
|
#undef vfprintf
|
||||||
#define vfprintf(p,f,a) xf86vfprintf(p,f,a)
|
#define vfprintf(p,f,a) xf86vfprintf(p,f,a)
|
||||||
#undef vsnprintf
|
#undef vsnprintf
|
||||||
#define vsnprintf(s,n,f,a) xf86vsnprintf(s,n,f,a)
|
#define vsnprintf(s,n,f,a) xf86vsnprintf(s,n,f,a)
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
# This file can be distributed under either the GNU General Public License
|
# This file can be distributed under either the GNU General Public License
|
||||||
# (version 2 or higher) or the 3-clause BSD License.
|
# (version 2 or higher) or the 3-clause BSD License.
|
||||||
#
|
#
|
||||||
# Daily snapshot on Wed 2006-12-06 02:05:02
|
# Daily snapshot on Thu 2007-01-18 02:05:01
|
||||||
#
|
#
|
||||||
|
|
||||||
# Vendors, devices and subsystems. Please keep sorted.
|
# Vendors, devices and subsystems. Please keep sorted.
|
||||||
|
@ -23,11 +23,28 @@
|
||||||
|
|
||||||
0000 Gammagraphx, Inc.
|
0000 Gammagraphx, Inc.
|
||||||
001a Ascend Communications, Inc.
|
001a Ascend Communications, Inc.
|
||||||
|
001c PEAK-System Technik GmbH
|
||||||
|
0001 PCAN-PCI CAN-Bus controller
|
||||||
0033 Paradyne corp.
|
0033 Paradyne corp.
|
||||||
003d Lockheed Martin-Marietta Corp
|
003d Lockheed Martin-Marietta Corp
|
||||||
# Real TJN ID is e159, but they got it wrong several times --mj
|
# Real TJN ID is e159, but they got it wrong several times --mj
|
||||||
0059 Tiger Jet Network Inc. (Wrong ID)
|
0059 Tiger Jet Network Inc. (Wrong ID)
|
||||||
0070 Hauppauge computer works Inc.
|
0070 Hauppauge computer works Inc.
|
||||||
|
0003 WinTV PVR-250
|
||||||
|
0009 WinTV PVR-150
|
||||||
|
0801 WinTV PVR-150
|
||||||
|
0807 WinTV PVR-150
|
||||||
|
4000 WinTV PVR-350
|
||||||
|
4001 WinTV PVR-250 (v1)
|
||||||
|
4009 WinTV PVR-250
|
||||||
|
4800 WinTV PVR-350
|
||||||
|
4801 WinTV PVR-250 MCE
|
||||||
|
4803 WinTV PVR-250
|
||||||
|
8003 WinTV PVR-150
|
||||||
|
8801 WinTV PVR-150
|
||||||
|
c801 WinTV PVR-150
|
||||||
|
e807 WinTV PVR-500 MCE (1st tuner)
|
||||||
|
e817 WinTV PVR-500 MCE (2nd tuner)
|
||||||
0071 Nebula Electronics Ltd.
|
0071 Nebula Electronics Ltd.
|
||||||
0095 Silicon Image, Inc. (Wrong ID)
|
0095 Silicon Image, Inc. (Wrong ID)
|
||||||
0680 Ultra ATA/133 IDE RAID CONTROLLER CARD
|
0680 Ultra ATA/133 IDE RAID CONTROLLER CARD
|
||||||
|
@ -51,6 +68,7 @@
|
||||||
0315 SK-Electronics Co., Ltd.
|
0315 SK-Electronics Co., Ltd.
|
||||||
0357 TTTech AG
|
0357 TTTech AG
|
||||||
000a TTP-Monitoring Card V2.0
|
000a TTP-Monitoring Card V2.0
|
||||||
|
0403 Future Technology Devices International Ltd
|
||||||
0432 SCM Microsystems, Inc.
|
0432 SCM Microsystems, Inc.
|
||||||
0001 Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet]
|
0001 Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet]
|
||||||
045e Microsoft
|
045e Microsoft
|
||||||
|
@ -63,6 +81,7 @@
|
||||||
001a FSD7000 802.11g PCI Wireless card
|
001a FSD7000 802.11g PCI Wireless card
|
||||||
0109 F5U409-CU USB/Serial Portable Adapter
|
0109 F5U409-CU USB/Serial Portable Adapter
|
||||||
7050 F5D7050 802.11g Wireless USB Adapter
|
7050 F5D7050 802.11g Wireless USB Adapter
|
||||||
|
705c F5D7050 v4
|
||||||
05a9 OmniVision
|
05a9 OmniVision
|
||||||
8519 OV519 series
|
8519 OV519 series
|
||||||
05e3 CyberDoor
|
05e3 CyberDoor
|
||||||
|
@ -78,23 +97,42 @@
|
||||||
067b Prolific Technology, Inc.
|
067b Prolific Technology, Inc.
|
||||||
2303 PL-2303 USB-to-Serial Converter
|
2303 PL-2303 USB-to-Serial Converter
|
||||||
3507 PL-3507 Hi-Speed USB & IEEE 1394 Combo to IDE Bridge Controller
|
3507 PL-3507 Hi-Speed USB & IEEE 1394 Combo to IDE Bridge Controller
|
||||||
|
069d Hughes Network Systems (HNS)
|
||||||
0721 Sapphire, Inc.
|
0721 Sapphire, Inc.
|
||||||
|
07ca AVerMedia Technologies Inc.
|
||||||
|
b808 AVerTV DVB-T Volar (USB 2.0)
|
||||||
07e2 ELMEG Communication Systems GmbH
|
07e2 ELMEG Communication Systems GmbH
|
||||||
|
0842 NPG, Personal Grand Technology
|
||||||
|
08ff AuthenTec
|
||||||
|
afe4 [Anchor] AF-S2 FingerLoc Sensor Module
|
||||||
# Wrong ID used in subsystem ID of VIA USB controllers.
|
# Wrong ID used in subsystem ID of VIA USB controllers.
|
||||||
0925 VIA Technologies, Inc. (Wrong ID)
|
0925 VIA Technologies, Inc. (Wrong ID)
|
||||||
093a PixArt Imaging Inc.
|
093a PixArt Imaging Inc.
|
||||||
|
010e Innovage Mini Digital Camera
|
||||||
|
010f SDC-300 Webcam
|
||||||
|
2468 CIF Single Chip
|
||||||
|
2603 Philips Webcam SPC500NC
|
||||||
|
2608 Maxell MaxCam RotaWeb
|
||||||
09c1 Arris
|
09c1 Arris
|
||||||
0704 CM 200E Cable Modem
|
0704 CM 200E Cable Modem
|
||||||
0a89 BREA Technologies Inc
|
0a89 BREA Technologies Inc
|
||||||
|
0ace ZyDAS
|
||||||
|
1211 ZD1211 IEEE 802.11b+g USB Adapter
|
||||||
0b0b Rhino Equiment Corp.
|
0b0b Rhino Equiment Corp.
|
||||||
0105 Rhino R1T1
|
0105 Rhino R1T1
|
||||||
0205 Rhino R4FXO
|
0205 Rhino R4FXO
|
||||||
|
0206 RCB4FXO 4-channel FXO analog telphony card
|
||||||
0305 Rhino R4T1
|
0305 Rhino R4T1
|
||||||
0405 Rhino R8FXX
|
0405 Rhino R8FXX
|
||||||
|
0406 RCB8FXX 8-channel modular analog telphony card
|
||||||
0505 Rhino R24FXX
|
0505 Rhino R24FXX
|
||||||
0506 Rhino R2T1
|
0506 RCB24FXS 24-Channel FXS analog telphony card
|
||||||
0605 Rhino R2T1
|
0605 Rhino R2T1
|
||||||
0705 Rhino R24FXS
|
0705 Rhino R24FXS
|
||||||
|
0706 RCB24FXO 24-Channel FXO analog telphony card
|
||||||
|
0905 R1T3 Single T3 Digital Telephony Card
|
||||||
|
0906 RCB24FXX 24-channel modular analog telphony card
|
||||||
|
0a06 RCB672FXX 672-channel modular analog telphony card
|
||||||
0b49 ASCII Corporation
|
0b49 ASCII Corporation
|
||||||
064f Trance Vibrator
|
064f Trance Vibrator
|
||||||
0ccd TerraTec Electronic GmbH
|
0ccd TerraTec Electronic GmbH
|
||||||
|
@ -288,16 +326,33 @@
|
||||||
0041 53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
|
0041 53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
|
||||||
0050 SAS1064 PCI-X Fusion-MPT SAS
|
0050 SAS1064 PCI-X Fusion-MPT SAS
|
||||||
0054 SAS1068 PCI-X Fusion-MPT SAS
|
0054 SAS1068 PCI-X Fusion-MPT SAS
|
||||||
|
0055 SAS1068 PCI-X Fusion-MPT SAS
|
||||||
|
1033 8336 SAS1068
|
||||||
0056 SAS1064E PCI-Express Fusion-MPT SAS
|
0056 SAS1064E PCI-Express Fusion-MPT SAS
|
||||||
0058 SAS1068E PCI-Express Fusion-MPT SAS
|
0058 SAS1068E PCI-Express Fusion-MPT SAS
|
||||||
005a SAS1066E PCI-Express Fusion-MPT SAS
|
005a SAS1066E PCI-Express Fusion-MPT SAS
|
||||||
005c SAS1064A PCI-X Fusion-MPT SAS
|
005c SAS1064A PCI-X Fusion-MPT SAS
|
||||||
005e SAS1066 PCI-X Fusion-MPT SAS
|
005e SAS1066 PCI-X Fusion-MPT SAS
|
||||||
0060 MegaRAID SAS 1078
|
0060 MegaRAID SAS 1078
|
||||||
|
1000 1006 MegaRAID SAS 8888ELP
|
||||||
|
1000 100a MegaRAID SAS 8708ELP
|
||||||
|
1000 100e MegaRAID SAS 8884E
|
||||||
|
1000 100f MegaRAID SAS 8708E
|
||||||
|
1000 1010 MegaRAID SATA 350-8ELP
|
||||||
|
1000 1011 MegaRAID SATA 350-4ELP
|
||||||
|
1000 1012 MegaRAID SAS 8704ELP
|
||||||
|
1014 0363 MegaRAID SAS PCI Express ROMB
|
||||||
|
1014 0364 SystemX MegaRAID SAS 8808E
|
||||||
|
1014 0365 SystemX MegaRAID SAS 8884E
|
||||||
1028 1f0a PERC 6/E Adapter RAID Controller
|
1028 1f0a PERC 6/E Adapter RAID Controller
|
||||||
1028 1f0b PERC 6/i Adapter RAID Controller
|
1028 1f0b PERC 6/i Adapter RAID Controller
|
||||||
1028 1f0c PERC 6/i Integrated RAID Controller
|
1028 1f0c PERC 6/i Integrated RAID Controller
|
||||||
1028 1f0d PERC 6/i Enhanced RAID Controller
|
1028 1f0d CERC 6/i Adapter RAID Controller
|
||||||
|
1028 1f11 CERC 6/i Adapter RAID Controller
|
||||||
|
1043 824d MegaRAID SAS PCI Express ROMB
|
||||||
|
1170 002f MegaRAID SAS PCI Express ROMB
|
||||||
|
8086 34cc Integrated RAID Controller SROMBSAS28E
|
||||||
|
8086 34cd Integrated RAID Controller SROMBSAS28E
|
||||||
0062 SAS1078 PCI-Express Fusion-MPT SAS
|
0062 SAS1078 PCI-Express Fusion-MPT SAS
|
||||||
1000 0062 SAS1078 PCI-Express Fusion-MPT SAS
|
1000 0062 SAS1078 PCI-Express Fusion-MPT SAS
|
||||||
008f 53c875J
|
008f 53c875J
|
||||||
|
@ -317,6 +372,9 @@
|
||||||
1025 004d MegaRAID ACER ROMB-2E RAID Controller
|
1025 004d MegaRAID ACER ROMB-2E RAID Controller
|
||||||
1028 0001 PowerEdge RAID Controller PERC4e/SC
|
1028 0001 PowerEdge RAID Controller PERC4e/SC
|
||||||
1028 0002 PowerEdge RAID Controller PERC4e/DC
|
1028 0002 PowerEdge RAID Controller PERC4e/DC
|
||||||
|
1028 0012 PowerEdge RAID Controller RAC4
|
||||||
|
1028 0015 PowerEdge RAID Controller PERC5
|
||||||
|
1028 1f03 PowerEdge RAID Controller PERC5
|
||||||
1734 1065 FSC MegaRAID PCI Express ROMB
|
1734 1065 FSC MegaRAID PCI Express ROMB
|
||||||
8086 0002 MegaRAID Intel RAID Controller SRCU42E
|
8086 0002 MegaRAID Intel RAID Controller SRCU42E
|
||||||
0409 MegaRAID
|
0409 MegaRAID
|
||||||
|
@ -330,6 +388,7 @@
|
||||||
1000 1002 MegaRAID SAS 8480E
|
1000 1002 MegaRAID SAS 8480E
|
||||||
1000 1003 MegaRAID SAS 8344ELP
|
1000 1003 MegaRAID SAS 8344ELP
|
||||||
1000 1004 MegaRAID SAS 8308ELP
|
1000 1004 MegaRAID SAS 8308ELP
|
||||||
|
1000 1008 MegaRAID SAS 84016E
|
||||||
1000 100c MegaRAID SATA 300-12E
|
1000 100c MegaRAID SATA 300-12E
|
||||||
1000 100d MegaRAID SATA 300-16E
|
1000 100d MegaRAID SATA 300-16E
|
||||||
1000 2004 MegaRAID SATA 300-8ELP
|
1000 2004 MegaRAID SATA 300-8ELP
|
||||||
|
@ -338,8 +397,8 @@
|
||||||
1054 3016 MegaRAID SAS RoMB Server
|
1054 3016 MegaRAID SAS RoMB Server
|
||||||
1734 1081 MegaRAID SAS PCI Express ROMB
|
1734 1081 MegaRAID SAS PCI Express ROMB
|
||||||
1734 10a3 MegaRAID SAS PCI Express ROMB
|
1734 10a3 MegaRAID SAS PCI Express ROMB
|
||||||
8086 1001 SRCSAS18E RAID Controller
|
8086 1001 RAID Controller SRCSAS18E
|
||||||
8086 1003 SRCSAS144E RAID Controller
|
8086 1003 RAID Controller SRCSAS144E
|
||||||
8086 3500 SROMBSAS18E RAID Controller
|
8086 3500 SROMBSAS18E RAID Controller
|
||||||
8086 3501 SROMBSAS18E RAID Controller
|
8086 3501 SROMBSAS18E RAID Controller
|
||||||
8086 3504 SROMBSAS18E RAID Controller
|
8086 3504 SROMBSAS18E RAID Controller
|
||||||
|
@ -509,7 +568,11 @@
|
||||||
103c 308b MX6125
|
103c 308b MX6125
|
||||||
4379 ATI 4379 Serial ATA Controller
|
4379 ATI 4379 Serial ATA Controller
|
||||||
437a ATI 437A Serial ATA Controller
|
437a ATI 437A Serial ATA Controller
|
||||||
|
1002 4379 ATI 4379 Serial ATA Controller
|
||||||
|
1002 437a ATI 437A Serial ATA Controller
|
||||||
|
14f1 8800 Leadtek WinFast TV2000XP Expert
|
||||||
437b SB450 HDA Audio
|
437b SB450 HDA Audio
|
||||||
|
1734 10b8 Realtek High Definition Audio
|
||||||
4380 SB600 Non-Raid-5 SATA
|
4380 SB600 Non-Raid-5 SATA
|
||||||
4381 SB600 Raid-5 SATA
|
4381 SB600 Raid-5 SATA
|
||||||
4382 SB600 AC97 Audio
|
4382 SB600 AC97 Audio
|
||||||
|
@ -584,6 +647,7 @@
|
||||||
1734 007a Primergy RX300
|
1734 007a Primergy RX300
|
||||||
8086 3411 SDS2 Mainboard
|
8086 3411 SDS2 Mainboard
|
||||||
8086 3427 S875WP1-E mainboard
|
8086 3427 S875WP1-E mainboard
|
||||||
|
8086 5744 S845WD1-E mainboard
|
||||||
4753 Rage XC
|
4753 Rage XC
|
||||||
1002 4753 Rage XC
|
1002 4753 Rage XC
|
||||||
4754 3D Rage I/II 215GT [Mach64 GT]
|
4754 3D Rage I/II 215GT [Mach64 GT]
|
||||||
|
@ -711,10 +775,12 @@
|
||||||
1025 005a TravelMate 290
|
1025 005a TravelMate 290
|
||||||
103c 088c NC8000 laptop
|
103c 088c NC8000 laptop
|
||||||
103c 0890 NC6000 laptop
|
103c 0890 NC6000 laptop
|
||||||
|
144d c00c P35 notebook
|
||||||
1462 0311 MSI M510A
|
1462 0311 MSI M510A
|
||||||
1734 1055 Amilo M1420W
|
1734 1055 Amilo M1420W
|
||||||
4e51 M10 NQ [Radeon Mobility 9600]
|
4e51 M10 NQ [Radeon Mobility 9600]
|
||||||
4e52 RV350 [Mobility Radeon 9600 M10]
|
4e52 RV350 [Mobility Radeon 9600 M10]
|
||||||
|
144d c00c P35 notebook
|
||||||
4e53 M10 NS [Radeon Mobility 9600]
|
4e53 M10 NS [Radeon Mobility 9600]
|
||||||
4e54 M10 NT [FireGL Mobility T2]
|
4e54 M10 NT [FireGL Mobility T2]
|
||||||
4e56 M11 NV [FireGL Mobility T2e]
|
4e56 M11 NV [FireGL Mobility T2e]
|
||||||
|
@ -900,7 +966,7 @@
|
||||||
554d R430 [Radeon X800 XL] (PCIe)
|
554d R430 [Radeon X800 XL] (PCIe)
|
||||||
554f R430 [Radeon X800 (PCIE)]
|
554f R430 [Radeon X800 (PCIE)]
|
||||||
5550 R423 [Fire GL V7100]
|
5550 R423 [Fire GL V7100]
|
||||||
5551 R423 UQ [FireGL V7200 (PCIE)]
|
5551 R423 [FireGL V5100 (PCIE)]
|
||||||
5552 R423 UR [FireGL V5100 (PCIE)]
|
5552 R423 UR [FireGL V5100 (PCIE)]
|
||||||
5554 R423 UT [FireGL V7100 (PCIE)]
|
5554 R423 UT [FireGL V7100 (PCIE)]
|
||||||
5569 R423 UI [Radeon X800PRO (PCIE)] Secondary
|
5569 R423 UI [Radeon X800PRO (PCIE)] Secondary
|
||||||
|
@ -936,6 +1002,7 @@
|
||||||
1025 0080 Aspire 5024WLMMi
|
1025 0080 Aspire 5024WLMMi
|
||||||
103c 308b MX6125
|
103c 308b MX6125
|
||||||
5951 ATI Radeon Xpress 200 (RS480/RS482/RX480/RX482) Chipset - Host bridge
|
5951 ATI Radeon Xpress 200 (RS480/RS482/RX480/RX482) Chipset - Host bridge
|
||||||
|
5952 RD580 [CrossFire Xpress 3200] Chipset Host Bridge
|
||||||
5954 RS480 [Radeon Xpress 200G Series]
|
5954 RS480 [Radeon Xpress 200G Series]
|
||||||
1002 5954 RV370 [Radeon Xpress 200G Series]
|
1002 5954 RV370 [Radeon Xpress 200G Series]
|
||||||
5955 ATI Radeon XPRESS 200M 5955 (PCIE)
|
5955 ATI Radeon XPRESS 200M 5955 (PCIE)
|
||||||
|
@ -954,6 +1021,7 @@
|
||||||
18bc 0053 Radeon 9200 Game Buster VIVO
|
18bc 0053 Radeon 9200 Game Buster VIVO
|
||||||
5962 RV280 [Radeon 9200]
|
5962 RV280 [Radeon 9200]
|
||||||
5964 RV280 [Radeon 9200 SE]
|
5964 RV280 [Radeon 9200 SE]
|
||||||
|
1002 5964 ATI Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz
|
||||||
1043 c006 ASUS Radeon 9200 SE / TD / 128M
|
1043 c006 ASUS Radeon 9200 SE / TD / 128M
|
||||||
1458 4018 Radeon 9200 SE
|
1458 4018 Radeon 9200 SE
|
||||||
1458 4032 Radeon 9200 SE 128MB
|
1458 4032 Radeon 9200 SE 128MB
|
||||||
|
@ -966,11 +1034,12 @@
|
||||||
18bc 0173 GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]
|
18bc 0173 GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]
|
||||||
5969 ES1000
|
5969 ES1000
|
||||||
5974 RS482 [Radeon Xpress 200]
|
5974 RS482 [Radeon Xpress 200]
|
||||||
5975 RS482 [Radeon Xpress 200M]
|
5975 RS485 [Radeon Xpress 1100 IGP]
|
||||||
5a33 Radeon Xpress 200 Host Bridge
|
5a33 Radeon Xpress 200 Host Bridge
|
||||||
5a34 RS480 PCI-X Root Port
|
5a34 RS480 PCI-X Root Port
|
||||||
# Comes in pair with 5a3f
|
# Comes in pair with 5a3f
|
||||||
5a36 RS480 PCI Bridge
|
5a36 RS480 PCI Bridge
|
||||||
|
5a37 RS480 PCI Bridge
|
||||||
5a38 RS480 PCI Bridge
|
5a38 RS480 PCI Bridge
|
||||||
# Comes in pair with 5a38
|
# Comes in pair with 5a38
|
||||||
5a39 RS480 PCI Bridge
|
5a39 RS480 PCI Bridge
|
||||||
|
@ -998,6 +1067,7 @@
|
||||||
5c61 M9+ 5C61 [Radeon Mobility 9200 (AGP)]
|
5c61 M9+ 5C61 [Radeon Mobility 9200 (AGP)]
|
||||||
5c63 M9+ 5C63 [Radeon Mobility 9200 (AGP)]
|
5c63 M9+ 5C63 [Radeon Mobility 9200 (AGP)]
|
||||||
1002 5c63 Apple iBook G4 2004
|
1002 5c63 Apple iBook G4 2004
|
||||||
|
144d c00c P30 notebook
|
||||||
5d44 RV280 [Radeon 9200 SE] (Secondary)
|
5d44 RV280 [Radeon 9200 SE] (Secondary)
|
||||||
1458 4019 Radeon 9200 SE (Secondary)
|
1458 4019 Radeon 9200 SE (Secondary)
|
||||||
1458 4032 Radeon 9200 SE 128MB
|
1458 4032 Radeon 9200 SE 128MB
|
||||||
|
@ -1052,11 +1122,13 @@
|
||||||
1002 0323 All-in-Wonder X1800XL (Secondary)
|
1002 0323 All-in-Wonder X1800XL (Secondary)
|
||||||
1002 0d03 Radeon X1800 CrossFire Edition (Secondary)
|
1002 0d03 Radeon X1800 CrossFire Edition (Secondary)
|
||||||
7140 RV515 [Radeon X1600]
|
7140 RV515 [Radeon X1600]
|
||||||
7142 RV515 [Radeon X1300]
|
7142 RV515 PRO [ATI Radeon X1300/X1550 Series]
|
||||||
1002 0322 All-in-Wonder 2006 PCI-E Edition
|
1002 0322 All-in-Wonder 2006 PCI-E Edition
|
||||||
|
7143 RV505 [Radeon X1550 Series]
|
||||||
7145 Radeon Mobility X1400
|
7145 Radeon Mobility X1400
|
||||||
7146 RV515 [Radeon X1300]
|
7146 RV515 [Radeon X1300]
|
||||||
1002 0322 All-in-Wonder 2006 PCI-E Edition
|
1002 0322 All-in-Wonder 2006 PCI-E Edition
|
||||||
|
7147 RV505 [Radeon X1550 64-bit]
|
||||||
7149 M52 [ATI Mobility Radeon X1300]
|
7149 M52 [ATI Mobility Radeon X1300]
|
||||||
714a M52 [ATI Mobility Radeon X1300]
|
714a M52 [ATI Mobility Radeon X1300]
|
||||||
714b M52 [ATI Mobility Radeon X1300]
|
714b M52 [ATI Mobility Radeon X1300]
|
||||||
|
@ -1064,28 +1136,47 @@
|
||||||
714d RV515 [Radeon X1300]
|
714d RV515 [Radeon X1300]
|
||||||
714e RV515 [Radeon X1300]
|
714e RV515 [Radeon X1300]
|
||||||
7152 RV515 GL ATI FireGL V3300 Primary
|
7152 RV515 GL ATI FireGL V3300 Primary
|
||||||
|
7153 RV515GL [FireGL V3350]
|
||||||
715e RV515 [Radeon X1300]
|
715e RV515 [Radeon X1300]
|
||||||
7162 RV515 [Radeon X1300] (Secondary)
|
715f RV505 CE [Radeon X1550 64-bit]
|
||||||
|
7162 RV515 PRO [ATI Radeon X1300/X1550 Series Secondary]
|
||||||
1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary)
|
1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary)
|
||||||
7166 RV515 [Radeon X1300] (Secondary)
|
7166 RV515 [Radeon X1300] (Secondary)
|
||||||
1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary)
|
1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary)
|
||||||
7172 RV515 GL ATI FireGL V3300 Secondary
|
7172 RV515 GL ATI FireGL V3300 Secondary
|
||||||
7180 RV516 Radeon X1300 Series Primary
|
7173 RV515GL [FireGL V3350 Secondary]
|
||||||
|
7180 RV516 [ATI Radeon X1300/X1550 Series]
|
||||||
7181 RV516 XT Radeon X1600 Series Primary
|
7181 RV516 XT Radeon X1600 Series Primary
|
||||||
71a0 RV516 Radeon X1300 Series Secondary
|
7183 RV516 [ATI Radeon X1300/X1550 Series]
|
||||||
|
7187 RV516 [ATI Radeon X1300/X1550 Series]
|
||||||
|
7188 M64-S [ATI Mobility Radeon X2300]
|
||||||
|
718a ATI Mobility Radeon X2300
|
||||||
|
718c M62CSP64 [ATI Mobility Radeon X1350]
|
||||||
|
718d M64CSP128 [ATI Mobility Radeon X1450]
|
||||||
|
7193 RV516 [Radeon X1550 Series]
|
||||||
|
719b FireMV 2250
|
||||||
|
719f RV516LE [Radeon X1550 64-bit]
|
||||||
|
71a0 RV516 [ATI Radeon X1300/X1550 Series Secondary]
|
||||||
71a1 RV516 XT Radeon X1600 Series Secondary
|
71a1 RV516 XT Radeon X1600 Series Secondary
|
||||||
|
71a3 RV516 [ATI Radeon X1300 Pro Secondary]
|
||||||
|
71a7 RV516 [ATI Radeon X1300/X1550 Series Secondary]
|
||||||
|
71bb FireMV 2250 Secondary
|
||||||
71c0 RV530 [Radeon X1600]
|
71c0 RV530 [Radeon X1600]
|
||||||
71c2 RV530 [Radeon X1600]
|
71c2 RV530 [Radeon X1600]
|
||||||
71c4 M56GL [ATI Mobility FireGL V5200]
|
71c4 M56GL [ATI Mobility FireGL V5200]
|
||||||
17aa 2007 ThinkPad T60p
|
17aa 2007 ThinkPad T60p
|
||||||
71c5 M56P [Radeon Mobility X1600]
|
71c5 M56P [Radeon Mobility X1600]
|
||||||
71c6 RV530LE [Radeon X1600]
|
71c6 RV530LE [Radeon X1600]
|
||||||
|
71c7 RV535 [Radeon X1650 Series]
|
||||||
71ce RV530LE [Radeon X1600]
|
71ce RV530LE [Radeon X1600]
|
||||||
71d5 M66-P ATI Mobility Radeon X1700
|
71d5 M66-P ATI Mobility Radeon X1700
|
||||||
71d6 M66-XT ATI Mobility Radeon X1700
|
71d6 M66-XT ATI Mobility Radeon X1700
|
||||||
71de RV530LE [Radeon X1600]
|
71de RV530LE [Radeon X1600]
|
||||||
71e0 RV530 [Radeon X1600] (Secondary)
|
71e0 RV530 [Radeon X1600] (Secondary)
|
||||||
71e2 RV530 [Radeon X1600] (Secondary)
|
71e2 RV530 [Radeon X1600] (Secondary)
|
||||||
|
71e7 RV535 [Radeon X1650 Series]
|
||||||
|
7210 M71 [ATI Mobility Radeon X2100]
|
||||||
|
7211 M71 [ATI Mobility Radeon X2100 Secondary]
|
||||||
7240 R580 [Radeon X1900]
|
7240 R580 [Radeon X1900]
|
||||||
7241 R580 [Radeon X1900]
|
7241 R580 [Radeon X1900]
|
||||||
7242 R580 [Radeon X1900]
|
7242 R580 [Radeon X1900]
|
||||||
|
@ -1098,15 +1189,29 @@
|
||||||
7249 R580 [Radeon X1900 XT] Primary
|
7249 R580 [Radeon X1900 XT] Primary
|
||||||
724a R580 [Radeon X1900]
|
724a R580 [Radeon X1900]
|
||||||
724b R580 [Radeon X1900]
|
724b R580 [Radeon X1900]
|
||||||
|
1002 0b12 Radeon X1900 Primary Display Device
|
||||||
|
1002 0b13 Radeon X1900 Secondary Display Device
|
||||||
724c R580 [Radeon X1900]
|
724c R580 [Radeon X1900]
|
||||||
724d R580 [Radeon X1900]
|
724d R580 [Radeon X1900]
|
||||||
724e R580 [FireGL V7300/V7350] Primary (PCIE)
|
724e R580 [AMD Stream Processor]
|
||||||
7269 R580 [Radeon X1900 XT] Secondary
|
7269 R580 [Radeon X1900 XT] Secondary
|
||||||
726e R580 [FireGL V7300/V7350] Secondary (PCIE)
|
726b R580 [Radeon X1900]
|
||||||
|
726e R580 [AMD Stream Processor Secondary]
|
||||||
|
7280 ATI Radeon X1950 Pro Primary (PCIE)
|
||||||
|
7288 ATI Radeon X1950 GT
|
||||||
|
7291 ATI Radeon X1650 XT Primary (PCIE)
|
||||||
|
7293 Radeon X1650 Series
|
||||||
|
72a0 ATI Radeon X1950 Pro Secondary (PCIE)
|
||||||
|
72a8 ATI Radeon X1950 GT Secondary
|
||||||
|
72b1 ATI Radeon X1650 XT Secondary (PCIE)
|
||||||
|
72b3 ATI Radeon X1650 Series Secondary
|
||||||
7833 Radeon 9100 IGP Host Bridge
|
7833 Radeon 9100 IGP Host Bridge
|
||||||
7834 Radeon 9100 PRO IGP
|
7834 Radeon 9100 PRO IGP
|
||||||
7835 Radeon Mobility 9200 IGP
|
7835 Radeon Mobility 9200 IGP
|
||||||
7838 Radeon 9100 IGP PCI/AGP Bridge
|
7838 Radeon 9100 IGP PCI/AGP Bridge
|
||||||
|
791e ATI Radeon Xpress 1200 Series
|
||||||
|
791f ATI Radeon Xpress 1200 Series
|
||||||
|
793f ATI Radeon Xpress 1200 Series Secondary
|
||||||
7c37 RV350 AQ [Radeon 9600 SE]
|
7c37 RV350 AQ [Radeon 9600 SE]
|
||||||
cab0 AGP Bridge [IGP 320M]
|
cab0 AGP Bridge [IGP 320M]
|
||||||
cab2 RS200/RS200M AGP Bridge [IGP 340M]
|
cab2 RS200/RS200M AGP Bridge [IGP 340M]
|
||||||
|
@ -1556,6 +1661,8 @@
|
||||||
2003 Am 1771 MBW [Alchemy]
|
2003 Am 1771 MBW [Alchemy]
|
||||||
2020 53c974 [PCscsi]
|
2020 53c974 [PCscsi]
|
||||||
2040 79c974
|
2040 79c974
|
||||||
|
# CS5536 [Geode companion] Host Bridge
|
||||||
|
2080 Conrad Kostecki
|
||||||
2081 Geode LX Video
|
2081 Geode LX Video
|
||||||
2082 Geode LX AES Security Block
|
2082 Geode LX AES Security Block
|
||||||
208f CS5536 GeodeLink PCI South Bridge
|
208f CS5536 GeodeLink PCI South Bridge
|
||||||
|
@ -1742,13 +1849,21 @@
|
||||||
1028 0001 PowerEdge 2400
|
1028 0001 PowerEdge 2400
|
||||||
0002 PowerEdge Expandable RAID Controller 3/Di
|
0002 PowerEdge Expandable RAID Controller 3/Di
|
||||||
1028 0002 PowerEdge 4400
|
1028 0002 PowerEdge 4400
|
||||||
|
1028 00d1 PERC 3/DiV [Viper]
|
||||||
|
1028 00d9 PERC 3/DiL [Lexus]
|
||||||
0003 PowerEdge Expandable RAID Controller 3/Si
|
0003 PowerEdge Expandable RAID Controller 3/Si
|
||||||
1028 0003 PowerEdge 2450
|
1028 0003 PowerEdge 2450
|
||||||
|
# PowerEdge Codename Iguana
|
||||||
|
0004 PowerEdge Expandable RAID Controller 3/Di [Iguana]
|
||||||
|
1028 0004 PERC 3/DiF [Iguana]
|
||||||
0006 PowerEdge Expandable RAID Controller 3/Di
|
0006 PowerEdge Expandable RAID Controller 3/Di
|
||||||
0007 Remote Access Card III
|
0007 Remote Access Card III
|
||||||
0008 Remote Access Card III
|
0008 Remote Access Card III
|
||||||
0009 Remote Access Card III: BMC/SMIC device not present
|
0009 Remote Access Card III: BMC/SMIC device not present
|
||||||
000a PowerEdge Expandable RAID Controller 3/Di
|
000a PowerEdge Expandable RAID Controller 3/Di
|
||||||
|
1028 0106 PERC 3/DiJ [Jaguar]
|
||||||
|
1028 011b PERC 3/DiD [Dagger]
|
||||||
|
1028 0121 PERC 3/DiB [Boxster]
|
||||||
000c Embedded Remote Access or ERA/O
|
000c Embedded Remote Access or ERA/O
|
||||||
000d Embedded Remote Access: BMC/SMIC device
|
000d Embedded Remote Access: BMC/SMIC device
|
||||||
000e PowerEdge Expandable RAID controller 4/Di
|
000e PowerEdge Expandable RAID controller 4/Di
|
||||||
|
@ -1764,6 +1879,9 @@
|
||||||
1028 0170 PowerEdge Expandable RAID Controller 4e/Di
|
1028 0170 PowerEdge Expandable RAID Controller 4e/Di
|
||||||
0014 Remote Access Card 4 Daughter Card SMIC interface
|
0014 Remote Access Card 4 Daughter Card SMIC interface
|
||||||
0015 PowerEdge Expandable RAID controller 5i
|
0015 PowerEdge Expandable RAID controller 5i
|
||||||
|
1028 1f01 PERC 5/E Adapter RAID Controller
|
||||||
|
1028 1f02 PERC 5/i Adapter RAID Controller
|
||||||
|
1f03 PERC 5/i
|
||||||
1029 Siemens Nixdorf IS
|
1029 Siemens Nixdorf IS
|
||||||
102a LSI Logic
|
102a LSI Logic
|
||||||
0000 HYDRA
|
0000 HYDRA
|
||||||
|
@ -1964,6 +2082,7 @@
|
||||||
102f 00f8 ATM Meteor 155
|
102f 00f8 ATM Meteor 155
|
||||||
0030 TC35815CF PCI 10/100 Mbit Ethernet Controller
|
0030 TC35815CF PCI 10/100 Mbit Ethernet Controller
|
||||||
0031 TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL
|
0031 TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL
|
||||||
|
0032 TC35815CF PCI 10/100 Mbit Ethernet Controller on TX4939
|
||||||
0105 TC86C001 [goku-s] IDE
|
0105 TC86C001 [goku-s] IDE
|
||||||
0106 TC86C001 [goku-s] USB 1.1 Host
|
0106 TC86C001 [goku-s] USB 1.1 Host
|
||||||
0107 TC86C001 [goku-s] USB Device Controller
|
0107 TC86C001 [goku-s] USB Device Controller
|
||||||
|
@ -2107,6 +2226,7 @@
|
||||||
1019 0a14 K7S5A motherboard
|
1019 0a14 K7S5A motherboard
|
||||||
1039 0900 SiS900 10/100 Ethernet Adapter
|
1039 0900 SiS900 10/100 Ethernet Adapter
|
||||||
1043 8035 CUSI-FX motherboard
|
1043 8035 CUSI-FX motherboard
|
||||||
|
1462 0900 MS-6701 motherboard
|
||||||
0961 SiS961 [MuTIOL Media IO]
|
0961 SiS961 [MuTIOL Media IO]
|
||||||
0962 SiS962 [MuTIOL Media IO]
|
0962 SiS962 [MuTIOL Media IO]
|
||||||
0963 SiS963 [MuTIOL Media IO]
|
0963 SiS963 [MuTIOL Media IO]
|
||||||
|
@ -2129,6 +2249,7 @@
|
||||||
1019 0970 P6STP-FL motherboard
|
1019 0970 P6STP-FL motherboard
|
||||||
1039 5513 SiS5513 EIDE Controller (A,B step)
|
1039 5513 SiS5513 EIDE Controller (A,B step)
|
||||||
1043 8035 CUSI-FX motherboard
|
1043 8035 CUSI-FX motherboard
|
||||||
|
1462 7010 MS-6701 motherboard
|
||||||
5517 5517
|
5517 5517
|
||||||
5571 5571
|
5571 5571
|
||||||
5581 5581 Pentium Chipset
|
5581 5581 Pentium Chipset
|
||||||
|
@ -2161,10 +2282,14 @@
|
||||||
1019 0a14 K7S5A motherboard
|
1019 0a14 K7S5A motherboard
|
||||||
1039 7000 Onboard USB Controller
|
1039 7000 Onboard USB Controller
|
||||||
1462 5470 K7SOM+ 5.2C Motherboard
|
1462 5470 K7SOM+ 5.2C Motherboard
|
||||||
|
1462 7010 MS-6701 motherboard
|
||||||
7002 USB 2.0 Controller
|
7002 USB 2.0 Controller
|
||||||
|
1462 7010 MS-6701 motherboard
|
||||||
1509 7002 Onboard USB Controller
|
1509 7002 Onboard USB Controller
|
||||||
7007 FireWire Controller
|
7007 FireWire Controller
|
||||||
|
1462 701d MS-6701
|
||||||
7012 AC'97 Sound Controller
|
7012 AC'97 Sound Controller
|
||||||
|
1462 7010 MS-6701 motherboard
|
||||||
15bd 1001 DFI 661FX motherboard
|
15bd 1001 DFI 661FX motherboard
|
||||||
# There are may be different modem codecs here (Intel537 compatible and incompatible)
|
# There are may be different modem codecs here (Intel537 compatible and incompatible)
|
||||||
7013 AC'97 Modem Controller
|
7013 AC'97 Modem Controller
|
||||||
|
@ -2252,10 +2377,13 @@
|
||||||
12ee PCI-X 2.0 Local Bus Adapter
|
12ee PCI-X 2.0 Local Bus Adapter
|
||||||
12f8 Broadcom BCM4306 802.11b/g Wireless LAN
|
12f8 Broadcom BCM4306 802.11b/g Wireless LAN
|
||||||
12fa BCM4306 802.11b/g Wireless LAN Controller
|
12fa BCM4306 802.11b/g Wireless LAN Controller
|
||||||
|
1302 RMP-3 Shared Memory Driver
|
||||||
|
1303 RMP-3 (Remote Management Processor)
|
||||||
2910 E2910A PCIBus Exerciser
|
2910 E2910A PCIBus Exerciser
|
||||||
2925 E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer
|
2925 E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer
|
||||||
3080 Pavilion ze2028ea
|
3080 Pavilion ze2028ea
|
||||||
3085 Realtek RTL8139/8139C/8139C+
|
3085 Realtek RTL8139/8139C/8139C+
|
||||||
|
30b5 Compaq Presario V3000Z
|
||||||
3220 Smart Array P600
|
3220 Smart Array P600
|
||||||
103c 3225 3 Gb/s SAS RAID
|
103c 3225 3 Gb/s SAS RAID
|
||||||
3230 Smart Array Controller
|
3230 Smart Array Controller
|
||||||
|
@ -2292,8 +2420,10 @@
|
||||||
80c5 nForce3 chipset motherboard [SK8N]
|
80c5 nForce3 chipset motherboard [SK8N]
|
||||||
80df v9520 Magic/T
|
80df v9520 Magic/T
|
||||||
815a A8N-SLI Motherboard nForce4 SATA
|
815a A8N-SLI Motherboard nForce4 SATA
|
||||||
|
8168 Realtek PCI-E Gigabit Ethernet Controller (RTL8111B)
|
||||||
8187 802.11a/b/g Wireless LAN Card
|
8187 802.11a/b/g Wireless LAN Card
|
||||||
8188 Tiger Hybrid TV Capture Device
|
8188 Tiger Hybrid TV Capture Device
|
||||||
|
81f4 EN7300TC512/TD/128M/A(C262G) [Graphics Card EN7300TC512]
|
||||||
1044 Adaptec (formerly DPT)
|
1044 Adaptec (formerly DPT)
|
||||||
1012 Domino RAID Engine
|
1012 Domino RAID Engine
|
||||||
a400 SmartCache/Raid I-IV Controller
|
a400 SmartCache/Raid I-IV Controller
|
||||||
|
@ -2444,6 +2574,7 @@
|
||||||
8023 TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
|
8023 TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
|
||||||
103c 088c NC8000 laptop
|
103c 088c NC8000 laptop
|
||||||
1043 808b K8N4-E Mainboard
|
1043 808b K8N4-E Mainboard
|
||||||
|
1043 815b P5W DH Deluxe Motherboard
|
||||||
8024 TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)
|
8024 TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)
|
||||||
8025 TSB82AA2 IEEE-1394b Link Layer Controller
|
8025 TSB82AA2 IEEE-1394b Link Layer Controller
|
||||||
1458 1000 GA-K8N Ultra-9 Mainboard
|
1458 1000 GA-K8N Ultra-9 Mainboard
|
||||||
|
@ -2483,14 +2614,17 @@
|
||||||
8038 PCI6515 SmartCard Controller
|
8038 PCI6515 SmartCard Controller
|
||||||
8039 PCIxx12 Cardbus Controller
|
8039 PCIxx12 Cardbus Controller
|
||||||
103c 309f nx9420
|
103c 309f nx9420
|
||||||
|
103c 30a1 NC2400
|
||||||
803a PCIxx12 OHCI Compliant IEEE 1394 Host Controller
|
803a PCIxx12 OHCI Compliant IEEE 1394 Host Controller
|
||||||
103c 309f nx9420
|
103c 309f nx9420
|
||||||
|
103c 30a1 NC2400
|
||||||
803b 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
|
803b 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
|
||||||
103c 309f nx9420
|
103c 309f nx9420
|
||||||
803c PCIxx12 SDA Standard Compliant SD Host Controller
|
803c PCIxx12 SDA Standard Compliant SD Host Controller
|
||||||
103c 309f nx9420
|
103c 309f nx9420
|
||||||
803d PCIxx12 GemCore based SmartCard controller
|
803d PCIxx12 GemCore based SmartCard controller
|
||||||
103c 309f nx9420
|
103c 309f nx9420
|
||||||
|
103c 30a1 NC2400
|
||||||
8201 PCI1620 Firmware Loading Function
|
8201 PCI1620 Firmware Loading Function
|
||||||
8204 PCI7410,7510,7610 PCI Firmware Loading Function
|
8204 PCI7410,7510,7610 PCI Firmware Loading Function
|
||||||
1028 0139 Latitude D400
|
1028 0139 Latitude D400
|
||||||
|
@ -2548,6 +2682,7 @@
|
||||||
ac42 PCI4451 PC card Cardbus Controller
|
ac42 PCI4451 PC card Cardbus Controller
|
||||||
1028 00e6 PCI4451 PC card CardBus Controller (Inspiron 8100)
|
1028 00e6 PCI4451 PC card CardBus Controller (Inspiron 8100)
|
||||||
ac44 PCI4510 PC card Cardbus Controller
|
ac44 PCI4510 PC card Cardbus Controller
|
||||||
|
1028 0149 Inspiron 5100
|
||||||
1028 0163 Latitude D505
|
1028 0163 Latitude D505
|
||||||
1028 0196 Inspiron 5160
|
1028 0196 Inspiron 5160
|
||||||
1071 8160 MIM2000
|
1071 8160 MIM2000
|
||||||
|
@ -2560,7 +2695,7 @@
|
||||||
1028 0139 Latitude D400
|
1028 0139 Latitude D400
|
||||||
1028 014e Latitude D800
|
1028 014e Latitude D800
|
||||||
ac50 PCI1410 PC card Cardbus Controller
|
ac50 PCI1410 PC card Cardbus Controller
|
||||||
ac51 PCI1420
|
ac51 PCI1420 PC card Cardbus Controller
|
||||||
0e11 004e Evo N600c
|
0e11 004e Evo N600c
|
||||||
1014 0148 ThinkPad A20m
|
1014 0148 ThinkPad A20m
|
||||||
1014 023b ThinkPad T23 (2647-4MG)
|
1014 023b ThinkPad T23 (2647-4MG)
|
||||||
|
@ -2588,6 +2723,7 @@
|
||||||
ac8d PCI 7620
|
ac8d PCI 7620
|
||||||
ac8e PCI7420 CardBus Controller
|
ac8e PCI7420 CardBus Controller
|
||||||
ac8f PCI7420/7620 Combo CardBus, 1394a-2000 OHCI and SD/MS-Pro Controller
|
ac8f PCI7420/7620 Combo CardBus, 1394a-2000 OHCI and SD/MS-Pro Controller
|
||||||
|
1028 018d Inspiron 700m
|
||||||
fe00 FireWire Host Controller
|
fe00 FireWire Host Controller
|
||||||
fe03 12C01A FireWire Host Controller
|
fe03 12C01A FireWire Host Controller
|
||||||
104d Sony Corporation
|
104d Sony Corporation
|
||||||
|
@ -2673,6 +2809,7 @@
|
||||||
ecc0 0072 Mona rev.2
|
ecc0 0072 Mona rev.2
|
||||||
18c0 MPC8265A/8266/8272
|
18c0 MPC8265A/8266/8272
|
||||||
18c1 MPC8271/MPC8272
|
18c1 MPC8271/MPC8272
|
||||||
|
3052 SM56 Data Fax Modem
|
||||||
3055 SM56 Data Fax Modem
|
3055 SM56 Data Fax Modem
|
||||||
3410 DSP56361 Digital Signal Processor
|
3410 DSP56361 Digital Signal Processor
|
||||||
ecc0 0050 Gina24 rev.0
|
ecc0 0050 Gina24 rev.0
|
||||||
|
@ -2721,6 +2858,7 @@
|
||||||
1059 Teknor Industrial Computers Inc
|
1059 Teknor Industrial Computers Inc
|
||||||
105a Promise Technology, Inc.
|
105a Promise Technology, Inc.
|
||||||
0d30 PDC20265 (FastTrak100 Lite/Ultra100)
|
0d30 PDC20265 (FastTrak100 Lite/Ultra100)
|
||||||
|
1043 8042 ASUS AV7266-E South Bridge Promise RAID
|
||||||
105a 4d33 Ultra100
|
105a 4d33 Ultra100
|
||||||
0d38 20263
|
0d38 20263
|
||||||
105a 4d39 Fasttrak66
|
105a 4d39 Fasttrak66
|
||||||
|
@ -2749,6 +2887,7 @@
|
||||||
4d30 PDC20267 (FastTrak100/Ultra100)
|
4d30 PDC20267 (FastTrak100/Ultra100)
|
||||||
105a 4d33 Ultra100
|
105a 4d33 Ultra100
|
||||||
105a 4d39 FastTrak100
|
105a 4d39 FastTrak100
|
||||||
|
8086 5744 S845WD1-E mainboard
|
||||||
4d33 20246
|
4d33 20246
|
||||||
105a 4d33 20246 IDE Controller
|
105a 4d33 20246 IDE Controller
|
||||||
4d38 PDC20262 (FastTrak66/Ultra66)
|
4d38 PDC20262 (FastTrak66/Ultra66)
|
||||||
|
@ -2777,7 +2916,12 @@
|
||||||
7275 PDC20277 (SBFastTrak133 Lite)
|
7275 PDC20277 (SBFastTrak133 Lite)
|
||||||
8002 SATAII150 SX8
|
8002 SATAII150 SX8
|
||||||
8350 80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300]
|
8350 80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300]
|
||||||
|
8650 IOP1348 [SuperTrak EX4650/EX8650/EX8654]
|
||||||
|
105a 4600 SuperTrak EX4650
|
||||||
|
105a 8601 SuperTrak EX8650
|
||||||
|
105a 8602 SuperTrak EX8654
|
||||||
c350 80333 [SuperTrak EX12350]
|
c350 80333 [SuperTrak EX12350]
|
||||||
|
e350 80333 [SuperTrak EX24350]
|
||||||
105b Foxconn International, Inc.
|
105b Foxconn International, Inc.
|
||||||
105c Wipro Infotech Limited
|
105c Wipro Infotech Limited
|
||||||
105d Number 9 Computer Company
|
105d Number 9 Computer Company
|
||||||
|
@ -2990,6 +3134,7 @@
|
||||||
0012 YMF-754 [DS-1E Audio Controller]
|
0012 YMF-754 [DS-1E Audio Controller]
|
||||||
1073 0012 DS-XG PCI Audio Codec
|
1073 0012 DS-XG PCI Audio Codec
|
||||||
0020 DS-1 Audio
|
0020 DS-1 Audio
|
||||||
|
1000 SW1000XG [XG Factory]
|
||||||
2000 DS2416 Digital Mixing Card
|
2000 DS2416 Digital Mixing Card
|
||||||
1073 2000 DS2416 Digital Mixing Card
|
1073 2000 DS2416 Digital Mixing Card
|
||||||
1074 NexGen Microsystems
|
1074 NexGen Microsystems
|
||||||
|
@ -3021,7 +3166,7 @@
|
||||||
103c 12dd 4Gb Fibre Channel [AB429A]
|
103c 12dd 4Gb Fibre Channel [AB429A]
|
||||||
2432 ISP2432-based 4Gb Fibre Channel to PCI Express HBA
|
2432 ISP2432-based 4Gb Fibre Channel to PCI Express HBA
|
||||||
3022 ISP4022-based Ethernet NIC
|
3022 ISP4022-based Ethernet NIC
|
||||||
3032 ISP4032-based Ethernet NIC
|
3032 ISP4032-based Ethernet IPv6 NIC
|
||||||
4010 ISP4010-based iSCSI TOE HBA
|
4010 ISP4010-based iSCSI TOE HBA
|
||||||
4022 ISP4022-based iSCSI TOE HBA
|
4022 ISP4022-based iSCSI TOE HBA
|
||||||
4032 ISP4032-based iSCSI TOE IPv6 HBA
|
4032 ISP4032-based iSCSI TOE IPv6 HBA
|
||||||
|
@ -3329,6 +3474,7 @@
|
||||||
13e9 0070 Win/TV (Audio Section)
|
13e9 0070 Win/TV (Audio Section)
|
||||||
144f 3000 MagicTView CPH060 - Audio
|
144f 3000 MagicTView CPH060 - Audio
|
||||||
1461 0002 Avermedia PCTV98 Audio Capture
|
1461 0002 Avermedia PCTV98 Audio Capture
|
||||||
|
1461 0003 UltraTV PCI 350
|
||||||
1461 0004 AVerTV WDM Audio Capture
|
1461 0004 AVerTV WDM Audio Capture
|
||||||
1461 0761 AVerTV DVB-T
|
1461 0761 AVerTV DVB-T
|
||||||
1461 0771 AverMedia AVerTV DVB-T 771
|
1461 0771 AverMedia AVerTV DVB-T 771
|
||||||
|
@ -3417,6 +3563,8 @@
|
||||||
4002 TIO-CE PCI Express Port
|
4002 TIO-CE PCI Express Port
|
||||||
8001 O2 1394
|
8001 O2 1394
|
||||||
8002 G-net NT
|
8002 G-net NT
|
||||||
|
8010 Broadcom e-net [SGI IO9/IO10 BaseIO]
|
||||||
|
8018 Broadcom e-net [SGI A330 Server BaseIO]
|
||||||
10aa ACC Microelectronics
|
10aa ACC Microelectronics
|
||||||
0000 ACCM 2188
|
0000 ACCM 2188
|
||||||
10ab Digicom
|
10ab Digicom
|
||||||
|
@ -3468,6 +3616,7 @@
|
||||||
10b5 2978 SH ARC-PCIu SOHARD ARCNET card
|
10b5 2978 SH ARC-PCIu SOHARD ARCNET card
|
||||||
10b5 3025 Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board
|
10b5 3025 Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board
|
||||||
10b5 3068 Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board
|
10b5 3068 Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board
|
||||||
|
12fe 0111 CPCI-ASIO4 (ESD 4-port Serial Interface Board)
|
||||||
1397 3136 4xS0-ISDN PCI Adapter
|
1397 3136 4xS0-ISDN PCI Adapter
|
||||||
1397 3137 S2M-E1-ISDN PCI Adapter
|
1397 3137 S2M-E1-ISDN PCI Adapter
|
||||||
1518 0200 Kontron ThinkIO-C
|
1518 0200 Kontron ThinkIO-C
|
||||||
|
@ -3522,6 +3671,7 @@
|
||||||
10b5 2844 Innes Corp TVS Encoder card
|
10b5 2844 Innes Corp TVS Encoder card
|
||||||
12c7 4001 Intel Dialogic DM/V960-4T1 PCI
|
12c7 4001 Intel Dialogic DM/V960-4T1 PCI
|
||||||
12d9 0002 PCI Prosody Card rev 1.5
|
12d9 0002 PCI Prosody Card rev 1.5
|
||||||
|
14b4 d100 Dektec DTA-100
|
||||||
16df 0011 PIKA PrimeNet MM PCI
|
16df 0011 PIKA PrimeNet MM PCI
|
||||||
16df 0012 PIKA PrimeNet MM cPCI 8
|
16df 0012 PIKA PrimeNet MM cPCI 8
|
||||||
16df 0013 PIKA PrimeNet MM cPCI 8 (without CAS Signaling)
|
16df 0013 PIKA PrimeNet MM cPCI 8 (without CAS Signaling)
|
||||||
|
@ -6060,6 +6210,7 @@
|
||||||
0140 HT2100 PCI-Express Bridge
|
0140 HT2100 PCI-Express Bridge
|
||||||
0141 HT2100 PCI-Express Bridge
|
0141 HT2100 PCI-Express Bridge
|
||||||
0142 HT2100 PCI-Express Bridge
|
0142 HT2100 PCI-Express Bridge
|
||||||
|
0144 HT2100 PCI-Express Bridge
|
||||||
0200 OSB4 South Bridge
|
0200 OSB4 South Bridge
|
||||||
0201 CSB5 South Bridge
|
0201 CSB5 South Bridge
|
||||||
4c53 1080 CT8 mainboard
|
4c53 1080 CT8 mainboard
|
||||||
|
@ -10413,9 +10564,9 @@
|
||||||
0962 80960RM [i960RM Bridge]
|
0962 80960RM [i960RM Bridge]
|
||||||
0964 80960RP [i960 RP Microprocessor/Bridge]
|
0964 80960RP [i960 RP Microprocessor/Bridge]
|
||||||
1000 82542 Gigabit Ethernet Controller
|
1000 82542 Gigabit Ethernet Controller
|
||||||
0e11 b0df NC1632 Gigabit Ethernet Adapter (1000-SX)
|
0e11 b0df NC6132 Gigabit Ethernet Adapter (1000-SX)
|
||||||
0e11 b0e0 NC1633 Gigabit Ethernet Adapter (1000-LX)
|
0e11 b0e0 NC6133 Gigabit Ethernet Adapter (1000-LX)
|
||||||
0e11 b123 NC1634 Gigabit Ethernet Adapter (1000-SX)
|
0e11 b123 NC6134 Gigabit Ethernet Adapter (1000-LX)
|
||||||
1014 0119 Netfinity Gigabit Ethernet SX Adapter
|
1014 0119 Netfinity Gigabit Ethernet SX Adapter
|
||||||
8086 1000 PRO/1000 Gigabit Server Adapter
|
8086 1000 PRO/1000 Gigabit Server Adapter
|
||||||
1001 82543GC Gigabit Ethernet Controller (Fiber)
|
1001 82543GC Gigabit Ethernet Controller (Fiber)
|
||||||
|
@ -10834,6 +10985,8 @@
|
||||||
8086 0006 82557 10/100 with Wake on LAN
|
8086 0006 82557 10/100 with Wake on LAN
|
||||||
8086 0007 82558 10/100 Adapter
|
8086 0007 82558 10/100 Adapter
|
||||||
8086 0008 82558 10/100 with Wake on LAN
|
8086 0008 82558 10/100 with Wake on LAN
|
||||||
|
# 8086:0009 revision 5, 82558B based
|
||||||
|
8086 0009 PRO/100+ PCI (TP)
|
||||||
8086 000a EtherExpress PRO/100+ Management Adapter
|
8086 000a EtherExpress PRO/100+ Management Adapter
|
||||||
8086 000b EtherExpress PRO/100+
|
8086 000b EtherExpress PRO/100+
|
||||||
8086 000c EtherExpress PRO/100+ Management Adapter
|
8086 000c EtherExpress PRO/100+ Management Adapter
|
||||||
|
@ -10909,6 +11062,7 @@
|
||||||
8086 3010 EtherExpress PRO/100 S Network Connection
|
8086 3010 EtherExpress PRO/100 S Network Connection
|
||||||
8086 3011 EtherExpress PRO/100 S Network Connection
|
8086 3011 EtherExpress PRO/100 S Network Connection
|
||||||
8086 3012 EtherExpress PRO/100 Network Connection
|
8086 3012 EtherExpress PRO/100 Network Connection
|
||||||
|
8086 301a S845WD1-E mainboard
|
||||||
8086 3411 SDS2 Mainboard
|
8086 3411 SDS2 Mainboard
|
||||||
122d 430FX - 82437FX TSC [Triton I]
|
122d 430FX - 82437FX TSC [Triton I]
|
||||||
122e 82371FB PIIX ISA [Triton I]
|
122e 82371FB PIIX ISA [Triton I]
|
||||||
|
@ -10996,6 +11150,7 @@
|
||||||
2426 82801AB AC'97 Modem
|
2426 82801AB AC'97 Modem
|
||||||
2428 82801AB PCI Bridge
|
2428 82801AB PCI Bridge
|
||||||
2440 82801BA ISA Bridge (LPC)
|
2440 82801BA ISA Bridge (LPC)
|
||||||
|
8086 5744 S845WD1-E
|
||||||
2442 82801BA/BAM USB (Hub #1)
|
2442 82801BA/BAM USB (Hub #1)
|
||||||
1014 01c6 Netvista A40/A40p
|
1014 01c6 Netvista A40/A40p
|
||||||
1025 1016 Travelmate 612 TX
|
1025 1016 Travelmate 612 TX
|
||||||
|
@ -11006,6 +11161,7 @@
|
||||||
147b 0507 TH7II-RAID
|
147b 0507 TH7II-RAID
|
||||||
8086 4532 D815EEA2 mainboard
|
8086 4532 D815EEA2 mainboard
|
||||||
8086 4557 D815EGEW Mainboard
|
8086 4557 D815EGEW Mainboard
|
||||||
|
8086 5744 S845WD1-E mainboard
|
||||||
2443 82801BA/BAM SMBus
|
2443 82801BA/BAM SMBus
|
||||||
1014 01c6 Netvista A40/A40p
|
1014 01c6 Netvista A40/A40p
|
||||||
1025 1016 Travelmate 612 TX
|
1025 1016 Travelmate 612 TX
|
||||||
|
@ -11016,6 +11172,7 @@
|
||||||
147b 0507 TH7II-RAID
|
147b 0507 TH7II-RAID
|
||||||
8086 4532 D815EEA2 mainboard
|
8086 4532 D815EEA2 mainboard
|
||||||
8086 4557 D815EGEW Mainboard
|
8086 4557 D815EGEW Mainboard
|
||||||
|
8086 5744 S845WD1-E mainboard
|
||||||
2444 82801BA/BAM USB (Hub #2)
|
2444 82801BA/BAM USB (Hub #2)
|
||||||
1025 1016 Travelmate 612 TX
|
1025 1016 Travelmate 612 TX
|
||||||
1028 00c7 Dimension 8100
|
1028 00c7 Dimension 8100
|
||||||
|
@ -11024,6 +11181,7 @@
|
||||||
104d 80df Vaio PCG-FX403
|
104d 80df Vaio PCG-FX403
|
||||||
147b 0507 TH7II-RAID
|
147b 0507 TH7II-RAID
|
||||||
8086 4532 D815EEA2 mainboard
|
8086 4532 D815EEA2 mainboard
|
||||||
|
8086 5744 S845WD1-E mainboard
|
||||||
2445 82801BA/BAM AC'97 Audio
|
2445 82801BA/BAM AC'97 Audio
|
||||||
0e11 000b Compaq Deskpro EN Audio
|
0e11 000b Compaq Deskpro EN Audio
|
||||||
0e11 0088 Evo D500
|
0e11 0088 Evo D500
|
||||||
|
@ -11082,6 +11240,7 @@
|
||||||
147b 0507 TH7II-RAID
|
147b 0507 TH7II-RAID
|
||||||
8086 4532 D815EEA2 mainboard
|
8086 4532 D815EEA2 mainboard
|
||||||
8086 4557 D815EGEW Mainboard
|
8086 4557 D815EGEW Mainboard
|
||||||
|
8086 5744 S845WD1-E mainboard
|
||||||
244c 82801BAM ISA Bridge (LPC)
|
244c 82801BAM ISA Bridge (LPC)
|
||||||
244e 82801 PCI Bridge
|
244e 82801 PCI Bridge
|
||||||
1014 0267 NetVista A30p
|
1014 0267 NetVista A30p
|
||||||
|
@ -11174,6 +11333,7 @@
|
||||||
103c 0890 NC6000 laptop
|
103c 0890 NC6000 laptop
|
||||||
103c 08b0 tc1100 tablet
|
103c 08b0 tc1100 tablet
|
||||||
1071 8160 MIM2000
|
1071 8160 MIM2000
|
||||||
|
144d c00c P30/P35 notebook
|
||||||
1458 24c2 GA-8PE667 Ultra
|
1458 24c2 GA-8PE667 Ultra
|
||||||
1462 5800 845PE Max (MS-6580)
|
1462 5800 845PE Max (MS-6580)
|
||||||
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
|
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
|
||||||
|
@ -11742,17 +11902,21 @@
|
||||||
103c 099c NX6110/NC6120
|
103c 099c NX6110/NC6120
|
||||||
1043 1881 GMA 900 915GM Integrated Graphics
|
1043 1881 GMA 900 915GM Integrated Graphics
|
||||||
27a0 Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub
|
27a0 Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub
|
||||||
|
103c 30a1 NC2400
|
||||||
17aa 2017 Thinkpad R60e model 0657
|
17aa 2017 Thinkpad R60e model 0657
|
||||||
27a1 Mobile 945GM/PM/GMS/940GML and 945GT Express PCI Express Root Port
|
27a1 Mobile 945GM/PM/GMS/940GML and 945GT Express PCI Express Root Port
|
||||||
27a2 Mobile 945GM/GMS/940GML Express Integrated Graphics Controller
|
27a2 Mobile 945GM/GMS/940GML Express Integrated Graphics Controller
|
||||||
|
103c 30a1 NC2400
|
||||||
17aa 201a Thinkpad R60e model 0657
|
17aa 201a Thinkpad R60e model 0657
|
||||||
27a6 Mobile 945GM/GMS/940GML Express Integrated Graphics Controller
|
27a6 Mobile 945GM/GMS/940GML Express Integrated Graphics Controller
|
||||||
|
103c 30a1 NC2400
|
||||||
17aa 201a Thinkpad R60e model 0657
|
17aa 201a Thinkpad R60e model 0657
|
||||||
27b0 82801GH (ICH7DH) LPC Interface Bridge
|
27b0 82801GH (ICH7DH) LPC Interface Bridge
|
||||||
27b8 82801GB/GR (ICH7 Family) LPC Interface Bridge
|
27b8 82801GB/GR (ICH7 Family) LPC Interface Bridge
|
||||||
107b 5048 E4500
|
107b 5048 E4500
|
||||||
8086 544e DeskTop Board D945GTP
|
8086 544e DeskTop Board D945GTP
|
||||||
27b9 82801GBM (ICH7-M) LPC Interface Bridge
|
27b9 82801GBM (ICH7-M) LPC Interface Bridge
|
||||||
|
103c 30a1 NC2400
|
||||||
10f7 8338 Panasonic CF-Y5 laptop
|
10f7 8338 Panasonic CF-Y5 laptop
|
||||||
17aa 2009 ThinkPad T60/R60 series
|
17aa 2009 ThinkPad T60/R60 series
|
||||||
27bd 82801GHM (ICH7-M DH) LPC Interface Bridge
|
27bd 82801GHM (ICH7-M DH) LPC Interface Bridge
|
||||||
|
@ -11766,22 +11930,27 @@
|
||||||
17aa 200d Thinkpad R60e model 0657
|
17aa 200d Thinkpad R60e model 0657
|
||||||
27c6 82801GHM (ICH7-M DH) Serial ATA Storage Controller RAID
|
27c6 82801GHM (ICH7-M DH) Serial ATA Storage Controller RAID
|
||||||
27c8 82801G (ICH7 Family) USB UHCI #1
|
27c8 82801G (ICH7 Family) USB UHCI #1
|
||||||
|
103c 30a1 NC2400
|
||||||
107b 5048 E4500
|
107b 5048 E4500
|
||||||
17aa 200a ThinkPad T60/R60 series
|
17aa 200a ThinkPad T60/R60 series
|
||||||
8086 544e DeskTop Board D945GTP
|
8086 544e DeskTop Board D945GTP
|
||||||
27c9 82801G (ICH7 Family) USB UHCI #2
|
27c9 82801G (ICH7 Family) USB UHCI #2
|
||||||
|
103c 30a1 NC2400
|
||||||
107b 5048 E4500
|
107b 5048 E4500
|
||||||
17aa 200a ThinkPad T60/R60 series
|
17aa 200a ThinkPad T60/R60 series
|
||||||
8086 544e DeskTop Board D945GTP
|
8086 544e DeskTop Board D945GTP
|
||||||
27ca 82801G (ICH7 Family) USB UHCI #3
|
27ca 82801G (ICH7 Family) USB UHCI #3
|
||||||
|
103c 30a1 NC2400
|
||||||
107b 5048 E4500
|
107b 5048 E4500
|
||||||
17aa 200a ThinkPad T60/R60 series
|
17aa 200a ThinkPad T60/R60 series
|
||||||
8086 544e DeskTop Board D945GTP
|
8086 544e DeskTop Board D945GTP
|
||||||
27cb 82801G (ICH7 Family) USB UHCI #4
|
27cb 82801G (ICH7 Family) USB UHCI #4
|
||||||
|
103c 30a1 NC2400
|
||||||
107b 5048 E4500
|
107b 5048 E4500
|
||||||
17aa 200a ThinkPad T60/R60 series
|
17aa 200a ThinkPad T60/R60 series
|
||||||
8086 544e DeskTop Board D945GTP
|
8086 544e DeskTop Board D945GTP
|
||||||
27cc 82801G (ICH7 Family) USB2 EHCI Controller
|
27cc 82801G (ICH7 Family) USB2 EHCI Controller
|
||||||
|
103c 30a1 NC2400
|
||||||
17aa 200b ThinkPad T60/R60 series
|
17aa 200b ThinkPad T60/R60 series
|
||||||
8086 544e DeskTop Board D945GTP
|
8086 544e DeskTop Board D945GTP
|
||||||
27d0 82801G (ICH7 Family) PCI Express Port 1
|
27d0 82801G (ICH7 Family) PCI Express Port 1
|
||||||
|
@ -11789,10 +11958,12 @@
|
||||||
27d4 82801G (ICH7 Family) PCI Express Port 3
|
27d4 82801G (ICH7 Family) PCI Express Port 3
|
||||||
27d6 82801G (ICH7 Family) PCI Express Port 4
|
27d6 82801G (ICH7 Family) PCI Express Port 4
|
||||||
27d8 82801G (ICH7 Family) High Definition Audio Controller
|
27d8 82801G (ICH7 Family) High Definition Audio Controller
|
||||||
|
103c 30a1 NC2400
|
||||||
107b 5048 E4500
|
107b 5048 E4500
|
||||||
10f7 8338 Panasonic CF-Y5 laptop
|
10f7 8338 Panasonic CF-Y5 laptop
|
||||||
1179 ff31 Toshiba America Information Systems:AC97 Data Fax SoftModem with SmartCP
|
1179 ff31 Toshiba America Information Systems:AC97 Data Fax SoftModem with SmartCP
|
||||||
152d 0753 Softmodem
|
152d 0753 Softmodem
|
||||||
|
1734 10ad Conexant softmodem SmartCP
|
||||||
17aa 2010 ThinkPad T60/R60 series
|
17aa 2010 ThinkPad T60/R60 series
|
||||||
27da 82801G (ICH7 Family) SMBus Controller
|
27da 82801G (ICH7 Family) SMBus Controller
|
||||||
10f7 8338 Panasonic CF-Y5 laptop
|
10f7 8338 Panasonic CF-Y5 laptop
|
||||||
|
@ -11803,6 +11974,7 @@
|
||||||
27dd 82801G (ICH7 Family) AC'97 Modem Controller
|
27dd 82801G (ICH7 Family) AC'97 Modem Controller
|
||||||
27de 82801G (ICH7 Family) AC'97 Audio Controller
|
27de 82801G (ICH7 Family) AC'97 Audio Controller
|
||||||
27df 82801G (ICH7 Family) IDE Controller
|
27df 82801G (ICH7 Family) IDE Controller
|
||||||
|
103c 30a1 NC2400
|
||||||
107b 5048 E4500
|
107b 5048 E4500
|
||||||
10f7 8338 Panasonic CF-Y5 laptop
|
10f7 8338 Panasonic CF-Y5 laptop
|
||||||
17aa 200c Thinkpad R60e model 0657
|
17aa 200c Thinkpad R60e model 0657
|
||||||
|
@ -11846,6 +12018,34 @@
|
||||||
284b 82801H (ICH8 Family) HD Audio Controller
|
284b 82801H (ICH8 Family) HD Audio Controller
|
||||||
284f 82801H (ICH8 Family) Thermal Reporting Device
|
284f 82801H (ICH8 Family) Thermal Reporting Device
|
||||||
2850 Mobile IDE Controller
|
2850 Mobile IDE Controller
|
||||||
|
2910 LPC Interface Controller
|
||||||
|
2920 4 port SATA IDE Controller
|
||||||
|
2921 2 port SATA IDE Controller
|
||||||
|
2922 6 port SATA AHCI Controller
|
||||||
|
2923 4 port SATA AHCI Controller
|
||||||
|
2925 SATA RAID Controller
|
||||||
|
2926 2 port SATA IDE Controller
|
||||||
|
2928 Mobile 2 port SATA IDE Controller
|
||||||
|
292d Mobile 2 port SATA IDE Controller
|
||||||
|
292e Mobile 1 port SATA IDE Controller
|
||||||
|
2930 SMBus Controller
|
||||||
|
2932 Thermal Subsystem
|
||||||
|
2934 USB UHCI Controller #1
|
||||||
|
2935 USB UHCI Controller #2
|
||||||
|
2936 USB UHCI Controller #3
|
||||||
|
2937 USB UHCI Controller #4
|
||||||
|
2938 USB UHCI Controller #5
|
||||||
|
2939 USB UHCI Controller #6
|
||||||
|
293a USB2 EHCI Controller #1
|
||||||
|
293c USB2 EHCI Controller #2
|
||||||
|
293e HD Audio Controller
|
||||||
|
2940 PCI Express Port 1
|
||||||
|
2942 PCI Express Port 2
|
||||||
|
2944 PCI Express Port 3
|
||||||
|
2946 PCI Express Port 4
|
||||||
|
2948 PCI Express Port 5
|
||||||
|
294a PCI Express Port 6
|
||||||
|
294c Gigabit Ethernet Controller
|
||||||
2970 82946GZ/PL/GL Memory Controller Hub
|
2970 82946GZ/PL/GL Memory Controller Hub
|
||||||
2971 82946GZ/PL/GL PCI Express Root Port
|
2971 82946GZ/PL/GL PCI Express Root Port
|
||||||
2972 82946GZ/GL Integrated Graphics Controller
|
2972 82946GZ/GL Integrated Graphics Controller
|
||||||
|
@ -11873,6 +12073,37 @@
|
||||||
29a5 82P965/G965 HECI Controller
|
29a5 82P965/G965 HECI Controller
|
||||||
29a6 82P965/G965 PT IDER Controller
|
29a6 82P965/G965 PT IDER Controller
|
||||||
29a7 82P965/G965 KT Controller
|
29a7 82P965/G965 KT Controller
|
||||||
|
29b0 DRAM Controller
|
||||||
|
29b1 PCI Express Root Port
|
||||||
|
29b2 Integrated Graphics Controller
|
||||||
|
29b3 Integrated Graphics Controller
|
||||||
|
29b4 HECI Controller
|
||||||
|
29b5 HECI Controller
|
||||||
|
29b6 PT IDER Controller
|
||||||
|
29b7 Serial KT Controller
|
||||||
|
29c0 DRAM Controller
|
||||||
|
29c1 PCI Express Root Port
|
||||||
|
29c2 Integrated Graphics Controller
|
||||||
|
29c3 Integrated Graphics Controller
|
||||||
|
29c4 HECI Controller
|
||||||
|
29c5 HECI Controller
|
||||||
|
29c6 PT IDER Controller
|
||||||
|
29c7 Serial KT Controller
|
||||||
|
29cf Virtual HECI Controller
|
||||||
|
29e0 DRAM Controller
|
||||||
|
29e1 Host-Primary PCI Express Bridge
|
||||||
|
29e4 HECI Controller
|
||||||
|
29e5 HECI Controller
|
||||||
|
29e6 PT IDER Controller
|
||||||
|
29e7 Serial KT Controller
|
||||||
|
29e9 Host-Secondary PCI Express Bridge
|
||||||
|
29f0 Server DRAM Controller
|
||||||
|
29f1 Server Host-Primary PCI Express Bridge
|
||||||
|
29f4 Server HECI Controller
|
||||||
|
29f5 Server HECI Controller
|
||||||
|
29f6 Server PT IDER Controller
|
||||||
|
29f7 Server Serial KT Controller
|
||||||
|
29f9 Server Host-Secondary PCI Express Bridge
|
||||||
2a00 Mobile Memory Controller Hub
|
2a00 Mobile Memory Controller Hub
|
||||||
2a01 Mobile PCI Express Root Port
|
2a01 Mobile PCI Express Root Port
|
||||||
2a02 Mobile Integrated Graphics Controller
|
2a02 Mobile Integrated Graphics Controller
|
||||||
|
@ -11978,7 +12209,42 @@
|
||||||
35b6 3100 Chipset PCI Express Port A
|
35b6 3100 Chipset PCI Express Port A
|
||||||
35b7 3100 Chipset PCI Express Port A1
|
35b7 3100 Chipset PCI Express Port A1
|
||||||
35c8 3100 Extended Configuration Test Overflow Registers
|
35c8 3100 Extended Configuration Test Overflow Registers
|
||||||
|
3600 Server Memory Controller Hub
|
||||||
|
3604 Server PCI Express Port 1
|
||||||
|
3605 Server PCI Express Port 2
|
||||||
|
3606 Server PCI Express Port 3
|
||||||
|
3607 Server PCI Express Port 4
|
||||||
|
3608 Server PCI Express Port 5
|
||||||
|
3609 Server PCI Express Port 6
|
||||||
|
360a Server PCI Express Port 7
|
||||||
|
360b Server IOAT DMA Controller
|
||||||
|
360c Server FSB Registers
|
||||||
|
360d Server Snoop Filter Registers
|
||||||
|
360e Server Reserved Registers
|
||||||
|
360f Server FBD Branch 0 Registers
|
||||||
|
3610 Server FBD Branch 1 Registers
|
||||||
|
4000 Memory Controller Hub
|
||||||
|
4008 Memory Controller Hub
|
||||||
|
4010 Memory Controller Hub
|
||||||
|
4021 PCI Express Port 1
|
||||||
|
4022 PCI Express Port 2
|
||||||
|
4023 PCI Express Port 3
|
||||||
|
4024 PCI Express Port 4
|
||||||
|
4025 PCI Express Port 5
|
||||||
|
4026 PCI Express Port 6
|
||||||
|
4027 PCI Express Port 7
|
||||||
|
4028 PCI Express Port 8
|
||||||
|
4029 PCI Express Port 9
|
||||||
|
402d IBIST Registers
|
||||||
|
402e IBIST Registers
|
||||||
|
402f DMA/DCA Engine
|
||||||
|
4030 FSB Registers
|
||||||
|
4032 I/OxAPIC
|
||||||
|
4035 FBD Registers
|
||||||
|
4036 FBD Registers
|
||||||
4220 PRO/Wireless 2200BG Network Connection
|
4220 PRO/Wireless 2200BG Network Connection
|
||||||
|
2731 8086 WLAN-Adapter
|
||||||
|
8086 2731 Samsung P35 integrated WLAN
|
||||||
4222 PRO/Wireless 3945ABG Network Connection
|
4222 PRO/Wireless 3945ABG Network Connection
|
||||||
8086 1005 PRO/Wireless 3945BG Network Connection
|
8086 1005 PRO/Wireless 3945BG Network Connection
|
||||||
8086 1034 PRO/Wireless 3945BG Network Connection
|
8086 1034 PRO/Wireless 3945BG Network Connection
|
||||||
|
@ -11994,6 +12260,23 @@
|
||||||
5201 EtherExpress PRO/100 Intelligent Server
|
5201 EtherExpress PRO/100 Intelligent Server
|
||||||
8086 0001 EtherExpress PRO/100 Server Ethernet Adapter
|
8086 0001 EtherExpress PRO/100 Server Ethernet Adapter
|
||||||
530d 80310 IOP [IO Processor]
|
530d 80310 IOP [IO Processor]
|
||||||
|
65c0 Memory Controller Hub
|
||||||
|
65e2 PCI Express x4 Port 2
|
||||||
|
65e3 PCI Express x4 Port 3
|
||||||
|
65e4 PCI Express x4 Port 4
|
||||||
|
65e5 PCI Express x4 Port 5
|
||||||
|
65e6 PCI Express x4 Port 6
|
||||||
|
65e7 PCI Express x4 Port 7
|
||||||
|
65f0 FSB Registers
|
||||||
|
65f1 Reserved Registers
|
||||||
|
65f3 Reserved Registers
|
||||||
|
65f5 DDR Channel 0 Registers
|
||||||
|
65f6 DDR Channel 1 Registers
|
||||||
|
65f7 PCI Express x8 Port 2-3
|
||||||
|
65f8 PCI Express x8 Port 4-5
|
||||||
|
65f9 PCI Express x8 Port 6-7
|
||||||
|
65fa PCI Express x16 Port 4-7
|
||||||
|
65ff DMA Engine
|
||||||
7000 82371SB PIIX3 ISA [Natoma/Triton II]
|
7000 82371SB PIIX3 ISA [Natoma/Triton II]
|
||||||
7010 82371SB PIIX3 IDE [Natoma/Triton II]
|
7010 82371SB PIIX3 IDE [Natoma/Triton II]
|
||||||
7020 82371SB PIIX3 USB [Natoma/Triton II]
|
7020 82371SB PIIX3 USB [Natoma/Triton II]
|
||||||
|
@ -12092,6 +12375,7 @@
|
||||||
9622 Integrated RAID
|
9622 Integrated RAID
|
||||||
9641 Integrated RAID
|
9641 Integrated RAID
|
||||||
96a1 Integrated RAID
|
96a1 Integrated RAID
|
||||||
|
a620 6400/6402 Advanced Memory Buffer (AMB)
|
||||||
b152 21152 PCI-to-PCI Bridge
|
b152 21152 PCI-to-PCI Bridge
|
||||||
# observed, and documented in Intel revision note; new mask of 1011:0026
|
# observed, and documented in Intel revision note; new mask of 1011:0026
|
||||||
b154 21154 PCI-to-PCI Bridge
|
b154 21154 PCI-to-PCI Bridge
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -63,6 +63,40 @@ static void x86emuOp2_illegal_op(
|
||||||
|
|
||||||
#define xorl(a,b) ((a) && !(b)) || (!(a) && (b))
|
#define xorl(a,b) ((a) && !(b)) || (!(a) && (b))
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
Handles opcode 0x0f,0x31
|
||||||
|
****************************************************************************/
|
||||||
|
static void x86emuOp2_rdtsc(u8 X86EMU_UNUSED(op2))
|
||||||
|
{
|
||||||
|
#ifdef __HAS_LONG_LONG__
|
||||||
|
static u64 counter = 0;
|
||||||
|
#else
|
||||||
|
static u32 counter = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
counter += 0x10000;
|
||||||
|
|
||||||
|
/* read timestamp counter */
|
||||||
|
/*
|
||||||
|
* Note that instead of actually trying to accurately measure this, we just
|
||||||
|
* increase the counter by a fixed amount every time we hit one of these
|
||||||
|
* instructions. Feel free to come up with a better method.
|
||||||
|
*/
|
||||||
|
START_OF_INSTR();
|
||||||
|
DECODE_PRINTF("RDTSC\n");
|
||||||
|
TRACE_AND_STEP();
|
||||||
|
#ifdef __HAS_LONG_LONG__
|
||||||
|
M.x86.R_EAX = counter & 0xffffffff;
|
||||||
|
M.x86.R_EDX = counter >> 32;
|
||||||
|
#else
|
||||||
|
M.x86.R_EAX = counter;
|
||||||
|
M.x86.R_EDX = 0;
|
||||||
|
#endif
|
||||||
|
DECODE_CLEAR_SEGOVR();
|
||||||
|
END_OF_INSTR();
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
REMARKS:
|
REMARKS:
|
||||||
Handles opcode 0x0f,0x80-0x8F
|
Handles opcode 0x0f,0x80-0x8F
|
||||||
|
@ -2129,7 +2163,7 @@ static void x86emuOp2_bsf(u8 X86EMU_UNUSED(op2))
|
||||||
uint srcoffset;
|
uint srcoffset;
|
||||||
|
|
||||||
START_OF_INSTR();
|
START_OF_INSTR();
|
||||||
DECODE_PRINTF("BSF\n");
|
DECODE_PRINTF("BSF\t");
|
||||||
FETCH_DECODE_MODRM(mod, rh, rl);
|
FETCH_DECODE_MODRM(mod, rh, rl);
|
||||||
switch(mod) {
|
switch(mod) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -2209,25 +2243,25 @@ static void x86emuOp2_bsf(u8 X86EMU_UNUSED(op2))
|
||||||
break;
|
break;
|
||||||
case 3: /* register to register */
|
case 3: /* register to register */
|
||||||
if (M.x86.mode & SYSMODE_PREFIX_DATA) {
|
if (M.x86.mode & SYSMODE_PREFIX_DATA) {
|
||||||
u32 *srcreg, *dstreg;
|
u32 srcval, *dstreg;
|
||||||
|
|
||||||
srcreg = DECODE_RM_LONG_REGISTER(rl);
|
srcval = *DECODE_RM_LONG_REGISTER(rl);
|
||||||
DECODE_PRINTF(",");
|
DECODE_PRINTF(",");
|
||||||
dstreg = DECODE_RM_LONG_REGISTER(rh);
|
dstreg = DECODE_RM_LONG_REGISTER(rh);
|
||||||
TRACE_AND_STEP();
|
TRACE_AND_STEP();
|
||||||
CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
|
CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
|
||||||
for(*dstreg = 0; *dstreg < 32; (*dstreg)++)
|
for(*dstreg = 0; *dstreg < 32; (*dstreg)++)
|
||||||
if ((*srcreg >> *dstreg) & 1) break;
|
if ((srcval >> *dstreg) & 1) break;
|
||||||
} else {
|
} else {
|
||||||
u16 *srcreg, *dstreg;
|
u16 srcval, *dstreg;
|
||||||
|
|
||||||
srcreg = DECODE_RM_WORD_REGISTER(rl);
|
srcval = *DECODE_RM_WORD_REGISTER(rl);
|
||||||
DECODE_PRINTF(",");
|
DECODE_PRINTF(",");
|
||||||
dstreg = DECODE_RM_WORD_REGISTER(rh);
|
dstreg = DECODE_RM_WORD_REGISTER(rh);
|
||||||
TRACE_AND_STEP();
|
TRACE_AND_STEP();
|
||||||
CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
|
CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
|
||||||
for(*dstreg = 0; *dstreg < 16; (*dstreg)++)
|
for(*dstreg = 0; *dstreg < 16; (*dstreg)++)
|
||||||
if ((*srcreg >> *dstreg) & 1) break;
|
if ((srcval >> *dstreg) & 1) break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2245,7 +2279,7 @@ static void x86emuOp2_bsr(u8 X86EMU_UNUSED(op2))
|
||||||
uint srcoffset;
|
uint srcoffset;
|
||||||
|
|
||||||
START_OF_INSTR();
|
START_OF_INSTR();
|
||||||
DECODE_PRINTF("BSF\n");
|
DECODE_PRINTF("BSR\t");
|
||||||
FETCH_DECODE_MODRM(mod, rh, rl);
|
FETCH_DECODE_MODRM(mod, rh, rl);
|
||||||
switch(mod) {
|
switch(mod) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -2325,25 +2359,25 @@ static void x86emuOp2_bsr(u8 X86EMU_UNUSED(op2))
|
||||||
break;
|
break;
|
||||||
case 3: /* register to register */
|
case 3: /* register to register */
|
||||||
if (M.x86.mode & SYSMODE_PREFIX_DATA) {
|
if (M.x86.mode & SYSMODE_PREFIX_DATA) {
|
||||||
u32 *srcreg, *dstreg;
|
u32 srcval, *dstreg;
|
||||||
|
|
||||||
srcreg = DECODE_RM_LONG_REGISTER(rl);
|
srcval = *DECODE_RM_LONG_REGISTER(rl);
|
||||||
DECODE_PRINTF(",");
|
DECODE_PRINTF(",");
|
||||||
dstreg = DECODE_RM_LONG_REGISTER(rh);
|
dstreg = DECODE_RM_LONG_REGISTER(rh);
|
||||||
TRACE_AND_STEP();
|
TRACE_AND_STEP();
|
||||||
CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
|
CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
|
||||||
for(*dstreg = 31; *dstreg > 0; (*dstreg)--)
|
for(*dstreg = 31; *dstreg > 0; (*dstreg)--)
|
||||||
if ((*srcreg >> *dstreg) & 1) break;
|
if ((srcval >> *dstreg) & 1) break;
|
||||||
} else {
|
} else {
|
||||||
u16 *srcreg, *dstreg;
|
u16 srcval, *dstreg;
|
||||||
|
|
||||||
srcreg = DECODE_RM_WORD_REGISTER(rl);
|
srcval = *DECODE_RM_WORD_REGISTER(rl);
|
||||||
DECODE_PRINTF(",");
|
DECODE_PRINTF(",");
|
||||||
dstreg = DECODE_RM_WORD_REGISTER(rh);
|
dstreg = DECODE_RM_WORD_REGISTER(rh);
|
||||||
TRACE_AND_STEP();
|
TRACE_AND_STEP();
|
||||||
CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
|
CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
|
||||||
for(*dstreg = 15; *dstreg > 0; (*dstreg)--)
|
for(*dstreg = 15; *dstreg > 0; (*dstreg)--)
|
||||||
if ((*srcreg >> *dstreg) & 1) break;
|
if ((srcval >> *dstreg) & 1) break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2580,7 +2614,7 @@ void (*x86emu_optab2[256])(u8) =
|
||||||
/* 0x2f */ x86emuOp2_illegal_op,
|
/* 0x2f */ x86emuOp2_illegal_op,
|
||||||
|
|
||||||
/* 0x30 */ x86emuOp2_illegal_op,
|
/* 0x30 */ x86emuOp2_illegal_op,
|
||||||
/* 0x31 */ x86emuOp2_illegal_op,
|
/* 0x31 */ x86emuOp2_rdtsc,
|
||||||
/* 0x32 */ x86emuOp2_illegal_op,
|
/* 0x32 */ x86emuOp2_illegal_op,
|
||||||
/* 0x33 */ x86emuOp2_illegal_op,
|
/* 0x33 */ x86emuOp2_illegal_op,
|
||||||
/* 0x34 */ x86emuOp2_illegal_op,
|
/* 0x34 */ x86emuOp2_illegal_op,
|
||||||
|
|
|
@ -27,128 +27,156 @@ libxf1bppgen_a_SOURCES = \
|
||||||
mfbtileC.c \
|
mfbtileC.c \
|
||||||
mfbtileG.c
|
mfbtileG.c
|
||||||
|
|
||||||
DISTCLEANFILES = $(libxf1bppgen_a_SOURCES)
|
|
||||||
|
|
||||||
libxf1bppmfb_a_SOURCES = \
|
libxf1bppmfb_a_SOURCES = \
|
||||||
$(top_srcdir)/mfb/maskbits.c \
|
maskbits.c \
|
||||||
$(top_srcdir)/mfb/mfbbitblt.c \
|
mfbbitblt.c \
|
||||||
$(top_srcdir)/mfb/mfbbres.c \
|
mfbbres.c \
|
||||||
$(top_srcdir)/mfb/mfbbresd.c \
|
mfbbresd.c \
|
||||||
$(top_srcdir)/mfb/mfbbstore.c \
|
mfbbstore.c \
|
||||||
$(top_srcdir)/mfb/mfbclip.c \
|
mfbclip.c \
|
||||||
$(top_srcdir)/mfb/mfbcmap.c \
|
mfbcmap.c \
|
||||||
$(top_srcdir)/mfb/mfbfillarc.c \
|
mfbfillarc.c \
|
||||||
$(top_srcdir)/mfb/mfbfillrct.c \
|
mfbfillrct.c \
|
||||||
$(top_srcdir)/mfb/mfbfillsp.c \
|
mfbfillsp.c \
|
||||||
$(top_srcdir)/mfb/mfbfont.c \
|
mfbfont.c \
|
||||||
$(top_srcdir)/mfb/mfbgc.c \
|
mfbgc.c \
|
||||||
$(top_srcdir)/mfb/mfbgetsp.c \
|
mfbgetsp.c \
|
||||||
$(top_srcdir)/mfb/mfbhrzvert.c \
|
mfbhrzvert.c \
|
||||||
$(top_srcdir)/mfb/mfbimage.c \
|
mfbimage.c \
|
||||||
$(top_srcdir)/mfb/mfbline.c \
|
mfbline.c \
|
||||||
$(top_srcdir)/mfb/mfbmisc.c \
|
mfbmisc.c \
|
||||||
$(top_srcdir)/mfb/mfbpixmap.c \
|
mfbpixmap.c \
|
||||||
$(top_srcdir)/mfb/mfbpntwin.c \
|
mfbpntwin.c \
|
||||||
$(top_srcdir)/mfb/mfbpolypnt.c \
|
mfbpolypnt.c \
|
||||||
$(top_srcdir)/mfb/mfbpushpxl.c \
|
mfbpushpxl.c \
|
||||||
$(top_srcdir)/mfb/mfbscrclse.c \
|
mfbscrclse.c \
|
||||||
$(top_srcdir)/mfb/mfbscrinit.c \
|
mfbscrinit.c \
|
||||||
$(top_srcdir)/mfb/mfbsetsp.c \
|
mfbsetsp.c \
|
||||||
$(top_srcdir)/mfb/mfbwindow.c \
|
mfbwindow.c \
|
||||||
$(top_srcdir)/mfb/mfbzerarc.c \
|
mfbzerarc.c
|
||||||
|
|
||||||
|
BUILT_SOURCES = $(libxf1bppgen_a_SOURCES) $(libxf1bppgen_a_SOURCES)
|
||||||
|
|
||||||
|
libxf1bpp_la_SOURCES = $(libxf1bppmfb_a_SOURCES) $(libxf1bppgen_a_SOURCES) \
|
||||||
mfbmodule.c
|
mfbmodule.c
|
||||||
|
|
||||||
libxf1bpp_la_SOURCES = $(libxf1bppmfb_a_SOURCES) $(libxf1bppgen_a_SOURCES)
|
AM_CFLAGS = -DXF86MONO $(DIX_CFLAGS) $(XORG_CFLAGS)
|
||||||
|
|
||||||
AM_CFLAGS = -DXF86MONO -include mfbmap.h $(DIX_CFLAGS) $(XORG_CFLAGS)
|
|
||||||
INCLUDES = $(XORG_INCS) -I$(top_srcdir)/mfb
|
INCLUDES = $(XORG_INCS) -I$(top_srcdir)/mfb
|
||||||
|
|
||||||
mfbseg.c:
|
mfbseg.c:
|
||||||
echo "#define POLYSEGMENT" > $@
|
echo "#define POLYSEGMENT" > $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbline.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbline.c\"" >> $@
|
||||||
mfbpgbwht.c:
|
mfbpgbwht.c:
|
||||||
echo "#define MFBPOLYGLYPHBLT xf1bppPolyGlyphBltWhite" > $@
|
echo "#define MFBPOLYGLYPHBLT xf1bppPolyGlyphBltWhite" > $@
|
||||||
echo "#define OPEQ |=" >> $@
|
echo "#define OPEQ |=" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbplygblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbplygblt.c\"" >> $@
|
||||||
mfbpgbblak.c:
|
mfbpgbblak.c:
|
||||||
echo "#define MFBPOLYGLYPHBLT xf1bppPolyGlyphBltBlack" > $@
|
echo "#define MFBPOLYGLYPHBLT xf1bppPolyGlyphBltBlack" > $@
|
||||||
echo "#define OPEQ &=~" >> $@
|
echo "#define OPEQ &=~" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbplygblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbplygblt.c\"" >> $@
|
||||||
mfbpgbinv.c:
|
mfbpgbinv.c:
|
||||||
echo "#define MFBPOLYGLYPHBLT xf1bppPolyGlyphBltInvert" > $@
|
echo "#define MFBPOLYGLYPHBLT xf1bppPolyGlyphBltInvert" > $@
|
||||||
echo "#define OPEQ ^=" >> $@
|
echo "#define OPEQ ^=" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbplygblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbplygblt.c\"" >> $@
|
||||||
mfbigbwht.c:
|
mfbigbwht.c:
|
||||||
echo "#define MFBIMAGEGLYPHBLT xf1bppImageGlyphBltWhite" > $@
|
echo "#define MFBIMAGEGLYPHBLT xf1bppImageGlyphBltWhite" > $@
|
||||||
echo "#define OPEQ |=" >> $@
|
echo "#define OPEQ |=" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbimggblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbimggblt.c\"" >> $@
|
||||||
mfbigbblak.c:
|
mfbigbblak.c:
|
||||||
echo "#define MFBIMAGEGLYPHBLT xf1bppImageGlyphBltBlack" > $@
|
echo "#define MFBIMAGEGLYPHBLT xf1bppImageGlyphBltBlack" > $@
|
||||||
echo "#define OPEQ &=~" >> $@
|
echo "#define OPEQ &=~" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbimggblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbimggblt.c\"" >> $@
|
||||||
mfbpawhite.c:
|
mfbpawhite.c:
|
||||||
echo "#define MFBSOLIDFILLAREA xf1bppSolidWhiteArea" > $@
|
echo "#define MFBSOLIDFILLAREA xf1bppSolidWhiteArea" > $@
|
||||||
echo "#define MFBSTIPPLEFILLAREA xf1bppStippleWhiteArea" >> $@
|
echo "#define MFBSTIPPLEFILLAREA xf1bppStippleWhiteArea" >> $@
|
||||||
echo "#define OPEQ |=" >> $@
|
echo "#define OPEQ |=" >> $@
|
||||||
echo "#define EQWHOLEWORD =~0" >> $@
|
echo "#define EQWHOLEWORD =~0" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbpntarea.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbpntarea.c\"" >> $@
|
||||||
mfbpablack.c:
|
mfbpablack.c:
|
||||||
echo "#define MFBSOLIDFILLAREA xf1bppSolidBlackArea" > $@
|
echo "#define MFBSOLIDFILLAREA xf1bppSolidBlackArea" > $@
|
||||||
echo "#define MFBSTIPPLEFILLAREA xf1bppStippleBlackArea" >> $@
|
echo "#define MFBSTIPPLEFILLAREA xf1bppStippleBlackArea" >> $@
|
||||||
echo "#define OPEQ &=~" >> $@
|
echo "#define OPEQ &=~" >> $@
|
||||||
echo "#define EQWHOLEWORD =0" >> $@
|
echo "#define EQWHOLEWORD =0" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbpntarea.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbpntarea.c\"" >> $@
|
||||||
mfbpainv.c:
|
mfbpainv.c:
|
||||||
echo "#define MFBSOLIDFILLAREA xf1bppSolidInvertArea" > $@
|
echo "#define MFBSOLIDFILLAREA xf1bppSolidInvertArea" > $@
|
||||||
echo "#define MFBSTIPPLEFILLAREA xf1bppStippleInvertArea" >> $@
|
echo "#define MFBSTIPPLEFILLAREA xf1bppStippleInvertArea" >> $@
|
||||||
echo "#define OPEQ ^=" >> $@
|
echo "#define OPEQ ^=" >> $@
|
||||||
echo "#define EQWHOLEWORD ^=~0" >> $@
|
echo "#define EQWHOLEWORD ^=~0" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbpntarea.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbpntarea.c\"" >> $@
|
||||||
mfbtewhite.c:
|
mfbtewhite.c:
|
||||||
echo "#define OP" > $@
|
echo "#define OP" > $@
|
||||||
echo "#define CLIPTETEXT xf1bppImageGlyphBltWhite" >> $@
|
echo "#define CLIPTETEXT xf1bppImageGlyphBltWhite" >> $@
|
||||||
echo "#define MFBTEGLYPHBLT xf1bppTEGlyphBltWhite" >> $@
|
echo "#define MFBTEGLYPHBLT xf1bppTEGlyphBltWhite" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbtegblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbtegblt.c\"" >> $@
|
||||||
mfbteblack.c:
|
mfbteblack.c:
|
||||||
echo "#define OP ~" > $@
|
echo "#define OP ~" > $@
|
||||||
echo "#define CLIPTETEXT xf1bppImageGlyphBltBlack" >> $@
|
echo "#define CLIPTETEXT xf1bppImageGlyphBltBlack" >> $@
|
||||||
echo "#define MFBTEGLYPHBLT xf1bppTEGlyphBltBlack" >> $@
|
echo "#define MFBTEGLYPHBLT xf1bppTEGlyphBltBlack" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbtegblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbtegblt.c\"" >> $@
|
||||||
mfbplywhite.c:
|
mfbplywhite.c:
|
||||||
echo "#define MFBFILLPOLY1RECT xf1bppFillPolyWhite" > $@
|
echo "#define MFBFILLPOLY1RECT xf1bppFillPolyWhite" > $@
|
||||||
echo "#define OPEQ |=" >> $@
|
echo "#define OPEQ |=" >> $@
|
||||||
echo "#define EQWHOLEWORD =~0" >> $@
|
echo "#define EQWHOLEWORD =~0" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbply1rct.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbply1rct.c\"" >> $@
|
||||||
mfbplyblack.c:
|
mfbplyblack.c:
|
||||||
echo "#define MFBFILLPOLY1RECT xf1bppFillPolyBlack" > $@
|
echo "#define MFBFILLPOLY1RECT xf1bppFillPolyBlack" > $@
|
||||||
echo "#define OPEQ &=~" >> $@
|
echo "#define OPEQ &=~" >> $@
|
||||||
echo "#define EQWHOLEWORD =0" >> $@
|
echo "#define EQWHOLEWORD =0" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbply1rct.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbply1rct.c\"" >> $@
|
||||||
mfbplyinv.c:
|
mfbplyinv.c:
|
||||||
echo "#define MFBFILLPOLY1RECT xf1bppFillPolyInvert" > $@
|
echo "#define MFBFILLPOLY1RECT xf1bppFillPolyInvert" > $@
|
||||||
echo "#define OPEQ ^=" >> $@
|
echo "#define OPEQ ^=" >> $@
|
||||||
echo "#define EQWHOLEWORD ^=~0" >> $@
|
echo "#define EQWHOLEWORD ^=~0" >> $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbply1rct.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbply1rct.c\"" >> $@
|
||||||
mfbbltC.c:
|
mfbbltC.c:
|
||||||
echo "#define MROP Mcopy" > $@
|
echo "#define MROP Mcopy" > $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
||||||
mfbbltX.c:
|
mfbbltX.c:
|
||||||
echo "#define MROP Mxor" > $@
|
echo "#define MROP Mxor" > $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
||||||
mfbbltCI.c:
|
mfbbltCI.c:
|
||||||
echo "#define MROP McopyInverted" > $@
|
echo "#define MROP McopyInverted" > $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
||||||
mfbbltO.c:
|
mfbbltO.c:
|
||||||
echo "#define MROP Mor" > $@
|
echo "#define MROP Mor" > $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
||||||
mfbbltG.c:
|
mfbbltG.c:
|
||||||
echo "#define MROP M0" > $@
|
echo "#define MROP M0" > $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
||||||
mfbtileC.c:
|
mfbtileC.c:
|
||||||
echo "#define MROP Mcopy" > $@
|
echo "#define MROP Mcopy" > $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbtile.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbtile.c\"" >> $@
|
||||||
mfbtileG.c:
|
mfbtileG.c:
|
||||||
echo "#define MRop M0" > $@
|
echo "#define MRop M0" > $@
|
||||||
|
echo "#include \"mfbmap.h\"" >> $@
|
||||||
echo "#include \"$(top_srcdir)/mfb/mfbtile.c\"" >> $@
|
echo "#include \"$(top_srcdir)/mfb/mfbtile.c\"" >> $@
|
||||||
|
|
||||||
|
$(libxf1bppmfb_a_SOURCES):
|
||||||
|
for i in $(libxf1bppmfb_a_SOURCES) ; do \
|
||||||
|
echo "#include \"mfbmap.h\"" > $$i ; \
|
||||||
|
echo "#include \"$(top_srcdir)/mfb/$$i\"" >> $$i ; \
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
EXTRA_DIST = mfbmap.sh mfbunmap.sh
|
EXTRA_DIST = mfbmap.sh mfbunmap.sh
|
||||||
|
|
|
@ -46,8 +46,6 @@ libxf4bpp_la_SOURCES = \
|
||||||
mfbzerarc.c \
|
mfbzerarc.c \
|
||||||
vgamodule.c
|
vgamodule.c
|
||||||
|
|
||||||
libxf4bpp_la_LIBADD = ../xf1bpp/libxf1bpp.la
|
|
||||||
|
|
||||||
EXTRA_DIST = OScompiler.h ibmTrace.h ppcGCstr.h ppcSpMcro.h vgaReg.h \
|
EXTRA_DIST = OScompiler.h ibmTrace.h ppcGCstr.h ppcSpMcro.h vgaReg.h \
|
||||||
vgaVideo.h wm3.h NOTES
|
vgaVideo.h wm3.h NOTES
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
bin_PROGRAMS = Xnest
|
bin_PROGRAMS = Xnest
|
||||||
|
noinst_LIBRARIES = libfbcmap.a
|
||||||
|
|
||||||
|
AM_CFLAGS = -DHAVE_XNEST_CONFIG_H \
|
||||||
|
-DNO_HW_ONLY_EXTS \
|
||||||
|
$(DIX_CFLAGS) \
|
||||||
|
$(XNESTMODULES_CFLAGS)
|
||||||
|
|
||||||
SRCS = Args.c \
|
SRCS = Args.c \
|
||||||
Args.h \
|
Args.h \
|
||||||
|
@ -37,23 +43,17 @@ SRCS = Args.c \
|
||||||
xnest-config.h \
|
xnest-config.h \
|
||||||
$(top_srcdir)/Xext/dpmsstubs.c \
|
$(top_srcdir)/Xext/dpmsstubs.c \
|
||||||
$(top_srcdir)/Xi/stubs.c \
|
$(top_srcdir)/Xi/stubs.c \
|
||||||
$(top_srcdir)/mi/miinitext.c \
|
$(top_srcdir)/mi/miinitext.c
|
||||||
$(top_srcdir)/fb/fbcmap.c
|
|
||||||
|
|
||||||
|
libfbcmap_a_SOURCES = $(top_srcdir)/fb/fbcmap.c
|
||||||
|
libfbcmap_a_CFLAGS = $(AM_CFLAGS) -DXFree86Server
|
||||||
|
|
||||||
Xnest_SOURCES = $(SRCS)
|
Xnest_SOURCES = $(SRCS)
|
||||||
|
|
||||||
Xnest_LDADD = $(XORG_CORE_LIBS) \
|
Xnest_LDADD = $(XORG_CORE_LIBS) \
|
||||||
$(XNEST_LIBS) \
|
$(XNEST_LIBS) \
|
||||||
$(XNESTMODULES_LIBS)
|
$(XNESTMODULES_LIBS) \
|
||||||
|
libfbcmap.a
|
||||||
Xnest_LDFLAGS =
|
|
||||||
|
|
||||||
AM_CFLAGS = -DHAVE_XNEST_CONFIG_H \
|
|
||||||
-DNO_HW_ONLY_EXTS \
|
|
||||||
-DXFree86Server \
|
|
||||||
$(DIX_CFLAGS) \
|
|
||||||
$(XNESTMODULES_CFLAGS)
|
|
||||||
|
|
||||||
EXTRA_DIST = os2Stub.c \
|
EXTRA_DIST = os2Stub.c \
|
||||||
icon \
|
icon \
|
||||||
|
|
|
@ -15,6 +15,9 @@
|
||||||
/* Operating System Vendor */
|
/* Operating System Vendor */
|
||||||
#undef OSVENDOR
|
#undef OSVENDOR
|
||||||
|
|
||||||
|
/* Builder string */
|
||||||
|
#undef BUILDERSTRING
|
||||||
|
|
||||||
/* Default font path */
|
/* Default font path */
|
||||||
#undef COMPILEDDEFAULTFONTPATH
|
#undef COMPILEDDEFAULTFONTPATH
|
||||||
|
|
||||||
|
@ -93,6 +96,9 @@
|
||||||
/* Define to 1 if you have the <asm/mtrr.h> header file. */
|
/* Define to 1 if you have the <asm/mtrr.h> header file. */
|
||||||
#undef HAVE_ASM_MTRR_H
|
#undef HAVE_ASM_MTRR_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <byteswap.h> header file. */
|
||||||
|
#undef HAVE_BYTESWAP_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <dbm.h> header file. */
|
/* Define to 1 if you have the <dbm.h> header file. */
|
||||||
#undef HAVE_DBM_H
|
#undef HAVE_DBM_H
|
||||||
|
|
||||||
|
@ -311,6 +317,9 @@
|
||||||
/* Use rgb.txt directly */
|
/* Use rgb.txt directly */
|
||||||
#undef USE_RGB_TXT
|
#undef USE_RGB_TXT
|
||||||
|
|
||||||
|
/* Define to use byteswap macros from <sys/endian.h> */
|
||||||
|
#undef USE_SYS_ENDIAN_H
|
||||||
|
|
||||||
/* unaligned word accesses behave as expected */
|
/* unaligned word accesses behave as expected */
|
||||||
#undef WORKING_UNALIGNED_INT
|
#undef WORKING_UNALIGNED_INT
|
||||||
|
|
||||||
|
@ -416,16 +425,8 @@
|
||||||
/* Endian order */
|
/* Endian order */
|
||||||
#undef X_BYTE_ORDER
|
#undef X_BYTE_ORDER
|
||||||
|
|
||||||
/* BSD-compliant source */
|
/* Enable GNU and other extensions to the C environment for GLIBC */
|
||||||
#undef _BSD_SOURCE
|
#undef _GNU_SOURCE
|
||||||
|
|
||||||
/* POSIX-compliant source */
|
|
||||||
#undef _POSIX_SOURCE
|
|
||||||
|
|
||||||
#ifndef _XOPEN_SOURCE
|
|
||||||
/* X/Open-compliant source */
|
|
||||||
#undef _XOPEN_SOURCE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define to empty if `const' does not conform to ANSI C. */
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
#undef const
|
#undef const
|
||||||
|
@ -472,4 +473,13 @@
|
||||||
/* Path to XErrorDB file */
|
/* Path to XErrorDB file */
|
||||||
#undef XERRORDB_PATH
|
#undef XERRORDB_PATH
|
||||||
|
|
||||||
|
/* Define to 16-bit byteswap macro */
|
||||||
|
#undef bswap_16
|
||||||
|
|
||||||
|
/* Define to 32-bit byteswap macro */
|
||||||
|
#undef bswap_32
|
||||||
|
|
||||||
|
/* Define to 64-bit byteswap macro */
|
||||||
|
#undef bswap_64
|
||||||
|
|
||||||
#endif /* _DIX_CONFIG_H_ */
|
#endif /* _DIX_CONFIG_H_ */
|
||||||
|
|
|
@ -103,7 +103,7 @@ extern int ProcUngrabButton(ClientPtr /* client */);
|
||||||
extern int ProcRecolorCursor(ClientPtr /* client */);
|
extern int ProcRecolorCursor(ClientPtr /* client */);
|
||||||
|
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
extern void PostSyntheticMotion(int x, int y, ScreenPtr pScreen, unsigned long time);
|
extern void PostSyntheticMotion(int x, int y, int screen, unsigned long time);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* DIXEVENTS_H */
|
#endif /* DIXEVENTS_H */
|
||||||
|
|
|
@ -421,7 +421,7 @@ extern int GetProximityEvents(
|
||||||
extern void PostSyntheticMotion(
|
extern void PostSyntheticMotion(
|
||||||
int x,
|
int x,
|
||||||
int y,
|
int y,
|
||||||
ScreenPtr pScreen,
|
int screen,
|
||||||
unsigned long time);
|
unsigned long time);
|
||||||
|
|
||||||
extern int GetMotionHistorySize(
|
extern int GetMotionHistorySize(
|
||||||
|
|
13
mi/mieq.c
13
mi/mieq.c
|
@ -52,6 +52,12 @@ in this Software without prior written authorization from The Open Group.
|
||||||
# include "extinit.h"
|
# include "extinit.h"
|
||||||
# include "exglobals.h"
|
# include "exglobals.h"
|
||||||
|
|
||||||
|
#ifdef DPMSExtension
|
||||||
|
# include "dpmsproc.h"
|
||||||
|
# define DPMS_SERVER
|
||||||
|
# include <X11/extensions/dpms.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define QUEUE_SIZE 256
|
#define QUEUE_SIZE 256
|
||||||
|
|
||||||
typedef struct _Event {
|
typedef struct _Event {
|
||||||
|
@ -183,6 +189,13 @@ mieqProcessInputEvents()
|
||||||
while (miEventQueue.head != miEventQueue.tail) {
|
while (miEventQueue.head != miEventQueue.tail) {
|
||||||
if (screenIsSaved == SCREEN_SAVER_ON)
|
if (screenIsSaved == SCREEN_SAVER_ON)
|
||||||
SaveScreens (SCREEN_SAVER_OFF, ScreenSaverReset);
|
SaveScreens (SCREEN_SAVER_OFF, ScreenSaverReset);
|
||||||
|
#ifdef DPMSExtension
|
||||||
|
else if (DPMSPowerLevel != DPMSModeOn)
|
||||||
|
SetScreenSaverTimer();
|
||||||
|
|
||||||
|
if (DPMSPowerLevel != DPMSModeOn)
|
||||||
|
DPMSSet(DPMSModeOn);
|
||||||
|
#endif
|
||||||
|
|
||||||
e = &miEventQueue.events[miEventQueue.head];
|
e = &miEventQueue.events[miEventQueue.head];
|
||||||
/* Assumption - screen switching can only occur on motion events. */
|
/* Assumption - screen switching can only occur on motion events. */
|
||||||
|
|
|
@ -474,6 +474,10 @@ void
|
||||||
miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
||||||
unsigned long time)
|
unsigned long time)
|
||||||
{
|
{
|
||||||
|
xEvent* events;
|
||||||
|
int i, nevents;
|
||||||
|
int valuators[2];
|
||||||
|
|
||||||
SetupScreen(pScreen);
|
SetupScreen(pScreen);
|
||||||
|
|
||||||
if (pDev && (pDev->coreEvents || pDev == inputInfo.pointer) &&
|
if (pDev && (pDev->coreEvents || pDev == inputInfo.pointer) &&
|
||||||
|
@ -488,4 +492,23 @@ miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
||||||
miPointer.x = x;
|
miPointer.x = x;
|
||||||
miPointer.y = y;
|
miPointer.y = y;
|
||||||
miPointer.pScreen = pScreen;
|
miPointer.pScreen = pScreen;
|
||||||
|
|
||||||
|
/* generate motion notify */
|
||||||
|
valuators[0] = x;
|
||||||
|
valuators[1] = y;
|
||||||
|
|
||||||
|
events = (xEvent*)xcalloc(sizeof(xEvent), GetMaximumEventsNum());
|
||||||
|
if (!events)
|
||||||
|
{
|
||||||
|
FatalError("Could not allocate event store.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
nevents = GetPointerEvents(events, pDev, MotionNotify, 0,
|
||||||
|
POINTER_ABSOLUTE, 0, 2, valuators);
|
||||||
|
|
||||||
|
for (i = 0; i < nevents; i++)
|
||||||
|
mieqEnqueue(pDev, &events[i]);
|
||||||
|
|
||||||
|
xfree(events);
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,6 +113,52 @@ getDrawableDamageRef (DrawablePtr pDrawable)
|
||||||
DamagePtr *pPrev = (DamagePtr *) \
|
DamagePtr *pPrev = (DamagePtr *) \
|
||||||
&(pWindow->devPrivates[damageWinPrivateIndex].ptr)
|
&(pWindow->devPrivates[damageWinPrivateIndex].ptr)
|
||||||
|
|
||||||
|
static void
|
||||||
|
DamageReportDamage (DamagePtr pDamage, RegionPtr pDamageRegion)
|
||||||
|
{
|
||||||
|
BoxRec tmpBox;
|
||||||
|
RegionRec tmpRegion;
|
||||||
|
Bool was_empty;
|
||||||
|
|
||||||
|
switch (pDamage->damageLevel) {
|
||||||
|
case DamageReportRawRegion:
|
||||||
|
(*pDamage->damageReport) (pDamage, pDamageRegion, pDamage->closure);
|
||||||
|
break;
|
||||||
|
case DamageReportDeltaRegion:
|
||||||
|
REGION_NULL (pScreen, &tmpRegion);
|
||||||
|
REGION_SUBTRACT (pScreen, &tmpRegion, pDamageRegion, &pDamage->damage);
|
||||||
|
if (REGION_NOTEMPTY (pScreen, &tmpRegion)) {
|
||||||
|
REGION_UNION(pScreen, &pDamage->damage, &pDamage->damage,
|
||||||
|
pDamageRegion);
|
||||||
|
(*pDamage->damageReport) (pDamage, &tmpRegion, pDamage->closure);
|
||||||
|
}
|
||||||
|
REGION_UNINIT(pScreen, &tmpRegion);
|
||||||
|
break;
|
||||||
|
case DamageReportBoundingBox:
|
||||||
|
tmpBox = *REGION_EXTENTS (pScreen, &pDamage->damage);
|
||||||
|
REGION_UNION(pScreen, &pDamage->damage, &pDamage->damage,
|
||||||
|
pDamageRegion);
|
||||||
|
if (!BOX_SAME (&tmpBox, REGION_EXTENTS (pScreen, &pDamage->damage))) {
|
||||||
|
(*pDamage->damageReport) (pDamage, &pDamage->damage,
|
||||||
|
pDamage->closure);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DamageReportNonEmpty:
|
||||||
|
was_empty = !REGION_NOTEMPTY(pScreen, &pDamage->damage);
|
||||||
|
REGION_UNION(pScreen, &pDamage->damage, &pDamage->damage,
|
||||||
|
pDamageRegion);
|
||||||
|
if (was_empty && REGION_NOTEMPTY(pScreen, &pDamage->damage)) {
|
||||||
|
(*pDamage->damageReport) (pDamage, &pDamage->damage,
|
||||||
|
pDamage->closure);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DamageReportNone:
|
||||||
|
REGION_UNION(pScreen, &pDamage->damage, &pDamage->damage,
|
||||||
|
pDamageRegion);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if DAMAGE_DEBUG_ENABLE
|
#if DAMAGE_DEBUG_ENABLE
|
||||||
static void
|
static void
|
||||||
_damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip, int subWindowMode, const char *where)
|
_damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip, int subWindowMode, const char *where)
|
||||||
|
@ -130,9 +176,6 @@ damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
|
||||||
RegionRec clippedRec;
|
RegionRec clippedRec;
|
||||||
RegionPtr pDamageRegion;
|
RegionPtr pDamageRegion;
|
||||||
RegionRec pixClip;
|
RegionRec pixClip;
|
||||||
Bool was_empty;
|
|
||||||
RegionRec tmpRegion;
|
|
||||||
BoxRec tmpBox;
|
|
||||||
int draw_x, draw_y;
|
int draw_x, draw_y;
|
||||||
#ifdef COMPOSITE
|
#ifdef COMPOSITE
|
||||||
int screen_x = 0, screen_y = 0;
|
int screen_x = 0, screen_y = 0;
|
||||||
|
@ -256,41 +299,18 @@ damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
|
||||||
*/
|
*/
|
||||||
if (draw_x || draw_y)
|
if (draw_x || draw_y)
|
||||||
REGION_TRANSLATE (pScreen, pDamageRegion, -draw_x, -draw_y);
|
REGION_TRANSLATE (pScreen, pDamageRegion, -draw_x, -draw_y);
|
||||||
|
|
||||||
switch (pDamage->damageLevel) {
|
/* If the damage rec has been flagged to report damage after the op has
|
||||||
case DamageReportRawRegion:
|
* completed, then union it into the delayed damage region, which will
|
||||||
(*pDamage->damageReport) (pDamage, pDamageRegion, pDamage->closure);
|
* be used for reporting after calling down, and skip the reporting
|
||||||
break;
|
*/
|
||||||
case DamageReportDeltaRegion:
|
if (!pDamage->reportAfter) {
|
||||||
REGION_NULL (pScreen, &tmpRegion);
|
DamageReportDamage (pDamage, pDamageRegion);
|
||||||
REGION_SUBTRACT (pScreen, &tmpRegion, pDamageRegion, &pDamage->damage);
|
} else {
|
||||||
if (REGION_NOTEMPTY (pScreen, &tmpRegion))
|
REGION_UNION(pScreen, &pDamage->pendingDamage,
|
||||||
{
|
&pDamage->pendingDamage, pDamageRegion);
|
||||||
REGION_UNION(pScreen, &pDamage->damage,
|
|
||||||
&pDamage->damage, pDamageRegion);
|
|
||||||
(*pDamage->damageReport) (pDamage, &tmpRegion, pDamage->closure);
|
|
||||||
}
|
|
||||||
REGION_UNINIT(pScreen, &tmpRegion);
|
|
||||||
break;
|
|
||||||
case DamageReportBoundingBox:
|
|
||||||
tmpBox = *REGION_EXTENTS (pScreen, &pDamage->damage);
|
|
||||||
REGION_UNION(pScreen, &pDamage->damage,
|
|
||||||
&pDamage->damage, pDamageRegion);
|
|
||||||
if (!BOX_SAME (&tmpBox, REGION_EXTENTS (pScreen, &pDamage->damage)))
|
|
||||||
(*pDamage->damageReport) (pDamage, &pDamage->damage, pDamage->closure);
|
|
||||||
break;
|
|
||||||
case DamageReportNonEmpty:
|
|
||||||
was_empty = !REGION_NOTEMPTY(pScreen, &pDamage->damage);
|
|
||||||
REGION_UNION(pScreen, &pDamage->damage, &pDamage->damage,
|
|
||||||
pDamageRegion);
|
|
||||||
if (was_empty && REGION_NOTEMPTY(pScreen, &pDamage->damage))
|
|
||||||
(*pDamage->damageReport) (pDamage, &pDamage->damage, pDamage->closure);
|
|
||||||
break;
|
|
||||||
case DamageReportNone:
|
|
||||||
REGION_UNION(pScreen, &pDamage->damage, &pDamage->damage,
|
|
||||||
pDamageRegion);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* translate original region back
|
* translate original region back
|
||||||
*/
|
*/
|
||||||
|
@ -305,6 +325,21 @@ damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
|
||||||
REGION_UNINIT (pScreen, &clippedRec);
|
REGION_UNINIT (pScreen, &clippedRec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
damageReportPostOp (DrawablePtr pDrawable)
|
||||||
|
{
|
||||||
|
drawableDamage(pDrawable);
|
||||||
|
|
||||||
|
for (; pDamage != NULL; pDamage = pDamage->pNext)
|
||||||
|
{
|
||||||
|
if (pDamage->reportAfter) {
|
||||||
|
DamageReportDamage (pDamage, &pDamage->pendingDamage);
|
||||||
|
REGION_EMPTY (pScreen, &pDamage->pendingDamage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#if DAMAGE_DEBUG_ENABLE
|
#if DAMAGE_DEBUG_ENABLE
|
||||||
#define damageDamageBox(d,b,m) _damageDamageBox(d,b,m,__FUNCTION__)
|
#define damageDamageBox(d,b,m) _damageDamageBox(d,b,m,__FUNCTION__)
|
||||||
static void
|
static void
|
||||||
|
@ -550,6 +585,7 @@ damageComposite (CARD8 op,
|
||||||
yDst,
|
yDst,
|
||||||
width,
|
width,
|
||||||
height);
|
height);
|
||||||
|
damageReportPostOp (pDst->pDrawable);
|
||||||
wrap (pScrPriv, ps, Composite, damageComposite);
|
wrap (pScrPriv, ps, Composite, damageComposite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -616,6 +652,7 @@ damageGlyphs (CARD8 op,
|
||||||
}
|
}
|
||||||
unwrap (pScrPriv, ps, Glyphs);
|
unwrap (pScrPriv, ps, Glyphs);
|
||||||
(*ps->Glyphs) (op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
|
(*ps->Glyphs) (op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
|
||||||
|
damageReportPostOp (pDst->pDrawable);
|
||||||
wrap (pScrPriv, ps, Glyphs, damageGlyphs);
|
wrap (pScrPriv, ps, Glyphs, damageGlyphs);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -668,6 +705,7 @@ damageFillSpans(DrawablePtr pDrawable,
|
||||||
|
|
||||||
(*pGC->ops->FillSpans)(pDrawable, pGC, npt, ppt, pwidth, fSorted);
|
(*pGC->ops->FillSpans)(pDrawable, pGC, npt, ppt, pwidth, fSorted);
|
||||||
|
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -715,6 +753,7 @@ damageSetSpans(DrawablePtr pDrawable,
|
||||||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||||
}
|
}
|
||||||
(*pGC->ops->SetSpans)(pDrawable, pGC, pcharsrc, ppt, pwidth, npt, fSorted);
|
(*pGC->ops->SetSpans)(pDrawable, pGC, pcharsrc, ppt, pwidth, npt, fSorted);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -746,6 +785,7 @@ damagePutImage(DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
(*pGC->ops->PutImage)(pDrawable, pGC, depth, x, y, w, h,
|
(*pGC->ops->PutImage)(pDrawable, pGC, depth, x, y, w, h,
|
||||||
leftPad, format, pImage);
|
leftPad, format, pImage);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -789,6 +829,7 @@ damageCopyArea(DrawablePtr pSrc,
|
||||||
|
|
||||||
ret = (*pGC->ops->CopyArea)(pSrc, pDst,
|
ret = (*pGC->ops->CopyArea)(pSrc, pDst,
|
||||||
pGC, srcx, srcy, width, height, dstx, dsty);
|
pGC, srcx, srcy, width, height, dstx, dsty);
|
||||||
|
damageReportPostOp (pDst);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDst);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDst);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -834,6 +875,7 @@ damageCopyPlane(DrawablePtr pSrc,
|
||||||
|
|
||||||
ret = (*pGC->ops->CopyPlane)(pSrc, pDst,
|
ret = (*pGC->ops->CopyPlane)(pSrc, pDst,
|
||||||
pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
|
pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
|
||||||
|
damageReportPostOp (pDst);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDst);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDst);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -875,6 +917,7 @@ damagePolyPoint(DrawablePtr pDrawable,
|
||||||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||||
}
|
}
|
||||||
(*pGC->ops->PolyPoint)(pDrawable, pGC, mode, npt, ppt);
|
(*pGC->ops->PolyPoint)(pDrawable, pGC, mode, npt, ppt);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -948,6 +991,7 @@ damagePolylines(DrawablePtr pDrawable,
|
||||||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||||
}
|
}
|
||||||
(*pGC->ops->Polylines)(pDrawable, pGC, mode, npt, ppt);
|
(*pGC->ops->Polylines)(pDrawable, pGC, mode, npt, ppt);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1026,6 +1070,7 @@ damagePolySegment(DrawablePtr pDrawable,
|
||||||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||||
}
|
}
|
||||||
(*pGC->ops->PolySegment)(pDrawable, pGC, nSeg, pSeg);
|
(*pGC->ops->PolySegment)(pDrawable, pGC, nSeg, pSeg);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1087,6 +1132,7 @@ damagePolyRectangle(DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(*pGC->ops->PolyRectangle)(pDrawable, pGC, nRects, pRects);
|
(*pGC->ops->PolyRectangle)(pDrawable, pGC, nRects, pRects);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1139,6 +1185,7 @@ damagePolyArc(DrawablePtr pDrawable,
|
||||||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||||
}
|
}
|
||||||
(*pGC->ops->PolyArc)(pDrawable, pGC, nArcs, pArcs);
|
(*pGC->ops->PolyArc)(pDrawable, pGC, nArcs, pArcs);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1197,6 +1244,7 @@ damageFillPolygon(DrawablePtr pDrawable,
|
||||||
}
|
}
|
||||||
|
|
||||||
(*pGC->ops->FillPolygon)(pDrawable, pGC, shape, mode, npt, ppt);
|
(*pGC->ops->FillPolygon)(pDrawable, pGC, shape, mode, npt, ppt);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1235,6 +1283,7 @@ damagePolyFillRect(DrawablePtr pDrawable,
|
||||||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||||
}
|
}
|
||||||
(*pGC->ops->PolyFillRect)(pDrawable, pGC, nRects, pRects);
|
(*pGC->ops->PolyFillRect)(pDrawable, pGC, nRects, pRects);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1276,6 +1325,7 @@ damagePolyFillArc(DrawablePtr pDrawable,
|
||||||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||||
}
|
}
|
||||||
(*pGC->ops->PolyFillArc)(pDrawable, pGC, nArcs, pArcs);
|
(*pGC->ops->PolyFillArc)(pDrawable, pGC, nArcs, pArcs);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1386,6 +1436,7 @@ damagePolyText8(DrawablePtr pDrawable,
|
||||||
Linear8Bit, TT_POLY8);
|
Linear8Bit, TT_POLY8);
|
||||||
else
|
else
|
||||||
x = (*pGC->ops->PolyText8)(pDrawable, pGC, x, y, count, chars);
|
x = (*pGC->ops->PolyText8)(pDrawable, pGC, x, y, count, chars);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
@ -1406,6 +1457,7 @@ damagePolyText16(DrawablePtr pDrawable,
|
||||||
TT_POLY16);
|
TT_POLY16);
|
||||||
else
|
else
|
||||||
x = (*pGC->ops->PolyText16)(pDrawable, pGC, x, y, count, chars);
|
x = (*pGC->ops->PolyText16)(pDrawable, pGC, x, y, count, chars);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
@ -1425,6 +1477,7 @@ damageImageText8(DrawablePtr pDrawable,
|
||||||
Linear8Bit, TT_IMAGE8);
|
Linear8Bit, TT_IMAGE8);
|
||||||
else
|
else
|
||||||
(*pGC->ops->ImageText8)(pDrawable, pGC, x, y, count, chars);
|
(*pGC->ops->ImageText8)(pDrawable, pGC, x, y, count, chars);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1444,6 +1497,7 @@ damageImageText16(DrawablePtr pDrawable,
|
||||||
TT_IMAGE16);
|
TT_IMAGE16);
|
||||||
else
|
else
|
||||||
(*pGC->ops->ImageText16)(pDrawable, pGC, x, y, count, chars);
|
(*pGC->ops->ImageText16)(pDrawable, pGC, x, y, count, chars);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1462,6 +1516,7 @@ damageImageGlyphBlt(DrawablePtr pDrawable,
|
||||||
nglyph, ppci, TRUE, pGC->subWindowMode);
|
nglyph, ppci, TRUE, pGC->subWindowMode);
|
||||||
(*pGC->ops->ImageGlyphBlt)(pDrawable, pGC, x, y, nglyph,
|
(*pGC->ops->ImageGlyphBlt)(pDrawable, pGC, x, y, nglyph,
|
||||||
ppci, pglyphBase);
|
ppci, pglyphBase);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1479,6 +1534,7 @@ damagePolyGlyphBlt(DrawablePtr pDrawable,
|
||||||
nglyph, ppci, FALSE, pGC->subWindowMode);
|
nglyph, ppci, FALSE, pGC->subWindowMode);
|
||||||
(*pGC->ops->PolyGlyphBlt)(pDrawable, pGC, x, y, nglyph,
|
(*pGC->ops->PolyGlyphBlt)(pDrawable, pGC, x, y, nglyph,
|
||||||
ppci, pglyphBase);
|
ppci, pglyphBase);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1512,6 +1568,7 @@ damagePushPixels(GCPtr pGC,
|
||||||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||||
}
|
}
|
||||||
(*pGC->ops->PushPixels)(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg);
|
(*pGC->ops->PushPixels)(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg);
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1591,10 +1648,12 @@ damagePaintWindow(WindowPtr pWindow,
|
||||||
if(what == PW_BACKGROUND) {
|
if(what == PW_BACKGROUND) {
|
||||||
unwrap (pScrPriv, pScreen, PaintWindowBackground);
|
unwrap (pScrPriv, pScreen, PaintWindowBackground);
|
||||||
(*pScreen->PaintWindowBackground) (pWindow, prgn, what);
|
(*pScreen->PaintWindowBackground) (pWindow, prgn, what);
|
||||||
|
damageReportPostOp (&pWindow->drawable);
|
||||||
wrap (pScrPriv, pScreen, PaintWindowBackground, damagePaintWindow);
|
wrap (pScrPriv, pScreen, PaintWindowBackground, damagePaintWindow);
|
||||||
} else {
|
} else {
|
||||||
unwrap (pScrPriv, pScreen, PaintWindowBorder);
|
unwrap (pScrPriv, pScreen, PaintWindowBorder);
|
||||||
(*pScreen->PaintWindowBorder) (pWindow, prgn, what);
|
(*pScreen->PaintWindowBorder) (pWindow, prgn, what);
|
||||||
|
damageReportPostOp (&pWindow->drawable);
|
||||||
wrap (pScrPriv, pScreen, PaintWindowBorder, damagePaintWindow);
|
wrap (pScrPriv, pScreen, PaintWindowBorder, damagePaintWindow);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1623,6 +1682,7 @@ damageCopyWindow(WindowPtr pWindow,
|
||||||
}
|
}
|
||||||
unwrap (pScrPriv, pScreen, CopyWindow);
|
unwrap (pScrPriv, pScreen, CopyWindow);
|
||||||
(*pScreen->CopyWindow) (pWindow, ptOldOrg, prgnSrc);
|
(*pScreen->CopyWindow) (pWindow, ptOldOrg, prgnSrc);
|
||||||
|
damageReportPostOp (&pWindow->drawable);
|
||||||
wrap (pScrPriv, pScreen, CopyWindow, damageCopyWindow);
|
wrap (pScrPriv, pScreen, CopyWindow, damageCopyWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1654,6 +1714,7 @@ damageRestoreAreas (PixmapPtr pPixmap,
|
||||||
unwrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas);
|
unwrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas);
|
||||||
(*pScreen->BackingStoreFuncs.RestoreAreas) (pPixmap, prgn,
|
(*pScreen->BackingStoreFuncs.RestoreAreas) (pPixmap, prgn,
|
||||||
xorg, yorg, pWindow);
|
xorg, yorg, pWindow);
|
||||||
|
damageReportPostOp (&pWindow->drawable);
|
||||||
wrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas,
|
wrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas,
|
||||||
damageRestoreAreas);
|
damageRestoreAreas);
|
||||||
}
|
}
|
||||||
|
@ -1820,12 +1881,14 @@ DamageCreate (DamageReportFunc damageReport,
|
||||||
pDamage->pNext = 0;
|
pDamage->pNext = 0;
|
||||||
pDamage->pNextWin = 0;
|
pDamage->pNextWin = 0;
|
||||||
REGION_NULL(pScreen, &pDamage->damage);
|
REGION_NULL(pScreen, &pDamage->damage);
|
||||||
|
REGION_NULL(pScreen, &pDamage->pendingDamage);
|
||||||
|
|
||||||
pDamage->damageLevel = damageLevel;
|
pDamage->damageLevel = damageLevel;
|
||||||
pDamage->isInternal = isInternal;
|
pDamage->isInternal = isInternal;
|
||||||
pDamage->closure = closure;
|
pDamage->closure = closure;
|
||||||
pDamage->isWindow = FALSE;
|
pDamage->isWindow = FALSE;
|
||||||
pDamage->pDrawable = 0;
|
pDamage->pDrawable = 0;
|
||||||
|
pDamage->reportAfter = FALSE;
|
||||||
|
|
||||||
pDamage->damageReport = damageReport;
|
pDamage->damageReport = damageReport;
|
||||||
pDamage->damageDestroy = damageDestroy;
|
pDamage->damageDestroy = damageDestroy;
|
||||||
|
@ -1909,6 +1972,7 @@ DamageDestroy (DamagePtr pDamage)
|
||||||
if (pDamage->damageDestroy)
|
if (pDamage->damageDestroy)
|
||||||
(*pDamage->damageDestroy) (pDamage, pDamage->closure);
|
(*pDamage->damageDestroy) (pDamage, pDamage->closure);
|
||||||
REGION_UNINIT (pDamage->pDrawable->pScreen, &pDamage->damage);
|
REGION_UNINIT (pDamage->pDrawable->pScreen, &pDamage->damage);
|
||||||
|
REGION_UNINIT (pDamage->pDrawable->pScreen, &pDamage->pendingDamage);
|
||||||
xfree (pDamage);
|
xfree (pDamage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1962,4 +2026,16 @@ DamageDamageRegion (DrawablePtr pDrawable,
|
||||||
RegionPtr pRegion)
|
RegionPtr pRegion)
|
||||||
{
|
{
|
||||||
damageDamageRegion (pDrawable, pRegion, FALSE, -1);
|
damageDamageRegion (pDrawable, pRegion, FALSE, -1);
|
||||||
|
|
||||||
|
/* Go back and report this damage for DamagePtrs with reportAfter set, since
|
||||||
|
* this call isn't part of an in-progress drawing op in the call chain and
|
||||||
|
* the DDX probably just wants to know about it right away.
|
||||||
|
*/
|
||||||
|
damageReportPostOp (pDrawable);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
DamageSetReportAfterOp (DamagePtr pDamage, Bool reportAfter)
|
||||||
|
{
|
||||||
|
pDamage->reportAfter = reportAfter;
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,4 +81,7 @@ void
|
||||||
DamageDamageRegion (DrawablePtr pDrawable,
|
DamageDamageRegion (DrawablePtr pDrawable,
|
||||||
const RegionPtr pRegion);
|
const RegionPtr pRegion);
|
||||||
|
|
||||||
|
void
|
||||||
|
DamageSetReportAfterOp (DamagePtr pDamage, Bool reportAfter);
|
||||||
|
|
||||||
#endif /* _DAMAGE_H_ */
|
#endif /* _DAMAGE_H_ */
|
||||||
|
|
|
@ -48,6 +48,9 @@ typedef struct _damage {
|
||||||
|
|
||||||
DamageReportFunc damageReport;
|
DamageReportFunc damageReport;
|
||||||
DamageDestroyFunc damageDestroy;
|
DamageDestroyFunc damageDestroy;
|
||||||
|
|
||||||
|
Bool reportAfter;
|
||||||
|
RegionRec pendingDamage;
|
||||||
} DamageRec;
|
} DamageRec;
|
||||||
|
|
||||||
typedef struct _damageScrPriv {
|
typedef struct _damageScrPriv {
|
||||||
|
|
|
@ -337,10 +337,7 @@ WaitForSomething(int *pClientsReady)
|
||||||
if (XFD_ANYSET(&tmp_set))
|
if (XFD_ANYSET(&tmp_set))
|
||||||
QueueWorkProc(EstablishNewConnections, NULL,
|
QueueWorkProc(EstablishNewConnections, NULL,
|
||||||
(pointer)&LastSelectMask);
|
(pointer)&LastSelectMask);
|
||||||
#ifdef DPMSExtension
|
|
||||||
if (XFD_ANYSET (&devicesReadable) && (DPMSPowerLevel != DPMSModeOn))
|
|
||||||
DPMSSet(DPMSModeOn);
|
|
||||||
#endif
|
|
||||||
if (XFD_ANYSET (&devicesReadable) || XFD_ANYSET (&clientsReadable))
|
if (XFD_ANYSET (&devicesReadable) || XFD_ANYSET (&clientsReadable))
|
||||||
break;
|
break;
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
18
os/utils.c
18
os/utils.c
|
@ -53,23 +53,6 @@ OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __linux__
|
|
||||||
#include <time.h>
|
|
||||||
#else
|
|
||||||
/* The world's most shocking hack, to ensure we get clock_gettime() and
|
|
||||||
* CLOCK_MONOTONIC. */
|
|
||||||
#ifdef _POSIX_C_SOURCE
|
|
||||||
#define _SAVED_POSIX_C_SOURCE _POSIX_C_SOURCE
|
|
||||||
#undef _POSIX_C_SOURCE
|
|
||||||
#endif
|
|
||||||
#define _POSIX_C_SOURCE 199309L
|
|
||||||
#include <time.h>
|
|
||||||
#undef _POSIX_C_SOURCE
|
|
||||||
#ifdef _SAVED_POSIX_C_SOURCE
|
|
||||||
#define _POSIX_C_SOURCE _SAVED_POSIX_C_SOURCE
|
|
||||||
#endif
|
|
||||||
#endif /* __linux__ */
|
|
||||||
|
|
||||||
#ifdef __CYGWIN__
|
#ifdef __CYGWIN__
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
@ -80,6 +63,7 @@ OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#endif
|
#endif
|
||||||
#include <X11/Xos.h>
|
#include <X11/Xos.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <time.h>
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include <X11/X.h>
|
#include <X11/X.h>
|
||||||
#define XSERV_t
|
#define XSERV_t
|
||||||
|
|
|
@ -243,6 +243,10 @@ Bool RRScreenInit(ScreenPtr pScreen)
|
||||||
pScrPriv->maxWidth = pScrPriv->minWidth = pScreen->width;
|
pScrPriv->maxWidth = pScrPriv->minWidth = pScreen->width;
|
||||||
pScrPriv->maxHeight = pScrPriv->minHeight = pScreen->height;
|
pScrPriv->maxHeight = pScrPriv->minHeight = pScreen->height;
|
||||||
|
|
||||||
|
pScrPriv->width = pScreen->width;
|
||||||
|
pScrPriv->height = pScreen->height;
|
||||||
|
pScrPriv->mmWidth = pScreen->mmWidth;
|
||||||
|
pScrPriv->mmHeight = pScreen->mmHeight;
|
||||||
#if RANDR_12_INTERFACE
|
#if RANDR_12_INTERFACE
|
||||||
pScrPriv->rrScreenSetSize = NULL;
|
pScrPriv->rrScreenSetSize = NULL;
|
||||||
pScrPriv->rrCrtcSet = NULL;
|
pScrPriv->rrCrtcSet = NULL;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue