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

mesa: Changes to 'ubuntu'



 debian/changelog                                    |    6 +
 debian/patches/cso-fix-sampler-view-count.patch     |   43 ++++++++
 debian/patches/series                               |    3 
 debian/patches/svga-move-dirty-buffers.patch        |   47 +++++++++
 debian/patches/svga-replace-sampler-assertion.patch |   96 ++++++++++++++++++++
 5 files changed, 195 insertions(+)

New commits:
commit cfd3e7dc2beefe807958cea9bd3bd3b6ae9c7e96
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Thu Apr 10 12:08:27 2014 +0200

    release to trusty

diff --git a/debian/changelog b/debian/changelog
index db897a8..3517b54 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,8 @@
-mesa (10.1.0-4ubuntu4) UNRELEASED; urgency=low
+mesa (10.1.0-4ubuntu4) trusty; urgency=medium
 
   * Cherry-pick patches to improve stability with vmware. (LP: #1284134)
 
- -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 10 Apr 2014 10:20:53 +0200
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 10 Apr 2014 12:08:10 +0200
 
 mesa (10.1.0-4ubuntu3) trusty; urgency=medium
 

commit 6c73afdc8cc0e3b8704a8a33f697b8607082ffb5
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Thu Apr 10 10:25:12 2014 +0200

    Cherry-pick patches to improve stability with vmware. (LP: #1284134)

diff --git a/debian/changelog b/debian/changelog
index efe0188..db897a8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+mesa (10.1.0-4ubuntu4) UNRELEASED; urgency=low
+
+  * Cherry-pick patches to improve stability with vmware. (LP: #1284134)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 10 Apr 2014 10:20:53 +0200
+
 mesa (10.1.0-4ubuntu3) trusty; urgency=medium
 
   * i965-dont-call-abort-on-unknown-dev.diff: Allow using a fallback
diff --git a/debian/patches/cso-fix-sampler-view-count.patch b/debian/patches/cso-fix-sampler-view-count.patch
new file mode 100644
index 0000000..7f21515
--- /dev/null
+++ b/debian/patches/cso-fix-sampler-view-count.patch
@@ -0,0 +1,43 @@
+From 60aae7370934953a6f679fc5309ae567fc3f462c Mon Sep 17 00:00:00 2001
+From: Brian Paul <brianp@vmware.com>
+Date: Wed, 2 Apr 2014 08:54:41 -0600
+Subject: [PATCH 1/3] cso: fix sampler view count in cso_set_sampler_views()
+
+We want to call pipe->set_sampler_views() with count being the
+maximum of the old number of sampler views and the new number.
+This makes sure we null-out any old sampler views.
+
+We already do the same thing for sampler states in single_sampler_done().
+Fixes some assertions seen in the VMware driver with XA tracker.
+
+Cc: "10.0" "10.1" <mesa-stable@lists.freedesktop.org>
+Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
+Tested-by: Thomas Hellstrom <thellstrom@vmware.com>
+Reviewed-by: Roland Scheidegger <sroland@vmware.com>
+---
+ src/gallium/auxiliary/cso_cache/cso_context.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c
+index 2dcf01d..9fe0a97 100644
+--- a/src/gallium/auxiliary/cso_cache/cso_context.c
++++ b/src/gallium/auxiliary/cso_cache/cso_context.c
+@@ -1187,11 +1187,12 @@ cso_set_sampler_views(struct cso_context *ctx,
+       pipe_sampler_view_reference(&info->views[i], NULL);
+    }
+ 
+-   info->nr_views = count;
+-
+    /* bind the new sampler views */
+-   ctx->pipe->set_sampler_views(ctx->pipe, shader_stage, 0, count,
++   ctx->pipe->set_sampler_views(ctx->pipe, shader_stage, 0,
++                                MAX2(info->nr_views, count),
+                                 info->views);
++
++   info->nr_views = count;
+ }
+ 
+ 
+-- 
+1.9.1
+
diff --git a/debian/patches/series b/debian/patches/series
index bc6548d..d974949 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -13,3 +13,6 @@ i915-dont-default-to-2.1.patch
 fix-bsymbolic-madness.patch
 fix-kwin.diff
 i965-dont-call-abort-on-unknown-dev.diff
+cso-fix-sampler-view-count.patch
+svga-replace-sampler-assertion.patch
+svga-move-dirty-buffers.patch
diff --git a/debian/patches/svga-move-dirty-buffers.patch b/debian/patches/svga-move-dirty-buffers.patch
new file mode 100644
index 0000000..5b2cdcf
--- /dev/null
+++ b/debian/patches/svga-move-dirty-buffers.patch
@@ -0,0 +1,47 @@
+From 192c69d964a2da49bf0654d9bb2c0de48c788207 Mon Sep 17 00:00:00 2001
+From: Brian Paul <brianp@vmware.com>
+Date: Wed, 9 Apr 2014 11:35:54 -0600
+Subject: [PATCH 3/3] svga: move LIST_INITHEAD(dirty_buffers) earlier in
+ svga_context_create()
+
+Fixes a crash in svga_context_flush_buffers() if we use the 'draw' module
+for AA lines (when the device doesn't support that feature).  We need to
+initialize this list before we setup the swtnl pieces.
+
+Found/fixed by Charmaine Lee.
+
+Cc: "10.0" <mesa-stable@lists.freedesktop.org>
+Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
+Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
+
+Conflicts:
+	src/gallium/drivers/svga/svga_context.c
+---
+ src/gallium/drivers/svga/svga_context.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/gallium/drivers/svga/svga_context.c b/src/gallium/drivers/svga/svga_context.c
+index 4da9a65..0ffff9c 100644
+--- a/src/gallium/drivers/svga/svga_context.c
++++ b/src/gallium/drivers/svga/svga_context.c
+@@ -92,6 +92,8 @@ struct pipe_context *svga_context_create( struct pipe_screen *screen,
+    if (svga == NULL)
+       goto no_svga;
+ 
++   LIST_INITHEAD(&svga->dirty_buffers);
++
+    svga->pipe.screen = screen;
+    svga->pipe.priv = priv;
+    svga->pipe.destroy = svga_destroy;
+@@ -154,8 +156,6 @@ struct pipe_context *svga_context_create( struct pipe_screen *screen,
+ 
+    svga->dirty = ~0;
+ 
+-   LIST_INITHEAD(&svga->dirty_buffers);
+-
+    return &svga->pipe;
+ 
+ no_state:
+-- 
+1.9.1
+
diff --git a/debian/patches/svga-replace-sampler-assertion.patch b/debian/patches/svga-replace-sampler-assertion.patch
new file mode 100644
index 0000000..030ad93
--- /dev/null
+++ b/debian/patches/svga-replace-sampler-assertion.patch
@@ -0,0 +1,96 @@
+From 172f80cf326d5e2b105b422e9dc479f19cb07c96 Mon Sep 17 00:00:00 2001
+From: Brian Paul <brianp@vmware.com>
+Date: Thu, 3 Apr 2014 08:45:42 -0600
+Subject: [PATCH 2/3] svga: replace sampler assertion with conditional
+
+For TEX instructions, the set of samplers and sampler views should
+be consistent.  The XA state tracker sometimes passes an inconsistent
+set of samplers and sampler views.  Rather than assert and die, issue
+a warning.
+
+v2: add debugging code to detect inconsistent state.
+v3: also check for null sampler in svga_state_tss.c
+
+Cc: "10.0" "10.1" <mesa-stable@lists.freedesktop.org>
+Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
+---
+ src/gallium/drivers/svga/svga_state_fs.c  | 36 +++++++++++++++++++++++++++----
+ src/gallium/drivers/svga/svga_state_tss.c |  2 +-
+ 2 files changed, 33 insertions(+), 5 deletions(-)
+
+diff --git a/src/gallium/drivers/svga/svga_state_fs.c b/src/gallium/drivers/svga/svga_state_fs.c
+index dde739c..7931528 100644
+--- a/src/gallium/drivers/svga/svga_state_fs.c
++++ b/src/gallium/drivers/svga/svga_state_fs.c
+@@ -235,15 +235,43 @@ make_fs_key(const struct svga_context *svga,
+    if (svga->curr.blend->need_white_fragments) {
+       key->white_fragments = 1;
+    }
+-   
++
++#ifdef DEBUG
++   /*
++    * We expect a consistent set of samplers and sampler views.
++    * Do some debug checks/warnings here.
++    */
++   {
++      static boolean warned = FALSE;
++      unsigned i, n = MAX2(svga->curr.num_sampler_views,
++                           svga->curr.num_samplers);
++      /* Only warn once to prevent too much debug output */
++      if (!warned) {
++         if (svga->curr.num_sampler_views != svga->curr.num_samplers) {
++            debug_printf("svga: mismatched number of sampler views (%u) "
++                         "vs. samplers (%u)\n",
++                         svga->curr.num_sampler_views,
++                         svga->curr.num_samplers);
++         }
++         for (i = 0; i < n; i++) {
++            if ((svga->curr.sampler_views[i] == NULL) !=
++                (svga->curr.sampler[i] == NULL))
++               debug_printf("sampler_view[%u] = %p but sampler[%u] = %p\n",
++                            i, svga->curr.sampler_views[i],
++                            i, svga->curr.sampler[i]);
++         }
++         warned = TRUE;
++      }
++   }
++#endif
++
+    /* XXX: want to limit this to the textures that the shader actually
+     * refers to.
+     *
+     * SVGA_NEW_TEXTURE_BINDING | SVGA_NEW_SAMPLER
+     */
+    for (i = 0; i < svga->curr.num_sampler_views; i++) {
+-      if (svga->curr.sampler_views[i]) {
+-         assert(svga->curr.sampler[i]);
++      if (svga->curr.sampler_views[i] && svga->curr.sampler[i]) {
+          assert(svga->curr.sampler_views[i]->texture);
+          key->tex[i].texture_target = svga->curr.sampler_views[i]->texture->target;
+          if (!svga->curr.sampler[i]->normalized_coords) {
+@@ -262,7 +290,7 @@ make_fs_key(const struct svga_context *svga,
+ 
+    idx = 0;
+    for (i = 0; i < svga->curr.num_samplers; ++i) {
+-      if (svga->curr.sampler_views[i]) {
++      if (svga->curr.sampler_views[i] && svga->curr.sampler[i]) {
+          struct pipe_resource *tex = svga->curr.sampler_views[i]->texture;
+          struct svga_texture *stex = svga_texture(tex);
+          SVGA3dSurfaceFormat format = stex->key.format;
+diff --git a/src/gallium/drivers/svga/svga_state_tss.c b/src/gallium/drivers/svga/svga_state_tss.c
+index 988372f..0ab571c 100644
+--- a/src/gallium/drivers/svga/svga_state_tss.c
++++ b/src/gallium/drivers/svga/svga_state_tss.c
+@@ -85,7 +85,7 @@ update_tss_binding(struct svga_context *svga,
+       struct pipe_sampler_view *sv = svga->curr.sampler_views[i];
+ 
+       /* get min max lod */
+-      if (sv) {
++      if (sv && s) {
+          min_lod = MAX2(0, (s->view_min_lod + sv->u.tex.first_level));
+          max_lod = MIN2(s->view_max_lod + sv->u.tex.first_level,
+                         sv->texture->last_level);
+-- 
+1.9.1
+


Reply to: