Hello community,

here is the log from the commit of package xf86-video-intel for 
openSUSE:Factory checked in at 2014-09-01 16:58:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xf86-video-intel (Old)
 and      /work/SRC/openSUSE:Factory/.xf86-video-intel.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xf86-video-intel"

Changes:
--------
--- /work/SRC/openSUSE:Factory/xf86-video-intel/xf86-video-intel.changes        
2014-07-27 08:25:09.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.xf86-video-intel.new/xf86-video-intel.changes   
2014-09-01 16:59:00.000000000 +0200
@@ -1,0 +2,23 @@
+Fri Aug 29 17:01:35 UTC 2014 - [email protected]
+
+- u_Erase-cursor-image-when-changing-rotation.patch
+  -> U_Erase-cursor-image-when-changing-rotation.patch
+
+-------------------------------------------------------------------
+Fri Aug 29 16:38:59 UTC 2014 - [email protected]
+
+- u_Erase-cursor-image-when-changing-rotation.patch
+  Erase cursor image when changing rotation:
+  The rotated cursor image will be at a different location
+  in the 64x64 bit block and won't overlap with the unrotated
+  image. Therefore it will not be overwritten if the real image
+  is smaller (bnc#893752).
+
+-------------------------------------------------------------------
+Fri Aug 29 16:36:51 UTC 2014 - [email protected]
+
+- u_sna_dri3_mesa_relies_upon_implicit_fences.patch
+  -> U_sna_dri3_mesa_relies_upon_implicit_fences.patch
+  Patches from upstream should be flagged with 'U'.  
+
+-------------------------------------------------------------------

Old:
----
  u_sna_dri3_mesa_relies_upon_implicit_fences.patch

New:
----
  U_Erase-cursor-image-when-changing-rotation.patch
  U_sna_dri3_mesa_relies_upon_implicit_fences.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xf86-video-intel.spec ++++++
--- /var/tmp/diff_new_pack.XSpoNr/_old  2014-09-01 16:59:01.000000000 +0200
+++ /var/tmp/diff_new_pack.XSpoNr/_new  2014-09-01 16:59:01.000000000 +0200
@@ -87,7 +87,8 @@
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 ExclusiveArch:  %ix86 x86_64
 
-Patch0:         u_sna_dri3_mesa_relies_upon_implicit_fences.patch
+Patch0:         U_sna_dri3_mesa_relies_upon_implicit_fences.patch
+Patch1:         U_Erase-cursor-image-when-changing-rotation.patch
 
 %x11_abi_videodrv_req
 
@@ -106,6 +107,7 @@
 %setup -q
 
 %patch0 -p1
+%patch1 -p1
 
 %build
 autoreconf -fi

++++++ U_Erase-cursor-image-when-changing-rotation.patch ++++++
From: Egbert Eich <[email protected]>
Date: Fri Aug 29 18:25:55 2014 +0200
Subject: [PATCH]Erase cursor image when changing rotation
Patch-mainline: upstream

References: bnc#893752
Signed-off-by: Egbert Eich <[email protected]>

The rotated cursor image will be at a different location
in the 64x64 bit block and won't overlap with the unrotated
image. Therefore it will not be overwritten if the real image
is smaller.

Signed-off-by: Egbert Eich <[email protected]>
---
 src/sna/sna_display.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 2d5477d..8472b76 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -4273,7 +4273,8 @@ static struct sna_cursor *__sna_get_cursor(struct sna 
*sna, xf86CrtcPtr crtc)
                image = sna->cursor.scratch;
                cursor->last_width = cursor->last_height = size;
        }
-       if (width < cursor->last_width || height < cursor->last_height)
+       if (width < cursor->last_width || height < cursor->last_height ||
+           size > cursor->size || rotation != cursor->rotation)
                memset(image, 0, 4*size*size);
        if (rotation == RR_Rotate_0) {
                if (argb == NULL) {
++++++ U_sna_dri3_mesa_relies_upon_implicit_fences.patch ++++++
>From 3320ac8c424320740db89fa10d0704d01a094b99 Mon Sep 17 00:00:00 2001
From: Chris Wilson <[email protected]>
Date: Tue, 22 Jul 2014 08:38:42 +0100
Subject: [PATCH] sna/dri3: Mesa relies upon implicit fences

Keith Packard says that he did not implement fences for mesa and so DRI3
with explicit fencing is currently broken by design.

Signed-off-by: Chris Wilson <[email protected]>
---
 src/sna/sna_accel.c |  3 +++
 src/sna/sna_dri3.c  | 32 ++++++++++++++++++++++++++++----
 2 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 97bcdcf..29f633f 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1408,6 +1408,9 @@ static void __sna_free_pixmap(struct sna *sna,
 
        __sna_pixmap_free_cpu(sna, priv);
 
+       if (priv->flush)
+               sna_accel_watch_flush(sna, -1);
+
        if (priv->header) {
                assert(pixmap->drawable.pScreen == sna->scrn->pScreen);
                assert(!priv->shm);
diff --git a/src/sna/sna_dri3.c b/src/sna/sna_dri3.c
index 5d51b41..61ebbe4 100644
--- a/src/sna/sna_dri3.c
+++ b/src/sna/sna_dri3.c
@@ -39,6 +39,8 @@
 #include <misyncshm.h>
 #include <misyncstr.h>
 
+#define MESA_IS_BROKEN 1
+
 static DevPrivateKeyRec sna_sync_fence_private_key;
 struct sna_sync_fence {
        SyncFenceSetTriggeredFunc set_triggered;
@@ -49,6 +51,22 @@ static inline struct sna_sync_fence 
*sna_sync_fence(SyncFence *fence)
        return dixLookupPrivate(&fence->devPrivates, 
&sna_sync_fence_private_key);
 }
 
+static inline void mark_dri3_pixmap(struct sna *sna, struct sna_pixmap *priv, 
struct kgem_bo *bo)
+{
+       if (!MESA_IS_BROKEN)
+               return;
+
+       bo->flush = true;
+       if (bo->exec)
+               sna->kgem.flush = 1;
+       if (bo == priv->gpu_bo)
+               priv->flush |= 3;
+       else
+               priv->shm = true;
+
+       sna_accel_watch_flush(sna, 1);
+}
+
 static void sna_sync_flush(struct sna *sna, struct sna_pixmap *priv)
 {
        struct kgem_bo *bo = NULL;
@@ -94,11 +112,13 @@ sna_sync_fence_set_triggered(SyncFence *fence)
                DBG(("%s: associated pixmap=%ld\n", __FUNCTION__, 
get_drawable_pixmap(draw)->drawable.serialNumber));
                sna_sync_flush(sna, sna_pixmap(get_drawable_pixmap(draw)));
        } else { /* SyncFence are currently per-screen, sigh */
-               struct sna_pixmap *priv;
+               if (!MESA_IS_BROKEN) {
+                       struct sna_pixmap *priv;
 
-               DBG(("%s: flushing all DRI3 pixmaps\n", __FUNCTION__));
-               list_for_each_entry(priv, &sna->dri3.pixmaps, cow_list)
-                       sna_sync_flush(sna, priv);
+                       DBG(("%s: flushing all DRI3 pixmaps\n", __FUNCTION__));
+                       list_for_each_entry(priv, &sna->dri3.pixmaps, cow_list)
+                               sna_sync_flush(sna, priv);
+               }
 
                sna_accel_flush(sna);
        }
@@ -278,6 +298,8 @@ static PixmapPtr sna_dri3_pixmap_from_fd(ScreenPtr screen,
        }
        list_add(&priv->cow_list, &sna->dri3.pixmaps);
 
+       mark_dri3_pixmap(sna, priv, bo);
+
        return pixmap;
 
 free_pixmap:
@@ -338,6 +360,7 @@ static int sna_dri3_fd_from_pixmap(ScreenPtr screen,
                priv->pinned |= PIN_DRI3;
        list_move(&priv->cow_list, &sna->dri3.pixmaps);
+       mark_dri3_pixmap(sna, priv, bo);
 
        *stride = (priv->pinned & PIN_DRI3) ? priv->gpu_bo->pitch : 
priv->cpu_bo->pitch;
        *size = kgem_bo_size((priv->pinned & PIN_DRI3) ? priv->gpu_bo : 
priv->cpu_bo);
        DBG(("%s: exporting %s pixmap=%ld, handle=%d, stride=%d, size=%d\n",
-- 
2.0.1

 
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to