xf86-video-intel: src/sna/kgem.c src/sna/sna_render.c
Chris Wilson
ickle at kemper.freedesktop.org
Mon May 25 00:15:53 PDT 2015
src/sna/kgem.c | 23 +++++++++++++++++++++++
src/sna/sna_render.c | 14 --------------
2 files changed, 23 insertions(+), 14 deletions(-)
New commits:
commit 8b7bdff750a98fc7644fc9ab17bedc79b03198b4
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon May 25 08:02:46 2015 +0100
sna: Initialise no-op callbacks early
In case of error, we try to free up memory before trying again. This
involves callbacks into higher level code - but if we fail early, we
will not have those hooks installed. Set no-ops stubs early to prevent
untimely crashes.
References: https://bugs.freedesktop.org/show_bug.cgi?id=90622#c1
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index f6b72d9..463f65f 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -1692,6 +1692,25 @@ static struct kgem_bo *kgem_new_batch(struct kgem *kgem)
return last;
}
+static void
+no_retire(struct kgem *kgem)
+{
+ (void)kgem;
+}
+
+static void
+no_expire(struct kgem *kgem)
+{
+ (void)kgem;
+}
+
+static void
+no_context_switch(struct kgem *kgem, int new_mode)
+{
+ (void)kgem;
+ (void)new_mode;
+}
+
void kgem_init(struct kgem *kgem, int fd, struct pci_device *dev, unsigned gen)
{
struct drm_i915_gem_get_aperture aperture;
@@ -1704,6 +1723,10 @@ void kgem_init(struct kgem *kgem, int fd, struct pci_device *dev, unsigned gen)
kgem->fd = fd;
kgem->gen = gen;
+ kgem->retire = no_retire;
+ kgem->expire = no_expire;
+ kgem->context_switch = no_context_switch;
+
list_init(&kgem->requests[0]);
list_init(&kgem->requests[1]);
list_init(&kgem->batch_buffers);
diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c
index d95536e..a994505 100644
--- a/src/sna/sna_render.c
+++ b/src/sna/sna_render.c
@@ -272,18 +272,6 @@ no_render_context_switch(struct kgem *kgem,
}
static void
-no_render_retire(struct kgem *kgem)
-{
- (void)kgem;
-}
-
-static void
-no_render_expire(struct kgem *kgem)
-{
- (void)kgem;
-}
-
-static void
no_render_fini(struct sna *sna)
{
(void)sna;
@@ -316,8 +304,6 @@ const char *no_render_init(struct sna *sna)
render->fini = no_render_fini;
sna->kgem.context_switch = no_render_context_switch;
- sna->kgem.retire = no_render_retire;
- sna->kgem.expire = no_render_expire;
if (sna->kgem.has_blt)
sna->kgem.ring = KGEM_BLT;
More information about the xorg-commit
mailing list