Merge branch 'master' into my-XACE-SELINUX
This commit is contained in:
commit
04632835b7
56
GL/glx/glxbyteorder.h
Normal file
56
GL/glx/glxbyteorder.h
Normal file
|
@ -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;
|
||||
drm_magic_t magic;
|
||||
drmVersionPtr version;
|
||||
int newlyopened;
|
||||
char *driverName;
|
||||
drm_handle_t hFB;
|
||||
int junk;
|
||||
|
@ -914,10 +915,10 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
|||
goto handle_error;
|
||||
}
|
||||
|
||||
fd = drmOpen(NULL, BusID);
|
||||
fd = drmOpenOnce(NULL, BusID, &newlyopened);
|
||||
|
||||
if (fd < 0) {
|
||||
LogMessage(X_ERROR, "AIGLX error: drmOpen failed (%s)\n",
|
||||
LogMessage(X_ERROR, "AIGLX error: drmOpenOnce failed (%s)\n",
|
||||
strerror(-fd));
|
||||
goto handle_error;
|
||||
}
|
||||
|
@ -940,7 +941,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
|||
drm_version.patch = -1;
|
||||
}
|
||||
|
||||
if (!DRIAuthConnection(pScreen, magic)) {
|
||||
if (newlyopened && !DRIAuthConnection(pScreen, magic)) {
|
||||
LogMessage(X_ERROR, "AIGLX error: DRIAuthConnection failed\n");
|
||||
goto handle_error;
|
||||
}
|
||||
|
@ -1082,7 +1083,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
|||
xfree(dev_priv);
|
||||
|
||||
if (fd >= 0)
|
||||
drmClose(fd);
|
||||
drmCloseOnce(fd);
|
||||
|
||||
DRICloseConnection(pScreen);
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include "indirect_size_get.h"
|
||||
#include "indirect_dispatch.h"
|
||||
#include "glxserver.h"
|
||||
#include "glxbyteorder.h"
|
||||
#include "indirect_util.h"
|
||||
#include "singlesize.h"
|
||||
#include "glapitable.h"
|
||||
|
|
|
@ -28,24 +28,12 @@
|
|||
#include <X11/Xmd.h>
|
||||
#include <GL/gl.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 "indirect_size.h"
|
||||
#include "indirect_size_get.h"
|
||||
#include "indirect_dispatch.h"
|
||||
#include "glxserver.h"
|
||||
#include "glxbyteorder.h"
|
||||
#include "indirect_util.h"
|
||||
#include "singlesize.h"
|
||||
#include "glapitable.h"
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#endif
|
||||
|
||||
#include "glxserver.h"
|
||||
#include "glxbyteorder.h"
|
||||
#include "glxext.h"
|
||||
#include "singlesize.h"
|
||||
#include "unpack.h"
|
||||
|
@ -46,20 +47,6 @@
|
|||
#include "dispatch.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,
|
||||
unsigned get_programiv_offset, unsigned get_program_string_offset,
|
||||
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 __glXTexImage3DReqSize(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 __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 __glXProgramParameters4dvNVReqSize(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 __glXVertexAttribs4ubvNVReqSize(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 __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 __glXDeleteRenderbuffersEXTReqSize(const GLbyte *pc, Bool swap);
|
||||
|
||||
# undef HIDDEN
|
||||
# undef PURE
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#endif
|
||||
|
||||
#include "glxserver.h"
|
||||
#include "glxbyteorder.h"
|
||||
#include "glxext.h"
|
||||
#include "singlesize.h"
|
||||
#include "unpack.h"
|
||||
|
@ -39,20 +40,6 @@
|
|||
#include "glthread.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)
|
||||
{
|
||||
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
|
||||
|
|
|
@ -23,29 +23,21 @@
|
|||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_DIX_CONFIG_H
|
||||
#include <dix-config.h>
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <X11/Xmd.h>
|
||||
#include <GL/gl.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 "indirect_size.h"
|
||||
#include "indirect_size_get.h"
|
||||
#include "indirect_dispatch.h"
|
||||
#include "glxserver.h"
|
||||
#include "glxbyteorder.h"
|
||||
#include "singlesize.h"
|
||||
#include "glapitable.h"
|
||||
#include "glapi.h"
|
||||
|
|
|
@ -39,20 +39,7 @@
|
|||
#include "glthread.h"
|
||||
#include "dispatch.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
|
||||
#include "glxbyteorder.h"
|
||||
|
||||
static int DoSwapInterval(__GLXclientState *cl, GLbyte *pc, int do_swap);
|
||||
|
||||
|
|
4
GL/mesa/.gitignore
vendored
4
GL/mesa/.gitignore
vendored
|
@ -2,8 +2,6 @@ X/drivers
|
|||
X/glxheader.h
|
||||
X/xmesaP.h
|
||||
X/xm*.c
|
||||
array_cache/*.c
|
||||
array_cache/*.h
|
||||
mesa/drivers
|
||||
mesa/glxheader.h
|
||||
mesa/xm*.c
|
||||
|
@ -30,3 +28,5 @@ tnl/*.c
|
|||
tnl/*.h
|
||||
x86
|
||||
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
|
||||
|
||||
libGLcore_la_SOURCES = dummy.c
|
||||
libGLcore_la_LIBADD = main/libmain.la \
|
||||
math/libmath.la \
|
||||
array_cache/libac.la \
|
||||
swrast/libswrast.la \
|
||||
swrast_setup/libss.la \
|
||||
tnl/libtnl.la \
|
||||
shader/libshader.la \
|
||||
shader/grammar/libgrammar.la \
|
||||
shader/slang/libslang.la \
|
||||
vbo/libvbo.la \
|
||||
X/libX.la
|
||||
|
|
|
@ -2,7 +2,6 @@ noinst_LTLIBRARIES = libX.la
|
|||
|
||||
INCLUDES = -I@MESA_SOURCE@/include \
|
||||
-I../X \
|
||||
-I../array_cache \
|
||||
-I../glapi \
|
||||
-I../main \
|
||||
-I../math \
|
||||
|
|
|
@ -78,6 +78,7 @@ typedef struct __GLXMESAdrawable __GLXMESAdrawable;
|
|||
struct __GLXMESAscreen {
|
||||
__GLXscreen base;
|
||||
int index;
|
||||
int num_vis;
|
||||
XMesaVisual *xm_vis;
|
||||
};
|
||||
|
||||
|
@ -280,7 +281,7 @@ __glXMesaScreenDestroy(__GLXscreen *screen)
|
|||
__GLXMESAscreen *mesaScreen = (__GLXMESAscreen *) screen;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < screen->numVisuals; i++) {
|
||||
for (i = 0; i < mesaScreen->num_vis; i++) {
|
||||
if (mesaScreen->xm_vis[i])
|
||||
XMesaDestroyVisual(mesaScreen->xm_vis[i]);
|
||||
}
|
||||
|
@ -389,6 +390,7 @@ static void init_screen_visuals(__GLXMESAscreen *screen)
|
|||
|
||||
xfree(used);
|
||||
|
||||
screen->num_vis = pScreen->numVisuals;
|
||||
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 \
|
||||
-I../X \
|
||||
-I../array_cache \
|
||||
-I../glapi \
|
||||
-I../main \
|
||||
-I../math \
|
||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
|||
|
||||
INCLUDES = -I@MESA_SOURCE@/include \
|
||||
-I../X \
|
||||
-I../array_cache \
|
||||
-I../glapi \
|
||||
-I../main \
|
||||
-I../math \
|
||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
|||
|
||||
INCLUDES = -I@MESA_SOURCE@/include \
|
||||
-I../X \
|
||||
-I../array_cache \
|
||||
-I../glapi \
|
||||
-I../main \
|
||||
-I../math \
|
||||
|
|
|
@ -9,7 +9,6 @@ AM_CFLAGS = \
|
|||
|
||||
INCLUDES = -I@MESA_SOURCE@/include \
|
||||
-I../X \
|
||||
-I../array_cache \
|
||||
-I../glapi \
|
||||
-I../main \
|
||||
-I../math \
|
||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
|||
|
||||
INCLUDES = -I@MESA_SOURCE@/include \
|
||||
-I../../X \
|
||||
-I../../array_cache \
|
||||
-I../../glapi \
|
||||
-I../../main \
|
||||
-I../../math \
|
||||
|
|
|
@ -8,7 +8,6 @@ AM_CFLAGS = \
|
|||
INCLUDES = -I@MESA_SOURCE@/include \
|
||||
-I../grammar \
|
||||
-I../../X \
|
||||
-I../../array_cache \
|
||||
-I../../glapi \
|
||||
-I../../main \
|
||||
-I../../math \
|
||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
|||
|
||||
INCLUDES = -I@MESA_SOURCE@/include \
|
||||
-I../X \
|
||||
-I../array_cache \
|
||||
-I../glapi \
|
||||
-I../main \
|
||||
-I../math \
|
||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
|||
|
||||
INCLUDES = -I@MESA_SOURCE@/include \
|
||||
-I../X \
|
||||
-I../array_cache \
|
||||
-I../glapi \
|
||||
-I../main \
|
||||
-I../math \
|
||||
|
|
|
@ -7,7 +7,6 @@ AM_CFLAGS = \
|
|||
|
||||
INCLUDES = -I@MESA_SOURCE@/include \
|
||||
-I../X \
|
||||
-I../array_cache \
|
||||
-I../glapi \
|
||||
-I../main \
|
||||
-I../math \
|
||||
|
@ -19,13 +18,9 @@ INCLUDES = -I@MESA_SOURCE@/include \
|
|||
-I.. \
|
||||
-I$(top_srcdir)/hw/xfree86/os-support
|
||||
|
||||
nodist_libtnl_la_SOURCES = t_array_api.c \
|
||||
t_array_import.c \
|
||||
t_context.c \
|
||||
nodist_libtnl_la_SOURCES = t_context.c \
|
||||
t_draw.c \
|
||||
t_pipeline.c \
|
||||
t_save_api.c \
|
||||
t_save_loopback.c \
|
||||
t_save_playback.c \
|
||||
t_vb_arbprogram.c \
|
||||
t_vb_arbprogram_sse.c \
|
||||
t_vb_arbshader.c \
|
||||
|
@ -42,9 +37,4 @@ nodist_libtnl_la_SOURCES = t_array_api.c \
|
|||
t_vertex.c \
|
||||
t_vertex_generic.c \
|
||||
t_vertex_sse.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
|
||||
t_vp_build.c
|
||||
|
|
35
GL/mesa/vbo/Makefile.am
Normal file
35
GL/mesa/vbo/Makefile.am
Normal file
|
@ -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
|
||||
}
|
||||
|
||||
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() {
|
||||
src_dir src/mesa/swrast
|
||||
dst_dir mesa/swrast
|
||||
|
@ -157,6 +148,15 @@ symlink_mesa_shader_slang_library() {
|
|||
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() {
|
||||
src_dir src/mesa/drivers/x11
|
||||
dst_dir mesa/X
|
||||
|
@ -203,7 +203,6 @@ symlink_mesa_x8664() {
|
|||
symlink_mesa() {
|
||||
symlink_mesa_main
|
||||
symlink_mesa_math
|
||||
symlink_mesa_ac
|
||||
symlink_mesa_swrast
|
||||
symlink_mesa_ss
|
||||
symlink_mesa_tnl
|
||||
|
@ -215,6 +214,7 @@ symlink_mesa() {
|
|||
symlink_mesa_glapi
|
||||
symlink_mesa_ppc
|
||||
symlink_mesa_sparc
|
||||
symlink_mesa_vbo
|
||||
symlink_mesa_x86
|
||||
symlink_mesa_x8664
|
||||
}
|
||||
|
|
|
@ -946,10 +946,10 @@ SecurityAuditResourceIDAccess(
|
|||
* rtype is its type or class.
|
||||
* access_mode represents the intended use of the resource; see
|
||||
* 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:
|
||||
* 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:
|
||||
* Disallowed resource accesses are audited.
|
||||
|
|
|
@ -32,10 +32,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#include <X11/X.h>
|
||||
#include <X11/Xmd.h>
|
||||
#include "servermd.h"
|
||||
#if defined(XFREE86) || ( defined(__OpenBSD__) && defined(__alpha__) ) \
|
||||
|| (defined(__bsdi__))
|
||||
#include "compiler.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* ==========================================================================
|
||||
|
|
99
configure.ac
99
configure.ac
|
@ -99,6 +99,64 @@ fi
|
|||
|
||||
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.
|
||||
AC_FUNC_VPRINTF
|
||||
AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \
|
||||
|
@ -295,6 +353,9 @@ case $host_os in
|
|||
DRI=yes
|
||||
KDRIVE_HW=yes
|
||||
;;
|
||||
*solaris*)
|
||||
PKG_CHECK_EXISTS(libdrm, DRI=yes, DRI=no)
|
||||
;;
|
||||
esac
|
||||
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
|
||||
#endif
|
||||
], mmx_capable=yes, mmx_capable=no)
|
||||
else
|
||||
mmx_capable=no
|
||||
fi
|
||||
AC_MSG_RESULT([$mmx_capable])
|
||||
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]),
|
||||
[INT10="$withval"],
|
||||
[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="$withval" ],
|
||||
[ 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]),
|
||||
[ VENDOR_STRING_SHORT="$withval" ],
|
||||
[ 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]),
|
||||
[ OSVENDOR="$withval" ],
|
||||
[ 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]),
|
||||
[ MESA_SOURCE="$withval" ],
|
||||
[ MESA_SOURCE="" ])
|
||||
|
@ -546,7 +612,7 @@ XEXT_LIB='$(top_builddir)/Xext/libXext.la'
|
|||
XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
|
||||
|
||||
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"
|
||||
|
||||
if test "x$DBUS" = xauto; then
|
||||
|
@ -617,7 +683,7 @@ fi
|
|||
|
||||
if test "x$GLX" = xyes && ! test "x$MESA_SOURCE" = x; then
|
||||
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_DEFINE(GLXEXT, 1, [Build GLX extension])
|
||||
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(OSNAME, ["$OSNAME"], [Operating System Name])
|
||||
AC_DEFINE_UNQUOTED(OSVENDOR, ["$OSVENDOR"], [Operating System Vendor])
|
||||
AC_DEFINE_UNQUOTED(BUILDERSTRING, ["$BUILDERSTRING"], [Builder string])
|
||||
|
||||
AC_SUBST([VENDOR_STRING])
|
||||
AC_SUBST([VENDOR_STRING_SHORT])
|
||||
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
|
||||
AC_DEFINE(XResExtension, 1, [Build XRes extension])
|
||||
|
||||
dnl CYGWIN does not define fd_set if _POSIX_SOURCE is defined
|
||||
dnl _*_SOURCE on Solaris restricts to the standards, and removes non-standard
|
||||
dnl functions which X uses
|
||||
case $host_os in
|
||||
cygwin*) ;;
|
||||
solaris*) ;;
|
||||
darwin*) ;;
|
||||
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_TRY_COMPILE([
|
||||
#include <features.h>
|
||||
#ifndef __GLIBC__
|
||||
#error not glibc
|
||||
#endif
|
||||
], [], [AC_DEFINE(_GNU_SOURCE, 1,
|
||||
[ Enable GNU and other extensions to the C environment for glibc])])
|
||||
|
||||
AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
|
||||
|
||||
|
@ -1796,7 +1857,6 @@ Makefile
|
|||
GL/Makefile
|
||||
GL/glx/Makefile
|
||||
GL/mesa/Makefile
|
||||
GL/mesa/array_cache/Makefile
|
||||
GL/mesa/glapi/Makefile
|
||||
GL/mesa/main/Makefile
|
||||
GL/mesa/math/Makefile
|
||||
|
@ -1806,6 +1866,7 @@ GL/mesa/shader/slang/Makefile
|
|||
GL/mesa/swrast/Makefile
|
||||
GL/mesa/swrast_setup/Makefile
|
||||
GL/mesa/tnl/Makefile
|
||||
GL/mesa/vbo/Makefile
|
||||
GL/mesa/X/Makefile
|
||||
include/Makefile
|
||||
afb/Makefile
|
||||
|
|
|
@ -35,6 +35,13 @@ int DamageClientPrivateIndex;
|
|||
RESTYPE DamageExtType;
|
||||
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]
|
||||
|
||||
static void
|
||||
|
@ -143,16 +150,16 @@ ProcDamageQueryVersion(ClientPtr client)
|
|||
rep.type = X_Reply;
|
||||
rep.length = 0;
|
||||
rep.sequenceNumber = client->sequence;
|
||||
if (stuff->majorVersion < DAMAGE_MAJOR) {
|
||||
if (stuff->majorVersion < SERVER_DAMAGE_MAJOR) {
|
||||
rep.majorVersion = stuff->majorVersion;
|
||||
rep.minorVersion = stuff->minorVersion;
|
||||
} else {
|
||||
rep.majorVersion = DAMAGE_MAJOR;
|
||||
if (stuff->majorVersion == DAMAGE_MAJOR &&
|
||||
stuff->minorVersion < DAMAGE_MINOR)
|
||||
rep.majorVersion = SERVER_DAMAGE_MAJOR;
|
||||
if (stuff->majorVersion == SERVER_DAMAGE_MAJOR &&
|
||||
stuff->minorVersion < SERVER_DAMAGE_MINOR)
|
||||
rep.minorVersion = stuff->minorVersion;
|
||||
else
|
||||
rep.minorVersion = DAMAGE_MINOR;
|
||||
rep.minorVersion = SERVER_DAMAGE_MINOR;
|
||||
}
|
||||
pDamageClient->major_version = rep.majorVersion;
|
||||
pDamageClient->minor_version = rep.minorVersion;
|
||||
|
@ -279,10 +286,35 @@ ProcDamageSubtract (ClientPtr client)
|
|||
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 */
|
||||
static const int version_requests[] = {
|
||||
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]))
|
||||
|
@ -293,6 +325,8 @@ int (*ProcDamageVector[XDamageNumberRequests])(ClientPtr) = {
|
|||
ProcDamageCreate,
|
||||
ProcDamageDestroy,
|
||||
ProcDamageSubtract,
|
||||
/*************** Version 1.1 ****************/
|
||||
ProcDamageAdd,
|
||||
};
|
||||
|
||||
|
||||
|
@ -361,12 +395,27 @@ SProcDamageSubtract (ClientPtr 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) = {
|
||||
/*************** Version 1 ******************/
|
||||
SProcDamageQueryVersion,
|
||||
SProcDamageCreate,
|
||||
SProcDamageDestroy,
|
||||
SProcDamageSubtract,
|
||||
/*************** Version 1.1 ****************/
|
||||
SProcDamageAdd,
|
||||
};
|
||||
|
||||
static int
|
||||
|
|
34
dbe/dbe.c
34
dbe/dbe.c
|
@ -39,6 +39,11 @@
|
|||
#endif
|
||||
|
||||
#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/Xproto.h>
|
||||
|
@ -711,11 +716,14 @@ ProcDbeSwapBuffers(ClientPtr client)
|
|||
return(Success);
|
||||
}
|
||||
|
||||
if (nStuff > UINT32_MAX / sizeof(DbeSwapInfoRec))
|
||||
return BadAlloc;
|
||||
|
||||
/* Get to the swap info appended to the end of the request. */
|
||||
dbeSwapInfo = (xDbeSwapInfo *)&stuff[1];
|
||||
|
||||
/* Allocate array to record swap information. */
|
||||
swapInfo = (DbeSwapInfoPtr)ALLOCATE_LOCAL(nStuff * sizeof(DbeSwapInfoRec));
|
||||
swapInfo = (DbeSwapInfoPtr)Xalloc(nStuff * sizeof(DbeSwapInfoRec));
|
||||
if (swapInfo == NULL)
|
||||
{
|
||||
return(BadAlloc);
|
||||
|
@ -730,14 +738,14 @@ ProcDbeSwapBuffers(ClientPtr client)
|
|||
error = dixLookupWindow(&pWin, dbeSwapInfo[i].window, client,
|
||||
DixWriteAccess);
|
||||
if (error != Success) {
|
||||
DEALLOCATE_LOCAL(swapInfo);
|
||||
Xfree(swapInfo);
|
||||
return error;
|
||||
}
|
||||
|
||||
/* Each window must be double-buffered - BadMatch. */
|
||||
if (DBE_WINDOW_PRIV(pWin) == NULL)
|
||||
{
|
||||
DEALLOCATE_LOCAL(swapInfo);
|
||||
Xfree(swapInfo);
|
||||
return(BadMatch);
|
||||
}
|
||||
|
||||
|
@ -746,7 +754,7 @@ ProcDbeSwapBuffers(ClientPtr client)
|
|||
{
|
||||
if (dbeSwapInfo[i].window == dbeSwapInfo[j].window)
|
||||
{
|
||||
DEALLOCATE_LOCAL(swapInfo);
|
||||
Xfree(swapInfo);
|
||||
return(BadMatch);
|
||||
}
|
||||
}
|
||||
|
@ -757,7 +765,7 @@ ProcDbeSwapBuffers(ClientPtr client)
|
|||
(dbeSwapInfo[i].swapAction != XdbeUntouched ) &&
|
||||
(dbeSwapInfo[i].swapAction != XdbeCopied ))
|
||||
{
|
||||
DEALLOCATE_LOCAL(swapInfo);
|
||||
Xfree(swapInfo);
|
||||
return(BadValue);
|
||||
}
|
||||
|
||||
|
@ -787,12 +795,12 @@ ProcDbeSwapBuffers(ClientPtr client)
|
|||
error = (*pDbeScreenPriv->SwapBuffers)(client, &nStuff, swapInfo);
|
||||
if (error != Success)
|
||||
{
|
||||
DEALLOCATE_LOCAL(swapInfo);
|
||||
Xfree(swapInfo);
|
||||
return(error);
|
||||
}
|
||||
}
|
||||
|
||||
DEALLOCATE_LOCAL(swapInfo);
|
||||
Xfree(swapInfo);
|
||||
return(Success);
|
||||
|
||||
} /* ProcDbeSwapBuffers() */
|
||||
|
@ -874,10 +882,12 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
|||
|
||||
REQUEST_AT_LEAST_SIZE(xDbeGetVisualInfoReq);
|
||||
|
||||
if (stuff->n > UINT32_MAX / sizeof(DrawablePtr))
|
||||
return BadAlloc;
|
||||
/* Make sure any specified drawables are valid. */
|
||||
if (stuff->n != 0)
|
||||
{
|
||||
if (!(pDrawables = (DrawablePtr *)ALLOCATE_LOCAL(stuff->n *
|
||||
if (!(pDrawables = (DrawablePtr *)Xalloc(stuff->n *
|
||||
sizeof(DrawablePtr))))
|
||||
{
|
||||
return(BadAlloc);
|
||||
|
@ -890,7 +900,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
|||
rc = dixLookupDrawable(pDrawables+i, drawables[i], client, 0,
|
||||
DixReadAccess);
|
||||
if (rc != Success) {
|
||||
DEALLOCATE_LOCAL(pDrawables);
|
||||
Xfree(pDrawables);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
@ -902,7 +912,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
|||
{
|
||||
if (pDrawables)
|
||||
{
|
||||
DEALLOCATE_LOCAL(pDrawables);
|
||||
Xfree(pDrawables);
|
||||
}
|
||||
|
||||
return(BadAlloc);
|
||||
|
@ -929,7 +939,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
|||
/* Free pDrawables if we needed to allocate it above. */
|
||||
if (pDrawables)
|
||||
{
|
||||
DEALLOCATE_LOCAL(pDrawables);
|
||||
Xfree(pDrawables);
|
||||
}
|
||||
|
||||
return(BadAlloc);
|
||||
|
@ -1010,7 +1020,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
|
|||
|
||||
if (pDrawables)
|
||||
{
|
||||
DEALLOCATE_LOCAL(pDrawables);
|
||||
Xfree(pDrawables);
|
||||
}
|
||||
|
||||
return(client->noClientException);
|
||||
|
|
|
@ -219,7 +219,7 @@ dixLookupDrawable(DrawablePtr *pDraw, XID id, ClientPtr client,
|
|||
pTmp = client->lastDrawable;
|
||||
|
||||
/* 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))
|
||||
return BadDrawable;
|
||||
} else
|
||||
|
@ -227,10 +227,10 @@ dixLookupDrawable(DrawablePtr *pDraw, XID id, ClientPtr client,
|
|||
access);
|
||||
if (!pTmp)
|
||||
return BadDrawable;
|
||||
if (!((1 << pTmp->type) | (type ? type : M_DRAWABLE)))
|
||||
if (!((1 << pTmp->type) & (type ? type : M_DRAWABLE)))
|
||||
return BadMatch;
|
||||
|
||||
if (pTmp->type | M_DRAWABLE) {
|
||||
if (type & M_DRAWABLE) {
|
||||
client->lastDrawable = pTmp;
|
||||
client->lastDrawableID = id;
|
||||
client->lastGCID = INVALID;
|
||||
|
|
|
@ -489,6 +489,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
|||
Bool sendValuators = (type == MotionNotify || flags & POINTER_ABSOLUTE);
|
||||
DeviceIntPtr cp = inputInfo.pointer;
|
||||
int x = 0, y = 0;
|
||||
Bool coreOnly = (pDev == inputInfo.pointer);
|
||||
|
||||
/* Sanity checks. */
|
||||
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)
|
||||
return 0;
|
||||
|
||||
if (pDev->coreEvents)
|
||||
if (!coreOnly && pDev->coreEvents)
|
||||
num_events = 2;
|
||||
else
|
||||
num_events = 1;
|
||||
|
@ -507,7 +508,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
|||
}
|
||||
|
||||
/* Do we need to send a DeviceValuator event? */
|
||||
if (sendValuators) {
|
||||
if (!coreOnly && sendValuators) {
|
||||
if ((((num_valuators - 1) / 6) + 1) > MAX_VALUATOR_EVENTS)
|
||||
num_valuators = MAX_VALUATOR_EVENTS * 6;
|
||||
num_events += ((num_valuators - 1) / 6) + 1;
|
||||
|
@ -521,10 +522,6 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
|||
|
||||
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
|
||||
* accelerate if we need to. */
|
||||
if (flags & POINTER_ABSOLUTE) {
|
||||
|
@ -602,29 +599,37 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
|||
pDev->valuator->lastx = x;
|
||||
pDev->valuator->lasty = y;
|
||||
|
||||
if (type == MotionNotify) {
|
||||
kbp->type = DeviceMotionNotify;
|
||||
}
|
||||
else {
|
||||
if (type == ButtonPress)
|
||||
kbp->type = DeviceButtonPress;
|
||||
else if (type == ButtonRelease)
|
||||
kbp->type = DeviceButtonRelease;
|
||||
kbp->detail = pDev->button->map[buttons];
|
||||
if (!coreOnly)
|
||||
{
|
||||
kbp = (deviceKeyButtonPointer *) events;
|
||||
kbp->time = ms;
|
||||
kbp->deviceid = pDev->id;
|
||||
|
||||
if (type == MotionNotify) {
|
||||
kbp->type = DeviceMotionNotify;
|
||||
}
|
||||
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;
|
||||
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);
|
||||
}
|
||||
|
||||
if (pDev->coreEvents) {
|
||||
/* for some reason inputInfo.pointer does not have coreEvents set */
|
||||
if (coreOnly || pDev->coreEvents) {
|
||||
events->u.u.type = type;
|
||||
events->u.keyButtonPointer.time = ms;
|
||||
events->u.keyButtonPointer.rootX = x;
|
||||
|
@ -761,7 +766,7 @@ SwitchCorePointer(DeviceIntPtr pDev)
|
|||
* to shift the pointer to get it inside the new bounds.
|
||||
*/
|
||||
void
|
||||
PostSyntheticMotion(int x, int y, ScreenPtr pScreen, unsigned long time)
|
||||
PostSyntheticMotion(int x, int y, int screen, unsigned long time)
|
||||
{
|
||||
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
|
||||
to the DIX layer. */
|
||||
if (!noPanoramiXExtension) {
|
||||
x += panoramiXdataPtr[0].x - panoramiXdataPtr[pScreen->myNum].x;
|
||||
y += panoramiXdataPtr[0].y - panoramiXdataPtr[pScreen->myNum].y;
|
||||
x += panoramiXdataPtr[0].x - panoramiXdataPtr[screen].x;
|
||||
y += panoramiXdataPtr[0].y - panoramiXdataPtr[screen].y;
|
||||
}
|
||||
#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
|
||||
\fIXsecurity\fP(__miscmansuffix__) manual pages.
|
||||
.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
|
||||
disables backing store support on all screens.
|
||||
.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
|
||||
the client that it is doing so.
|
||||
.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
|
||||
loads the specified extension at init.
|
||||
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
|
||||
are different).
|
||||
.TP 8
|
||||
.B \-ar1 \fImilliseconds\fP
|
||||
.B \-ardelay \fImilliseconds\fP
|
||||
sets the autorepeat delay (length of time in milliseconds that a key must
|
||||
be depressed before autorepeat starts).
|
||||
.TP 8
|
||||
.B \-ar2 \fImilliseconds\fP
|
||||
.B \-arinterval \fImilliseconds\fP
|
||||
sets the autorepeat interval (length of time in milliseconds that should
|
||||
elapse between autorepeat-generated keystrokes).
|
||||
.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
|
||||
loads keyboard description in \fIfilename\fP on server startup.
|
||||
.SH SECURITY EXTENSION OPTIONS
|
||||
|
|
130
exa/exa.c
130
exa/exa.c
|
@ -121,18 +121,78 @@ exaGetDrawablePixmap(DrawablePtr 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
|
||||
* optimizations in pixmap migration when no changes have occurred.
|
||||
*/
|
||||
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));
|
||||
if (pExaPixmap != NULL)
|
||||
pExaPixmap->dirty = TRUE;
|
||||
x1 = max(x1, pDrawable->x);
|
||||
y1 = max(y1, pDrawable->y);
|
||||
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
|
||||
|
@ -153,6 +213,7 @@ exaDestroyPixmap (PixmapPtr pPixmap)
|
|||
pPixmap->devPrivate.ptr = pExaPixmap->sys_ptr;
|
||||
pPixmap->devKind = pExaPixmap->sys_pitch;
|
||||
}
|
||||
REGION_UNINIT(pPixmap->drawable.pScreen, &pExaPixmap->validReg);
|
||||
}
|
||||
return fbDestroyPixmap (pPixmap);
|
||||
}
|
||||
|
@ -220,7 +281,20 @@ exaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth)
|
|||
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;
|
||||
}
|
||||
|
@ -265,32 +339,14 @@ exaDrawableIsOffscreen (DrawablePtr pDrawable)
|
|||
/**
|
||||
* 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.
|
||||
* These coordinates are nonzero only for redirected windows.
|
||||
*/
|
||||
PixmapPtr
|
||||
exaGetOffscreenPixmap (DrawablePtr pDrawable, int *xp, int *yp)
|
||||
{
|
||||
PixmapPtr pPixmap;
|
||||
int x, y;
|
||||
PixmapPtr pPixmap = exaGetDrawablePixmap (pDrawable);
|
||||
|
||||
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))
|
||||
return pPixmap;
|
||||
else
|
||||
|
@ -338,8 +394,7 @@ exaPrepareAccess(DrawablePtr pDrawable, int index)
|
|||
/**
|
||||
* exaFinishAccess() is EXA's wrapper for the driver's FinishAccess() handler.
|
||||
*
|
||||
* It deals with marking drawables as dirty, and calling the driver's
|
||||
* FinishAccess() only if necessary.
|
||||
* It deals with calling the driver's FinishAccess() only if necessary.
|
||||
*/
|
||||
void
|
||||
exaFinishAccess(DrawablePtr pDrawable, int index)
|
||||
|
@ -349,9 +404,6 @@ exaFinishAccess(DrawablePtr pDrawable, int index)
|
|||
PixmapPtr pPixmap;
|
||||
ExaPixmapPrivPtr pExaPixmap;
|
||||
|
||||
if (index == EXA_PREPARE_DEST)
|
||||
exaDrawableDirty (pDrawable);
|
||||
|
||||
pPixmap = exaGetDrawablePixmap (pDrawable);
|
||||
|
||||
pExaPixmap = ExaGetPixmapPriv(pPixmap);
|
||||
|
@ -377,7 +429,7 @@ exaFinishAccess(DrawablePtr pDrawable, int index)
|
|||
* accelerated or may sync the card and fall back to fb.
|
||||
*/
|
||||
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.
|
||||
* 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);
|
||||
pNewTile = fb24_32ReformatTile (pOldTile,
|
||||
pDrawable->bitsPerPixel);
|
||||
exaPixmapDirty(pNewTile, 0, 0, pNewTile->drawable.width, pNewTile->drawable.height);
|
||||
exaFinishAccess(&pOldTile->drawable, EXA_PREPARE_SRC);
|
||||
}
|
||||
if (pNewTile)
|
||||
|
@ -423,9 +476,14 @@ exaValidateGC (GCPtr pGC, Mask changes, DrawablePtr pDrawable)
|
|||
if (!pGC->tileIsPixel && FbEvenTile (pGC->tile.pixmap->drawable.width *
|
||||
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);
|
||||
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
|
||||
* job for it.
|
||||
|
@ -564,7 +622,7 @@ exaDriverInit (ScreenPtr pScreen,
|
|||
|
||||
pScreen->devPrivates[exaScreenPrivateIndex].ptr = (pointer) pExaScr;
|
||||
|
||||
pExaScr->migration = ExaMigrationSmart;
|
||||
pExaScr->migration = ExaMigrationAlways;
|
||||
|
||||
exaDDXDriverInit(pScreen);
|
||||
|
||||
|
|
12
exa/exa.h
12
exa/exa.h
|
@ -39,7 +39,7 @@
|
|||
#include "fb.h"
|
||||
|
||||
#define EXA_VERSION_MAJOR 2
|
||||
#define EXA_VERSION_MINOR 0
|
||||
#define EXA_VERSION_MINOR 1
|
||||
#define EXA_VERSION_RELEASE 0
|
||||
|
||||
typedef struct _ExaOffscreenArea ExaOffscreenArea;
|
||||
|
@ -73,8 +73,8 @@ struct _ExaOffscreenArea {
|
|||
typedef struct _ExaDriver {
|
||||
/**
|
||||
* 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
|
||||
* support). This allows EXA to extend the structure for new features
|
||||
* EXA which the driver was compiled for (or configures itself at runtime
|
||||
* to support). This allows EXA to extend the structure for new features
|
||||
* without breaking ABI for drivers compiled against older versions.
|
||||
*/
|
||||
int exa_major, exa_minor;
|
||||
|
@ -716,6 +716,12 @@ exaGetPixmapSize(PixmapPtr pPix);
|
|||
void
|
||||
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
|
||||
* 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
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* Authors:
|
||||
* Eric Anholt <eric@anholt.net>
|
||||
* Michel Dänzer <michel@tungstengraphics.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_DIX_CONFIG_H
|
||||
|
@ -104,6 +109,8 @@ exaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n,
|
|||
(*pExaScr->info->Solid) (pPixmap,
|
||||
fullX1 + off_x, fullY1 + 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
|
||||
{
|
||||
|
@ -118,17 +125,19 @@ exaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n,
|
|||
partX2 = pbox->x2;
|
||||
if (partX2 > fullX2)
|
||||
partX2 = fullX2;
|
||||
if (partX2 > partX1)
|
||||
if (partX2 > partX1) {
|
||||
(*pExaScr->info->Solid) (pPixmap,
|
||||
partX1 + off_x, fullY1 + 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++;
|
||||
}
|
||||
}
|
||||
}
|
||||
(*pExaScr->info->DoneSolid) (pPixmap);
|
||||
exaDrawableDirty (pDrawable);
|
||||
exaMarkSync(pScreen);
|
||||
}
|
||||
|
||||
|
@ -222,8 +231,8 @@ exaPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
|
|||
|
||||
exaFinishAccess(pDrawable, EXA_PREPARE_DEST);
|
||||
}
|
||||
exaPixmapDirty(pPix, x1 + xoff, y1 + yoff, x2 + xoff, y2 + yoff);
|
||||
}
|
||||
exaDrawableDirty(pDrawable);
|
||||
|
||||
return;
|
||||
|
||||
|
@ -351,11 +360,12 @@ exaCopyNtoNTwoDir (DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable,
|
|||
dst_off_y + pbox->y1 + i,
|
||||
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)
|
||||
pExaScr->info->DoneCopy(pDstPixmap);
|
||||
exaMarkSync(pDstDrawable->pScreen);
|
||||
exaDrawableDirty(pDstDrawable);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -424,11 +434,13 @@ exaCopyNtoN (DrawablePtr pSrcDrawable,
|
|||
pbox->x1 + dst_off_x, pbox->y1 + dst_off_y,
|
||||
pbox->x2 - pbox->x1,
|
||||
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++;
|
||||
}
|
||||
(*pExaScr->info->DoneCopy) (pDstPixmap);
|
||||
exaMarkSync(pDstDrawable->pScreen);
|
||||
exaDrawableDirty (pDstDrawable);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -443,6 +455,11 @@ fallback:
|
|||
bitplane, closure);
|
||||
exaFinishAccess (pSrcDrawable, EXA_PREPARE_SRC);
|
||||
exaFinishAccess (pDstDrawable, EXA_PREPARE_DEST);
|
||||
while (nbox--)
|
||||
{
|
||||
exaDrawableDirty (pDstDrawable, pbox->x1, pbox->y1, pbox->x2, pbox->y2);
|
||||
pbox++;
|
||||
}
|
||||
}
|
||||
|
||||
RegionPtr
|
||||
|
@ -631,6 +648,14 @@ exaPolyFillRect(DrawablePtr pDrawable,
|
|||
{
|
||||
exaDoMigration (pixmaps, 1, FALSE);
|
||||
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;
|
||||
} else {
|
||||
exaDoMigration (pixmaps, 1, TRUE);
|
||||
|
@ -682,6 +707,8 @@ exaPolyFillRect(DrawablePtr pDrawable,
|
|||
(*pExaScr->info->Solid) (pPixmap,
|
||||
fullX1 + xoff, fullY1 + yoff,
|
||||
fullX2 + xoff, fullY2 + yoff);
|
||||
exaPixmapDirty (pPixmap, fullX1 + xoff, fullY1 + yoff,
|
||||
fullX2 + xoff, fullY2 + yoff);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -707,15 +734,17 @@ exaPolyFillRect(DrawablePtr pDrawable,
|
|||
|
||||
pbox++;
|
||||
|
||||
if (partX1 < partX2 && partY1 < partY2)
|
||||
if (partX1 < partX2 && partY1 < partY2) {
|
||||
(*pExaScr->info->Solid) (pPixmap,
|
||||
partX1 + xoff, partY1 + yoff,
|
||||
partX2 + xoff, partY2 + yoff);
|
||||
exaPixmapDirty (pPixmap, partX1 + xoff, partY1 + yoff,
|
||||
partX2 + xoff, partY2 + yoff);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
(*pExaScr->info->DoneSolid) (pPixmap);
|
||||
exaDrawableDirty (pDrawable);
|
||||
exaMarkSync(pDrawable->pScreen);
|
||||
}
|
||||
|
||||
|
@ -736,11 +765,12 @@ exaSolidBoxClipped (DrawablePtr pDrawable,
|
|||
int xoff, yoff;
|
||||
int partX1, partX2, partY1, partY2;
|
||||
ExaMigrationRec pixmaps[1];
|
||||
Bool fallback = FALSE;
|
||||
|
||||
pixmaps[0].as_dst = TRUE;
|
||||
pixmaps[0].as_src = FALSE;
|
||||
pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
|
||||
|
||||
|
||||
if (pExaScr->swappedOut ||
|
||||
pPixmap->drawable.width > pExaScr->info->maxX ||
|
||||
pPixmap->drawable.height > pExaScr->info->maxY)
|
||||
|
@ -751,19 +781,21 @@ exaSolidBoxClipped (DrawablePtr pDrawable,
|
|||
exaDoMigration (pixmaps, 1, TRUE);
|
||||
}
|
||||
|
||||
if (!(pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff)) ||
|
||||
pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
|
||||
|
||||
if (!pPixmap ||
|
||||
!(*pExaScr->info->PrepareSolid) (pPixmap, GXcopy, pm, fg))
|
||||
{
|
||||
fallback:
|
||||
EXA_FALLBACK(("to %p (%c)\n", pDrawable,
|
||||
exaDrawableLocation(pDrawable)));
|
||||
fallback = TRUE;
|
||||
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
|
||||
fg = fbReplicatePixel (fg, pDrawable->bitsPerPixel);
|
||||
fbSolidBoxClipped (pDrawable, pClip, x1, y1, x2, y2,
|
||||
fbAnd (GXcopy, fg, pm),
|
||||
fbXor (GXcopy, fg, pm));
|
||||
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
||||
return;
|
||||
}
|
||||
for (nbox = REGION_NUM_RECTS(pClip), pbox = REGION_RECTS(pClip);
|
||||
nbox--;
|
||||
|
@ -791,12 +823,20 @@ fallback:
|
|||
if (partY2 <= partY1)
|
||||
continue;
|
||||
|
||||
(*pExaScr->info->Solid) (pPixmap,
|
||||
partX1 + xoff, partY1 + yoff,
|
||||
partX2 + xoff, partY2 + yoff);
|
||||
if (!fallback) {
|
||||
(*pExaScr->info->Solid) (pPixmap,
|
||||
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);
|
||||
exaDrawableDirty (pDrawable);
|
||||
exaMarkSync(pDrawable->pScreen);
|
||||
}
|
||||
|
||||
|
@ -909,12 +949,17 @@ exaImageGlyphBlt (DrawablePtr pDrawable,
|
|||
pPriv->fg,
|
||||
gx + dstXoff,
|
||||
gHeight);
|
||||
exaDrawableDirty (pDrawable, gx, gy, gx + gWidth, gy + gHeight);
|
||||
}
|
||||
else
|
||||
{
|
||||
RegionPtr pClip = fbGetCompositeClip(pGC);
|
||||
int nbox;
|
||||
BoxPtr pbox;
|
||||
|
||||
gStride = GLYPHWIDTHBYTESPADDED(pci) / sizeof (FbStip);
|
||||
fbPutXYImage (pDrawable,
|
||||
fbGetCompositeClip(pGC),
|
||||
pClip,
|
||||
pPriv->fg,
|
||||
pPriv->bg,
|
||||
pPriv->pm,
|
||||
|
@ -928,6 +973,18 @@ exaImageGlyphBlt (DrawablePtr pDrawable,
|
|||
(FbStip *) pglyph,
|
||||
gStride,
|
||||
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;
|
||||
|
@ -995,6 +1052,8 @@ exaFillRegionSolid (DrawablePtr pDrawable,
|
|||
PixmapPtr pPixmap;
|
||||
int xoff, yoff;
|
||||
ExaMigrationRec pixmaps[1];
|
||||
int nbox = REGION_NUM_RECTS (pRegion);
|
||||
BoxPtr pBox = REGION_RECTS (pRegion);
|
||||
|
||||
pixmaps[0].as_dst = TRUE;
|
||||
pixmaps[0].as_src = FALSE;
|
||||
|
@ -1012,19 +1071,17 @@ exaFillRegionSolid (DrawablePtr pDrawable,
|
|||
if ((pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff)) &&
|
||||
(*pExaScr->info->PrepareSolid) (pPixmap, GXcopy, FB_ALLONES, pixel))
|
||||
{
|
||||
int nbox = REGION_NUM_RECTS (pRegion);
|
||||
BoxPtr pBox = REGION_RECTS (pRegion);
|
||||
|
||||
while (nbox--)
|
||||
{
|
||||
(*pExaScr->info->Solid) (pPixmap,
|
||||
pBox->x1 + xoff, pBox->y1 + yoff,
|
||||
pBox->x2 + xoff, pBox->y2 + yoff);
|
||||
exaPixmapDirty (pPixmap, pBox->x1 + xoff, pBox->y1 + yoff,
|
||||
pBox->x2 + xoff, pBox->y2 + yoff);
|
||||
pBox++;
|
||||
}
|
||||
(*pExaScr->info->DoneSolid) (pPixmap);
|
||||
exaMarkSync(pDrawable->pScreen);
|
||||
exaDrawableDirty (pDrawable);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1035,6 +1092,11 @@ fallback:
|
|||
fbFillRegionSolid (pDrawable, pRegion, 0,
|
||||
fbReplicatePixel (pixel, pDrawable->bitsPerPixel));
|
||||
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);
|
||||
PixmapPtr pPixmap;
|
||||
int xoff, yoff;
|
||||
int xoff, yoff, tileXoff, tileYoff;
|
||||
int tileWidth, tileHeight;
|
||||
ExaMigrationRec pixmaps[2];
|
||||
int nbox = REGION_NUM_RECTS (pRegion);
|
||||
BoxPtr pBox = REGION_RECTS (pRegion);
|
||||
|
||||
tileWidth = pTile->drawable.width;
|
||||
tileHeight = pTile->drawable.height;
|
||||
|
@ -1082,18 +1146,16 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
|||
}
|
||||
|
||||
pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
|
||||
|
||||
if (!pPixmap)
|
||||
goto fallback;
|
||||
|
||||
if (!exaPixmapIsOffscreen(pTile))
|
||||
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))
|
||||
{
|
||||
int nbox = REGION_NUM_RECTS (pRegion);
|
||||
BoxPtr pBox = REGION_RECTS (pRegion);
|
||||
|
||||
while (nbox--)
|
||||
{
|
||||
int height = pBox->y2 - pBox->y1;
|
||||
|
@ -1119,7 +1181,7 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
|||
width -= w;
|
||||
|
||||
(*pExaScr->info->Copy) (pPixmap,
|
||||
tileX, tileY,
|
||||
tileX + tileXoff, tileY + tileYoff,
|
||||
dstX + xoff, dstY + yoff,
|
||||
w, h);
|
||||
dstX += w;
|
||||
|
@ -1128,11 +1190,12 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
|||
dstY += h;
|
||||
tileY = 0;
|
||||
}
|
||||
exaPixmapDirty (pPixmap, pBox->x1 + xoff, pBox->y1 + yoff,
|
||||
pBox->x2 + xoff, pBox->y2 + yoff);
|
||||
pBox++;
|
||||
}
|
||||
(*pExaScr->info->DoneCopy) (pPixmap);
|
||||
exaMarkSync(pDrawable->pScreen);
|
||||
exaDrawableDirty (pDrawable);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1145,6 +1208,11 @@ fallback:
|
|||
fbFillRegionTiled (pDrawable, pRegion, pTile);
|
||||
exaFinishAccess ((DrawablePtr)pTile, EXA_PREPARE_SRC);
|
||||
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
||||
while (nbox--)
|
||||
{
|
||||
exaDrawableDirty (pDrawable, pBox->x1, pBox->y1, pBox->x2, pBox->y2);
|
||||
pBox++;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
*
|
||||
* Authors:
|
||||
* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* location compared to the other), or lacks a private for tracking
|
||||
|
@ -67,7 +89,8 @@ exaPixmapIsDirty (PixmapPtr 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);
|
||||
ExaPixmapPriv (pPixmap);
|
||||
RegionPtr pRegion = DamageRegion (pExaPixmap->pDamage);
|
||||
CARD8 *save_ptr;
|
||||
int save_pitch;
|
||||
|
||||
if (!pExaPixmap->dirty)
|
||||
return;
|
||||
BoxPtr pBox = REGION_RECTS(pRegion);
|
||||
int nbox = REGION_NUM_RECTS(pRegion);
|
||||
Bool do_sync = FALSE;
|
||||
|
||||
save_ptr = pPixmap->devPrivate.ptr;
|
||||
save_pitch = pPixmap->devKind;
|
||||
pPixmap->devPrivate.ptr = pExaPixmap->fb_ptr;
|
||||
pPixmap->devKind = pExaPixmap->fb_pitch;
|
||||
|
||||
if (pExaScr->info->DownloadFromScreen == NULL ||
|
||||
!pExaScr->info->DownloadFromScreen (pPixmap,
|
||||
0,
|
||||
0,
|
||||
pPixmap->drawable.width,
|
||||
pPixmap->drawable.height,
|
||||
pExaPixmap->sys_ptr,
|
||||
pExaPixmap->sys_pitch))
|
||||
{
|
||||
char *src, *dst;
|
||||
int src_pitch, dst_pitch, i, bytes;
|
||||
while (nbox--) {
|
||||
pBox->x1 = max(pBox->x1, 0);
|
||||
pBox->y1 = max(pBox->y1, 0);
|
||||
pBox->x2 = min(pBox->x2, pPixmap->drawable.width);
|
||||
pBox->y2 = min(pBox->y2, pPixmap->drawable.height);
|
||||
|
||||
exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
||||
if (pBox->x1 >= pBox->x2 || pBox->y1 >= pBox->y2)
|
||||
continue;
|
||||
|
||||
dst = pExaPixmap->sys_ptr;
|
||||
dst_pitch = pExaPixmap->sys_pitch;
|
||||
src = pExaPixmap->fb_ptr;
|
||||
src_pitch = pExaPixmap->fb_pitch;
|
||||
bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
|
||||
|
||||
for (i = 0; i < pPixmap->drawable.height; i++) {
|
||||
memcpy (dst, src, bytes);
|
||||
dst += dst_pitch;
|
||||
src += src_pitch;
|
||||
if (pExaScr->info->DownloadFromScreen == NULL ||
|
||||
!pExaScr->info->DownloadFromScreen (pPixmap,
|
||||
pBox->x1, pBox->y1,
|
||||
pBox->x2 - pBox->x1,
|
||||
pBox->y2 - pBox->y1,
|
||||
pExaPixmap->sys_ptr
|
||||
+ pBox->y1 * pExaPixmap->sys_pitch
|
||||
+ pBox->x1 * pPixmap->drawable.bitsPerPixel / 8,
|
||||
pExaPixmap->sys_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
|
||||
* when accessing pixmaps in system memory.
|
||||
*/
|
||||
exaWaitSync (pPixmap->drawable.pScreen);
|
||||
if (do_sync)
|
||||
exaWaitSync (pPixmap->drawable.pScreen);
|
||||
|
||||
pPixmap->devPrivate.ptr = save_ptr;
|
||||
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);
|
||||
ExaPixmapPriv (pPixmap);
|
||||
RegionPtr pRegion = DamageRegion (pExaPixmap->pDamage);
|
||||
CARD8 *save_ptr;
|
||||
int save_pitch;
|
||||
|
||||
if (!pExaPixmap->dirty)
|
||||
return;
|
||||
BoxPtr pBox = REGION_RECTS(pRegion);
|
||||
int nbox = REGION_NUM_RECTS(pRegion);
|
||||
Bool do_sync = FALSE;
|
||||
|
||||
save_ptr = pPixmap->devPrivate.ptr;
|
||||
save_pitch = pPixmap->devKind;
|
||||
pPixmap->devPrivate.ptr = pExaPixmap->fb_ptr;
|
||||
pPixmap->devKind = pExaPixmap->fb_pitch;
|
||||
|
||||
if (pExaScr->info->UploadToScreen == NULL ||
|
||||
!pExaScr->info->UploadToScreen (pPixmap,
|
||||
0,
|
||||
0,
|
||||
pPixmap->drawable.width,
|
||||
pPixmap->drawable.height,
|
||||
pExaPixmap->sys_ptr,
|
||||
pExaPixmap->sys_pitch))
|
||||
{
|
||||
char *src, *dst;
|
||||
int src_pitch, dst_pitch, i, bytes;
|
||||
while (nbox--) {
|
||||
pBox->x1 = max(pBox->x1, 0);
|
||||
pBox->y1 = max(pBox->y1, 0);
|
||||
pBox->x2 = min(pBox->x2, pPixmap->drawable.width);
|
||||
pBox->y2 = min(pBox->y2, pPixmap->drawable.height);
|
||||
|
||||
exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_DEST);
|
||||
if (pBox->x1 >= pBox->x2 || pBox->y1 >= pBox->y2)
|
||||
continue;
|
||||
|
||||
dst = pExaPixmap->fb_ptr;
|
||||
dst_pitch = pExaPixmap->fb_pitch;
|
||||
src = pExaPixmap->sys_ptr;
|
||||
src_pitch = pExaPixmap->sys_pitch;
|
||||
bytes = src_pitch < dst_pitch ? src_pitch : dst_pitch;
|
||||
|
||||
for (i = 0; i < pPixmap->drawable.height; i++) {
|
||||
memcpy (dst, src, bytes);
|
||||
dst += dst_pitch;
|
||||
src += src_pitch;
|
||||
if (pExaScr->info->UploadToScreen == NULL ||
|
||||
!pExaScr->info->UploadToScreen (pPixmap,
|
||||
pBox->x1, pBox->y1,
|
||||
pBox->x2 - pBox->x1,
|
||||
pBox->y2 - pBox->y1,
|
||||
pExaPixmap->sys_ptr
|
||||
+ pBox->y1 * pExaPixmap->sys_pitch
|
||||
+ pBox->x1 * pPixmap->drawable.bitsPerPixel / 8,
|
||||
pExaPixmap->sys_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->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
|
||||
* framebuffer entirely.
|
||||
*/
|
||||
static void
|
||||
void
|
||||
exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area)
|
||||
{
|
||||
PixmapPtr pPixmap = area->privData;
|
||||
ExaPixmapPriv(pPixmap);
|
||||
RegionPtr pDamageReg = DamageRegion(pExaPixmap->pDamage);
|
||||
|
||||
DBG_MIGRATE (("Save %p (%p) (%dx%d) (%c)\n", pPixmap,
|
||||
(void*)(ExaGetPixmapPriv(pPixmap)->area ?
|
||||
|
@ -231,10 +273,9 @@ exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area)
|
|||
pExaPixmap->fb_ptr = NULL;
|
||||
pExaPixmap->area = NULL;
|
||||
|
||||
/* Mark it dirty now, to say that there is important data in the
|
||||
* system-memory copy.
|
||||
*/
|
||||
pExaPixmap->dirty = TRUE;
|
||||
/* Mark all valid bits as damaged, so they'll get copied to FB next time */
|
||||
REGION_UNION(pPixmap->drawable.pScreen, pDamageReg, pDamageReg,
|
||||
&pExaPixmap->validReg);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -413,32 +454,57 @@ exaMigrateTowardSys (PixmapPtr pPixmap)
|
|||
* If the pixmap has both a framebuffer and system memory copy, this function
|
||||
* asserts that both of them are the same.
|
||||
*/
|
||||
static void
|
||||
static Bool
|
||||
exaAssertNotDirty (PixmapPtr pPixmap)
|
||||
{
|
||||
ExaPixmapPriv (pPixmap);
|
||||
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)
|
||||
return;
|
||||
return ret;
|
||||
|
||||
dst = pExaPixmap->sys_ptr;
|
||||
dst_pitch = pExaPixmap->sys_pitch;
|
||||
src = pExaPixmap->fb_ptr;
|
||||
src_pitch = pExaPixmap->fb_pitch;
|
||||
data_row_bytes = pPixmap->drawable.width *
|
||||
pPixmap->drawable.bitsPerPixel / 8;
|
||||
cpp = pPixmap->drawable.bitsPerPixel / 8;
|
||||
|
||||
exaPrepareAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
||||
for (y = 0; y < pPixmap->drawable.height; y++) {
|
||||
if (memcmp(dst, src, data_row_bytes) != 0) {
|
||||
abort();
|
||||
}
|
||||
dst += dst_pitch;
|
||||
src += src_pitch;
|
||||
while (nbox--) {
|
||||
int rowbytes;
|
||||
|
||||
pBox->x1 = max(pBox->x1, 0);
|
||||
pBox->y1 = max(pBox->y1, 0);
|
||||
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);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -462,8 +528,9 @@ exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel)
|
|||
*/
|
||||
if (pExaScr->checkDirtyCorrectness) {
|
||||
for (i = 0; i < npixmaps; i++) {
|
||||
if (!exaPixmapIsDirty (pixmaps[i].pPix))
|
||||
exaAssertNotDirty (pixmaps[i].pPix);
|
||||
if (!exaPixmapIsDirty (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
|
||||
|
|
|
@ -81,15 +81,14 @@ ExaOffscreenKickOut (ScreenPtr pScreen, ExaOffscreenArea *area)
|
|||
* @param save callback for when the area is evicted from memory
|
||||
* @param privdata private data for the save callback.
|
||||
*
|
||||
* Allocates offscreen memory from the device associated with pScreen. size and
|
||||
* align deteremine where and how large the allocated area is, and locked will
|
||||
* mark whether it should be held in card memory. privdata may be any pointer
|
||||
* for the save callback when the area is removed.
|
||||
* Allocates offscreen memory from the device associated with pScreen. size
|
||||
* and align deteremine where and how large the allocated area is, and locked
|
||||
* will mark whether it should be held in card memory. privdata may be any
|
||||
* pointer for the save callback when the area is removed.
|
||||
*
|
||||
* Note that locked areas do get evicted on VT switch, because during that time
|
||||
* all offscreen memory becomes inaccessible. This may change in the future,
|
||||
* but drivers should be aware of this and provide a callback to mark that their
|
||||
* locked allocation was evicted, and then restore it if necessary on EnterVT.
|
||||
* Note that locked areas do get evicted on VT switch unless the driver
|
||||
* requested version 2.1 or newer behavior. In that case, the save callback is
|
||||
* still called.
|
||||
*/
|
||||
ExaOffscreenArea *
|
||||
exaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
|
||||
|
@ -256,6 +255,9 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
|
|||
return area;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ejects all offscreen areas, and uninitializes the offscreen memory manager.
|
||||
*/
|
||||
void
|
||||
ExaOffscreenSwapOut (ScreenPtr pScreen)
|
||||
{
|
||||
|
@ -283,12 +285,56 @@ ExaOffscreenSwapOut (ScreenPtr 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
|
||||
ExaOffscreenSwapIn (ScreenPtr 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
|
||||
exaEnableDisableFBAccess (int index, Bool enable)
|
||||
{
|
||||
|
@ -296,10 +342,14 @@ exaEnableDisableFBAccess (int index, Bool enable)
|
|||
ExaScreenPriv (pScreen);
|
||||
|
||||
if (!enable) {
|
||||
ExaOffscreenSwapOut (pScreen);
|
||||
if (pExaScr->info->exa_minor < 1)
|
||||
ExaOffscreenSwapOut (pScreen);
|
||||
else
|
||||
ExaOffscreenEjectPixmaps (pScreen);
|
||||
pExaScr->swappedOut = TRUE;
|
||||
} else {
|
||||
ExaOffscreenSwapIn (pScreen);
|
||||
if (pExaScr->info->exa_minor < 1)
|
||||
ExaOffscreenSwapIn (pScreen);
|
||||
pExaScr->swappedOut = FALSE;
|
||||
}
|
||||
}
|
||||
|
@ -390,6 +440,7 @@ ExaOffscreenMarkUsed (PixmapPtr pPixmap)
|
|||
if (area->state == ExaOffscreenRemovable)
|
||||
area->score = (area->score * 7) / 8;
|
||||
}
|
||||
iter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
#ifdef RENDER
|
||||
#include "fbpict.h"
|
||||
#endif
|
||||
#include "damage.h"
|
||||
|
||||
#define DEBUG_TRACE_FALL 0
|
||||
#define DEBUG_MIGRATE 0
|
||||
|
@ -160,16 +161,16 @@ typedef struct {
|
|||
unsigned int fb_size; /**< size of pixmap in framebuffer memory */
|
||||
|
||||
/**
|
||||
* If area is NULL, then dirty == TRUE means that the pixmap has been
|
||||
* modified, so the contents are defined. Used to avoid uploads of
|
||||
* undefined data.
|
||||
*
|
||||
* 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.
|
||||
* The damage record contains the areas of the pixmap's current location
|
||||
* (framebuffer or system) that have been damaged compared to the other
|
||||
* location.
|
||||
*/
|
||||
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;
|
||||
|
||||
typedef struct _ExaMigrationRec {
|
||||
|
@ -315,7 +316,7 @@ ExaCheckComposite (CARD8 op,
|
|||
CARD16 height);
|
||||
#endif
|
||||
|
||||
/* exaoffscreen.c */
|
||||
/* exa_offscreen.c */
|
||||
void
|
||||
ExaOffscreenMarkUsed (PixmapPtr pPixmap);
|
||||
|
||||
|
@ -339,7 +340,10 @@ void
|
|||
exaFinishAccess(DrawablePtr pDrawable, int index);
|
||||
|
||||
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
|
||||
exaDrawableIsOffscreen (DrawablePtr pDrawable);
|
||||
|
@ -409,9 +413,6 @@ void
|
|||
exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
|
||||
|
||||
void
|
||||
exaMoveInPixmap (PixmapPtr pPixmap);
|
||||
|
||||
void
|
||||
exaMoveOutPixmap (PixmapPtr pPixmap);
|
||||
exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area);
|
||||
|
||||
#endif /* EXAPRIV_H */
|
||||
|
|
|
@ -302,12 +302,12 @@ exaTryDriverSolidFill(PicturePtr pSrc,
|
|||
(*pExaScr->info->Solid) (pDstPix,
|
||||
pbox->x1 + dst_off_x, pbox->y1 + 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++;
|
||||
}
|
||||
|
||||
(*pExaScr->info->DoneSolid) (pDstPix);
|
||||
exaMarkSync(pDst->pDrawable->pScreen);
|
||||
exaDrawableDirty (pDst->pDrawable);
|
||||
|
||||
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
||||
return 1;
|
||||
|
@ -446,12 +446,12 @@ exaTryDriverComposite(CARD8 op,
|
|||
pbox->y1 + dst_off_y,
|
||||
pbox->x2 - pbox->x1,
|
||||
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++;
|
||||
}
|
||||
|
||||
(*pExaScr->info->DoneComposite) (pDstPix);
|
||||
exaMarkSync(pDst->pDrawable->pScreen);
|
||||
exaDrawableDirty (pDst->pDrawable);
|
||||
|
||||
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
||||
return 1;
|
||||
|
@ -572,9 +572,7 @@ exaComposite(CARD8 op,
|
|||
if (pExaScr->swappedOut ||
|
||||
pSrc->pDrawable == NULL || (pMask != NULL && pMask->pDrawable == NULL))
|
||||
{
|
||||
ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
|
||||
xMask, yMask, xDst, yDst, width, height);
|
||||
return;
|
||||
goto fallback;
|
||||
}
|
||||
|
||||
/* Remove repeat in source if useless */
|
||||
|
@ -683,12 +681,18 @@ exaComposite(CARD8 op,
|
|||
}
|
||||
}
|
||||
|
||||
fallback:
|
||||
#if DEBUG_TRACE_FALL
|
||||
exaPrintCompositeFallback (op, pSrc, pMask, pDst);
|
||||
#endif
|
||||
|
||||
ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
|
||||
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:
|
||||
pSrc->repeat = saveSrcRepeat;
|
||||
|
@ -710,16 +714,19 @@ void
|
|||
exaRasterizeTrapezoid (PicturePtr pPicture, xTrapezoid *trap,
|
||||
int x_off, int y_off)
|
||||
{
|
||||
DrawablePtr pDraw = pPicture->pDrawable;
|
||||
ExaMigrationRec pixmaps[1];
|
||||
|
||||
pixmaps[0].as_dst = TRUE;
|
||||
pixmaps[0].as_src = TRUE;
|
||||
pixmaps[0].pPix = exaGetDrawablePixmap (pPicture->pDrawable);
|
||||
pixmaps[0].pPix = exaGetDrawablePixmap (pDraw);
|
||||
exaDoMigration(pixmaps, 1, FALSE);
|
||||
|
||||
exaPrepareAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
|
||||
exaPrepareAccess(pDraw, EXA_PREPARE_DEST);
|
||||
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,
|
||||
xTriangle *tris)
|
||||
{
|
||||
DrawablePtr pDraw = pPicture->pDrawable;
|
||||
ExaMigrationRec pixmaps[1];
|
||||
|
||||
pixmaps[0].as_dst = TRUE;
|
||||
pixmaps[0].as_src = TRUE;
|
||||
pixmaps[0].pPix = exaGetDrawablePixmap (pPicture->pDrawable);
|
||||
pixmaps[0].pPix = exaGetDrawablePixmap (pDraw);
|
||||
exaDoMigration(pixmaps, 1, FALSE);
|
||||
|
||||
exaPrepareAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
|
||||
exaPrepareAccess(pDraw, EXA_PREPARE_DEST);
|
||||
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
|
||||
* to a plain exaCopyArea in case of failure.
|
||||
*/
|
||||
if (!pExaScr->info->UploadToScreen ||
|
||||
!exaPixmapIsOffscreen(pPixmap) ||
|
||||
!(*pExaScr->info->UploadToScreen) (pPixmap, 0, 0,
|
||||
if (pExaScr->info->UploadToScreen &&
|
||||
exaPixmapIsOffscreen(pPixmap) &&
|
||||
(*pExaScr->info->UploadToScreen) (pPixmap, 0, 0,
|
||||
glyph->info.width,
|
||||
glyph->info.height,
|
||||
glyphdata,
|
||||
PixmapBytePad(glyph->info.width,
|
||||
list->format->depth)))
|
||||
{
|
||||
exaMarkSync (pScreen);
|
||||
} else {
|
||||
/* Set up the scratch pixmap/GC for doing a CopyArea. */
|
||||
if (pScratchPixmap == NULL) {
|
||||
/* Get a scratch pixmap to wrap the original glyph data */
|
||||
|
@ -1028,10 +1040,11 @@ exaGlyphs (CARD8 op,
|
|||
|
||||
exaCopyArea (&pScratchPixmap->drawable, &pPixmap->drawable, pGC,
|
||||
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)
|
||||
{
|
||||
exaComposite (PictOpAdd, pPicture, NULL, pMask, 0, 0, 0, 0,
|
||||
|
|
|
@ -200,11 +200,33 @@ ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
|
|||
int nrect, xRectangle *prect)
|
||||
{
|
||||
EXA_FALLBACK(("to %p (%c)\n", pDrawable, exaDrawableLocation(pDrawable)));
|
||||
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
|
||||
exaPrepareAccessGC (pGC);
|
||||
fbPolyFillRect (pDrawable, pGC, nrect, prect);
|
||||
exaFinishAccessGC (pGC);
|
||||
exaFinishAccess (pDrawable, EXA_PREPARE_DEST);
|
||||
|
||||
if (nrect) {
|
||||
int x1 = max(prect->x, 0), y1 = max(prect->y, 0);
|
||||
int x2 = min(prect->x + prect->width, pDrawable->width);
|
||||
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
|
||||
|
|
98
fb/fbmmx.c
98
fb/fbmmx.c
|
@ -1338,6 +1338,104 @@ fbCompositeSrc_8888x8888mmx (CARD8 op,
|
|||
_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
|
||||
fbCompositeSolidMask_nx8x8888mmx (CARD8 op,
|
||||
PicturePtr pSrc,
|
||||
|
|
12
fb/fbmmx.h
12
fb/fbmmx.h
|
@ -130,6 +130,18 @@ void fbCompositeSrc_8888RevNPx8888mmx (CARD8 op,
|
|||
INT16 yDst,
|
||||
CARD16 width,
|
||||
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,
|
||||
PicturePtr pSrc,
|
||||
PicturePtr pMask,
|
||||
|
|
18
fb/fbpict.c
18
fb/fbpict.c
|
@ -1175,7 +1175,12 @@ fbComposite (CARD8 op,
|
|||
func = fbCompositeSrc_8888x0888;
|
||||
break;
|
||||
case PICT_r5g6b5:
|
||||
func = fbCompositeSrc_8888x0565;
|
||||
#ifdef USE_MMX
|
||||
if (fbHaveMMX())
|
||||
func = fbCompositeSrc_8888x0565mmx;
|
||||
else
|
||||
#endif
|
||||
func = fbCompositeSrc_8888x0565;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1221,7 +1226,12 @@ fbComposite (CARD8 op,
|
|||
func = fbCompositeSrc_8888x0888;
|
||||
break;
|
||||
case PICT_b5g6r5:
|
||||
func = fbCompositeSrc_8888x0565;
|
||||
#ifdef USE_MMX
|
||||
if (fbHaveMMX())
|
||||
func = fbCompositeSrc_8888x0565mmx;
|
||||
else
|
||||
#endif
|
||||
func = fbCompositeSrc_8888x0565;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1516,7 +1526,9 @@ static unsigned int detectCPUFeatures(void) {
|
|||
features |= SSE;
|
||||
if (result & (1 << 26))
|
||||
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 */
|
||||
|
||||
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) { \
|
||||
FbBits *__bits__; \
|
||||
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 = \
|
||||
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 \
|
||||
darwinClut8.h \
|
||||
darwinEvents.c \
|
||||
|
@ -54,64 +251,4 @@ EXTRA_DIST = \
|
|||
darwinKeyboard.c \
|
||||
darwinKeyboard.h \
|
||||
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
|
||||
|
|
35
hw/darwin/bundle/Dutch.lproj/Makefile.am
Normal file
35
hw/darwin/bundle/Dutch.lproj/Makefile.am
Normal file
|
@ -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
|
35
hw/darwin/bundle/English.lproj/Makefile.am
Normal file
35
hw/darwin/bundle/English.lproj/Makefile.am
Normal file
|
@ -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
|
38
hw/darwin/bundle/French.lproj/Makefile.am
Normal file
38
hw/darwin/bundle/French.lproj/Makefile.am
Normal file
|
@ -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
|
36
hw/darwin/bundle/German.lproj/Makefile.am
Normal file
36
hw/darwin/bundle/German.lproj/Makefile.am
Normal file
|
@ -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
|
66
hw/darwin/bundle/Info.plist
Normal file
66
hw/darwin/bundle/Info.plist
Normal file
|
@ -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>
|
37
hw/darwin/bundle/Japanese.lproj/Makefile.am
Normal file
37
hw/darwin/bundle/Japanese.lproj/Makefile.am
Normal file
|
@ -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
|
38
hw/darwin/bundle/Makefile.am
Normal file
38
hw/darwin/bundle/Makefile.am
Normal file
|
@ -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
|
36
hw/darwin/bundle/Portuguese.lproj/Makefile.am
Normal file
36
hw/darwin/bundle/Portuguese.lproj/Makefile.am
Normal file
|
@ -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
|
36
hw/darwin/bundle/Spanish.lproj/Makefile.am
Normal file
36
hw/darwin/bundle/Spanish.lproj/Makefile.am
Normal file
|
@ -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
|
36
hw/darwin/bundle/Swedish.lproj/Makefile.am
Normal file
36
hw/darwin/bundle/Swedish.lproj/Makefile.am
Normal file
|
@ -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
|
37
hw/darwin/bundle/ko.lproj/Makefile.am
Normal file
37
hw/darwin/bundle/ko.lproj/Makefile.am
Normal file
|
@ -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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/X.h>
|
||||
#include <X11/Xproto.h>
|
||||
#include "os.h"
|
||||
|
@ -409,9 +413,9 @@ static int DarwinMouseProc(
|
|||
InitPointerDeviceStruct( (DevicePtr)pPointer,
|
||||
map,
|
||||
5, // numbuttons (4 & 5 are scroll wheel)
|
||||
miPointerGetMotionEvents,
|
||||
GetMotionHistory,
|
||||
DarwinChangePointerControl,
|
||||
0 );
|
||||
GetMotionHistorySize(), 2 );
|
||||
#ifdef XINPUT
|
||||
InitValuatorAxisStruct( pPointer,
|
||||
0, // X axis
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "inputstr.h"
|
||||
#include "scrnintstr.h"
|
||||
#include <X11/extensions/XKB.h>
|
||||
#include <assert.h>
|
||||
|
||||
typedef struct {
|
||||
void *framebuffer;
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
#include <architecture/byte_order.h> // For the NXSwap*
|
||||
#include "darwin.h"
|
||||
#include "darwinKeyboard.h"
|
||||
|
||||
#include <assert.h>
|
||||
#define AltMask Mod1Mask
|
||||
#define MetaMask Mod2Mask
|
||||
#define FunctionMask Mod3Mask
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
#define XK_TECHNICAL // needed to get XK_Escape
|
||||
#define XK_PUBLISHING
|
||||
#include "keysym.h"
|
||||
#include "X11/keysym.h"
|
||||
#include "inputstr.h"
|
||||
|
||||
// Each key can generate 4 glyphs. They are, in order:
|
||||
|
|
17
hw/darwin/iokit/Makefile.am
Normal file
17
hw/darwin/iokit/Makefile.am
Normal file
|
@ -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.
|
||||
*/
|
||||
|
||||
#if HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/X.h>
|
||||
#include <X11/Xproto.h>
|
||||
#include "os.h"
|
||||
|
@ -51,6 +55,7 @@
|
|||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <pthread.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include <mach/mach_interface.h>
|
||||
|
||||
|
|
|
@ -58,6 +58,9 @@
|
|||
* 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 "cursorstr.h"
|
||||
#include "mipointrst.h"
|
||||
|
@ -67,7 +70,7 @@
|
|||
#include <IOKit/hidsystem/IOHIDLib.h>
|
||||
#include "darwin.h"
|
||||
#include "xfIOKit.h"
|
||||
|
||||
#include <assert.h>
|
||||
#define DUMP_DARWIN_CURSOR FALSE
|
||||
|
||||
#define CURSOR_PRIV(pScreen) \
|
||||
|
|
|
@ -29,6 +29,11 @@
|
|||
* 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 "darwinKeyboard.h"
|
||||
#include "micmap.h"
|
||||
|
@ -57,7 +62,9 @@ void DarwinHandleGUI(
|
|||
*/
|
||||
void DarwinGlxExtensionInit(void)
|
||||
{
|
||||
GlxExtensionInit();
|
||||
#ifdef GLXEXT
|
||||
GlxExtensionInit();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -67,7 +74,9 @@ void DarwinGlxExtensionInit(void)
|
|||
void DarwinGlxWrapInitVisuals(
|
||||
miInitVisualsProcPtr *procPtr)
|
||||
{
|
||||
#ifdef GLXEXT
|
||||
GlxWrapInitVisuals(procPtr);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ DIST_SUBDIRS = input config glxProxy examples doc
|
|||
|
||||
SUBDIRS = input config examples
|
||||
bin_PROGRAMS = Xdmx
|
||||
noinst_LIBRARIES = libfbcmap.a
|
||||
|
||||
if XINERAMA
|
||||
PANORAMIX_SRCS = $(top_srcdir)/Xext/panoramiX.c
|
||||
|
@ -16,13 +17,20 @@ GLX_INCS = -I$(top_srcdir)/hw/xfree86/dixmods/extmod \
|
|||
GLX_DEFS = @GL_CFLAGS@
|
||||
endif
|
||||
|
||||
# It's essential that fbcmap.c be compiled with this flag for DMX to work!!
|
||||
DMX_CFLAGS = -DXFree86Server=1
|
||||
|
||||
if BUILDDOCS
|
||||
SUBDIRS += doc
|
||||
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 \
|
||||
dmxcb.c \
|
||||
dmxcb.h \
|
||||
|
@ -67,7 +75,6 @@ Xdmx_SOURCES = dmx.c \
|
|||
dmxvisual.h \
|
||||
dmxwindow.c \
|
||||
dmxwindow.h \
|
||||
$(top_srcdir)/fb/fbcmap.c \
|
||||
$(top_srcdir)/mi/miinitext.c \
|
||||
$(GLX_SRCS)
|
||||
|
||||
|
@ -82,16 +89,9 @@ Xdmx_LDADD = $(XORG_CORE_LIBS) \
|
|||
$(GLX_LIBS) \
|
||||
input/libdmxinput.a \
|
||||
config/libdmxconfig.a \
|
||||
libfbcmap.a \
|
||||
@DMXMODULES_LIBS@
|
||||
|
||||
Xdmx_CFLAGS = \
|
||||
-DHAVE_DMX_CONFIG_H \
|
||||
$(DIX_CFLAGS) \
|
||||
$(GLX_INCS) \
|
||||
$(GLX_DEFS) \
|
||||
$(DMX_CFLAGS) \
|
||||
@DMXMODULES_CFLAGS@
|
||||
|
||||
# Man page
|
||||
appmandir = $(APP_MAN_DIR)
|
||||
|
||||
|
|
|
@ -49,58 +49,6 @@ typedef struct {
|
|||
|
||||
} __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 {
|
||||
DrawablePtr pDraw;
|
||||
int type;
|
||||
|
|
|
@ -58,9 +58,6 @@
|
|||
#include <GL/glxproto.h>
|
||||
#include <GL/glxint.h>
|
||||
|
||||
/* For glxscreens.h */
|
||||
typedef struct __GLXdrawablePrivateRec __GLXdrawablePrivate;
|
||||
|
||||
#include "glxscreens.h"
|
||||
#include "glxdrawable.h"
|
||||
#include "glxcontext.h"
|
||||
|
|
|
@ -81,7 +81,8 @@ Bool
|
|||
ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
|
||||
{
|
||||
int width = 640, height = 480;
|
||||
|
||||
unsigned long redMask, greenMask, blueMask;
|
||||
|
||||
if (hostx_want_screen_size(&width, &height)
|
||||
|| !screen->width || !screen->height)
|
||||
{
|
||||
|
@ -133,30 +134,24 @@ ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
|
|||
{
|
||||
screen->fb[0].depth = 15;
|
||||
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)
|
||||
{
|
||||
screen->fb[0].depth = 16;
|
||||
screen->fb[0].bitsPerPixel = 16;
|
||||
|
||||
hostx_get_visual_masks (&screen->fb[0].redMask,
|
||||
&screen->fb[0].greenMask,
|
||||
&screen->fb[0].blueMask);
|
||||
}
|
||||
else
|
||||
{
|
||||
screen->fb[0].depth = 24;
|
||||
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;
|
||||
|
|
|
@ -1,12 +1,21 @@
|
|||
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 \
|
||||
InitOutput.c \
|
||||
lk201kbd.h \
|
||||
$(top_srcdir)/Xext/dpmsstubs.c \
|
||||
$(top_srcdir)/Xi/stubs.c \
|
||||
$(top_srcdir)/mi/miinitext.c \
|
||||
$(top_srcdir)/fb/fbcmap.c
|
||||
$(top_srcdir)/mi/miinitext.c
|
||||
|
||||
libfbcmap_a_CFLAGS = $(AM_CFLAGS) -DXFree86Server
|
||||
libfbcmap_a_SOURCES = $(top_srcdir)/fb/fbcmap.c
|
||||
|
||||
Xvfb_SOURCES = $(SRCS)
|
||||
|
||||
|
@ -14,16 +23,8 @@ Xvfb_LDADD = $(XORG_CORE_LIBS) \
|
|||
$(XVFB_LIBS) \
|
||||
$(XSERVER_LIBS) \
|
||||
$(EXTENSION_LIBS) \
|
||||
$(XVFBMODULES_LIBS)
|
||||
|
||||
Xvfb_LDFLAGS =
|
||||
|
||||
AM_CFLAGS = -DHAVE_DIX_CONFIG_H \
|
||||
-DNO_HW_ONLY_EXTS \
|
||||
-DNO_MODULE_EXTS \
|
||||
-DXFree86Server \
|
||||
$(XVFBMODULES_CFLAGS) \
|
||||
$(DIX_CFLAGS)
|
||||
$(XVFBMODULES_LIBS) \
|
||||
libfbcmap.a
|
||||
|
||||
# Man page
|
||||
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
|
||||
new platform, and providing an unobtrusive way to run applications
|
||||
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
|
||||
.PP
|
||||
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
|
||||
will be depth 16 1600x1200.
|
||||
.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
|
||||
default screen configuration (one screen, 1280x1024x12),
|
||||
will also support pixmap
|
||||
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
|
||||
xwud -in /usr/tmp/Xvfb_screen0
|
||||
xwud -in /var/tmp/Xvfb_screen0
|
||||
Displays screen 0 of the server started by the preceding example.
|
||||
.SH "SEE ALSO"
|
||||
.PP
|
||||
|
|
|
@ -725,47 +725,13 @@ xf86SetModeCrtc(DisplayModePtr p, int adjustFlags)
|
|||
p->CrtcVSyncEnd *= 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->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->CrtcHBlankEnd = max(p->CrtcHSyncEnd, p->CrtcHTotal);
|
||||
|
||||
if ((p->CrtcHBlankEnd - p->CrtcHBlankStart) >= 63 * 8) {
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
}
|
||||
p->CrtcHAdjusted = FALSE;
|
||||
p->CrtcVAdjusted = FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -84,7 +84,7 @@ typedef enum {
|
|||
* mask is 0xFFFF0000.
|
||||
*/
|
||||
#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_EXTENSION_VERSION SET_ABI_VERSION(0, 3)
|
||||
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 5)
|
||||
|
|
|
@ -368,10 +368,8 @@ AllocateArea(
|
|||
/* look through the free boxes */
|
||||
for(i = 0; i < num; i++, boxp++) {
|
||||
x = boxp->x1;
|
||||
if(granularity) {
|
||||
int tmp = x % granularity;
|
||||
if(tmp) x += (granularity - tmp);
|
||||
}
|
||||
if (granularity > 1)
|
||||
x = ((x + granularity - 1) / granularity) * granularity;
|
||||
|
||||
if(((boxp->y2 - boxp->y1) < h) || ((boxp->x2 - x) < w))
|
||||
continue;
|
||||
|
@ -398,10 +396,8 @@ AllocateArea(
|
|||
|
||||
boxp = &(link->area.box);
|
||||
x = boxp->x1;
|
||||
if(granularity) {
|
||||
int tmp = x % granularity;
|
||||
if(tmp) x += (granularity - tmp);
|
||||
}
|
||||
if (granularity > 1)
|
||||
x = ((x + granularity - 1) / granularity) * granularity;
|
||||
|
||||
if(((boxp->y2 - boxp->y1) < h) || ((boxp->x2 - x) < w)) {
|
||||
link = link->next;
|
||||
|
@ -685,10 +681,8 @@ localQueryLargestOffscreenArea(
|
|||
|
||||
while(nbox--) {
|
||||
x = pbox->x1;
|
||||
if(granularity) {
|
||||
int tmp = x % granularity;
|
||||
if(tmp) x += (granularity - tmp);
|
||||
}
|
||||
if (granularity > 1)
|
||||
x = ((x + granularity - 1) / granularity) * granularity;
|
||||
|
||||
w = pbox->x2 - x;
|
||||
h = pbox->y2 - pbox->y1;
|
||||
|
@ -845,7 +839,9 @@ AllocateLinear(
|
|||
while (linear) {
|
||||
/* Make sure we get a free area that's not an XY fallback case */
|
||||
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;
|
||||
if (end <= (linear->linear.offset + linear->linear.size))
|
||||
break;
|
||||
|
@ -935,17 +931,20 @@ localAllocateOffscreenLinear(
|
|||
extents = REGION_EXTENTS(pScreen, offman->InitialBoxes);
|
||||
pitch = extents->x2 - extents->x1;
|
||||
|
||||
if (gran && gran > pitch) {
|
||||
/* we can't match the specified alignment with XY allocations */
|
||||
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
|
||||
*/
|
||||
length += gran - 1;
|
||||
}
|
||||
if (gran > 1) {
|
||||
if (gran > pitch) {
|
||||
/* we can't match the specified alignment with XY allocations */
|
||||
xfree(link);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (pitch % gran) {
|
||||
/* pitch and granularity aren't a perfect match, let's allocate
|
||||
* a bit more so we can align later on
|
||||
*/
|
||||
length += gran - 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(length < pitch) { /* special case */
|
||||
w = length;
|
||||
|
@ -968,8 +967,8 @@ localAllocateOffscreenLinear(
|
|||
linear->pScreen = pScreen;
|
||||
linear->size = h * w;
|
||||
linear->offset = (pitch * area->box.y1) + area->box.x1;
|
||||
if (gran && linear->offset % gran)
|
||||
linear->offset += gran - (linear->offset % gran);
|
||||
if (gran > 1)
|
||||
linear->offset += ((linear->offset + gran - 1) / gran) * gran;
|
||||
linear->granularity = gran;
|
||||
linear->MoveLinearCallback = moveCB;
|
||||
linear->RemoveLinearCallback = removeCB;
|
||||
|
@ -1435,9 +1434,12 @@ xf86AllocateLinearOffscreenArea (
|
|||
extents = REGION_EXTENTS(pScreen, offman->InitialBoxes);
|
||||
w = extents->x2 - extents->x1;
|
||||
|
||||
if(gran && ((gran > w) || (w % gran))) {
|
||||
/* we can't match the specified alignment with XY allocations */
|
||||
return NULL;
|
||||
if (gran > 1) {
|
||||
if (gran > w)
|
||||
return NULL;
|
||||
|
||||
if (w % gran)
|
||||
length += gran - 1;
|
||||
}
|
||||
|
||||
if(length <= w) { /* special case */
|
||||
|
|
|
@ -35,6 +35,6 @@ Default: No.
|
|||
Chooses an alternate pixmap migration heuristic, for debugging purposes. The
|
||||
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,
|
||||
\*qgreedy\*q, and \*qsmart\*q. Default: smart.
|
||||
\*qgreedy\*q, and \*qsmart\*q. Default: always.
|
||||
.SH AUTHORS
|
||||
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
|
||||
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->bits_per_pixel = pScrn->bitsPerPixel;
|
||||
var->red.length = pScrn->weight.red;
|
||||
var->green.length = pScrn->weight.green;
|
||||
var->blue.length = pScrn->weight.blue;
|
||||
if (pScrn->defaultVisual == TrueColor ||
|
||||
pScrn->defaultVisual == DirectColor) {
|
||||
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
|
||||
|
@ -227,6 +235,26 @@ xfree2fbdev_timing(DisplayModePtr mode, struct fb_var_screeninfo *var)
|
|||
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
|
||||
fbdev2xfree_timing(struct fb_var_screeninfo *var, DisplayModePtr mode)
|
||||
{
|
||||
|
@ -470,13 +498,53 @@ fbdevHWGetVidmem(ScrnInfoPtr pScrn)
|
|||
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
|
||||
fbdevHWSetVideoModes(ScrnInfoPtr pScrn)
|
||||
{
|
||||
fbdevHWPtr fPtr = FBDEVHWPTR(pScrn);
|
||||
int virtX = pScrn->display->virtualX;
|
||||
int virtY = pScrn->display->virtualY;
|
||||
struct fb_var_screeninfo var;
|
||||
char **modename;
|
||||
DisplayModePtr mode,this,last = pScrn->modes;
|
||||
|
||||
|
@ -484,6 +552,9 @@ fbdevHWSetVideoModes(ScrnInfoPtr pScrn)
|
|||
if (NULL == pScrn->display->modes)
|
||||
return;
|
||||
|
||||
pScrn->virtualX = pScrn->display->virtualX;
|
||||
pScrn->virtualY = pScrn->display->virtualY;
|
||||
|
||||
for (modename = pScrn->display->modes; *modename != NULL; modename++) {
|
||||
for (mode = pScrn->monitor->Modes; mode != NULL; mode = mode->next)
|
||||
if (0 == strcmp(mode->name,*modename))
|
||||
|
@ -493,27 +564,20 @@ fbdevHWSetVideoModes(ScrnInfoPtr pScrn)
|
|||
"\tmode \"%s\" not found\n", *modename);
|
||||
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 (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))) {
|
||||
if (!fbdevHWSetMode(pScrn, mode, TRUE)) {
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||
"\tmode \"%s\" test failed\n", *modename);
|
||||
continue;
|
||||
}
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||
"\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) {
|
||||
pScrn->modes = xnfalloc(sizeof(DisplayModeRec));
|
||||
this = pScrn->modes;
|
||||
|
@ -530,8 +594,6 @@ fbdevHWSetVideoModes(ScrnInfoPtr pScrn)
|
|||
}
|
||||
last = this;
|
||||
}
|
||||
pScrn->virtualX = virtX;
|
||||
pScrn->virtualY = virtY;
|
||||
}
|
||||
|
||||
DisplayModePtr
|
||||
|
@ -673,21 +735,12 @@ fbdevHWModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
|
|||
{
|
||||
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;
|
||||
|
||||
/* set */
|
||||
if (0 != ioctl(fPtr->fd,FBIOPUT_VSCREENINFO,(void*)(&fPtr->var))) {
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
||||
"FBIOPUT_VSCREENINFO: %s\n", strerror(errno));
|
||||
if (!fbdevHWSetMode(pScrn, mode, FALSE))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* read back */
|
||||
if (0 != ioctl(fPtr->fd,FBIOGET_FSCREENINFO,(void*)(&fPtr->fix))) {
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
||||
|
@ -699,6 +752,20 @@ fbdevHWModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
|
|||
"FBIOGET_VSCREENINFO: %s\n", strerror(errno));
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -767,18 +834,12 @@ ModeStatus
|
|||
fbdevHWValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
|
||||
{
|
||||
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
||||
fbdevHWPtr fPtr = FBDEVHWPTR(pScrn);
|
||||
struct fb_var_screeninfo var;
|
||||
|
||||
TRACE_ENTER("ValidMode");
|
||||
memcpy(&var,&fPtr->var,sizeof(var));
|
||||
xfree2fbdev_timing(mode, &var);
|
||||
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));
|
||||
|
||||
if (!fbdevHWSetMode(pScrn, mode, TRUE))
|
||||
return MODE_BAD;
|
||||
}
|
||||
|
||||
return MODE_OK;
|
||||
}
|
||||
|
||||
|
@ -786,15 +847,12 @@ Bool
|
|||
fbdevHWSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
|
||||
{
|
||||
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
||||
fbdevHWPtr fPtr = FBDEVHWPTR(pScrn);
|
||||
|
||||
TRACE_ENTER("SwitchMode");
|
||||
xfree2fbdev_timing(mode, &fPtr->var);
|
||||
if (0 != ioctl(fPtr->fd,FBIOPUT_VSCREENINFO,(void*)(&fPtr->var))) {
|
||||
xf86DrvMsg(scrnIndex, X_ERROR,
|
||||
"FBIOPUT_VSCREENINFO: %s\n", strerror(errno));
|
||||
|
||||
if (!fbdevHWSetMode(pScrn, mode, FALSE))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -113,6 +113,10 @@ DLFindSymbol(const char *name)
|
|||
DLModuleList *l;
|
||||
void *p;
|
||||
|
||||
p = dlsym(RTLD_DEFAULT, name);
|
||||
if (p != NULL)
|
||||
return p;
|
||||
|
||||
for (l = dlModuleList; l != NULL; l = l->next) {
|
||||
p = DLFindSymbolLocal(l->module, name);
|
||||
if (p)
|
||||
|
|
|
@ -903,7 +903,7 @@ doLoadModule(const char *module, const char *path, const char **subdirlist,
|
|||
* check the elements in the path
|
||||
*/
|
||||
if (PathIsAbsolute(module))
|
||||
xstrdup(module);
|
||||
found = xstrdup(module);
|
||||
path_elem = pathlist;
|
||||
while (!found && *path_elem != NULL) {
|
||||
found = FindModule(m, *path_elem, subdirlist, patterns);
|
||||
|
|
|
@ -570,7 +570,8 @@ linuxMapPci(int ScreenNum, int Flags, PCITAG Tag,
|
|||
|
||||
xf86InitVidMem();
|
||||
|
||||
if (((fd = linuxPciOpenFile(Tag ,FALSE)) < 0) ||
|
||||
prot = ((Flags & VIDMEM_READONLY) == 0);
|
||||
if (((fd = linuxPciOpenFile(Tag, prot)) < 0) ||
|
||||
(ioctl(fd, mmap_ioctl, 0) < 0))
|
||||
break;
|
||||
|
||||
|
|
|
@ -6,9 +6,14 @@ PLATFORM_DEFINES = -DOS_PROBE_PCI_CHIPSET=lnxProbePciChipset
|
|||
PLATFORM_INCLUDES = -I$(srcdir)/../shared
|
||||
endif
|
||||
if LINUX_ALPHA
|
||||
PLATFORM_PCI_SUPPORT = lnx_ev56.c \
|
||||
noinst_LTLIBRARIES += liblinuxev56.la
|
||||
PLATFORM_PCI_SUPPORT = \
|
||||
$(srcdir)/lnx_axp.c \
|
||||
$(srcdir)/../shared/xf86Axp.c
|
||||
|
||||
liblinuxev56_la_CFLAGS = -mcpu=ev56
|
||||
|
||||
liblinuxev56_la_SOURCES = lnx_ev56.c
|
||||
endif
|
||||
|
||||
if LNXACPI
|
||||
|
@ -48,3 +53,7 @@ EXTRA_DIST = \
|
|||
$(LNX_EXTRA_SRCS) \
|
||||
lnx.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
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
|
|
@ -428,7 +428,7 @@ typedef int xf86jmp_buf[1024];
|
|||
#define toupper(i) xf86toupper(i)
|
||||
#undef ungetc
|
||||
#define ungetc(i,FP) xf86ungetc(i,FP)
|
||||
#undef vfprinf
|
||||
#undef vfprintf
|
||||
#define vfprintf(p,f,a) xf86vfprintf(p,f,a)
|
||||
#undef vsnprintf
|
||||
#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
|
||||
# (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.
|
||||
|
@ -23,11 +23,28 @@
|
|||
|
||||
0000 Gammagraphx, Inc.
|
||||
001a Ascend Communications, Inc.
|
||||
001c PEAK-System Technik GmbH
|
||||
0001 PCAN-PCI CAN-Bus controller
|
||||
0033 Paradyne corp.
|
||||
003d Lockheed Martin-Marietta Corp
|
||||
# Real TJN ID is e159, but they got it wrong several times --mj
|
||||
0059 Tiger Jet Network Inc. (Wrong ID)
|
||||
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.
|
||||
0095 Silicon Image, Inc. (Wrong ID)
|
||||
0680 Ultra ATA/133 IDE RAID CONTROLLER CARD
|
||||
|
@ -51,6 +68,7 @@
|
|||
0315 SK-Electronics Co., Ltd.
|
||||
0357 TTTech AG
|
||||
000a TTP-Monitoring Card V2.0
|
||||
0403 Future Technology Devices International Ltd
|
||||
0432 SCM Microsystems, Inc.
|
||||
0001 Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet]
|
||||
045e Microsoft
|
||||
|
@ -63,6 +81,7 @@
|
|||
001a FSD7000 802.11g PCI Wireless card
|
||||
0109 F5U409-CU USB/Serial Portable Adapter
|
||||
7050 F5D7050 802.11g Wireless USB Adapter
|
||||
705c F5D7050 v4
|
||||
05a9 OmniVision
|
||||
8519 OV519 series
|
||||
05e3 CyberDoor
|
||||
|
@ -78,23 +97,42 @@
|
|||
067b Prolific Technology, Inc.
|
||||
2303 PL-2303 USB-to-Serial Converter
|
||||
3507 PL-3507 Hi-Speed USB & IEEE 1394 Combo to IDE Bridge Controller
|
||||
069d Hughes Network Systems (HNS)
|
||||
0721 Sapphire, Inc.
|
||||
07ca AVerMedia Technologies Inc.
|
||||
b808 AVerTV DVB-T Volar (USB 2.0)
|
||||
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.
|
||||
0925 VIA Technologies, Inc. (Wrong ID)
|
||||
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
|
||||
0704 CM 200E Cable Modem
|
||||
0a89 BREA Technologies Inc
|
||||
0ace ZyDAS
|
||||
1211 ZD1211 IEEE 802.11b+g USB Adapter
|
||||
0b0b Rhino Equiment Corp.
|
||||
0105 Rhino R1T1
|
||||
0205 Rhino R4FXO
|
||||
0206 RCB4FXO 4-channel FXO analog telphony card
|
||||
0305 Rhino R4T1
|
||||
0405 Rhino R8FXX
|
||||
0406 RCB8FXX 8-channel modular analog telphony card
|
||||
0505 Rhino R24FXX
|
||||
0506 Rhino R2T1
|
||||
0506 RCB24FXS 24-Channel FXS analog telphony card
|
||||
0605 Rhino R2T1
|
||||
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
|
||||
064f Trance Vibrator
|
||||
0ccd TerraTec Electronic GmbH
|
||||
|
@ -288,16 +326,33 @@
|
|||
0041 53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
|
||||
0050 SAS1064 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
|
||||
0058 SAS1068E PCI-Express Fusion-MPT SAS
|
||||
005a SAS1066E PCI-Express Fusion-MPT SAS
|
||||
005c SAS1064A PCI-X Fusion-MPT SAS
|
||||
005e SAS1066 PCI-X Fusion-MPT SAS
|
||||
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 1f0b PERC 6/i Adapter 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
|
||||
1000 0062 SAS1078 PCI-Express Fusion-MPT SAS
|
||||
008f 53c875J
|
||||
|
@ -317,6 +372,9 @@
|
|||
1025 004d MegaRAID ACER ROMB-2E RAID Controller
|
||||
1028 0001 PowerEdge RAID Controller PERC4e/SC
|
||||
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
|
||||
8086 0002 MegaRAID Intel RAID Controller SRCU42E
|
||||
0409 MegaRAID
|
||||
|
@ -330,6 +388,7 @@
|
|||
1000 1002 MegaRAID SAS 8480E
|
||||
1000 1003 MegaRAID SAS 8344ELP
|
||||
1000 1004 MegaRAID SAS 8308ELP
|
||||
1000 1008 MegaRAID SAS 84016E
|
||||
1000 100c MegaRAID SATA 300-12E
|
||||
1000 100d MegaRAID SATA 300-16E
|
||||
1000 2004 MegaRAID SATA 300-8ELP
|
||||
|
@ -338,8 +397,8 @@
|
|||
1054 3016 MegaRAID SAS RoMB Server
|
||||
1734 1081 MegaRAID SAS PCI Express ROMB
|
||||
1734 10a3 MegaRAID SAS PCI Express ROMB
|
||||
8086 1001 SRCSAS18E RAID Controller
|
||||
8086 1003 SRCSAS144E RAID Controller
|
||||
8086 1001 RAID Controller SRCSAS18E
|
||||
8086 1003 RAID Controller SRCSAS144E
|
||||
8086 3500 SROMBSAS18E RAID Controller
|
||||
8086 3501 SROMBSAS18E RAID Controller
|
||||
8086 3504 SROMBSAS18E RAID Controller
|
||||
|
@ -509,7 +568,11 @@
|
|||
103c 308b MX6125
|
||||
4379 ATI 4379 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
|
||||
1734 10b8 Realtek High Definition Audio
|
||||
4380 SB600 Non-Raid-5 SATA
|
||||
4381 SB600 Raid-5 SATA
|
||||
4382 SB600 AC97 Audio
|
||||
|
@ -584,6 +647,7 @@
|
|||
1734 007a Primergy RX300
|
||||
8086 3411 SDS2 Mainboard
|
||||
8086 3427 S875WP1-E mainboard
|
||||
8086 5744 S845WD1-E mainboard
|
||||
4753 Rage XC
|
||||
1002 4753 Rage XC
|
||||
4754 3D Rage I/II 215GT [Mach64 GT]
|
||||
|
@ -711,10 +775,12 @@
|
|||
1025 005a TravelMate 290
|
||||
103c 088c NC8000 laptop
|
||||
103c 0890 NC6000 laptop
|
||||
144d c00c P35 notebook
|
||||
1462 0311 MSI M510A
|
||||
1734 1055 Amilo M1420W
|
||||
4e51 M10 NQ [Radeon Mobility 9600]
|
||||
4e52 RV350 [Mobility Radeon 9600 M10]
|
||||
144d c00c P35 notebook
|
||||
4e53 M10 NS [Radeon Mobility 9600]
|
||||
4e54 M10 NT [FireGL Mobility T2]
|
||||
4e56 M11 NV [FireGL Mobility T2e]
|
||||
|
@ -900,7 +966,7 @@
|
|||
554d R430 [Radeon X800 XL] (PCIe)
|
||||
554f R430 [Radeon X800 (PCIE)]
|
||||
5550 R423 [Fire GL V7100]
|
||||
5551 R423 UQ [FireGL V7200 (PCIE)]
|
||||
5551 R423 [FireGL V5100 (PCIE)]
|
||||
5552 R423 UR [FireGL V5100 (PCIE)]
|
||||
5554 R423 UT [FireGL V7100 (PCIE)]
|
||||
5569 R423 UI [Radeon X800PRO (PCIE)] Secondary
|
||||
|
@ -936,6 +1002,7 @@
|
|||
1025 0080 Aspire 5024WLMMi
|
||||
103c 308b MX6125
|
||||
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]
|
||||
1002 5954 RV370 [Radeon Xpress 200G Series]
|
||||
5955 ATI Radeon XPRESS 200M 5955 (PCIE)
|
||||
|
@ -954,6 +1021,7 @@
|
|||
18bc 0053 Radeon 9200 Game Buster VIVO
|
||||
5962 RV280 [Radeon 9200]
|
||||
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
|
||||
1458 4018 Radeon 9200 SE
|
||||
1458 4032 Radeon 9200 SE 128MB
|
||||
|
@ -966,11 +1034,12 @@
|
|||
18bc 0173 GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]
|
||||
5969 ES1000
|
||||
5974 RS482 [Radeon Xpress 200]
|
||||
5975 RS482 [Radeon Xpress 200M]
|
||||
5975 RS485 [Radeon Xpress 1100 IGP]
|
||||
5a33 Radeon Xpress 200 Host Bridge
|
||||
5a34 RS480 PCI-X Root Port
|
||||
# Comes in pair with 5a3f
|
||||
5a36 RS480 PCI Bridge
|
||||
5a37 RS480 PCI Bridge
|
||||
5a38 RS480 PCI Bridge
|
||||
# Comes in pair with 5a38
|
||||
5a39 RS480 PCI Bridge
|
||||
|
@ -998,6 +1067,7 @@
|
|||
5c61 M9+ 5C61 [Radeon Mobility 9200 (AGP)]
|
||||
5c63 M9+ 5C63 [Radeon Mobility 9200 (AGP)]
|
||||
1002 5c63 Apple iBook G4 2004
|
||||
144d c00c P30 notebook
|
||||
5d44 RV280 [Radeon 9200 SE] (Secondary)
|
||||
1458 4019 Radeon 9200 SE (Secondary)
|
||||
1458 4032 Radeon 9200 SE 128MB
|
||||
|
@ -1052,11 +1122,13 @@
|
|||
1002 0323 All-in-Wonder X1800XL (Secondary)
|
||||
1002 0d03 Radeon X1800 CrossFire Edition (Secondary)
|
||||
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
|
||||
7143 RV505 [Radeon X1550 Series]
|
||||
7145 Radeon Mobility X1400
|
||||
7146 RV515 [Radeon X1300]
|
||||
1002 0322 All-in-Wonder 2006 PCI-E Edition
|
||||
7147 RV505 [Radeon X1550 64-bit]
|
||||
7149 M52 [ATI Mobility Radeon X1300]
|
||||
714a M52 [ATI Mobility Radeon X1300]
|
||||
714b M52 [ATI Mobility Radeon X1300]
|
||||
|
@ -1064,28 +1136,47 @@
|
|||
714d RV515 [Radeon X1300]
|
||||
714e RV515 [Radeon X1300]
|
||||
7152 RV515 GL ATI FireGL V3300 Primary
|
||||
7153 RV515GL [FireGL V3350]
|
||||
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)
|
||||
7166 RV515 [Radeon X1300] (Secondary)
|
||||
1002 0323 All-in-Wonder 2006 PCI-E Edition (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
|
||||
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
|
||||
71a3 RV516 [ATI Radeon X1300 Pro Secondary]
|
||||
71a7 RV516 [ATI Radeon X1300/X1550 Series Secondary]
|
||||
71bb FireMV 2250 Secondary
|
||||
71c0 RV530 [Radeon X1600]
|
||||
71c2 RV530 [Radeon X1600]
|
||||
71c4 M56GL [ATI Mobility FireGL V5200]
|
||||
17aa 2007 ThinkPad T60p
|
||||
71c5 M56P [Radeon Mobility X1600]
|
||||
71c6 RV530LE [Radeon X1600]
|
||||
71c7 RV535 [Radeon X1650 Series]
|
||||
71ce RV530LE [Radeon X1600]
|
||||
71d5 M66-P ATI Mobility Radeon X1700
|
||||
71d6 M66-XT ATI Mobility Radeon X1700
|
||||
71de RV530LE [Radeon X1600]
|
||||
71e0 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]
|
||||
7241 R580 [Radeon X1900]
|
||||
7242 R580 [Radeon X1900]
|
||||
|
@ -1098,15 +1189,29 @@
|
|||
7249 R580 [Radeon X1900 XT] Primary
|
||||
724a 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]
|
||||
724d R580 [Radeon X1900]
|
||||
724e R580 [FireGL V7300/V7350] Primary (PCIE)
|
||||
724e R580 [AMD Stream Processor]
|
||||
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
|
||||
7834 Radeon 9100 PRO IGP
|
||||
7835 Radeon Mobility 9200 IGP
|
||||
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]
|
||||
cab0 AGP Bridge [IGP 320M]
|
||||
cab2 RS200/RS200M AGP Bridge [IGP 340M]
|
||||
|
@ -1556,6 +1661,8 @@
|
|||
2003 Am 1771 MBW [Alchemy]
|
||||
2020 53c974 [PCscsi]
|
||||
2040 79c974
|
||||
# CS5536 [Geode companion] Host Bridge
|
||||
2080 Conrad Kostecki
|
||||
2081 Geode LX Video
|
||||
2082 Geode LX AES Security Block
|
||||
208f CS5536 GeodeLink PCI South Bridge
|
||||
|
@ -1742,13 +1849,21 @@
|
|||
1028 0001 PowerEdge 2400
|
||||
0002 PowerEdge Expandable RAID Controller 3/Di
|
||||
1028 0002 PowerEdge 4400
|
||||
1028 00d1 PERC 3/DiV [Viper]
|
||||
1028 00d9 PERC 3/DiL [Lexus]
|
||||
0003 PowerEdge Expandable RAID Controller 3/Si
|
||||
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
|
||||
0007 Remote Access Card III
|
||||
0008 Remote Access Card III
|
||||
0009 Remote Access Card III: BMC/SMIC device not present
|
||||
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
|
||||
000d Embedded Remote Access: BMC/SMIC device
|
||||
000e PowerEdge Expandable RAID controller 4/Di
|
||||
|
@ -1764,6 +1879,9 @@
|
|||
1028 0170 PowerEdge Expandable RAID Controller 4e/Di
|
||||
0014 Remote Access Card 4 Daughter Card SMIC interface
|
||||
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
|
||||
102a LSI Logic
|
||||
0000 HYDRA
|
||||
|
@ -1964,6 +2082,7 @@
|
|||
102f 00f8 ATM Meteor 155
|
||||
0030 TC35815CF PCI 10/100 Mbit Ethernet Controller
|
||||
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
|
||||
0106 TC86C001 [goku-s] USB 1.1 Host
|
||||
0107 TC86C001 [goku-s] USB Device Controller
|
||||
|
@ -2107,6 +2226,7 @@
|
|||
1019 0a14 K7S5A motherboard
|
||||
1039 0900 SiS900 10/100 Ethernet Adapter
|
||||
1043 8035 CUSI-FX motherboard
|
||||
1462 0900 MS-6701 motherboard
|
||||
0961 SiS961 [MuTIOL Media IO]
|
||||
0962 SiS962 [MuTIOL Media IO]
|
||||
0963 SiS963 [MuTIOL Media IO]
|
||||
|
@ -2129,6 +2249,7 @@
|
|||
1019 0970 P6STP-FL motherboard
|
||||
1039 5513 SiS5513 EIDE Controller (A,B step)
|
||||
1043 8035 CUSI-FX motherboard
|
||||
1462 7010 MS-6701 motherboard
|
||||
5517 5517
|
||||
5571 5571
|
||||
5581 5581 Pentium Chipset
|
||||
|
@ -2161,10 +2282,14 @@
|
|||
1019 0a14 K7S5A motherboard
|
||||
1039 7000 Onboard USB Controller
|
||||
1462 5470 K7SOM+ 5.2C Motherboard
|
||||
1462 7010 MS-6701 motherboard
|
||||
7002 USB 2.0 Controller
|
||||
1462 7010 MS-6701 motherboard
|
||||
1509 7002 Onboard USB Controller
|
||||
7007 FireWire Controller
|
||||
1462 701d MS-6701
|
||||
7012 AC'97 Sound Controller
|
||||
1462 7010 MS-6701 motherboard
|
||||
15bd 1001 DFI 661FX motherboard
|
||||
# There are may be different modem codecs here (Intel537 compatible and incompatible)
|
||||
7013 AC'97 Modem Controller
|
||||
|
@ -2252,10 +2377,13 @@
|
|||
12ee PCI-X 2.0 Local Bus Adapter
|
||||
12f8 Broadcom BCM4306 802.11b/g Wireless LAN
|
||||
12fa BCM4306 802.11b/g Wireless LAN Controller
|
||||
1302 RMP-3 Shared Memory Driver
|
||||
1303 RMP-3 (Remote Management Processor)
|
||||
2910 E2910A PCIBus Exerciser
|
||||
2925 E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer
|
||||
3080 Pavilion ze2028ea
|
||||
3085 Realtek RTL8139/8139C/8139C+
|
||||
30b5 Compaq Presario V3000Z
|
||||
3220 Smart Array P600
|
||||
103c 3225 3 Gb/s SAS RAID
|
||||
3230 Smart Array Controller
|
||||
|
@ -2292,8 +2420,10 @@
|
|||
80c5 nForce3 chipset motherboard [SK8N]
|
||||
80df v9520 Magic/T
|
||||
815a A8N-SLI Motherboard nForce4 SATA
|
||||
8168 Realtek PCI-E Gigabit Ethernet Controller (RTL8111B)
|
||||
8187 802.11a/b/g Wireless LAN Card
|
||||
8188 Tiger Hybrid TV Capture Device
|
||||
81f4 EN7300TC512/TD/128M/A(C262G) [Graphics Card EN7300TC512]
|
||||
1044 Adaptec (formerly DPT)
|
||||
1012 Domino RAID Engine
|
||||
a400 SmartCache/Raid I-IV Controller
|
||||
|
@ -2444,6 +2574,7 @@
|
|||
8023 TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
|
||||
103c 088c NC8000 laptop
|
||||
1043 808b K8N4-E Mainboard
|
||||
1043 815b P5W DH Deluxe Motherboard
|
||||
8024 TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)
|
||||
8025 TSB82AA2 IEEE-1394b Link Layer Controller
|
||||
1458 1000 GA-K8N Ultra-9 Mainboard
|
||||
|
@ -2483,14 +2614,17 @@
|
|||
8038 PCI6515 SmartCard Controller
|
||||
8039 PCIxx12 Cardbus Controller
|
||||
103c 309f nx9420
|
||||
103c 30a1 NC2400
|
||||
803a PCIxx12 OHCI Compliant IEEE 1394 Host Controller
|
||||
103c 309f nx9420
|
||||
103c 30a1 NC2400
|
||||
803b 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
|
||||
103c 309f nx9420
|
||||
803c PCIxx12 SDA Standard Compliant SD Host Controller
|
||||
103c 309f nx9420
|
||||
803d PCIxx12 GemCore based SmartCard controller
|
||||
103c 309f nx9420
|
||||
103c 30a1 NC2400
|
||||
8201 PCI1620 Firmware Loading Function
|
||||
8204 PCI7410,7510,7610 PCI Firmware Loading Function
|
||||
1028 0139 Latitude D400
|
||||
|
@ -2548,6 +2682,7 @@
|
|||
ac42 PCI4451 PC card Cardbus Controller
|
||||
1028 00e6 PCI4451 PC card CardBus Controller (Inspiron 8100)
|
||||
ac44 PCI4510 PC card Cardbus Controller
|
||||
1028 0149 Inspiron 5100
|
||||
1028 0163 Latitude D505
|
||||
1028 0196 Inspiron 5160
|
||||
1071 8160 MIM2000
|
||||
|
@ -2560,7 +2695,7 @@
|
|||
1028 0139 Latitude D400
|
||||
1028 014e Latitude D800
|
||||
ac50 PCI1410 PC card Cardbus Controller
|
||||
ac51 PCI1420
|
||||
ac51 PCI1420 PC card Cardbus Controller
|
||||
0e11 004e Evo N600c
|
||||
1014 0148 ThinkPad A20m
|
||||
1014 023b ThinkPad T23 (2647-4MG)
|
||||
|
@ -2588,6 +2723,7 @@
|
|||
ac8d PCI 7620
|
||||
ac8e PCI7420 CardBus Controller
|
||||
ac8f PCI7420/7620 Combo CardBus, 1394a-2000 OHCI and SD/MS-Pro Controller
|
||||
1028 018d Inspiron 700m
|
||||
fe00 FireWire Host Controller
|
||||
fe03 12C01A FireWire Host Controller
|
||||
104d Sony Corporation
|
||||
|
@ -2673,6 +2809,7 @@
|
|||
ecc0 0072 Mona rev.2
|
||||
18c0 MPC8265A/8266/8272
|
||||
18c1 MPC8271/MPC8272
|
||||
3052 SM56 Data Fax Modem
|
||||
3055 SM56 Data Fax Modem
|
||||
3410 DSP56361 Digital Signal Processor
|
||||
ecc0 0050 Gina24 rev.0
|
||||
|
@ -2721,6 +2858,7 @@
|
|||
1059 Teknor Industrial Computers Inc
|
||||
105a Promise Technology, Inc.
|
||||
0d30 PDC20265 (FastTrak100 Lite/Ultra100)
|
||||
1043 8042 ASUS AV7266-E South Bridge Promise RAID
|
||||
105a 4d33 Ultra100
|
||||
0d38 20263
|
||||
105a 4d39 Fasttrak66
|
||||
|
@ -2749,6 +2887,7 @@
|
|||
4d30 PDC20267 (FastTrak100/Ultra100)
|
||||
105a 4d33 Ultra100
|
||||
105a 4d39 FastTrak100
|
||||
8086 5744 S845WD1-E mainboard
|
||||
4d33 20246
|
||||
105a 4d33 20246 IDE Controller
|
||||
4d38 PDC20262 (FastTrak66/Ultra66)
|
||||
|
@ -2777,7 +2916,12 @@
|
|||
7275 PDC20277 (SBFastTrak133 Lite)
|
||||
8002 SATAII150 SX8
|
||||
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]
|
||||
e350 80333 [SuperTrak EX24350]
|
||||
105b Foxconn International, Inc.
|
||||
105c Wipro Infotech Limited
|
||||
105d Number 9 Computer Company
|
||||
|
@ -2990,6 +3134,7 @@
|
|||
0012 YMF-754 [DS-1E Audio Controller]
|
||||
1073 0012 DS-XG PCI Audio Codec
|
||||
0020 DS-1 Audio
|
||||
1000 SW1000XG [XG Factory]
|
||||
2000 DS2416 Digital Mixing Card
|
||||
1073 2000 DS2416 Digital Mixing Card
|
||||
1074 NexGen Microsystems
|
||||
|
@ -3021,7 +3166,7 @@
|
|||
103c 12dd 4Gb Fibre Channel [AB429A]
|
||||
2432 ISP2432-based 4Gb Fibre Channel to PCI Express HBA
|
||||
3022 ISP4022-based Ethernet NIC
|
||||
3032 ISP4032-based Ethernet NIC
|
||||
3032 ISP4032-based Ethernet IPv6 NIC
|
||||
4010 ISP4010-based iSCSI TOE HBA
|
||||
4022 ISP4022-based iSCSI TOE HBA
|
||||
4032 ISP4032-based iSCSI TOE IPv6 HBA
|
||||
|
@ -3329,6 +3474,7 @@
|
|||
13e9 0070 Win/TV (Audio Section)
|
||||
144f 3000 MagicTView CPH060 - Audio
|
||||
1461 0002 Avermedia PCTV98 Audio Capture
|
||||
1461 0003 UltraTV PCI 350
|
||||
1461 0004 AVerTV WDM Audio Capture
|
||||
1461 0761 AVerTV DVB-T
|
||||
1461 0771 AverMedia AVerTV DVB-T 771
|
||||
|
@ -3417,6 +3563,8 @@
|
|||
4002 TIO-CE PCI Express Port
|
||||
8001 O2 1394
|
||||
8002 G-net NT
|
||||
8010 Broadcom e-net [SGI IO9/IO10 BaseIO]
|
||||
8018 Broadcom e-net [SGI A330 Server BaseIO]
|
||||
10aa ACC Microelectronics
|
||||
0000 ACCM 2188
|
||||
10ab Digicom
|
||||
|
@ -3468,6 +3616,7 @@
|
|||
10b5 2978 SH ARC-PCIu SOHARD ARCNET card
|
||||
10b5 3025 Alpermann+Velte PCL PCI L (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 3137 S2M-E1-ISDN PCI Adapter
|
||||
1518 0200 Kontron ThinkIO-C
|
||||
|
@ -3522,6 +3671,7 @@
|
|||
10b5 2844 Innes Corp TVS Encoder card
|
||||
12c7 4001 Intel Dialogic DM/V960-4T1 PCI
|
||||
12d9 0002 PCI Prosody Card rev 1.5
|
||||
14b4 d100 Dektec DTA-100
|
||||
16df 0011 PIKA PrimeNet MM PCI
|
||||
16df 0012 PIKA PrimeNet MM cPCI 8
|
||||
16df 0013 PIKA PrimeNet MM cPCI 8 (without CAS Signaling)
|
||||
|
@ -6060,6 +6210,7 @@
|
|||
0140 HT2100 PCI-Express Bridge
|
||||
0141 HT2100 PCI-Express Bridge
|
||||
0142 HT2100 PCI-Express Bridge
|
||||
0144 HT2100 PCI-Express Bridge
|
||||
0200 OSB4 South Bridge
|
||||
0201 CSB5 South Bridge
|
||||
4c53 1080 CT8 mainboard
|
||||
|
@ -10413,9 +10564,9 @@
|
|||
0962 80960RM [i960RM Bridge]
|
||||
0964 80960RP [i960 RP Microprocessor/Bridge]
|
||||
1000 82542 Gigabit Ethernet Controller
|
||||
0e11 b0df NC1632 Gigabit Ethernet Adapter (1000-SX)
|
||||
0e11 b0e0 NC1633 Gigabit Ethernet Adapter (1000-LX)
|
||||
0e11 b123 NC1634 Gigabit Ethernet Adapter (1000-SX)
|
||||
0e11 b0df NC6132 Gigabit Ethernet Adapter (1000-SX)
|
||||
0e11 b0e0 NC6133 Gigabit Ethernet Adapter (1000-LX)
|
||||
0e11 b123 NC6134 Gigabit Ethernet Adapter (1000-LX)
|
||||
1014 0119 Netfinity Gigabit Ethernet SX Adapter
|
||||
8086 1000 PRO/1000 Gigabit Server Adapter
|
||||
1001 82543GC Gigabit Ethernet Controller (Fiber)
|
||||
|
@ -10834,6 +10985,8 @@
|
|||
8086 0006 82557 10/100 with Wake on LAN
|
||||
8086 0007 82558 10/100 Adapter
|
||||
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 000b EtherExpress PRO/100+
|
||||
8086 000c EtherExpress PRO/100+ Management Adapter
|
||||
|
@ -10909,6 +11062,7 @@
|
|||
8086 3010 EtherExpress PRO/100 S Network Connection
|
||||
8086 3011 EtherExpress PRO/100 S Network Connection
|
||||
8086 3012 EtherExpress PRO/100 Network Connection
|
||||
8086 301a S845WD1-E mainboard
|
||||
8086 3411 SDS2 Mainboard
|
||||
122d 430FX - 82437FX TSC [Triton I]
|
||||
122e 82371FB PIIX ISA [Triton I]
|
||||
|
@ -10996,6 +11150,7 @@
|
|||
2426 82801AB AC'97 Modem
|
||||
2428 82801AB PCI Bridge
|
||||
2440 82801BA ISA Bridge (LPC)
|
||||
8086 5744 S845WD1-E
|
||||
2442 82801BA/BAM USB (Hub #1)
|
||||
1014 01c6 Netvista A40/A40p
|
||||
1025 1016 Travelmate 612 TX
|
||||
|
@ -11006,6 +11161,7 @@
|
|||
147b 0507 TH7II-RAID
|
||||
8086 4532 D815EEA2 mainboard
|
||||
8086 4557 D815EGEW Mainboard
|
||||
8086 5744 S845WD1-E mainboard
|
||||
2443 82801BA/BAM SMBus
|
||||
1014 01c6 Netvista A40/A40p
|
||||
1025 1016 Travelmate 612 TX
|
||||
|
@ -11016,6 +11172,7 @@
|
|||
147b 0507 TH7II-RAID
|
||||
8086 4532 D815EEA2 mainboard
|
||||
8086 4557 D815EGEW Mainboard
|
||||
8086 5744 S845WD1-E mainboard
|
||||
2444 82801BA/BAM USB (Hub #2)
|
||||
1025 1016 Travelmate 612 TX
|
||||
1028 00c7 Dimension 8100
|
||||
|
@ -11024,6 +11181,7 @@
|
|||
104d 80df Vaio PCG-FX403
|
||||
147b 0507 TH7II-RAID
|
||||
8086 4532 D815EEA2 mainboard
|
||||
8086 5744 S845WD1-E mainboard
|
||||
2445 82801BA/BAM AC'97 Audio
|
||||
0e11 000b Compaq Deskpro EN Audio
|
||||
0e11 0088 Evo D500
|
||||
|
@ -11082,6 +11240,7 @@
|
|||
147b 0507 TH7II-RAID
|
||||
8086 4532 D815EEA2 mainboard
|
||||
8086 4557 D815EGEW Mainboard
|
||||
8086 5744 S845WD1-E mainboard
|
||||
244c 82801BAM ISA Bridge (LPC)
|
||||
244e 82801 PCI Bridge
|
||||
1014 0267 NetVista A30p
|
||||
|
@ -11174,6 +11333,7 @@
|
|||
103c 0890 NC6000 laptop
|
||||
103c 08b0 tc1100 tablet
|
||||
1071 8160 MIM2000
|
||||
144d c00c P30/P35 notebook
|
||||
1458 24c2 GA-8PE667 Ultra
|
||||
1462 5800 845PE Max (MS-6580)
|
||||
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
|
||||
|
@ -11742,17 +11902,21 @@
|
|||
103c 099c NX6110/NC6120
|
||||
1043 1881 GMA 900 915GM Integrated Graphics
|
||||
27a0 Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub
|
||||
103c 30a1 NC2400
|
||||
17aa 2017 Thinkpad R60e model 0657
|
||||
27a1 Mobile 945GM/PM/GMS/940GML and 945GT Express PCI Express Root Port
|
||||
27a2 Mobile 945GM/GMS/940GML Express Integrated Graphics Controller
|
||||
103c 30a1 NC2400
|
||||
17aa 201a Thinkpad R60e model 0657
|
||||
27a6 Mobile 945GM/GMS/940GML Express Integrated Graphics Controller
|
||||
103c 30a1 NC2400
|
||||
17aa 201a Thinkpad R60e model 0657
|
||||
27b0 82801GH (ICH7DH) LPC Interface Bridge
|
||||
27b8 82801GB/GR (ICH7 Family) LPC Interface Bridge
|
||||
107b 5048 E4500
|
||||
8086 544e DeskTop Board D945GTP
|
||||
27b9 82801GBM (ICH7-M) LPC Interface Bridge
|
||||
103c 30a1 NC2400
|
||||
10f7 8338 Panasonic CF-Y5 laptop
|
||||
17aa 2009 ThinkPad T60/R60 series
|
||||
27bd 82801GHM (ICH7-M DH) LPC Interface Bridge
|
||||
|
@ -11766,22 +11930,27 @@
|
|||
17aa 200d Thinkpad R60e model 0657
|
||||
27c6 82801GHM (ICH7-M DH) Serial ATA Storage Controller RAID
|
||||
27c8 82801G (ICH7 Family) USB UHCI #1
|
||||
103c 30a1 NC2400
|
||||
107b 5048 E4500
|
||||
17aa 200a ThinkPad T60/R60 series
|
||||
8086 544e DeskTop Board D945GTP
|
||||
27c9 82801G (ICH7 Family) USB UHCI #2
|
||||
103c 30a1 NC2400
|
||||
107b 5048 E4500
|
||||
17aa 200a ThinkPad T60/R60 series
|
||||
8086 544e DeskTop Board D945GTP
|
||||
27ca 82801G (ICH7 Family) USB UHCI #3
|
||||
103c 30a1 NC2400
|
||||
107b 5048 E4500
|
||||
17aa 200a ThinkPad T60/R60 series
|
||||
8086 544e DeskTop Board D945GTP
|
||||
27cb 82801G (ICH7 Family) USB UHCI #4
|
||||
103c 30a1 NC2400
|
||||
107b 5048 E4500
|
||||
17aa 200a ThinkPad T60/R60 series
|
||||
8086 544e DeskTop Board D945GTP
|
||||
27cc 82801G (ICH7 Family) USB2 EHCI Controller
|
||||
103c 30a1 NC2400
|
||||
17aa 200b ThinkPad T60/R60 series
|
||||
8086 544e DeskTop Board D945GTP
|
||||
27d0 82801G (ICH7 Family) PCI Express Port 1
|
||||
|
@ -11789,10 +11958,12 @@
|
|||
27d4 82801G (ICH7 Family) PCI Express Port 3
|
||||
27d6 82801G (ICH7 Family) PCI Express Port 4
|
||||
27d8 82801G (ICH7 Family) High Definition Audio Controller
|
||||
103c 30a1 NC2400
|
||||
107b 5048 E4500
|
||||
10f7 8338 Panasonic CF-Y5 laptop
|
||||
1179 ff31 Toshiba America Information Systems:AC97 Data Fax SoftModem with SmartCP
|
||||
152d 0753 Softmodem
|
||||
1734 10ad Conexant softmodem SmartCP
|
||||
17aa 2010 ThinkPad T60/R60 series
|
||||
27da 82801G (ICH7 Family) SMBus Controller
|
||||
10f7 8338 Panasonic CF-Y5 laptop
|
||||
|
@ -11803,6 +11974,7 @@
|
|||
27dd 82801G (ICH7 Family) AC'97 Modem Controller
|
||||
27de 82801G (ICH7 Family) AC'97 Audio Controller
|
||||
27df 82801G (ICH7 Family) IDE Controller
|
||||
103c 30a1 NC2400
|
||||
107b 5048 E4500
|
||||
10f7 8338 Panasonic CF-Y5 laptop
|
||||
17aa 200c Thinkpad R60e model 0657
|
||||
|
@ -11846,6 +12018,34 @@
|
|||
284b 82801H (ICH8 Family) HD Audio Controller
|
||||
284f 82801H (ICH8 Family) Thermal Reporting Device
|
||||
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
|
||||
2971 82946GZ/PL/GL PCI Express Root Port
|
||||
2972 82946GZ/GL Integrated Graphics Controller
|
||||
|
@ -11873,6 +12073,37 @@
|
|||
29a5 82P965/G965 HECI Controller
|
||||
29a6 82P965/G965 PT IDER 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
|
||||
2a01 Mobile PCI Express Root Port
|
||||
2a02 Mobile Integrated Graphics Controller
|
||||
|
@ -11978,7 +12209,42 @@
|
|||
35b6 3100 Chipset PCI Express Port A
|
||||
35b7 3100 Chipset PCI Express Port A1
|
||||
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
|
||||
2731 8086 WLAN-Adapter
|
||||
8086 2731 Samsung P35 integrated WLAN
|
||||
4222 PRO/Wireless 3945ABG Network Connection
|
||||
8086 1005 PRO/Wireless 3945BG Network Connection
|
||||
8086 1034 PRO/Wireless 3945BG Network Connection
|
||||
|
@ -11994,6 +12260,23 @@
|
|||
5201 EtherExpress PRO/100 Intelligent Server
|
||||
8086 0001 EtherExpress PRO/100 Server Ethernet Adapter
|
||||
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]
|
||||
7010 82371SB PIIX3 IDE [Natoma/Triton II]
|
||||
7020 82371SB PIIX3 USB [Natoma/Triton II]
|
||||
|
@ -12092,6 +12375,7 @@
|
|||
9622 Integrated RAID
|
||||
9641 Integrated RAID
|
||||
96a1 Integrated RAID
|
||||
a620 6400/6402 Advanced Memory Buffer (AMB)
|
||||
b152 21152 PCI-to-PCI Bridge
|
||||
# observed, and documented in Intel revision note; new mask of 1011:0026
|
||||
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))
|
||||
|
||||
/****************************************************************************
|
||||
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:
|
||||
Handles opcode 0x0f,0x80-0x8F
|
||||
|
@ -2129,7 +2163,7 @@ static void x86emuOp2_bsf(u8 X86EMU_UNUSED(op2))
|
|||
uint srcoffset;
|
||||
|
||||
START_OF_INSTR();
|
||||
DECODE_PRINTF("BSF\n");
|
||||
DECODE_PRINTF("BSF\t");
|
||||
FETCH_DECODE_MODRM(mod, rh, rl);
|
||||
switch(mod) {
|
||||
case 0:
|
||||
|
@ -2209,25 +2243,25 @@ static void x86emuOp2_bsf(u8 X86EMU_UNUSED(op2))
|
|||
break;
|
||||
case 3: /* register to register */
|
||||
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(",");
|
||||
dstreg = DECODE_RM_LONG_REGISTER(rh);
|
||||
TRACE_AND_STEP();
|
||||
CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
|
||||
CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
|
||||
for(*dstreg = 0; *dstreg < 32; (*dstreg)++)
|
||||
if ((*srcreg >> *dstreg) & 1) break;
|
||||
if ((srcval >> *dstreg) & 1) break;
|
||||
} else {
|
||||
u16 *srcreg, *dstreg;
|
||||
u16 srcval, *dstreg;
|
||||
|
||||
srcreg = DECODE_RM_WORD_REGISTER(rl);
|
||||
srcval = *DECODE_RM_WORD_REGISTER(rl);
|
||||
DECODE_PRINTF(",");
|
||||
dstreg = DECODE_RM_WORD_REGISTER(rh);
|
||||
TRACE_AND_STEP();
|
||||
CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
|
||||
CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
|
||||
for(*dstreg = 0; *dstreg < 16; (*dstreg)++)
|
||||
if ((*srcreg >> *dstreg) & 1) break;
|
||||
if ((srcval >> *dstreg) & 1) break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -2245,7 +2279,7 @@ static void x86emuOp2_bsr(u8 X86EMU_UNUSED(op2))
|
|||
uint srcoffset;
|
||||
|
||||
START_OF_INSTR();
|
||||
DECODE_PRINTF("BSF\n");
|
||||
DECODE_PRINTF("BSR\t");
|
||||
FETCH_DECODE_MODRM(mod, rh, rl);
|
||||
switch(mod) {
|
||||
case 0:
|
||||
|
@ -2325,25 +2359,25 @@ static void x86emuOp2_bsr(u8 X86EMU_UNUSED(op2))
|
|||
break;
|
||||
case 3: /* register to register */
|
||||
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(",");
|
||||
dstreg = DECODE_RM_LONG_REGISTER(rh);
|
||||
TRACE_AND_STEP();
|
||||
CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
|
||||
CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
|
||||
for(*dstreg = 31; *dstreg > 0; (*dstreg)--)
|
||||
if ((*srcreg >> *dstreg) & 1) break;
|
||||
if ((srcval >> *dstreg) & 1) break;
|
||||
} else {
|
||||
u16 *srcreg, *dstreg;
|
||||
u16 srcval, *dstreg;
|
||||
|
||||
srcreg = DECODE_RM_WORD_REGISTER(rl);
|
||||
srcval = *DECODE_RM_WORD_REGISTER(rl);
|
||||
DECODE_PRINTF(",");
|
||||
dstreg = DECODE_RM_WORD_REGISTER(rh);
|
||||
TRACE_AND_STEP();
|
||||
CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
|
||||
CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
|
||||
for(*dstreg = 15; *dstreg > 0; (*dstreg)--)
|
||||
if ((*srcreg >> *dstreg) & 1) break;
|
||||
if ((srcval >> *dstreg) & 1) break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -2580,7 +2614,7 @@ void (*x86emu_optab2[256])(u8) =
|
|||
/* 0x2f */ x86emuOp2_illegal_op,
|
||||
|
||||
/* 0x30 */ x86emuOp2_illegal_op,
|
||||
/* 0x31 */ x86emuOp2_illegal_op,
|
||||
/* 0x31 */ x86emuOp2_rdtsc,
|
||||
/* 0x32 */ x86emuOp2_illegal_op,
|
||||
/* 0x33 */ x86emuOp2_illegal_op,
|
||||
/* 0x34 */ x86emuOp2_illegal_op,
|
||||
|
|
|
@ -27,128 +27,156 @@ libxf1bppgen_a_SOURCES = \
|
|||
mfbtileC.c \
|
||||
mfbtileG.c
|
||||
|
||||
DISTCLEANFILES = $(libxf1bppgen_a_SOURCES)
|
||||
|
||||
libxf1bppmfb_a_SOURCES = \
|
||||
$(top_srcdir)/mfb/maskbits.c \
|
||||
$(top_srcdir)/mfb/mfbbitblt.c \
|
||||
$(top_srcdir)/mfb/mfbbres.c \
|
||||
$(top_srcdir)/mfb/mfbbresd.c \
|
||||
$(top_srcdir)/mfb/mfbbstore.c \
|
||||
$(top_srcdir)/mfb/mfbclip.c \
|
||||
$(top_srcdir)/mfb/mfbcmap.c \
|
||||
$(top_srcdir)/mfb/mfbfillarc.c \
|
||||
$(top_srcdir)/mfb/mfbfillrct.c \
|
||||
$(top_srcdir)/mfb/mfbfillsp.c \
|
||||
$(top_srcdir)/mfb/mfbfont.c \
|
||||
$(top_srcdir)/mfb/mfbgc.c \
|
||||
$(top_srcdir)/mfb/mfbgetsp.c \
|
||||
$(top_srcdir)/mfb/mfbhrzvert.c \
|
||||
$(top_srcdir)/mfb/mfbimage.c \
|
||||
$(top_srcdir)/mfb/mfbline.c \
|
||||
$(top_srcdir)/mfb/mfbmisc.c \
|
||||
$(top_srcdir)/mfb/mfbpixmap.c \
|
||||
$(top_srcdir)/mfb/mfbpntwin.c \
|
||||
$(top_srcdir)/mfb/mfbpolypnt.c \
|
||||
$(top_srcdir)/mfb/mfbpushpxl.c \
|
||||
$(top_srcdir)/mfb/mfbscrclse.c \
|
||||
$(top_srcdir)/mfb/mfbscrinit.c \
|
||||
$(top_srcdir)/mfb/mfbsetsp.c \
|
||||
$(top_srcdir)/mfb/mfbwindow.c \
|
||||
$(top_srcdir)/mfb/mfbzerarc.c \
|
||||
maskbits.c \
|
||||
mfbbitblt.c \
|
||||
mfbbres.c \
|
||||
mfbbresd.c \
|
||||
mfbbstore.c \
|
||||
mfbclip.c \
|
||||
mfbcmap.c \
|
||||
mfbfillarc.c \
|
||||
mfbfillrct.c \
|
||||
mfbfillsp.c \
|
||||
mfbfont.c \
|
||||
mfbgc.c \
|
||||
mfbgetsp.c \
|
||||
mfbhrzvert.c \
|
||||
mfbimage.c \
|
||||
mfbline.c \
|
||||
mfbmisc.c \
|
||||
mfbpixmap.c \
|
||||
mfbpntwin.c \
|
||||
mfbpolypnt.c \
|
||||
mfbpushpxl.c \
|
||||
mfbscrclse.c \
|
||||
mfbscrinit.c \
|
||||
mfbsetsp.c \
|
||||
mfbwindow.c \
|
||||
mfbzerarc.c
|
||||
|
||||
BUILT_SOURCES = $(libxf1bppgen_a_SOURCES) $(libxf1bppgen_a_SOURCES)
|
||||
|
||||
libxf1bpp_la_SOURCES = $(libxf1bppmfb_a_SOURCES) $(libxf1bppgen_a_SOURCES) \
|
||||
mfbmodule.c
|
||||
|
||||
libxf1bpp_la_SOURCES = $(libxf1bppmfb_a_SOURCES) $(libxf1bppgen_a_SOURCES)
|
||||
|
||||
AM_CFLAGS = -DXF86MONO -include mfbmap.h $(DIX_CFLAGS) $(XORG_CFLAGS)
|
||||
AM_CFLAGS = -DXF86MONO $(DIX_CFLAGS) $(XORG_CFLAGS)
|
||||
INCLUDES = $(XORG_INCS) -I$(top_srcdir)/mfb
|
||||
|
||||
mfbseg.c:
|
||||
echo "#define POLYSEGMENT" > $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbline.c\"" >> $@
|
||||
mfbpgbwht.c:
|
||||
echo "#define MFBPOLYGLYPHBLT xf1bppPolyGlyphBltWhite" > $@
|
||||
echo "#define OPEQ |=" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbplygblt.c\"" >> $@
|
||||
mfbpgbblak.c:
|
||||
echo "#define MFBPOLYGLYPHBLT xf1bppPolyGlyphBltBlack" > $@
|
||||
echo "#define OPEQ &=~" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbplygblt.c\"" >> $@
|
||||
mfbpgbinv.c:
|
||||
echo "#define MFBPOLYGLYPHBLT xf1bppPolyGlyphBltInvert" > $@
|
||||
echo "#define OPEQ ^=" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbplygblt.c\"" >> $@
|
||||
mfbigbwht.c:
|
||||
echo "#define MFBIMAGEGLYPHBLT xf1bppImageGlyphBltWhite" > $@
|
||||
echo "#define OPEQ |=" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbimggblt.c\"" >> $@
|
||||
mfbigbblak.c:
|
||||
echo "#define MFBIMAGEGLYPHBLT xf1bppImageGlyphBltBlack" > $@
|
||||
echo "#define OPEQ &=~" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbimggblt.c\"" >> $@
|
||||
mfbpawhite.c:
|
||||
echo "#define MFBSOLIDFILLAREA xf1bppSolidWhiteArea" > $@
|
||||
echo "#define MFBSTIPPLEFILLAREA xf1bppStippleWhiteArea" >> $@
|
||||
echo "#define OPEQ |=" >> $@
|
||||
echo "#define EQWHOLEWORD =~0" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbpntarea.c\"" >> $@
|
||||
mfbpablack.c:
|
||||
echo "#define MFBSOLIDFILLAREA xf1bppSolidBlackArea" > $@
|
||||
echo "#define MFBSTIPPLEFILLAREA xf1bppStippleBlackArea" >> $@
|
||||
echo "#define OPEQ &=~" >> $@
|
||||
echo "#define EQWHOLEWORD =0" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbpntarea.c\"" >> $@
|
||||
mfbpainv.c:
|
||||
echo "#define MFBSOLIDFILLAREA xf1bppSolidInvertArea" > $@
|
||||
echo "#define MFBSTIPPLEFILLAREA xf1bppStippleInvertArea" >> $@
|
||||
echo "#define OPEQ ^=" >> $@
|
||||
echo "#define EQWHOLEWORD ^=~0" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbpntarea.c\"" >> $@
|
||||
mfbtewhite.c:
|
||||
echo "#define OP" > $@
|
||||
echo "#define CLIPTETEXT xf1bppImageGlyphBltWhite" >> $@
|
||||
echo "#define MFBTEGLYPHBLT xf1bppTEGlyphBltWhite" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbtegblt.c\"" >> $@
|
||||
mfbteblack.c:
|
||||
echo "#define OP ~" > $@
|
||||
echo "#define CLIPTETEXT xf1bppImageGlyphBltBlack" >> $@
|
||||
echo "#define MFBTEGLYPHBLT xf1bppTEGlyphBltBlack" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbtegblt.c\"" >> $@
|
||||
mfbplywhite.c:
|
||||
echo "#define MFBFILLPOLY1RECT xf1bppFillPolyWhite" > $@
|
||||
echo "#define OPEQ |=" >> $@
|
||||
echo "#define EQWHOLEWORD =~0" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbply1rct.c\"" >> $@
|
||||
mfbplyblack.c:
|
||||
echo "#define MFBFILLPOLY1RECT xf1bppFillPolyBlack" > $@
|
||||
echo "#define OPEQ &=~" >> $@
|
||||
echo "#define EQWHOLEWORD =0" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbply1rct.c\"" >> $@
|
||||
mfbplyinv.c:
|
||||
echo "#define MFBFILLPOLY1RECT xf1bppFillPolyInvert" > $@
|
||||
echo "#define OPEQ ^=" >> $@
|
||||
echo "#define EQWHOLEWORD ^=~0" >> $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbply1rct.c\"" >> $@
|
||||
mfbbltC.c:
|
||||
echo "#define MROP Mcopy" > $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
||||
mfbbltX.c:
|
||||
echo "#define MROP Mxor" > $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
||||
mfbbltCI.c:
|
||||
echo "#define MROP McopyInverted" > $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
||||
mfbbltO.c:
|
||||
echo "#define MROP Mor" > $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
||||
mfbbltG.c:
|
||||
echo "#define MROP M0" > $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbblt.c\"" >> $@
|
||||
mfbtileC.c:
|
||||
echo "#define MROP Mcopy" > $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
echo "#include \"$(top_srcdir)/mfb/mfbtile.c\"" >> $@
|
||||
mfbtileG.c:
|
||||
echo "#define MRop M0" > $@
|
||||
echo "#include \"mfbmap.h\"" >> $@
|
||||
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
|
||||
|
|
|
@ -46,8 +46,6 @@ libxf4bpp_la_SOURCES = \
|
|||
mfbzerarc.c \
|
||||
vgamodule.c
|
||||
|
||||
libxf4bpp_la_LIBADD = ../xf1bpp/libxf1bpp.la
|
||||
|
||||
EXTRA_DIST = OScompiler.h ibmTrace.h ppcGCstr.h ppcSpMcro.h vgaReg.h \
|
||||
vgaVideo.h wm3.h NOTES
|
||||
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
bin_PROGRAMS = Xnest
|
||||
noinst_LIBRARIES = libfbcmap.a
|
||||
|
||||
AM_CFLAGS = -DHAVE_XNEST_CONFIG_H \
|
||||
-DNO_HW_ONLY_EXTS \
|
||||
$(DIX_CFLAGS) \
|
||||
$(XNESTMODULES_CFLAGS)
|
||||
|
||||
SRCS = Args.c \
|
||||
Args.h \
|
||||
|
@ -37,23 +43,17 @@ SRCS = Args.c \
|
|||
xnest-config.h \
|
||||
$(top_srcdir)/Xext/dpmsstubs.c \
|
||||
$(top_srcdir)/Xi/stubs.c \
|
||||
$(top_srcdir)/mi/miinitext.c \
|
||||
$(top_srcdir)/fb/fbcmap.c
|
||||
$(top_srcdir)/mi/miinitext.c
|
||||
|
||||
libfbcmap_a_SOURCES = $(top_srcdir)/fb/fbcmap.c
|
||||
libfbcmap_a_CFLAGS = $(AM_CFLAGS) -DXFree86Server
|
||||
|
||||
Xnest_SOURCES = $(SRCS)
|
||||
|
||||
Xnest_LDADD = $(XORG_CORE_LIBS) \
|
||||
$(XNEST_LIBS) \
|
||||
$(XNESTMODULES_LIBS)
|
||||
|
||||
Xnest_LDFLAGS =
|
||||
|
||||
AM_CFLAGS = -DHAVE_XNEST_CONFIG_H \
|
||||
-DNO_HW_ONLY_EXTS \
|
||||
-DXFree86Server \
|
||||
$(DIX_CFLAGS) \
|
||||
$(XNESTMODULES_CFLAGS)
|
||||
$(XNESTMODULES_LIBS) \
|
||||
libfbcmap.a
|
||||
|
||||
EXTRA_DIST = os2Stub.c \
|
||||
icon \
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
/* Operating System Vendor */
|
||||
#undef OSVENDOR
|
||||
|
||||
/* Builder string */
|
||||
#undef BUILDERSTRING
|
||||
|
||||
/* Default font path */
|
||||
#undef COMPILEDDEFAULTFONTPATH
|
||||
|
||||
|
@ -93,6 +96,9 @@
|
|||
/* Define to 1 if you have the <asm/mtrr.h> header file. */
|
||||
#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. */
|
||||
#undef HAVE_DBM_H
|
||||
|
||||
|
@ -311,6 +317,9 @@
|
|||
/* Use rgb.txt directly */
|
||||
#undef USE_RGB_TXT
|
||||
|
||||
/* Define to use byteswap macros from <sys/endian.h> */
|
||||
#undef USE_SYS_ENDIAN_H
|
||||
|
||||
/* unaligned word accesses behave as expected */
|
||||
#undef WORKING_UNALIGNED_INT
|
||||
|
||||
|
@ -416,16 +425,8 @@
|
|||
/* Endian order */
|
||||
#undef X_BYTE_ORDER
|
||||
|
||||
/* BSD-compliant source */
|
||||
#undef _BSD_SOURCE
|
||||
|
||||
/* POSIX-compliant source */
|
||||
#undef _POSIX_SOURCE
|
||||
|
||||
#ifndef _XOPEN_SOURCE
|
||||
/* X/Open-compliant source */
|
||||
#undef _XOPEN_SOURCE
|
||||
#endif
|
||||
/* Enable GNU and other extensions to the C environment for GLIBC */
|
||||
#undef _GNU_SOURCE
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
@ -472,4 +473,13 @@
|
|||
/* Path to XErrorDB file */
|
||||
#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_ */
|
||||
|
|
|
@ -103,7 +103,7 @@ extern int ProcUngrabButton(ClientPtr /* client */);
|
|||
extern int ProcRecolorCursor(ClientPtr /* client */);
|
||||
|
||||
#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 /* DIXEVENTS_H */
|
||||
|
|
|
@ -421,7 +421,7 @@ extern int GetProximityEvents(
|
|||
extern void PostSyntheticMotion(
|
||||
int x,
|
||||
int y,
|
||||
ScreenPtr pScreen,
|
||||
int screen,
|
||||
unsigned long time);
|
||||
|
||||
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 "exglobals.h"
|
||||
|
||||
#ifdef DPMSExtension
|
||||
# include "dpmsproc.h"
|
||||
# define DPMS_SERVER
|
||||
# include <X11/extensions/dpms.h>
|
||||
#endif
|
||||
|
||||
#define QUEUE_SIZE 256
|
||||
|
||||
typedef struct _Event {
|
||||
|
@ -183,6 +189,13 @@ mieqProcessInputEvents()
|
|||
while (miEventQueue.head != miEventQueue.tail) {
|
||||
if (screenIsSaved == SCREEN_SAVER_ON)
|
||||
SaveScreens (SCREEN_SAVER_OFF, ScreenSaverReset);
|
||||
#ifdef DPMSExtension
|
||||
else if (DPMSPowerLevel != DPMSModeOn)
|
||||
SetScreenSaverTimer();
|
||||
|
||||
if (DPMSPowerLevel != DPMSModeOn)
|
||||
DPMSSet(DPMSModeOn);
|
||||
#endif
|
||||
|
||||
e = &miEventQueue.events[miEventQueue.head];
|
||||
/* Assumption - screen switching can only occur on motion events. */
|
||||
|
|
|
@ -474,6 +474,10 @@ void
|
|||
miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
||||
unsigned long time)
|
||||
{
|
||||
xEvent* events;
|
||||
int i, nevents;
|
||||
int valuators[2];
|
||||
|
||||
SetupScreen(pScreen);
|
||||
|
||||
if (pDev && (pDev->coreEvents || pDev == inputInfo.pointer) &&
|
||||
|
@ -488,4 +492,23 @@ miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
|||
miPointer.x = x;
|
||||
miPointer.y = y;
|
||||
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 *) \
|
||||
&(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
|
||||
static void
|
||||
_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;
|
||||
RegionPtr pDamageRegion;
|
||||
RegionRec pixClip;
|
||||
Bool was_empty;
|
||||
RegionRec tmpRegion;
|
||||
BoxRec tmpBox;
|
||||
int draw_x, draw_y;
|
||||
#ifdef COMPOSITE
|
||||
int screen_x = 0, screen_y = 0;
|
||||
|
@ -256,41 +299,18 @@ damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
|
|||
*/
|
||||
if (draw_x || draw_y)
|
||||
REGION_TRANSLATE (pScreen, pDamageRegion, -draw_x, -draw_y);
|
||||
|
||||
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 the damage rec has been flagged to report damage after the op has
|
||||
* completed, then union it into the delayed damage region, which will
|
||||
* be used for reporting after calling down, and skip the reporting
|
||||
*/
|
||||
if (!pDamage->reportAfter) {
|
||||
DamageReportDamage (pDamage, pDamageRegion);
|
||||
} else {
|
||||
REGION_UNION(pScreen, &pDamage->pendingDamage,
|
||||
&pDamage->pendingDamage, pDamageRegion);
|
||||
}
|
||||
|
||||
/*
|
||||
* translate original region back
|
||||
*/
|
||||
|
@ -305,6 +325,21 @@ damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
|
|||
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
|
||||
#define damageDamageBox(d,b,m) _damageDamageBox(d,b,m,__FUNCTION__)
|
||||
static void
|
||||
|
@ -550,6 +585,7 @@ damageComposite (CARD8 op,
|
|||
yDst,
|
||||
width,
|
||||
height);
|
||||
damageReportPostOp (pDst->pDrawable);
|
||||
wrap (pScrPriv, ps, Composite, damageComposite);
|
||||
}
|
||||
|
||||
|
@ -616,6 +652,7 @@ damageGlyphs (CARD8 op,
|
|||
}
|
||||
unwrap (pScrPriv, ps, Glyphs);
|
||||
(*ps->Glyphs) (op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
|
||||
damageReportPostOp (pDst->pDrawable);
|
||||
wrap (pScrPriv, ps, Glyphs, damageGlyphs);
|
||||
}
|
||||
#endif
|
||||
|
@ -668,6 +705,7 @@ damageFillSpans(DrawablePtr pDrawable,
|
|||
|
||||
(*pGC->ops->FillSpans)(pDrawable, pGC, npt, ppt, pwidth, fSorted);
|
||||
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -715,6 +753,7 @@ damageSetSpans(DrawablePtr pDrawable,
|
|||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||
}
|
||||
(*pGC->ops->SetSpans)(pDrawable, pGC, pcharsrc, ppt, pwidth, npt, fSorted);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -746,6 +785,7 @@ damagePutImage(DrawablePtr pDrawable,
|
|||
}
|
||||
(*pGC->ops->PutImage)(pDrawable, pGC, depth, x, y, w, h,
|
||||
leftPad, format, pImage);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -789,6 +829,7 @@ damageCopyArea(DrawablePtr pSrc,
|
|||
|
||||
ret = (*pGC->ops->CopyArea)(pSrc, pDst,
|
||||
pGC, srcx, srcy, width, height, dstx, dsty);
|
||||
damageReportPostOp (pDst);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDst);
|
||||
return ret;
|
||||
}
|
||||
|
@ -834,6 +875,7 @@ damageCopyPlane(DrawablePtr pSrc,
|
|||
|
||||
ret = (*pGC->ops->CopyPlane)(pSrc, pDst,
|
||||
pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
|
||||
damageReportPostOp (pDst);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDst);
|
||||
return ret;
|
||||
}
|
||||
|
@ -875,6 +917,7 @@ damagePolyPoint(DrawablePtr pDrawable,
|
|||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||
}
|
||||
(*pGC->ops->PolyPoint)(pDrawable, pGC, mode, npt, ppt);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -948,6 +991,7 @@ damagePolylines(DrawablePtr pDrawable,
|
|||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||
}
|
||||
(*pGC->ops->Polylines)(pDrawable, pGC, mode, npt, ppt);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1026,6 +1070,7 @@ damagePolySegment(DrawablePtr pDrawable,
|
|||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||
}
|
||||
(*pGC->ops->PolySegment)(pDrawable, pGC, nSeg, pSeg);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1087,6 +1132,7 @@ damagePolyRectangle(DrawablePtr pDrawable,
|
|||
}
|
||||
}
|
||||
(*pGC->ops->PolyRectangle)(pDrawable, pGC, nRects, pRects);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1139,6 +1185,7 @@ damagePolyArc(DrawablePtr pDrawable,
|
|||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||
}
|
||||
(*pGC->ops->PolyArc)(pDrawable, pGC, nArcs, pArcs);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1197,6 +1244,7 @@ damageFillPolygon(DrawablePtr pDrawable,
|
|||
}
|
||||
|
||||
(*pGC->ops->FillPolygon)(pDrawable, pGC, shape, mode, npt, ppt);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1235,6 +1283,7 @@ damagePolyFillRect(DrawablePtr pDrawable,
|
|||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||
}
|
||||
(*pGC->ops->PolyFillRect)(pDrawable, pGC, nRects, pRects);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1276,6 +1325,7 @@ damagePolyFillArc(DrawablePtr pDrawable,
|
|||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||
}
|
||||
(*pGC->ops->PolyFillArc)(pDrawable, pGC, nArcs, pArcs);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1386,6 +1436,7 @@ damagePolyText8(DrawablePtr pDrawable,
|
|||
Linear8Bit, TT_POLY8);
|
||||
else
|
||||
x = (*pGC->ops->PolyText8)(pDrawable, pGC, x, y, count, chars);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
return x;
|
||||
}
|
||||
|
@ -1406,6 +1457,7 @@ damagePolyText16(DrawablePtr pDrawable,
|
|||
TT_POLY16);
|
||||
else
|
||||
x = (*pGC->ops->PolyText16)(pDrawable, pGC, x, y, count, chars);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
return x;
|
||||
}
|
||||
|
@ -1425,6 +1477,7 @@ damageImageText8(DrawablePtr pDrawable,
|
|||
Linear8Bit, TT_IMAGE8);
|
||||
else
|
||||
(*pGC->ops->ImageText8)(pDrawable, pGC, x, y, count, chars);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1444,6 +1497,7 @@ damageImageText16(DrawablePtr pDrawable,
|
|||
TT_IMAGE16);
|
||||
else
|
||||
(*pGC->ops->ImageText16)(pDrawable, pGC, x, y, count, chars);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1462,6 +1516,7 @@ damageImageGlyphBlt(DrawablePtr pDrawable,
|
|||
nglyph, ppci, TRUE, pGC->subWindowMode);
|
||||
(*pGC->ops->ImageGlyphBlt)(pDrawable, pGC, x, y, nglyph,
|
||||
ppci, pglyphBase);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1479,6 +1534,7 @@ damagePolyGlyphBlt(DrawablePtr pDrawable,
|
|||
nglyph, ppci, FALSE, pGC->subWindowMode);
|
||||
(*pGC->ops->PolyGlyphBlt)(pDrawable, pGC, x, y, nglyph,
|
||||
ppci, pglyphBase);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1512,6 +1568,7 @@ damagePushPixels(GCPtr pGC,
|
|||
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
|
||||
}
|
||||
(*pGC->ops->PushPixels)(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg);
|
||||
damageReportPostOp (pDrawable);
|
||||
DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
|
||||
}
|
||||
|
||||
|
@ -1591,10 +1648,12 @@ damagePaintWindow(WindowPtr pWindow,
|
|||
if(what == PW_BACKGROUND) {
|
||||
unwrap (pScrPriv, pScreen, PaintWindowBackground);
|
||||
(*pScreen->PaintWindowBackground) (pWindow, prgn, what);
|
||||
damageReportPostOp (&pWindow->drawable);
|
||||
wrap (pScrPriv, pScreen, PaintWindowBackground, damagePaintWindow);
|
||||
} else {
|
||||
unwrap (pScrPriv, pScreen, PaintWindowBorder);
|
||||
(*pScreen->PaintWindowBorder) (pWindow, prgn, what);
|
||||
damageReportPostOp (&pWindow->drawable);
|
||||
wrap (pScrPriv, pScreen, PaintWindowBorder, damagePaintWindow);
|
||||
}
|
||||
}
|
||||
|
@ -1623,6 +1682,7 @@ damageCopyWindow(WindowPtr pWindow,
|
|||
}
|
||||
unwrap (pScrPriv, pScreen, CopyWindow);
|
||||
(*pScreen->CopyWindow) (pWindow, ptOldOrg, prgnSrc);
|
||||
damageReportPostOp (&pWindow->drawable);
|
||||
wrap (pScrPriv, pScreen, CopyWindow, damageCopyWindow);
|
||||
}
|
||||
|
||||
|
@ -1654,6 +1714,7 @@ damageRestoreAreas (PixmapPtr pPixmap,
|
|||
unwrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas);
|
||||
(*pScreen->BackingStoreFuncs.RestoreAreas) (pPixmap, prgn,
|
||||
xorg, yorg, pWindow);
|
||||
damageReportPostOp (&pWindow->drawable);
|
||||
wrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas,
|
||||
damageRestoreAreas);
|
||||
}
|
||||
|
@ -1820,12 +1881,14 @@ DamageCreate (DamageReportFunc damageReport,
|
|||
pDamage->pNext = 0;
|
||||
pDamage->pNextWin = 0;
|
||||
REGION_NULL(pScreen, &pDamage->damage);
|
||||
REGION_NULL(pScreen, &pDamage->pendingDamage);
|
||||
|
||||
pDamage->damageLevel = damageLevel;
|
||||
pDamage->isInternal = isInternal;
|
||||
pDamage->closure = closure;
|
||||
pDamage->isWindow = FALSE;
|
||||
pDamage->pDrawable = 0;
|
||||
pDamage->reportAfter = FALSE;
|
||||
|
||||
pDamage->damageReport = damageReport;
|
||||
pDamage->damageDestroy = damageDestroy;
|
||||
|
@ -1909,6 +1972,7 @@ DamageDestroy (DamagePtr pDamage)
|
|||
if (pDamage->damageDestroy)
|
||||
(*pDamage->damageDestroy) (pDamage, pDamage->closure);
|
||||
REGION_UNINIT (pDamage->pDrawable->pScreen, &pDamage->damage);
|
||||
REGION_UNINIT (pDamage->pDrawable->pScreen, &pDamage->pendingDamage);
|
||||
xfree (pDamage);
|
||||
}
|
||||
|
||||
|
@ -1962,4 +2026,16 @@ DamageDamageRegion (DrawablePtr pDrawable,
|
|||
RegionPtr pRegion)
|
||||
{
|
||||
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,
|
||||
const RegionPtr pRegion);
|
||||
|
||||
void
|
||||
DamageSetReportAfterOp (DamagePtr pDamage, Bool reportAfter);
|
||||
|
||||
#endif /* _DAMAGE_H_ */
|
||||
|
|
|
@ -48,6 +48,9 @@ typedef struct _damage {
|
|||
|
||||
DamageReportFunc damageReport;
|
||||
DamageDestroyFunc damageDestroy;
|
||||
|
||||
Bool reportAfter;
|
||||
RegionRec pendingDamage;
|
||||
} DamageRec;
|
||||
|
||||
typedef struct _damageScrPriv {
|
||||
|
|
|
@ -337,10 +337,7 @@ WaitForSomething(int *pClientsReady)
|
|||
if (XFD_ANYSET(&tmp_set))
|
||||
QueueWorkProc(EstablishNewConnections, NULL,
|
||||
(pointer)&LastSelectMask);
|
||||
#ifdef DPMSExtension
|
||||
if (XFD_ANYSET (&devicesReadable) && (DPMSPowerLevel != DPMSModeOn))
|
||||
DPMSSet(DPMSModeOn);
|
||||
#endif
|
||||
|
||||
if (XFD_ANYSET (&devicesReadable) || XFD_ANYSET (&clientsReadable))
|
||||
break;
|
||||
#ifdef WIN32
|
||||
|
|
18
os/utils.c
18
os/utils.c
|
@ -53,23 +53,6 @@ OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#include <dix-config.h>
|
||||
#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__
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
|
@ -80,6 +63,7 @@ OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#endif
|
||||
#include <X11/Xos.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "misc.h"
|
||||
#include <X11/X.h>
|
||||
#define XSERV_t
|
||||
|
|
|
@ -243,6 +243,10 @@ Bool RRScreenInit(ScreenPtr pScreen)
|
|||
pScrPriv->maxWidth = pScrPriv->minWidth = pScreen->width;
|
||||
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
|
||||
pScrPriv->rrScreenSetSize = 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
Block a user