xf86-video-intel: 2 commits - src/sna/sna_accel.c src/sna/sna_driver.c
Chris Wilson
ickle at kemper.freedesktop.org
Mon Oct 22 07:30:47 PDT 2012
src/sna/sna_accel.c | 55 +++++++++++++++++++--------------------------------
src/sna/sna_driver.c | 35 ++++++++++++++++----------------
2 files changed, 39 insertions(+), 51 deletions(-)
New commits:
commit 4dfc83359d006a4e410e3280003b49683309afc3
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Oct 22 14:56:01 2012 +0100
sna: Tidy udev install/remove and add a couple of lines of DBG
References: https://bugs.freedesktop.org/show_bug.cgi?id=55260
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 1b7e817..4a3bd04 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -639,11 +639,8 @@ sna_uevent_init(ScrnInfoPtr scrn)
DBG(("%s\n", __FUNCTION__));
- if (!xf86GetOptValBool(sna->Options, OPTION_HOTPLUG, &hotplug)) {
- from = X_DEFAULT;
- hotplug = TRUE;
- }
-
+ if (!xf86GetOptValBool(sna->Options, OPTION_HOTPLUG, &hotplug))
+ from = X_DEFAULT, hotplug = TRUE;
xf86DrvMsg(scrn->scrnIndex, from, "hotplug detection: \"%s\"\n",
hotplug ? "enabled" : "disabled");
if (!hotplug)
@@ -654,16 +651,14 @@ sna_uevent_init(ScrnInfoPtr scrn)
return;
mon = udev_monitor_new_from_netlink(u, "udev");
-
if (!mon) {
udev_unref(u);
return;
}
if (udev_monitor_filter_add_match_subsystem_devtype(mon,
- "drm",
- "drm_minor") < 0 ||
- udev_monitor_enable_receiving(mon) < 0)
+ "drm", "drm_minor") < 0 ||
+ udev_monitor_enable_receiving(mon) < 0)
{
udev_monitor_unref(mon);
udev_unref(u);
@@ -681,23 +676,29 @@ sna_uevent_init(ScrnInfoPtr scrn)
}
sna->uevent_monitor = mon;
+
+ DBG(("%s: installed uvent handler\n", __FUNCTION__));
}
static void
sna_uevent_fini(ScrnInfoPtr scrn)
{
struct sna *sna = to_sna(scrn);
+ struct udev *u;
- if (sna->uevent_handler) {
- struct udev *u = udev_monitor_get_udev(sna->uevent_monitor);
+ if (sna->uevent_handler == NULL)
+ return;
- xf86RemoveGeneralHandler(sna->uevent_handler);
+ xf86RemoveGeneralHandler(sna->uevent_handler);
- udev_monitor_unref(sna->uevent_monitor);
- udev_unref(u);
- sna->uevent_handler = NULL;
- sna->uevent_monitor = NULL;
- }
+ u = udev_monitor_get_udev(sna->uevent_monitor);
+ udev_monitor_unref(sna->uevent_monitor);
+ udev_unref(u);
+
+ sna->uevent_handler = NULL;
+ sna->uevent_monitor = NULL;
+
+ DBG(("%s: removed uvent handler\n", __FUNCTION__));
}
#else
static void sna_uevent_fini(ScrnInfoPtr scrn) { }
commit 4d9687d49c9869b2e88d408e5f451c9a1f8f3389
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Oct 22 13:41:54 2012 +0100
sna: Refactor the common code to enable a timer
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 6bb8eae..b56eb63 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -13801,6 +13801,15 @@ static bool stop_flush(struct sna *sna, struct sna_pixmap *scanout)
return scanout->cpu_damage || scanout->gpu_bo->needs_flush;
}
+static void timer_enable(struct sna *sna, int whom, int interval)
+{
+ if (!sna->timer_active)
+ UpdateCurrentTimeIf();
+ sna->timer_active |= 1 << whom;
+ sna->timer_expire[whom] = TIME + interval;
+ DBG(("%s (time=%ld), starting timer %d\n", __FUNCTION__, (long)TIME, whom));
+}
+
static bool sna_accel_do_flush(struct sna *sna)
{
struct sna_pixmap *priv;
@@ -13826,19 +13835,12 @@ static bool sna_accel_do_flush(struct sna *sna)
sna->timer_expire[FLUSH_TIMER] = TIME + interval;
return true;
}
- } else {
- if (!start_flush(sna, priv)) {
- DBG(("%s -- no pending write to scanout\n", __FUNCTION__));
- if (priv)
- kgem_bo_flush(&sna->kgem, priv->gpu_bo);
- } else {
- if (!sna->timer_active)
- UpdateCurrentTimeIf();
- sna->timer_active |= 1 << FLUSH_TIMER;
- sna->timer_expire[FLUSH_TIMER] = TIME + interval / 2;
- DBG(("%s (time=%ld), starting\n", __FUNCTION__, (long)TIME));
- }
- }
+ } else if (!start_flush(sna, priv)) {
+ DBG(("%s -- no pending write to scanout\n", __FUNCTION__));
+ if (priv)
+ kgem_bo_flush(&sna->kgem, priv->gpu_bo);
+ } else
+ timer_enable(sna, FLUSH_TIMER, interval/2);
return false;
}
@@ -13855,17 +13857,10 @@ static bool sna_accel_do_throttle(struct sna *sna)
sna->timer_expire[THROTTLE_TIMER] = TIME + 20;
return true;
}
- } else {
- if (!sna->kgem.need_retire) {
- DBG(("%s -- no pending activity\n", __FUNCTION__));
- } else {
- DBG(("%s (time=%ld), starting\n", __FUNCTION__, (long)TIME));
- if (!sna->timer_active)
- UpdateCurrentTimeIf();
- sna->timer_active |= 1 << THROTTLE_TIMER;
- sna->timer_expire[THROTTLE_TIMER] = TIME + 20;
- }
- }
+ } else if (!sna->kgem.need_retire) {
+ DBG(("%s -- no pending activity\n", __FUNCTION__));
+ } else
+ timer_enable(sna, THROTTLE_TIMER, 20);
return false;
}
@@ -13880,16 +13875,8 @@ static bool sna_accel_do_expire(struct sna *sna)
TIME + MAX_INACTIVE_TIME * 1000;
return true;
}
- } else {
- if (sna->kgem.need_expire) {
- if (!sna->timer_active)
- UpdateCurrentTimeIf();
- sna->timer_active |= 1 << EXPIRE_TIMER;
- sna->timer_expire[EXPIRE_TIMER] =
- TIME + MAX_INACTIVE_TIME * 1000;
- DBG(("%s (time=%ld), starting\n", __FUNCTION__, (long)TIME));
- }
- }
+ } else if (sna->kgem.need_expire)
+ timer_enable(sna, EXPIRE_TIMER, MAX_INACTIVE_TIME * 1000);
return false;
}
More information about the xorg-commit
mailing list