Mesa (master): svga: Do not shortcut NULL surface relocations with SVGA3D_INVALID_ID.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Sun Aug 22 10:39:07 UTC 2010


Module: Mesa
Branch: master
Commit: 04094b2da2030a82ff49e647fc8658502f02cea8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=04094b2da2030a82ff49e647fc8658502f02cea8

Author: José Fonseca <jfonseca at vmware.com>
Date:   Sun Aug 15 13:36:02 2010 +0100

svga: Do not shortcut NULL surface relocations with SVGA3D_INVALID_ID.

How to cope with NULL surface relocations should be entirely at winsys'
discretion.

---

 src/gallium/drivers/svga/svga_cmd.c       |    2 +-
 src/gallium/drivers/svga/svga_state_tss.c |   13 ++++++++-----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/svga/svga_cmd.c b/src/gallium/drivers/svga/svga_cmd.c
index 7b2dfe2..e975f3b 100644
--- a/src/gallium/drivers/svga/svga_cmd.c
+++ b/src/gallium/drivers/svga/svga_cmd.c
@@ -67,7 +67,7 @@ void surface_to_surfaceid(struct svga_winsys_context *swc, // IN
       id->mipmap = s->real_level;
    }
    else {
-      id->sid = SVGA3D_INVALID_ID;
+      swc->surface_relocation(swc, &id->sid, NULL, flags);
       id->face = 0;
       id->mipmap = 0;
    }
diff --git a/src/gallium/drivers/svga/svga_state_tss.c b/src/gallium/drivers/svga/svga_state_tss.c
index 76a2dae..e42c4f7 100644
--- a/src/gallium/drivers/svga/svga_state_tss.c
+++ b/src/gallium/drivers/svga/svga_state_tss.c
@@ -128,18 +128,21 @@ update_tss_binding(struct svga_context *svga,
          goto fail;
 
       for (i = 0; i < queue.bind_count; i++) {
+         struct svga_winsys_surface *handle;
+
          ts[i].stage = queue.bind[i].unit;
          ts[i].name = SVGA3D_TS_BIND_TEXTURE;
 
          if (queue.bind[i].view->v) {
-            svga->swc->surface_relocation(svga->swc,
-                                          &ts[i].value,
-                                          queue.bind[i].view->v->handle,
-                                          SVGA_RELOC_READ);
+            handle = queue.bind[i].view->v->handle;
          }
          else {
-            ts[i].value = SVGA3D_INVALID_ID;
+            handle = NULL;
          }
+         svga->swc->surface_relocation(svga->swc,
+                                       &ts[i].value,
+                                       handle,
+                                       SVGA_RELOC_READ);
          
          queue.bind[i].view->dirty = FALSE;
       }




More information about the mesa-commit mailing list