rpms/xorg-x11-drv-i810/devel copy-fb.patch, NONE, 1.1 intel-2.6.0-to-170f00.patch, NONE, 1.1 kill-svideo.patch, NONE, 1.1 xorg-x11-drv-i810.spec, 1.126, 1.127
Kristian Høgsberg
krh at fedoraproject.org
Tue Feb 24 20:31:34 UTC 2009
Author: krh
Update of /cvs/pkgs/rpms/xorg-x11-drv-i810/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv6980
Modified Files:
xorg-x11-drv-i810.spec
Added Files:
copy-fb.patch intel-2.6.0-to-170f00.patch kill-svideo.patch
Log Message:
* Tue Feb 24 2009 Kristian Høgsberg <krh at redhat.com> - 2.6.0-7
- Update to git master, pull in patches to kill svideo and copy fb contents.
copy-fb.patch:
--- NEW FILE copy-fb.patch ---
>From e65e1eeb74775ab98b9e8912e35fc7ad1af1ffb2 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Kristian=20H=C3=B8gsberg?= <krh at redhat.com>
Date: Tue, 24 Feb 2009 10:49:45 -0500
Subject: [PATCH 2/2] Copy initial framebuffer contents when starting with -br.
---
src/drmmode_display.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++-
src/i830.h | 1 +
src/i830_driver.c | 2 +
3 files changed, 89 insertions(+), 1 deletions(-)
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 5b48bda..527b293 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -29,6 +29,8 @@
#include "config.h"
#endif
+#include <sys/ioctl.h>
+
#include "xorgVersion.h"
#ifdef XF86DRM_MODE
@@ -145,7 +147,7 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
unsigned int pitch = pScrn->displayWidth * pI830->cpp;
if (drmmode->fb_id == 0) {
- ret = drmModeAddFB(drmmode->fd,
+ ret = drmModeAddFB(drmmode->fd,
pScrn->virtualX, pScrn->virtualY,
pScrn->depth, pScrn->bitsPerPixel,
pitch, pI830->front_buffer->bo->handle,
@@ -733,6 +735,8 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp)
xf86InitialConfiguration(pScrn, pI830->can_resize);
+ pScrn->canDoBGNoneRoot = TRUE;
+
return TRUE;
}
@@ -760,4 +764,85 @@ Bool drmmode_is_rotate_pixmap(ScrnInfoPtr pScrn, pointer pPixData, dri_bo **bo)
#endif
}
+static PixmapPtr
+drmmode_create_pixmap_for_fbcon(ScrnInfoPtr pScrn)
+{
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+ drmmode_crtc_private_ptr
+ /* FIXME: Find currently active crtc */
+ drmmode_crtc = xf86_config->crtc[1]->driver_private;
+ ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
+ drmmode_ptr drmmode = drmmode_crtc->drmmode;
+ I830Ptr pI830 = I830PTR(pScrn);
+ drmModeFBPtr fbcon;
+ struct drm_gem_flink flink;
+ drm_intel_bo *bo;
+ PixmapPtr pixmap = NULL;
+
+ fbcon = drmModeGetFB(drmmode->fd, drmmode_crtc->mode_crtc->buffer_id);
+ if (fbcon == NULL)
+ return NULL;
+
+ flink.handle = fbcon->handle;
+ if (ioctl(drmmode->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Couldn't flink fbcon handle\n");
+ return NULL;
+ }
+
+ bo = drm_intel_bo_gem_create_from_name(pI830->bufmgr,
+ "fbcon", flink.name);
+ if (bo == NULL) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Couldn't allocate bo for fbcon handle\n");
+ return NULL;
+ }
+
+ pixmap = GetScratchPixmapHeader(pScreen,
+ fbcon->width, fbcon->height,
+ fbcon->depth, fbcon->bpp,
+ fbcon->pitch, NULL);
+ if (pixmap == NULL) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Couldn't allocate pixmap fbcon contents\n");
+ return NULL;
+ }
+
+ i830_set_pixmap_bo(pixmap, bo);
+ drm_intel_bo_unreference(bo);
+ drmModeFreeFB(fbcon);
+
+ return pixmap;
+}
+void drmmode_copy_fb(ScrnInfoPtr pScrn)
+{
+ ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
+ I830Ptr pI830 = I830PTR(pScrn);
+ PixmapPtr src, dst;
+ unsigned int pitch = pScrn->displayWidth * pI830->cpp;
+
+ src = drmmode_create_pixmap_for_fbcon(pScrn);
+
+ /* We dont have a screen Pixmap yet */
+ dst = GetScratchPixmapHeader(pScreen,
+ pScrn->virtualX, pScrn->virtualY,
+ pScrn->depth, pScrn->bitsPerPixel,
+ pitch,
+ NULL);
+ i830_set_pixmap_bo(dst, pI830->front_buffer->bo);
+
+ pI830->uxa_driver->prepare_copy(src, dst, -1, -1, GXcopy, FB_ALLONES);
+
+ pI830->uxa_driver->copy(dst, 0, 0, 0, 0,
+ pScrn->virtualX, pScrn->virtualY);
+
+ pI830->uxa_driver->done_copy(dst);
+
+ I830EmitFlush(pScrn);
+ intel_batch_flush(pScrn, TRUE);
+
+ (*pScreen->DestroyPixmap)(src);
+ (*pScreen->DestroyPixmap)(dst);
+}
+
#endif
diff --git a/src/i830.h b/src/i830.h
index 7904b9f..74b04e9 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -832,6 +832,7 @@ void I830DRI2CloseScreen(ScreenPtr pScreen);
extern Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp);
extern Bool drmmode_is_rotate_pixmap(ScrnInfoPtr pScrn, pointer pPixData,
dri_bo **bo);
+extern void drmmode_copy_fb(ScrnInfoPtr pScrn);
#endif
extern Bool I830AccelInit(ScreenPtr pScreen);
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 0a8a9c6..8aa33b6 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -3690,6 +3690,8 @@ I830EnterVT(int scrnIndex, int flags)
/* Clear the framebuffer */
memset(pI830->FbBase + pScrn->fbOffset, 0,
pScrn->virtualY * pScrn->displayWidth * pI830->cpp);
+ } else {
+ drmmode_copy_fb(pScrn);
}
if (!xf86SetDesiredModes (pScrn))
--
1.6.1.3
intel-2.6.0-to-170f00.patch:
--- NEW FILE intel-2.6.0-to-170f00.patch ---
diff --git a/configure.ac b/configure.ac
index bb69f72..a6ced67 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
AC_PREREQ(2.57)
AC_INIT([xf86-video-intel],
- 2.6.0,
+ 2.6.99.1,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-video-intel)
@@ -105,8 +105,6 @@ if test x$DRI != xno; then
[have_sarea_h="yes"], [have_sarea_h="no"])
AC_CHECK_FILE([${sdkdir}/dristruct.h],
[have_dristruct_h="yes"], [have_dristruct_h="no"])
- AC_CHECK_FILE([${sdkdir}/damage.h],
- [have_damage_h="yes"], [have_damage_h="no"])
fi
AC_MSG_CHECKING([whether to include DRI support])
if test x$DRI = xauto; then
@@ -209,15 +207,12 @@ if test "x$GCC" = "xyes"; then
-Wnested-externs -fno-strict-aliasing"
fi
-PKG_CHECK_MODULES(DRM, [libdrm >= 2.4.3])
+PKG_CHECK_MODULES(DRM, [libdrm >= 2.4.5])
AM_CONDITIONAL(DRI, test x$DRI = xyes)
if test "$DRI" = yes; then
PKG_CHECK_MODULES(DRI, [xf86driproto glproto])
AC_DEFINE(XF86DRI,1,[Enable DRI driver support])
AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support])
- if test "$have_damage_h" = yes; then
- AC_DEFINE(DAMAGE,1,[Use Damage extension])
- fi
fi
dnl exaGetPixmapDriverPrivate required for DRM_MODE.
diff --git a/man/intel.man b/man/intel.man
index 00aa1be..c7a3c61 100644
--- a/man/intel.man
+++ b/man/intel.man
@@ -150,26 +150,6 @@ pool. On systems with a working GEM environment, this can be disabled to
increase the memory pool available to other graphics tasks.
Default for i830 and newer: Enabled.
Default for i810: this option is not used.
-.BI "Option \*qPageFlip\*q \*q" boolean \*q
-Enable support for page flipping. This should improve 3D performance at the
-potential cost of worse performance with mixed 2D/3D. Also note that this gives
-no benefit without corresponding support in the Mesa 3D driver and may not give
-the full benefit without triple buffering (see
-.B "Option \*qTripleBuffer\*q"
-).
-Default for i810: The option is not used.
-Default for i830 and above: Disabled (This option is currently unstable).
-.TP
-.BI "Option \*qTripleBuffer\*q \*q" boolean \*q
-Enable support for triple buffering. This should improve 3D performance at the
-potential cost of worse performance with mixed 2D/3D. Also note that this gives
-no benefit without corresponding support in the Mesa 3D driver and may not give
-any benefit without page flipping either (see
-.B "Option \*qPageFlip\*q"
-).
-Default for i810: The option is not used.
-Default for i830 and above: Disabled.
-.TP
.BI "Option \*qAccelMethod\*q \*q" string \*q
Choose acceleration architecture, either "XAA" or "EXA". XAA is the old
XFree86 based acceleration architecture. EXA is a newer and simpler
@@ -222,12 +202,6 @@ information.
Enable XvMC driver. Current support MPEG2 MC on 915/945 and G33 series.
User should provide absolute path to libIntelXvMC.so in XvMCConfig file.
Default: Disabled.
-.TP
-.BI "Option \*qForceSDVODetect\*q \*q" boolean \*q
-Instead of depending on SDVO detect status bit to initialize SDVO outputs,
-this option trys to ignore that status bit and try to probe on all SDVO
-ports anyway. Try this if some output is not detected on your ADD2 card.
-Use of this option will slow down your startup time. Default: Disabled.
.SH OUTPUT CONFIGURATION
On 830M and better chipsets, the driver supports runtime configuration of
diff --git a/src/bios_reader/bios_reader.c b/src/bios_reader/bios_reader.c
index 717f5bf..db8f364 100644
--- a/src/bios_reader/bios_reader.c
+++ b/src/bios_reader/bios_reader.c
@@ -299,6 +299,9 @@ static void dump_lvds_data(void)
struct bdb_lvds_lfp_data *lvds_data;
int num_entries;
int i;
+ int hdisplay, hsyncstart, hsyncend, htotal;
+ int vdisplay, vsyncstart, vsyncend, vtotal;
+ float clock;
block = find_section(BDB_LVDS_LFP_DATA);
if (!block) {
@@ -322,6 +325,17 @@ static void dump_lvds_data(void)
else
marker = ' ';
+ hdisplay = _H_ACTIVE(timing_data);
+ hsyncstart = hdisplay + _H_SYNC_OFF(timing_data);
+ hsyncend = hsyncstart + _H_SYNC_WIDTH(timing_data);
+ htotal = hdisplay + _H_BLANK(timing_data);
+
+ vdisplay = _V_ACTIVE(timing_data);
+ vsyncstart = vdisplay + _V_SYNC_OFF(timing_data);
+ vsyncend = vsyncstart + _V_SYNC_WIDTH(timing_data);
+ vtotal = vdisplay + _V_BLANK(timing_data);
+ clock = _PIXEL_CLOCK(timing_data) / 1000;
+
printf("%c\tpanel type %02i: %dx%d clock %d\n", marker,
i, lfp_data->fp_timing.x_res, lfp_data->fp_timing.y_res,
_PIXEL_CLOCK(timing_data));
@@ -336,15 +350,69 @@ static void dump_lvds_data(void)
(unsigned long)lfp_data->fp_timing.pp_cycle_reg_val);
printf("\t\t PFIT: 0x%08lx\n",
(unsigned long)lfp_data->fp_timing.pfit_reg_val);
- printf("\t\ttimings: %d %d %d %d %d %d %d %d\n",
- _H_ACTIVE(timing_data),
- _H_BLANK(timing_data),
- _H_SYNC_OFF(timing_data),
- _H_SYNC_WIDTH(timing_data),
- _V_ACTIVE(timing_data),
- _V_BLANK(timing_data),
- _V_SYNC_OFF(timing_data),
- _V_SYNC_WIDTH(timing_data));
+ printf("\t\ttimings: %d %d %d %d %d %d %d %d %.2f (%s)\n",
+ hdisplay, hsyncstart, hsyncend, htotal,
+ vdisplay, vsyncstart, vsyncend, vtotal, clock,
+ (hsyncend > htotal || vsyncend > vtotal) ?
+ "BAD!" : "good");
+ }
+ free(block);
+}
+
+static void dump_driver_feature(void)
+{
+ struct bdb_block *block;
+ struct bdb_driver_feature *feature;
+
+ block = find_section(BDB_DRIVER_FEATURES);
+ if (!block) {
+ printf("No Driver feature data block\n");
+ return;
+ }
+ feature = block->data;
+
+ printf("Driver feature Data Block:\n");
+ printf("\tBoot Device Algorithm: %s\n", feature->boot_dev_algorithm ?
+ "driver default": "os default");
+ printf("\tBlock display switching when DVD active: %s\n",
+ YESNO(feature->block_display_switch));
+ printf("\tAllow display switching when in Full Screen DOS: %s\n",
+ YESNO(feature->allow_display_switch));
+ printf("\tHot Plug DVO: %s\n", YESNO(feature->hotplug_dvo));
+ printf("\tDual View Zoom: %s\n", YESNO(feature->dual_view_zoom));
+ printf("\tDriver INT 15h hook: %s\n", YESNO(feature->int15h_hook));
+ printf("\tEnable Sprite in Clone Mode: %s\n", YESNO(feature->sprite_in_clone));
+ printf("\tUse 00000110h ID for Primary LFP: %s\n", YESNO(feature->primary_lfp_id));
+ printf("\tBoot Mode X: %u\n", feature->boot_mode_x);
+ printf("\tBoot Mode Y: %u\n", feature->boot_mode_y);
+ printf("\tBoot Mode Bpp: %u\n", feature->boot_mode_bpp);
+ printf("\tBoot Mode Refresh: %u\n", feature->boot_mode_refresh);
+ printf("\tEnable LFP as primary: %s\n", YESNO(feature->enable_lfp_primary));
+ printf("\tSelective Mode Pruning: %s\n", YESNO(feature->selective_mode_pruning));
+ printf("\tDual-Frequency Graphics Technology: %s\n", YESNO(feature->dual_frequency));
+ printf("\tDefault Render Clock Frequency: %s\n", feature->render_clock_freq ? "low" : "high");
+ printf("\tNT 4.0 Dual Display Clone Support: %s\n", YESNO(feature->nt_clone_support));
+ printf("\tDefault Power Scheme user interface: %s\n", feature->power_scheme_ui ? "3rd party":"CUI");
+ printf("\tSprite Display Assignment when Overlay is Active in Clone Mode: %s\n",
+ feature->sprite_display_assign ? "primary" : "secondary");
+ printf("\tDisplay Maintain Aspect Scaling via CUI: %s\n", YESNO(feature->cui_aspect_scaling));
+ printf("\tPreserve Aspect Ratio: %s\n", YESNO(feature->preserve_aspect_ratio));
+ printf("\tEnable SDVO device power down: %s\n", YESNO(feature->sdvo_device_power_down));
+ printf("\tCRT hotplug: %s\n", YESNO(feature->crt_hotplug));
+ printf("\tLVDS config: ");
+ switch (feature->lvds_config) {
+ case BDB_DRIVER_NO_LVDS:
+ printf("No LVDS\n");
+ break;
+ case BDB_DRIVER_INTER_LVDS:
+ printf("Integrated LVDS\n");
+ break;
+ case BDB_DRIVER_SDVO_LVDS:
+ printf("SDVO LVDS\n");
+ break;
+ case BDB_DRIVER_ALL_LVDS:
+ printf("Both Integrated LVDS and SDVO LVDS\n");
+ break;
}
free(block);
}
@@ -423,5 +491,7 @@ int main(int argc, char **argv)
dump_lvds_data();
dump_lvds_ptr_data();
+ dump_driver_feature();
[...6617 lines suppressed...]
- uxa_print_composite_fallback (op, pSrc, pMask, pDst);
-#endif
+ if (uxa_screen->fallback_debug)
+ uxa_print_composite_fallback (op, pSrc, pMask, pDst);
uxa_check_composite (op, pSrc, pMask, pDst, xSrc, ySrc,
xMask, yMask, xDst, yDst, width, height);
diff --git a/uxa/uxa-unaccel.c b/uxa/uxa-unaccel.c
index aba12e8..8f86468 100644
--- a/uxa/uxa-unaccel.c
+++ b/uxa/uxa-unaccel.c
@@ -68,18 +68,18 @@ uxa_finish_access_gc(GCPtr pGC)
uxa_finish_access(&pGC->stipple->drawable);
}
-#if DEBUG_TRACE_FALL
char
uxa_drawable_location(DrawablePtr pDrawable)
{
return uxa_drawable_is_offscreen(pDrawable) ? 's' : 'm';
}
-#endif /* DEBUG_TRACE_FALL */
void
uxa_check_fill_spans (DrawablePtr pDrawable, GCPtr pGC, int nspans,
DDXPointPtr ppt, int *pwidth, int fSorted)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable)));
if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) {
if (uxa_prepare_access_gc (pGC)) {
@@ -94,6 +94,8 @@ void
uxa_check_set_spans (DrawablePtr pDrawable, GCPtr pGC, char *psrc,
DDXPointPtr ppt, int *pwidth, int nspans, int fSorted)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable)));
if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) {
fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted);
@@ -106,6 +108,8 @@ uxa_check_put_image (DrawablePtr pDrawable, GCPtr pGC, int depth,
int x, int y, int w, int h, int leftPad, int format,
char *bits)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable)));
if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) {
fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits);
@@ -117,6 +121,7 @@ RegionPtr
uxa_check_copy_area (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
int srcx, int srcy, int w, int h, int dstx, int dsty)
{
+ ScreenPtr screen = pSrc->pScreen;
RegionPtr ret = NULL;
UXA_FALLBACK(("from %p to %p (%c,%c)\n", pSrc, pDst,
@@ -136,6 +141,7 @@ uxa_check_copy_plane (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
int srcx, int srcy, int w, int h, int dstx, int dsty,
unsigned long bitPlane)
{
+ ScreenPtr screen = pSrc->pScreen;
RegionPtr ret = NULL;
UXA_FALLBACK(("from %p to %p (%c,%c)\n", pSrc, pDst,
@@ -155,6 +161,8 @@ void
uxa_check_poly_point (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
DDXPointPtr pptInit)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable)));
if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) {
fbPolyPoint (pDrawable, pGC, mode, npt, pptInit);
@@ -166,6 +174,8 @@ void
uxa_check_poly_lines (DrawablePtr pDrawable, GCPtr pGC,
int mode, int npt, DDXPointPtr ppt)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("to %p (%c), width %d, mode %d, count %d\n",
pDrawable, uxa_drawable_location(pDrawable),
pGC->lineWidth, mode, npt));
@@ -188,6 +198,8 @@ void
uxa_check_poly_segment (DrawablePtr pDrawable, GCPtr pGC,
int nsegInit, xSegment *pSegInit)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("to %p (%c) width %d, count %d\n", pDrawable,
uxa_drawable_location(pDrawable), pGC->lineWidth, nsegInit));
if (pGC->lineWidth == 0) {
@@ -208,6 +220,8 @@ void
uxa_check_poly_arc (DrawablePtr pDrawable, GCPtr pGC,
int narcs, xArc *pArcs)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable)));
/* Disable this as fbPolyArc can call miZeroPolyArc which in turn
@@ -234,6 +248,8 @@ void
uxa_check_poly_fill_rect (DrawablePtr pDrawable, GCPtr pGC,
int nrect, xRectangle *prect)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable)));
if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) {
@@ -250,6 +266,8 @@ uxa_check_image_glyph_blt (DrawablePtr pDrawable, GCPtr pGC,
int x, int y, unsigned int nglyph,
CharInfoPtr *ppci, pointer pglyphBase)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("to %p (%c)\n", pDrawable,
uxa_drawable_location(pDrawable)));
if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) {
@@ -266,6 +284,8 @@ uxa_check_poly_glyph_blt (DrawablePtr pDrawable, GCPtr pGC,
int x, int y, unsigned int nglyph,
CharInfoPtr *ppci, pointer pglyphBase)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("to %p (%c), style %d alu %d\n", pDrawable,
uxa_drawable_location(pDrawable), pGC->fillStyle, pGC->alu));
if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) {
@@ -282,6 +302,8 @@ uxa_check_push_pixels (GCPtr pGC, PixmapPtr pBitmap,
DrawablePtr pDrawable,
int w, int h, int x, int y)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("from %p to %p (%c,%c)\n", pBitmap, pDrawable,
uxa_drawable_location(&pBitmap->drawable),
uxa_drawable_location(pDrawable)));
@@ -305,6 +327,8 @@ uxa_check_get_spans (DrawablePtr pDrawable,
int nspans,
char *pdstStart)
{
+ ScreenPtr screen = pDrawable->pScreen;
+
UXA_FALLBACK(("from %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable)));
if (uxa_prepare_access (pDrawable, UXA_ACCESS_RO)) {
fbGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
@@ -326,6 +350,8 @@ uxa_check_composite (CARD8 op,
CARD16 width,
CARD16 height)
{
+ ScreenPtr screen = pDst->pDrawable->pScreen;
+
UXA_FALLBACK(("from picts %p/%p to pict %p\n",
pSrc, pMask, pDst));
@@ -366,7 +392,9 @@ uxa_check_add_traps (PicturePtr pPicture,
int ntrap,
xTrap *traps)
{
- UXA_FALLBACK(("to pict %p (%c)\n",
+ ScreenPtr screen = pPicture->pDrawable->pScreen;
+
+ UXA_FALLBACK(("to pict %p (%c)\n", pPicture,
uxa_drawable_location(pPicture->pDrawable)));
if (uxa_prepare_access(pPicture->pDrawable, UXA_ACCESS_RW)) {
fbAddTraps (pPicture, x_off, y_off, ntrap, traps);
diff --git a/uxa/uxa.c b/uxa/uxa.c
index 4aeb5e4..0de408c 100644
--- a/uxa/uxa.c
+++ b/uxa/uxa.c
@@ -346,6 +346,14 @@ uxa_xorg_enable_disable_fb_access (int index, Bool enable)
uxa_screen->SavedEnableDisableFBAccess(index, enable);
}
+void
+uxa_set_fallback_debug (ScreenPtr screen, Bool enable)
+{
+ uxa_screen_t *uxa_screen = uxa_get_screen(screen);
+
+ uxa_screen->fallback_debug = enable;
+}
+
/**
* uxa_close_screen() unwraps its wrapped screen functions and tears down UXA's
* screen private, before calling down to the next CloseSccreen.
diff --git a/uxa/uxa.h b/uxa/uxa.h
index f1c1cfa..8f6f896 100644
--- a/uxa/uxa.h
+++ b/uxa/uxa.h
@@ -517,6 +517,9 @@ uxa_driver_fini(ScreenPtr pScreen);
CARD32
uxa_get_pixmap_first_pixel (PixmapPtr pPixmap);
+void
+uxa_set_fallback_debug (ScreenPtr screen, Bool enable);
+
/**
* Returns TRUE if the given planemask covers all the significant bits in the
* pixel values for pDrawable.
kill-svideo.patch:
--- NEW FILE kill-svideo.patch ---
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index d50e640..d6c7cd3 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -412,6 +412,18 @@ drmmode_output_detect(xf86OutputPtr output)
drmmode_output->mode_output =
drmModeGetConnector(drmmode->fd, drmmode_output->output_id);
+ switch (drmmode_output->mode_output->connector_type) {
+ case DRM_MODE_CONNECTOR_SVIDEO:
+ /* FIXME: KMS svideo detection is flaky an causes X to
+ * come up in 1024x768 when it tries to pick a clone
+ * mode that fits both the panel and the tv out. Once
+ * KMS learns how to detect svideo better we can
+ * remove this. */
+ return DRM_MODE_DISCONNECTED;
+ default:
+ break;
+ }
+
switch (drmmode_output->mode_output->connection) {
case DRM_MODE_CONNECTED:
status = XF86OutputStatusConnected;
Index: xorg-x11-drv-i810.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-i810/devel/xorg-x11-drv-i810.spec,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -r1.126 -r1.127
--- xorg-x11-drv-i810.spec 18 Feb 2009 23:04:09 -0000 1.126
+++ xorg-x11-drv-i810.spec 24 Feb 2009 20:31:03 -0000 1.127
@@ -6,7 +6,7 @@
Summary: Xorg X11 Intel video driver(s)
Name: xorg-x11-drv-i810
Version: 2.6.0
-Release: 6%{?dist}
+Release: 7%{?dist}
URL: http://www.x.org
License: MIT
Group: User Interface/X Hardware Support
@@ -19,10 +19,12 @@
#Source1: xf86-video-intel-%{batchbuffer_version}.tar.bz2
Source2: i810.xinf
-Patch1: intel-2.6.0-to-872aad.patch
+Patch1: intel-2.6.0-to-170f00.patch
Patch3: intel-2.1.1-fix-xv-reset.patch
Patch5: intel-2.5.0-no-legacy-3d.patch
Patch6: intel-2.5.0-no-gem-legacy-3d.patch
+Patch7: kill-svideo.patch
+Patch8: copy-fb.patch
ExclusiveArch: %{ix86} x86_64 ia64
@@ -56,6 +58,8 @@
%patch3 -p1 -b .xvfix
%patch5 -p1 -b .nolegacy3d
%patch6 -p1 -b .nogem3d
+%patch7 -p1 -b .svideo
+%patch8 -p1 -b .copy-fb
%build
@@ -98,6 +102,9 @@
%{_libdir}/libIntelXvMC.so
%changelog
+* Tue Feb 24 2009 Kristian Høgsberg <krh at redhat.com> - 2.6.0-7
+- Update to git master, pull in patches to kill svideo and copy fb contents.
+
* Wed Feb 18 2009 Kristian Høgsberg <krh at redhat.com> - 2.6.0-6
- Update to git master again, fixes Xv and xgamma.
More information about the fedora-extras-commits
mailing list