[xorg-x11-drv-intel] today's git snapshot
Dave Airlie
airlied at fedoraproject.org
Tue Jun 12 08:48:18 UTC 2012
commit 0950f02ceb9eefbef19b2eed0990376df60bfe48
Author: Dave Airlie <airlied at gmail.com>
Date: Tue Jun 12 09:47:54 2012 +0100
today's git snapshot
- resurrect copy-fb
.gitignore | 1 +
copy-fb.patch | 190 ++++++++++++++++++++++++++++++++---------------
sources | 2 +-
xorg-x11-drv-intel.spec | 10 ++-
4 files changed, 139 insertions(+), 64 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index a5be97e..92d7d0f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@ xf86-video-intel-2.10.0.tar.bz2
/xf86-video-intel-2.18.0.tar.bz2
/xf86-video-intel-2.19.0.tar.bz2
/xf86-video-intel-20120529.tar.bz2
+/xf86-video-intel-20120612.tar.bz2
diff --git a/copy-fb.patch b/copy-fb.patch
index df1e589..a08c919 100644
--- a/copy-fb.patch
+++ b/copy-fb.patch
@@ -1,65 +1,78 @@
-diff -up xf86-video-intel-2.10.0/src/drmmode_display.c.jx xf86-video-intel-2.10.0/src/drmmode_display.c
---- xf86-video-intel-2.10.0/src/drmmode_display.c.jx 2010-02-08 11:23:25.000000000 -0500
-+++ xf86-video-intel-2.10.0/src/drmmode_display.c 2010-02-08 11:23:46.000000000 -0500
-@@ -35,6 +35,8 @@
+From 8545142db00d0877683394f42984e6a65d1f7a80 Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied at gmail.com>
+Date: Mon, 11 Jun 2012 16:34:58 +0100
+Subject: [PATCH] intel/uxa: do copy fb at startup.
+
+---
+ src/intel.h | 1 +
+ src/intel_display.c | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/intel_driver.c | 15 +++++--
+ 3 files changed, 127 insertions(+), 3 deletions(-)
+
+diff --git a/src/intel.h b/src/intel.h
+index 20d8282..541c2d0 100644
+--- a/src/intel.h
++++ b/src/intel.h
+@@ -648,4 +648,5 @@ static inline Bool intel_pixmap_is_offscreen(PixmapPtr pixmap)
+ return priv && priv->offscreen;
+ }
+
++extern void drmmode_copy_fb(ScrnInfoPtr scrn);
+ #endif /* _I830_H_ */
+diff --git a/src/intel_display.c b/src/intel_display.c
+index 6f3f7e6..c7e2f0d 100644
+--- a/src/intel_display.c
++++ b/src/intel_display.c
+@@ -35,6 +35,7 @@
#include <unistd.h>
#include <errno.h>
-
+ #include <poll.h>
+#include <sys/ioctl.h>
-+
+
#include "xorgVersion.h"
- #include "i830.h"
-@@ -1375,6 +1377,8 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scr
- if (old_front)
- i830_free_memory(scrn, old_front);
+@@ -45,6 +46,8 @@
+ #include "X11/Xatom.h"
+ #include "X11/extensions/dpmsconst.h"
+ #include "xf86DDC.h"
++#include "fb.h"
++#include "uxa.h"
-+ scrn->canDoBGNoneRoot = TRUE;
-+
- return TRUE;
+ #include "intel_glamor.h"
- fail:
-@@ -1414,6 +1418,7 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn,
- return FALSE;
- }
+@@ -1748,3 +1751,114 @@ Bool intel_crtc_on(xf86CrtcPtr crtc)
-+ scrn->canDoBGNoneRoot = TRUE;
- xf86CrtcSetSizeRange(scrn, 320, 200, drmmode->mode_res->max_width,
- drmmode->mode_res->max_height);
- for (i = 0; i < drmmode->mode_res->count_crtcs; i++)
-@@ -1458,3 +1463,98 @@ void drmmode_closefb(ScrnInfoPtr scrn)
- drmModeRmFB(drmmode->fd, drmmode->fb_id);
- drmmode->fb_id = 0;
+ return ret;
}
+
+static PixmapPtr
-+drmmode_create_pixmap_for_fbcon(ScrnInfoPtr scrn)
++drmmode_create_pixmap_for_fbcon(ScrnInfoPtr scrn, int fbcon_id)
+{
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
-+ drmmode_crtc_private_ptr drmmode_crtc = xf86_config->crtc[0]->driver_private;
-+ ScreenPtr pScreen = screenInfo.screens[scrn->scrnIndex];
-+ drmmode_ptr drmmode = drmmode_crtc->drmmode;
++ ScreenPtr pScreen = xf86ScrnToScreen(scrn);
+ intel_screen_private *intel = intel_get_screen_private(scrn);
++ struct intel_mode *intel_mode = intel->modes;
+ drmModeFBPtr fbcon;
+ struct drm_gem_flink flink;
+ drm_intel_bo *bo;
+ PixmapPtr pixmap = NULL;
+ int i;
+
-+ for (i = 0; i < drmmode->mode_res->count_crtcs; i++) {
-+ drmmode_crtc = xf86_config->crtc[i]->driver_private;
-+ if (drmmode_crtc->mode_crtc->buffer_id == 0)
-+ continue;
-+ fbcon = drmModeGetFB(drmmode->fd,
-+ drmmode_crtc->mode_crtc->buffer_id);
-+ if (fbcon != NULL)
-+ break;
-+ }
-+ if (i == drmmode->mode_res->count_crtcs)
++ fbcon = drmModeGetFB(intel_mode->fd, fbcon_id);
++ if (fbcon == NULL)
+ return NULL;
+
++ if (fbcon->depth != scrn->depth ||
++ fbcon->width != scrn->virtualX ||
++ fbcon->height != scrn->virtualY) {
++ ErrorF("incorrect res %d %d %d vs %d %d %d\n",
++ fbcon->depth, fbcon->width, fbcon->height,
++ scrn->depth, scrn->virtualX, scrn->virtualY);
++ goto out_free_fb;
++ }
++
+ flink.handle = fbcon->handle;
-+ if (ioctl(drmmode->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
++ if (ioctl(intel_mode->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
+ xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+ "Couldn't flink fbcon handle\n");
+ return NULL;
@@ -83,8 +96,9 @@ diff -up xf86-video-intel-2.10.0/src/drmmode_display.c.jx xf86-video-intel-2.10.
+ return NULL;
+ }
+
-+ i830_set_pixmap_bo(pixmap, bo);
++ intel_set_pixmap_bo(pixmap, bo);
+ drm_intel_bo_unreference(bo);
++out_free_fb:
+ drmModeFreeFB(fbcon);
+
+ return pixmap;
@@ -92,12 +106,23 @@ diff -up xf86-video-intel-2.10.0/src/drmmode_display.c.jx xf86-video-intel-2.10.
+
+void drmmode_copy_fb(ScrnInfoPtr scrn)
+{
-+ ScreenPtr pScreen = screenInfo.screens[scrn->scrnIndex];
++ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
++ ScreenPtr pScreen = xf86ScrnToScreen(scrn);
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+ PixmapPtr src, dst;
+ unsigned int pitch = scrn->displayWidth * intel->cpp;
++ struct intel_crtc *intel_crtc;
++ int i;
++ int fbcon_id = 0;
++ for (i = 0; i < xf86_config->num_crtc; i++) {
++ intel_crtc = xf86_config->crtc[i]->driver_private;
++ if (intel_crtc->mode_crtc->buffer_id)
++ fbcon_id = intel_crtc->mode_crtc->buffer_id;
++ }
++ if (!fbcon_id)
++ goto fallback;
+
-+ src = drmmode_create_pixmap_for_fbcon(scrn);
++ src = drmmode_create_pixmap_for_fbcon(scrn, fbcon_id);
+ if (src == NULL) {
+ xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+ "Couldn't create pixmap for fbcon\n");
@@ -110,7 +135,7 @@ diff -up xf86-video-intel-2.10.0/src/drmmode_display.c.jx xf86-video-intel-2.10.
+ scrn->depth, scrn->bitsPerPixel,
+ pitch,
+ NULL);
-+ i830_set_pixmap_bo(dst, intel->front_buffer->bo);
++ intel_set_pixmap_bo(dst, intel->front_buffer);
+
+ intel->uxa_driver->prepare_copy(src, dst, -1, -1, GXcopy, FB_ALLONES);
+
@@ -124,28 +149,73 @@ diff -up xf86-video-intel-2.10.0/src/drmmode_display.c.jx xf86-video-intel-2.10.
+
+ (*pScreen->DestroyPixmap)(src);
+ (*pScreen->DestroyPixmap)(dst);
-+}
+
-diff -up xf86-video-intel-2.10.0/src/i830_driver.c.jx xf86-video-intel-2.10.0/src/i830_driver.c
---- xf86-video-intel-2.10.0/src/i830_driver.c.jx 2010-01-04 17:09:52.000000000 -0500
-+++ xf86-video-intel-2.10.0/src/i830_driver.c 2010-02-08 11:23:46.000000000 -0500
-@@ -1507,6 +1507,8 @@ static Bool I830EnterVT(int scrnIndex, i
- if (IS_I965G(intel))
- gen4_render_state_init(scrn);
++ pScreen->canDoBGNoneRoot = TRUE;
++ return;
++fallback:
++ return;
++}
+diff --git a/src/intel_driver.c b/src/intel_driver.c
+index 67cec48..85456d8 100644
+--- a/src/intel_driver.c
++++ b/src/intel_driver.c
+@@ -83,6 +83,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
+ static void i830AdjustFrame(ADJUST_FRAME_ARGS_DECL);
+ static Bool I830CloseScreen(CLOSE_SCREEN_ARGS_DECL);
+ static Bool I830EnterVT(VT_FUNC_ARGS_DECL);
++static Bool I830EnterVT_flag(ScrnInfoPtr pScrn, Bool flag);
+
+ /* temporary */
+ extern void xf86SetCursor(ScreenPtr screen, CursorPtr pCurs, int x, int y);
+@@ -167,6 +168,7 @@ static Bool i830CreateScreenResources(ScreenPtr screen)
+ if (!(*screen->CreateScreenResources) (screen))
+ return FALSE;
+ drmmode_copy_fb(scrn);
+ return intel_uxa_create_screen_resources(screen);
+ }
+
+@@ -1007,7 +1009,7 @@ I830ScreenInit(SCREEN_INIT_ARGS_DECL)
+ * later memory should be bound when allocating, e.g rotate_mem */
+ scrn->vtSema = TRUE;
+
+- return I830EnterVT(VT_FUNC_ARGS(0));
++ return I830EnterVT_flag(scrn, TRUE);
+ }
+
+ static void i830AdjustFrame(ADJUST_FRAME_ARGS_DECL)
+@@ -1048,9 +1050,8 @@ static void I830LeaveVT(VT_FUNC_ARGS_DECL)
+ /*
+ * This gets called when gaining control of the VT, and from ScreenInit().
+ */
+-static Bool I830EnterVT(VT_FUNC_ARGS_DECL)
++static Bool I830EnterVT_flag(ScrnInfoPtr scrn, Bool flag)
+ {
+- SCRN_INFO_PTR(arg);
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+ int ret;
+
+@@ -1061,12 +1062,20 @@ static Bool I830EnterVT(VT_FUNC_ARGS_DECL)
+ strerror(errno));
+ }
+
++ if (!flag)
++ drmmode_copy_fb(scrn);
+
if (!xf86SetDesiredModes(scrn))
return FALSE;
-diff -up xf86-video-intel-2.10.0/src/i830.h.jx xf86-video-intel-2.10.0/src/i830.h
---- xf86-video-intel-2.10.0/src/i830.h.jx 2010-01-04 17:09:52.000000000 -0500
-+++ xf86-video-intel-2.10.0/src/i830.h 2010-02-08 11:23:46.000000000 -0500
-@@ -430,6 +430,7 @@ extern void drmmode_closefb(ScrnInfoPtr
- extern int drmmode_get_pipe_from_crtc_id(drm_intel_bufmgr * bufmgr,
- xf86CrtcPtr crtc);
- extern int drmmode_output_dpms_status(xf86OutputPtr output);
-+extern void drmmode_copy_fb(ScrnInfoPtr scrn);
- extern int drmmode_crtc_id(xf86CrtcPtr crtc);
- void drmmode_crtc_set_cursor_bo(xf86CrtcPtr crtc, dri_bo * cursor);
+ return TRUE;
+ }
++static Bool I830EnterVT(VT_FUNC_ARGS_DECL)
++{
++ SCRN_INFO_PTR(arg);
++ return I830EnterVT_flag(scrn, FALSE);
++}
+ static Bool I830SwitchMode(SWITCH_MODE_ARGS_DECL)
+ {
+ SCRN_INFO_PTR(arg);
+--
+1.7.10.2
+
diff --git a/sources b/sources
index 6b1ea0e..f96f004 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
3ad323489a5a8b821fd24811242a9eea intel-gpu-tools-20110817.tar.bz2
-191b8547a87396a50b2989a50f8c1f3d xf86-video-intel-20120529.tar.bz2
+adaa68473d6cbfc6bfb45e2cdd8da373 xf86-video-intel-20120612.tar.bz2
diff --git a/xorg-x11-drv-intel.spec b/xorg-x11-drv-intel.spec
index 696b247..6117997 100644
--- a/xorg-x11-drv-intel.spec
+++ b/xorg-x11-drv-intel.spec
@@ -1,12 +1,12 @@
%define moduledir %(pkg-config xorg-server --variable=moduledir )
%define driverdir %{moduledir}/drivers
%define gputoolsdate 20110817
-%define gitdate 20120529
+%define gitdate 20120612
Summary: Xorg X11 Intel video driver
Name: xorg-x11-drv-intel
Version: 2.19.0
-Release: 4.%{gitdate}%{?dist}
+Release: 5.%{gitdate}%{?dist}
URL: http://www.x.org
License: MIT
Group: User Interface/X Hardware Support
@@ -63,7 +63,7 @@ Debugging tools for Intel graphics chips
%prep
%setup -q -n xf86-video-intel-%{?gitdate:%{gitdate}}%{!?gitdate:%{dirsuffix}} -b3
-#patch23 -p1 -b .legacy
+%patch2 -p1 -b .legacy
%patch3 -p1 -b .build-fix
%build
@@ -121,6 +121,10 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man1/intel_*.1*
%changelog
+* Tue Jun 12 2012 Dave Airlie <airlied at redhat.com> 2.19.0-5.20120612
+- today's git snapshot
+- resurrect copy-fb
+
* Tue May 29 2012 Adam Jackson <ajax at redhat.com> 2.19.0-4.20120529
- Today's git snapshot
- Enable SNA (default is still UXA, use Option "AccelMethod" to switch)
More information about the scm-commits
mailing list