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]
