Commit 7982eca6 authored by Emma Anholt's avatar Emma Anholt
Browse files

Revert changes outside of glamor from the glamor branch.

We want to merge the external glamor code to the xserver, with the
internal history retained.  However, we don't want a bunch of
non-building changes along the way, so remove all the build system and
support code outside of glamor for now.
parent 284328a6
......@@ -17,10 +17,6 @@ if RECORD
RECORD_DIR=record
endif
if GLAMOR
GLAMOR_DIR=glamor
endif
SUBDIRS = \
doc \
man \
......@@ -42,7 +38,6 @@ SUBDIRS = \
$(COMPOSITE_DIR) \
$(GLX_DIR) \
exa \
$(GLAMOR_DIR) \
config \
hw \
test
......@@ -93,7 +88,6 @@ DIST_SUBDIRS = \
composite \
glx \
exa \
glamor \
config \
hw \
test
......
Glamor setup
1. Prerequirement.
Please install makedepend and libudev-devel firstly.
2. Build xserver-glamor.
Then do the following steps one by one.
2.1. get latest glamor at github.
2.2 Setup xorg development environment, use xserver-glamor to
replace the official xserver.
Here is the link of how to setup xorg development environment:
http://www.x.org/wiki/ModularDevelopersGuide
For most of the packages, we prefer latest git version. Especially
for the mesa package.
When build mesa, use the following parameters: (assume you want to
install the experimental xorg to /opt/gfx-test)
#mesa/./autogen.sh --prefix=/opt/gfx-test --with-egl-platforms=drm --disable-gallium --disable-gallium-egl
build xserver-glamor as below:
#xserver-glamor/./autogen.sh --disable-glx --enable-kdrive --enable-xephyr
Once you finish all the building process, you can have a try as below:
xserver-glamor#startx -- `pwd`/hw/xfree86/Xorg If you can find the
following messages on the console, then everything should work correctly.
Mesa: Initializing x86-64 optimizations
3. Restrictions:
Currently, glamor doesn't support glx extension, will be fixed in the future.
Glamor setup done.
X Server
X Server
The X server accepts requests from client applications to create windows,
which are (normally rectangular) "virtual screens" that the client program
......
......@@ -646,8 +646,6 @@ AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest serv
AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto])
AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no])
AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto])
AC_ARG_ENABLE(glamor, AS_HELP_STRING([--enable-glamor], [Build glamor dix module (default: no)]), [GLAMOR=$enableval], [GLAMOR=no])
AC_ARG_ENABLE(glamor-ddx, AS_HELP_STRING([--enable-glamor-ddx], [Build glamor ddx (default: no)]), [GLAMOR_DDX=$enableval], [GLAMOR_DDX=no])
dnl kdrive and its subsystems
AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
AC_ARG_ENABLE(xephyr, AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
......@@ -657,8 +655,6 @@ dnl kdrive options
AC_ARG_ENABLE(kdrive-kbd, AS_HELP_STRING([--enable-kdrive-kbd], [Build kbd driver for kdrive (default: auto)]), [KDRIVE_KBD=$enableval], [KDRIVE_KBD=auto])
AC_ARG_ENABLE(kdrive-mouse, AC_HELP_STRING([--enable-kdrive-mouse], [Build mouse driver for kdrive (default: auto)]), [KDRIVE_MOUSE=$enableval], [KDRIVE_MOUSE=auto])
AC_ARG_ENABLE(kdrive-evdev, AC_HELP_STRING([--enable-kdrive-evdev], [Build evdev driver for kdrive (default: auto)]), [KDRIVE_EVDEV=$enableval], [KDRIVE_EVDEV=auto])
dnl glamor options
AC_ARG_ENABLE(glamor-gles2, AS_HELP_STRING([--enable-glamor-gles2], [Build glamor based on gles2 (default: no)]), [GLAMOR_GLES2=$enableval], [GLAMOR_GLES2=no])
dnl chown/chmod to be setuid root as part of build
......@@ -801,9 +797,7 @@ LIBUDEV="libudev >= 143"
LIBSELINUX="libselinux >= 2.0.86"
LIBDBUS="dbus-1 >= 1.0"
LIBPIXMAN="pixman-1 >= 0.21.8"
LIBEGL="egl"
LIBGLESV2="glesv2"
LIBGBM="gbm"
dnl Pixman is always required, but we separate it out so we can link
dnl specific modules against it
PKG_CHECK_MODULES(PIXMAN, $LIBPIXMAN)
......@@ -1771,37 +1765,6 @@ AM_CONDITIONAL([SOLARIS_VT], [test "x$solaris_vt" = xyes])
AM_CONDITIONAL([DGA], [test "x$DGA" = xyes])
AM_CONDITIONAL([XF86VIDMODE], [test "x$XF86VIDMODE" = xyes])
dnl glamor
if [test "x$XEPHYR" = xyes || test "x$GLAMOR_DDX" = xyes] ; then
GLAMOR=yes
fi
AM_CONDITIONAL([GLAMOR], [test "x$GLAMOR" = xyes])
AM_CONDITIONAL([GLAMOR_GLES2], [test "x$GLAMOR_GLES2" = xyes])
AM_CONDITIONAL([GLAMOR_DDX], [test "x$GLAMOR_DDX" = xyes])
if test "x$GLAMOR" = xyes; then
AC_DEFINE(GLAMOR,1,[Build Glamor])
if test "x$GLAMOR_GLES2" = xyes; then
AC_DEFINE(GLAMOR_GLES2,1,[Build glamor over GLES2])
PKG_CHECK_MODULES(GLESV2, $LIBGLESV2)
REQUIRED_LIBS="$REQUIRED_LIBS $LIBGLESV2"
else
AC_DEFINE(GLAMOR_GL,1,[Build glamor over GL])
PKG_CHECK_MODULES(GL, $LIBGL)
REQUIRED_LIBS="$REQUIRED_LIBS $LIBGL"
fi
if test "x$GLAMOR_DDX" = xyes; then
AC_DEFINE(GLAMOR_DDX,1,[Enable glamor ddx driver])
PKG_CHECK_MODULES(EGL, $LIBEGL)
PKG_CHECK_MODULES(EGL, $LIBGBM)
REQUIRED_LIBS="$REQUIRED_LIBS $LIBEGL"
fi
fi
dnl XWin DDX
AC_MSG_CHECKING([whether to build XWin DDX])
......@@ -2035,10 +1998,6 @@ if test "$KDRIVE" = yes; then
if test "x$DRI" = xyes && test "x$GLX" = xyes; then
XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm"
fi
# The glamor stuff requires libGL, but that conflicts with GLX currently.
if test "x$GLX" = xno; then
XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS gl"
fi
PKG_CHECK_MODULES(XEPHYR, $XEPHYR_REQUIRED_LIBS, [xephyr="yes"], [xephyr="no"])
if test "x$XEPHYR" = xauto; then
......@@ -2174,7 +2133,6 @@ Xext/Makefile
Xi/Makefile
xfixes/Makefile
exa/Makefile
glamor/Makefile
hw/Makefile
hw/xfree86/Makefile
hw/xfree86/common/Makefile
......@@ -2212,7 +2170,6 @@ hw/xfree86/utils/Makefile
hw/xfree86/utils/man/Makefile
hw/xfree86/utils/cvt/Makefile
hw/xfree86/utils/gtf/Makefile
hw/xfree86/glamor/Makefile
hw/dmx/config/Makefile
hw/dmx/config/man/Makefile
hw/dmx/doc/Makefile
......
......@@ -7,8 +7,7 @@ INCLUDES = \
@XEPHYR_CFLAGS@ \
@DRIPROTO_CFLAGS@ \
-I$(top_srcdir) \
-I$(top_srcdir)/exa \
-I$(top_srcdir)/glamor
-I$(top_srcdir)/exa
if XV
LIBXEPHYR_HOSTXV=libxephyr-hostxv.la
......@@ -48,7 +47,6 @@ XEPHYR_SRCS = \
ephyr.h \
ephyrlog.h \
ephyr_draw.c \
ephyr_glamor.c \
os.c
libxephyr_hostx_la_SOURCES = $(HOSTX_SRCS)
......@@ -66,28 +64,18 @@ libxephyr_la_SOURCES = $(XEPHYR_SRCS)
Xephyr_SOURCES = \
ephyrinit.c
if GLAMOR_GLES2
GLAMOR_GL_LIB = -lGLESv2
else
GLAMOR_GL_LIB = -lGL
endif
Xephyr_LDADD = \
libxephyr.la \
libxephyr-hostx.la \
$(LIBXEPHYR_HOSTXV) \
$(LIBXEPHYR_HOSTDRI) \
$(top_builddir)/exa/libexa.la \
$(top_builddir)/glamor/libglamor.la \
@KDRIVE_LIBS@ \
@XEPHYR_LIBS@ \
$(GLAMOR_GL_LIB)
@XEPHYR_LIBS@
Xephyr_DEPENDENCIES = \
libxephyr.la \
libxephyr-hostx.la \
$(top_builddir)/exa/libexa.la \
$(top_builddir)/glamor/libglamor.la \
$(LIBXEPHYR_HOSTXV) \
$(LIBXEPHYR_HOSTDRI) \
@KDRIVE_LOCAL_LIBS@
......
......@@ -394,7 +394,7 @@ ephyrSetInternalDamage (ScreenPtr pScreen)
KdScreenInfo *screen = pScreenPriv->screen;
EphyrScrPriv *scrpriv = screen->driver;
PixmapPtr pPixmap = NULL;
scrpriv->pDamage = DamageCreate ((DamageReportFunc) 0,
(DamageDestroyFunc) 0,
DamageReportNone,
......@@ -669,9 +669,7 @@ ephyrInitScreen (ScreenPtr pScreen)
}
if (!ephyrNoDRI) {
ephyrDRIExtensionInit (pScreen) ;
#if 0
ephyrHijackGLXExtension () ;
#endif
}
#endif
......@@ -684,7 +682,6 @@ ephyrInitScreen (ScreenPtr pScreen)
return TRUE;
}
Bool
ephyrFinishInitScreen (ScreenPtr pScreen)
{
......@@ -701,7 +698,6 @@ ephyrFinishInitScreen (ScreenPtr pScreen)
return TRUE;
}
extern Bool ephyr_glamor;
Bool
ephyrCreateResources (ScreenPtr pScreen)
......@@ -712,20 +708,14 @@ ephyrCreateResources (ScreenPtr pScreen)
EPHYR_LOG("mark pScreen=%p mynum=%d shadow=%d",
pScreen, pScreen->myNum, scrpriv->shadow);
if (scrpriv->shadow)
return KdShadowSet (pScreen,
scrpriv->randr,
ephyrShadowUpdate,
ephyrWindowLinear);
else {
if (ephyr_glamor) {
KdScreenPriv(pScreen);
KdScreenInfo *screen = pScreenPriv->screen;
if (!glamor_glyphs_init(pScreen)) return FALSE;
glamor_set_screen_pixmap_texture(pScreen, screen->width, screen->height, 0);
}
else
return ephyrSetInternalDamage(pScreen);
}
}
void
......
......@@ -196,13 +196,6 @@ ephyrDrawDisable(ScreenPtr pScreen);
void
ephyrDrawFini(ScreenPtr pScreen);
/* ephyr_glamor.c */
Bool ephyr_glamor_init(ScreenPtr pScreen);
void ephyr_glamor_enable(ScreenPtr pScreen);
void ephyr_glamor_disable(ScreenPtr pScreen);
void ephyr_glamor_fini(ScreenPtr pScreen);
void ephyr_glamor_host_paint_rect(ScreenPtr pScreen);
/*ephyvideo.c*/
Bool ephyrInitVideo(ScreenPtr pScreen) ;
......
/*
* Copyright © 2008 Intel Corporation
*
* 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, sublicense,
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS 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.
*
* Authors:
* Eric Anholt <eric@anholt.net>
*
*/
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
#endif
#include "ephyr.h"
#include "glamor.h"
/**
* This function initializes EXA to use the fake acceleration implementation
* which just falls through to software. The purpose is to have a reliable,
* correct driver with which to test changes to the EXA core.
*/
Bool
ephyr_glamor_init(ScreenPtr screen)
{
KdScreenPriv(screen);
KdScreenInfo *kd_screen = pScreenPriv->screen;
ephyr_glamor_host_create_context(kd_screen);
glamor_init(screen, GLAMOR_HOSTX);
return TRUE;
}
void
ephyr_glamor_enable(ScreenPtr screen)
{
}
void
ephyr_glamor_disable(ScreenPtr screen)
{
}
void
ephyr_glamor_fini(ScreenPtr screen)
{
glamor_fini(screen);
}
......@@ -31,7 +31,6 @@
extern Window EphyrPreExistingHostWin;
extern Bool EphyrWantGrayScale;
extern Bool ephyr_glamor;
extern Bool kdHasPointer;
extern Bool kdHasKbd;
......@@ -118,7 +117,6 @@ ddxUseMsg (void)
ErrorF("-host-cursor Re-use exisiting X host server cursor\n");
ErrorF("-fullscreen Attempt to run Xephyr fullscreen\n");
ErrorF("-grayscale Simulate 8bit grayscale\n");
ErrorF("-glamor Enable 2D acceleration using glamor\n");
ErrorF("-fakexa Simulate acceleration using software rendering\n");
ErrorF("-verbosity <level> Set log verbosity level\n");
#ifdef GLXEXT
......@@ -222,15 +220,6 @@ ddxProcessArgument (int argc, char **argv, int i)
EphyrWantGrayScale = 1;
return 1;
}
else if (!strcmp (argv[i], "-glamor"))
{
ephyr_glamor = TRUE;
ephyrFuncs.initAccel = ephyr_glamor_init;
ephyrFuncs.enableAccel = ephyr_glamor_enable;
ephyrFuncs.disableAccel = ephyr_glamor_disable;
ephyrFuncs.finiAccel = ephyr_glamor_fini;
return 1;
}
else if (!strcmp (argv[i], "-fakexa"))
{
ephyrFuncs.initAccel = ephyrDrawInit;
......
......@@ -46,7 +46,6 @@
#include <unistd.h>
#include <string.h> /* for memset */
#include <time.h>
#include <err.h>
#include <sys/ipc.h>
#include <sys/shm.h>
......@@ -62,7 +61,6 @@
#include <GL/glx.h>
#endif /* XF86DRI */
#include "ephyrlog.h"
#include "GL/glx.h"
#ifdef XF86DRI
extern Bool XF86DRIQueryExtension (Display *dpy,
......@@ -97,7 +95,6 @@ struct EphyrHostXVars
Display *dpy;
int screen;
Visual *visual;
XVisualInfo *visual_info;
Window winroot;
GC gc;
int depth;
......@@ -126,14 +123,10 @@ extern int monitorResolution;
char *ephyrResName = NULL;
int ephyrResNameFromCmd = 0;
char *ephyrTitle = NULL;
Bool ephyr_glamor = FALSE;
static void
hostx_set_fullscreen_hint(void);
static void
ephyr_glamor_get_visual(void);
/* X Error traps */
static int trapped_error_code = 0;
......@@ -369,11 +362,8 @@ hostx_init (void)
HostX.winroot = RootWindow(HostX.dpy, HostX.screen);
HostX.gc = XCreateGC(HostX.dpy, HostX.winroot, 0, NULL);
HostX.depth = DefaultDepth(HostX.dpy, HostX.screen);
if (ephyr_glamor) {
ephyr_glamor_get_visual();
} else {
HostX.visual = DefaultVisual(HostX.dpy, HostX.screen);
}
HostX.visual = DefaultVisual(HostX.dpy, HostX.screen);
class_hint = XAllocClassHint();
for (index = 0 ; index < HostX.n_screens ; index++)
......@@ -767,11 +757,6 @@ hostx_screen_init (EphyrScreenInfo screen,
static void hostx_paint_debug_rect (struct EphyrHostScreen *host_screen,
int x, int y,
int width, int height);
static void
ephyr_glamor_paint_rect (EphyrScreenInfo screen,
int sx, int sy,
int dx, int dy,
int width, int height);
void
hostx_paint_rect (EphyrScreenInfo screen,
......@@ -783,11 +768,6 @@ hostx_paint_rect (EphyrScreenInfo screen,
EPHYR_DBG ("painting in screen %d\n", host_screen->mynum) ;
if (ephyr_glamor) {
ephyr_glamor_paint_rect(screen, sx, sy, dx, dy, width, height);
return;
}
/*
* Copy the image data updated by the shadow layer
* on to the window
......@@ -1465,82 +1445,3 @@ hostx_has_glx (void)
}
#endif /* XF86DRI */
static void
ephyr_glamor_get_visual(void)
{
Display *dpy = HostX.dpy;
int attribs[] = {GLX_RGBA,
GLX_RED_SIZE, 1,
GLX_GREEN_SIZE, 1,
GLX_BLUE_SIZE, 1,
GLX_DOUBLEBUFFER, 1,
None};
XVisualInfo *visual_info;
int event_base = 0, error_base = 0;
if (!glXQueryExtension (dpy, &event_base, &error_base))
errx(1, "Couldn't find GLX extension\n");
visual_info = glXChooseVisual(dpy, DefaultScreen(dpy), attribs);
if (visual_info == NULL)
errx(1, "Couldn't get RGB visual\n");
HostX.visual_info = visual_info;
HostX.visual = visual_info->visual;
}
void
ephyr_glamor_host_create_context(EphyrScreenInfo ephyr_screen)
{
Display *dpy = HostX.dpy;
GLXContext ctx;
struct EphyrHostScreen *host_screen;
host_screen = host_screen_from_screen_info(ephyr_screen);
ctx = glXCreateContext(dpy, HostX.visual_info, NULL, True);
if (ctx == NULL)
errx(1, "glXCreateContext failed\n");
if (!glXMakeCurrent(dpy, host_screen->win, ctx))
errx(1, "glXMakeCurrent failed\n");
}
static void
ephyr_glamor_paint_rect (EphyrScreenInfo screen,
int sx, int sy,
int dx, int dy,
int width, int height)
{
struct EphyrHostScreen *host_screen = host_screen_from_screen_info (screen);
static PFNGLXCOPYSUBBUFFERMESAPROC pglXCopySubBufferMESA = NULL;
if (!pglXCopySubBufferMESA) {
pglXCopySubBufferMESA = (PFNGLXCOPYSUBBUFFERMESAPROC)
glXGetProcAddressARB((const GLubyte*)"glXCopySubBufferMESA");
assert(pglXCopySubBufferMESA);
}
/* Always copy the full screen until we get things rendering correctly. */
#if 0
pglXCopySubBufferMESA(HostX.dpy, host_screen->win,
sx, sy, width, height);
#else
pglXCopySubBufferMESA(HostX.dpy, host_screen->win,
0, 0,
host_screen->win_width, host_screen->win_height);
#endif
}
struct glamor_gl_dispatch;
extern Bool
glamor_gl_dispatch_init_impl(struct glamor_gl_dispatch *dispatch, int gl_version, void* func);
Bool
glamor_gl_dispatch_init(void *screen, struct glamor_gl_dispatch *dispatch, int gl_version)
{
if (!glamor_gl_dispatch_init_impl(dispatch, gl_version, glXGetProcAddress))
return FALSE;
return TRUE;
}
......@@ -261,7 +261,4 @@ int hostx_has_dri (void) ;
int hostx_has_glx (void) ;
#endif /* XF86DRI */
/* ephyr_glamor_host.c */
void ephyr_glamor_host_create_context(EphyrScreenInfo ephyr_screen);
#endif /*_XLIBS_STUFF_H_*/
......@@ -27,16 +27,12 @@ if INT10MODULE
INT10_SUBDIR = int10
endif
if GLAMOR
GLAMOR_DIR=glamor
endif
SUBDIRS = common ddc i2c x86emu $(INT10_SUBDIR) fbdevhw $(GLAMOR_DIR) os-support parser \
SUBDIRS = common ddc i2c x86emu $(INT10_SUBDIR) fbdevhw os-support parser \
ramdac shadowfb $(VBE_SUBDIR) $(VGAHW_SUBDIR) $(XAA_SUBDIR) \
loader dixmods exa modes \
$(DRI_SUBDIR) $(DRI2_SUBDIR) $(XF86UTILS_SUBDIR) doc man
DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw $(GLAMOR_DIR) os-support \
DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
parser ramdac shadowfb vbe vgahw xaa \
loader dixmods dri dri2 exa modes \
utils doc man
......
......@@ -89,10 +89,4 @@ if LNXACPI
XORG_CFLAGS += -DHAVE_ACPI
endif
if GLAMOR_DDX
GLAMOR_DDX_CFLAGS = -DGLAMOR_DDX
endif
AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) $(GLAMOR_DDX_CFLAGS)
AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
......@@ -1118,11 +1118,7 @@ videoPtrToDriverList(struct pci_device *dev,
} else if (dev->device_id == 0x8108) {
break; /* "hooray" for poulsbo */
} else {
#ifdef GLAMOR_DDX
driverList[0] = "glamor";
#else
driverList[0] = "intel";
#endif
driverList[0] = "intel";
}
break;
case 0x102b: driverList[0] = "mga"; break;
......
......@@ -14,14 +14,9 @@ if RECORD
RECORDMOD = librecord.la
endif
if GLAMOR
LIBGLAMOR_DIX = libglamor_dix.la
endif
module_LTLIBRARIES = libfb.la \
libwfb.la \
libshadow.la \
$(LIBGLAMOR_DIX)
libshadow.la
extsmoduledir = $(moduledir)/extensions
extsmodule_LTLIBRARIES = $(RECORDMOD) \
......@@ -34,17 +29,11 @@ INCLUDES = @XORG_INCS@ \
-I$(top_srcdir)/hw/xfree86/loader \
-I$(top_srcdir)/miext/shadow \
-I$(top_srcdir)/glx
libdbe_la_LDFLAGS = -avoid-version
libdbe_la_LIBADD = $(top_builddir)/dbe/libdbe.la
libdbe_la_SOURCES = dbemodule.c
if GLAMOR
libglamor_dix_la_LDFLAGS = -avoid-version
libglamor_dix_la_LIBADD = $(top_builddir)/glamor/libglamor.la
libglamor_dix_la_SOURCES = glamor_module.c $(top_srcdir)/glamor/glamor_egl.c
libglamor_dix_la_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/glamor $(LIBDRM_CFLAGS)
endif
libfb_la_LDFLAGS = -avoid-version
libfb_la_LIBADD = $(top_builddir)/fb/libfb.la
libfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
......
/*
* Copyright (C) 1998 The XFree86 Project, Inc. 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, sublicense, 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 shall be included in
* all copies or substantial portions of the Software.
*