[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-ati: Changes to 'ubuntu'



 debian/changelog                               |    8 ++++
 debian/patches/fix-0-crtc-crash.patch          |   50 +++++++++++++++++++++++++
 debian/patches/fix-key-initialized-crash.patch |   30 +++++++++++++++
 debian/patches/series                          |    2 +
 debian/patches/xmir.patch                      |   50 ++++++++++++-------------
 5 files changed, 115 insertions(+), 25 deletions(-)

New commits:
commit 7b53338076504ead162ca1908407d08a2a83a986
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Tue Apr 29 14:27:05 2014 +0200

    Add upstream patches to fix hybrid mode with prime.
    
    fix-key-initialized-crash.patch
    fix-0-crtc-crash.patch
    refresh mir patch

diff --git a/debian/changelog b/debian/changelog
index 90a8262..5be31cf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xserver-xorg-video-ati (1:7.3.0-1ubuntu4) UNRELEASED; urgency=low
+
+  * Add upstream patches to fix hybrid mode with prime.
+    - fix-key-initialized-crash.patch
+    - fix-0-crtc-crash.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 29 Apr 2014 14:26:00 +0200
+
 xserver-xorg-video-ati (1:7.3.0-1ubuntu3) trusty; urgency=low
 
   * Fix crash with Xorg -configure. (LP: #1278046)
diff --git a/debian/patches/fix-0-crtc-crash.patch b/debian/patches/fix-0-crtc-crash.patch
new file mode 100644
index 0000000..c071098
--- /dev/null
+++ b/debian/patches/fix-0-crtc-crash.patch
@@ -0,0 +1,50 @@
+commit cadb6b493942a84bfeb298751dce0dee39257a06
+Author: Alex Deucher <alexander.deucher@amd.com>
+Date:   Fri Feb 21 08:33:21 2014 -0500
+
+    radeon: don't install colormap handling if there are no crtcs
+    
+    Fixes a crash on cards with 0 crtcs.
+    
+    Discussion:
+    http://lists.freedesktop.org/archives/dri-devel/2014-February/054186.html
+    
+    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+
+diff --git a/src/drmmode_display.c b/src/drmmode_display.c
+index 76b79d8..641e231 100644
+--- a/src/drmmode_display.c
++++ b/src/drmmode_display.c
+@@ -1939,19 +1939,23 @@ static void drmmode_load_palette(ScrnInfoPtr pScrn, int numColors,
+ 
+ Bool drmmode_setup_colormap(ScreenPtr pScreen, ScrnInfoPtr pScrn)
+ {
++    xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
++
+     xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+                   "Initializing kms color map\n");
+-    if (!miCreateDefColormap(pScreen))
+-        return FALSE;
+-    /* all radeons support 10 bit CLUTs */
+-    if (!xf86HandleColormaps(pScreen, 256, 10,
+-                             drmmode_load_palette, NULL,
+-                             CMAP_PALETTED_TRUECOLOR
++    if (xf86_config->num_crtc) {
++	if (!miCreateDefColormap(pScreen))
++	    return FALSE;
++	/* all radeons support 10 bit CLUTs */
++	if (!xf86HandleColormaps(pScreen, 256, 10,
++				 drmmode_load_palette, NULL,
++				 CMAP_PALETTED_TRUECOLOR
+ #if 0 /* This option messes up text mode! (eich@suse.de) */
+-                             | CMAP_LOAD_EVEN_IF_OFFSCREEN
++				 | CMAP_LOAD_EVEN_IF_OFFSCREEN
+ #endif
+-                             | CMAP_RELOAD_ON_MODE_SWITCH))
+-         return FALSE;
++				 | CMAP_RELOAD_ON_MODE_SWITCH))
++	    return FALSE;
++    }
+     return TRUE;
+ }
+ 
diff --git a/debian/patches/fix-key-initialized-crash.patch b/debian/patches/fix-key-initialized-crash.patch
new file mode 100644
index 0000000..66c7cf7
--- /dev/null
+++ b/debian/patches/fix-key-initialized-crash.patch
@@ -0,0 +1,30 @@
+commit c84230d686c078aac1dc98d82153f8b02521b2e1
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date:   Fri Apr 25 09:17:51 2014 +0900
+
+    dri2: Handle PRIME for source buffer as well in radeon_dri2_copy_region2
+    
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77810
+    
+    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+
+diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
+index d47b035..9a9918b 100644
+--- a/src/radeon_dri2.c
++++ b/src/radeon_dri2.c
+@@ -409,7 +409,14 @@ radeon_dri2_copy_region2(ScreenPtr pScreen,
+     dst_drawable = &dst_private->pixmap->drawable;
+ 
+     if (src_private->attachment == DRI2BufferFrontLeft) {
+-        src_drawable = drawable;
++#ifdef USE_DRI2_PRIME
++	if (drawable->pScreen != pScreen) {
++	    src_drawable = DRI2UpdatePrime(drawable, src_buffer);
++	    if (!src_drawable)
++		return;
++	} else
++#endif
++	    src_drawable = drawable;
+     }
+     if (dst_private->attachment == DRI2BufferFrontLeft) {
+ #ifdef USE_DRI2_PRIME
diff --git a/debian/patches/series b/debian/patches/series
index 198acb0..bcf3168 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,4 @@
+fix-key-initialized-crash.patch
+fix-0-crtc-crash.patch
 fix-xorg-configure.patch
 xmir.patch
diff --git a/debian/patches/xmir.patch b/debian/patches/xmir.patch
index 299d202..fb7739d 100644
--- a/debian/patches/xmir.patch
+++ b/debian/patches/xmir.patch
@@ -8,14 +8,14 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
 
 --- a/src/drmmode_display.c
 +++ b/src/drmmode_display.c
-@@ -1944,7 +1944,7 @@
-     if (!miCreateDefColormap(pScreen))
-         return FALSE;
-     /* all radeons support 10 bit CLUTs */
--    if (!xf86HandleColormaps(pScreen, 256, 10,
-+    if (!xorgMir && !xf86HandleColormaps(pScreen, 256, 10,
-                              drmmode_load_palette, NULL,
-                              CMAP_PALETTED_TRUECOLOR
+@@ -1947,7 +1947,7 @@
+ 	if (!miCreateDefColormap(pScreen))
+ 	    return FALSE;
+ 	/* all radeons support 10 bit CLUTs */
+-	if (!xf86HandleColormaps(pScreen, 256, 10,
++	if (!xorgMir && !xf86HandleColormaps(pScreen, 256, 10,
+ 				 drmmode_load_palette, NULL,
+ 				 CMAP_PALETTED_TRUECOLOR
  #if 0 /* This option messes up text mode! (eich@suse.de) */
 --- a/src/radeon.h
 +++ b/src/radeon.h
@@ -125,7 +125,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  #endif /* RADEON_BO_HELPER_H */
 --- a/src/radeon_dri2.c
 +++ b/src/radeon_dri2.c
-@@ -1532,6 +1532,18 @@
+@@ -1539,6 +1539,18 @@
  
  #endif /* USE_DRI2_SCHEDULING */
  
@@ -144,7 +144,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  
  Bool
  radeon_dri2_screen_init(ScreenPtr pScreen)
-@@ -1541,7 +1553,7 @@
+@@ -1548,7 +1560,7 @@
      DRI2InfoRec dri2_info = { 0 };
  #ifdef USE_DRI2_SCHEDULING
      const char *driverNames[2];
@@ -153,7 +153,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  #endif
  
      if (!info->dri2.available)
-@@ -1627,6 +1639,11 @@
+@@ -1634,6 +1646,11 @@
      }
  #endif
  
@@ -324,7 +324,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
      info->dri2.drm_fd = drmOpen(NULL, busid);
      if (info->dri2.drm_fd == -1) {
  
-@@ -836,6 +921,14 @@
+@@ -839,6 +924,14 @@
      if (!RADEONPreInitChipType_KMS(pScrn))
          goto fail;
  
@@ -339,7 +339,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
      if (radeon_open_drm_master(pScrn) == FALSE) {
  	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Kernel modesetting setup failed\n");
  	goto fail;
-@@ -910,10 +1003,14 @@
+@@ -913,10 +1006,14 @@
      }
  
      info->swapBuffersWait = xf86ReturnOptValBool(info->Options,
@@ -355,7 +355,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
      if (drmmode_pre_init(pScrn, &info->drmmode, pScrn->bitsPerPixel / 8) == FALSE) {
  	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Kernel modesetting setup failed\n");
  	goto fail;
-@@ -923,7 +1020,10 @@
+@@ -926,7 +1023,10 @@
          pRADEONEnt->HasCRTC2 = FALSE;
      else
          pRADEONEnt->HasCRTC2 = TRUE;
@@ -367,7 +367,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  
      /* fix up cloning on rn50 cards
       * since they only have one crtc sometimes the xserver doesn't assign
-@@ -1123,6 +1223,11 @@
+@@ -1126,6 +1226,11 @@
      if (info->accel_state->use_vbos)
          radeon_vbo_free_lists(pScrn);
  
@@ -379,7 +379,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
      drmDropMaster(info->dri2.drm_fd);
  
      drmmode_fini(pScrn, &info->drmmode);
-@@ -1151,6 +1256,21 @@
+@@ -1154,6 +1259,21 @@
      RADEONFreeRec(pScrn);
  }
  
@@ -401,7 +401,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL)
  {
      ScrnInfoPtr    pScrn = xf86ScreenToScrn(pScreen);
-@@ -1158,7 +1278,7 @@
+@@ -1161,7 +1281,7 @@
      int            subPixelOrder = SubPixelUnknown;
      char*          s;
      void *front_ptr;
@@ -410,7 +410,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  
      pScrn->fbOffset = 0;
  
-@@ -1169,7 +1289,8 @@
+@@ -1172,7 +1292,8 @@
  			  pScrn->defaultVisual)) return FALSE;
      miSetPixmapDepths ();
  
@@ -420,7 +420,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
      if (ret) {
          ErrorF("Unable to retrieve master\n");
          return FALSE;
-@@ -1186,7 +1307,8 @@
+@@ -1189,7 +1310,8 @@
  		   "failed to initialise GEM buffer manager");
  	return FALSE;
      }
@@ -430,7 +430,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  
      if (!info->csm)
          info->csm = radeon_cs_manager_gem_ctor(info->dri2.drm_fd);
-@@ -1310,7 +1432,10 @@
+@@ -1313,7 +1435,10 @@
      /* Cursor setup */
      miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
  
@@ -442,7 +442,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  	if (RADEONCursorInit_KMS(pScreen)) {
  	}
      }
-@@ -1352,6 +1477,8 @@
+@@ -1355,6 +1480,8 @@
      info->CreateScreenResources = pScreen->CreateScreenResources;
      pScreen->CreateScreenResources = RADEONCreateScreenResources_KMS;
  
@@ -451,7 +451,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  #ifdef RADEON_PIXMAP_SHARING
      pScreen->StartPixmapTracking = PixmapStartDirtyTracking;
      pScreen->StopPixmapTracking = PixmapStopDirtyTracking;
-@@ -1386,13 +1513,13 @@
+@@ -1389,13 +1516,13 @@
  {
      SCRN_INFO_PTR(arg);
      RADEONInfoPtr  info  = RADEONPTR(pScrn);
@@ -468,7 +468,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
      if (ret)
  	ErrorF("Unable to retrieve master\n");
      info->accel_state->XInited3D = FALSE;
-@@ -1400,7 +1527,9 @@
+@@ -1403,7 +1530,9 @@
  
      pScrn->vtSema = TRUE;
  
@@ -479,7 +479,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  	return FALSE;
  
      return TRUE;
-@@ -1415,7 +1544,8 @@
+@@ -1418,7 +1547,8 @@
      xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
  		   "RADEONLeaveVT_KMS\n");
  
@@ -489,7 +489,7 @@ Date:   Mon Jul 22 17:02:17 2013 +1000
  
      xf86RotateFreeShadow(pScrn);
  
-@@ -1541,6 +1671,7 @@
+@@ -1544,6 +1674,7 @@
  		}
  		info->front_surface = surface;
  	}


Reply to: