demos: Update tri to include mem refs and properly clear mem bindings prior to object deletion.
diff --git a/demos/tri.c b/demos/tri.c
index 45bc4a9..a3f32ea 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -153,8 +153,17 @@
     err = xglWaitForFences(demo->device, 1, &fence, XGL_TRUE, ~((XGL_UINT64) 0));
     assert(err == XGL_SUCCESS || err == XGL_ERROR_UNAVAILABLE);
 
+    XGL_MEMORY_REF memRefs[4];
+    memRefs[0].mem = demo->depth.mem;
+    memRefs[0].flags = 0;
+    memRefs[1].mem = demo->textures[0].mem;
+    memRefs[1].flags = 0;
+    memRefs[2].mem = demo->buffers[0].mem;
+    memRefs[2].flags = 0;
+    memRefs[3].mem = demo->buffers[1].mem;
+    memRefs[3].flags = 0;
     err = xglQueueSubmit(demo->queue, 1, &demo->cmd,
-            0, NULL, XGL_NULL_HANDLE);
+            4, memRefs, XGL_NULL_HANDLE);
     assert(!err);
 
     err = xglWsiX11QueuePresent(demo->queue, &present, fence);
@@ -903,12 +912,14 @@
 
     for (i = 0; i < DEMO_TEXTURE_COUNT; i++) {
         xglDestroyObject(demo->textures[i].view);
+        xglBindObjectMemory(demo->textures[i].image, 0, XGL_NULL_HANDLE);
         xglDestroyObject(demo->textures[i].image);
         xglFreeMemory(demo->textures[i].mem);
         xglDestroyObject(demo->textures[i].sampler);
     }
 
     xglDestroyObject(demo->depth.view);
+    xglBindObjectMemory(demo->depth.image, 0, XGL_NULL_HANDLE);
     xglDestroyObject(demo->depth.image);
     xglFreeMemory(demo->depth.mem);