aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCourtney Goeltzenleuchter <courtney@LunarG.com>2015-04-02 16:30:29 -0600
committerChia-I Wu <olv@lunarg.com>2015-04-16 17:33:29 +0800
commitc30c3ca2e515dfcc3f4c7e3a3dcb7ac3d8f2d3d8 (patch)
tree619b88097b7a739ec2d4e613b79e0dc53c0bd983
parent1359b7adadbc182e121ffa0e5f3cf5c17efdd281 (diff)
downloadusermoji-c30c3ca2e515dfcc3f4c7e3a3dcb7ac3d8f2d3d8.tar.xz
tri: Add AddMemRef support
-rw-r--r--demos/tri.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/demos/tri.c b/demos/tri.c
index 2818e10c..44538b80 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -134,6 +134,16 @@ static void demo_add_mem_refs(
demo->mem_refs[demo->num_refs].mem = mem[i];
demo->num_refs++;
assert(demo->num_refs < 16);
+ xglQueueAddMemReference(demo->queue, mem[i]);
+ }
+}
+
+static void demo_remove_mem_refs(
+ struct demo *demo,
+ int num_refs, XGL_GPU_MEMORY *mem)
+{
+ for (int i = 0; i < num_refs; i++) {
+ xglQueueRemoveMemReference(demo->queue, mem[i]);
}
}
@@ -386,6 +396,7 @@ static void demo_prepare_buffers(struct demo *demo)
&demo->buffers[i].image, &demo->buffers[i].mem);
assert(!err);
+ demo_add_mem_refs(demo, XGL_MEMORY_REF_READ_ONLY_BIT, 1, &demo->buffers[i].mem);
demo_set_image_layout(demo, demo->buffers[i].image,
XGL_IMAGE_LAYOUT_UNDEFINED,
XGL_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
@@ -699,6 +710,7 @@ static void demo_prepare_textures(struct demo *demo)
demo_flush_init_cmd(demo);
demo_destroy_texture_image(&staging_texture);
+ demo_remove_mem_refs(demo, staging_texture.num_mem, staging_texture.mem);
} else {
/* Can't support XGL_FMT_B8G8R8A8_UNORM !? */
assert(!"No support for B8G8R8A8_UNORM as texture image format");
@@ -822,6 +834,8 @@ static void demo_prepare_vertices(struct demo *demo)
assert(!err);
}
+ demo_add_mem_refs(demo, XGL_MEMORY_REF_READ_ONLY_BIT, demo->vertices.num_mem, demo->vertices.mem);
+
demo->vertices.vi.sType = XGL_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO;
demo->vertices.vi.pNext = NULL;
demo->vertices.vi.bindingCount = 1;
@@ -1412,6 +1426,7 @@ static void demo_cleanup(struct demo *demo)
xglBindObjectMemory(demo->vertices.buf, 0, XGL_NULL_HANDLE, 0);
xglDestroyObject(demo->vertices.buf);
+ demo_remove_mem_refs(demo, demo->vertices.num_mem, demo->vertices.mem);
for (j = 0; j < demo->vertices.num_mem; j++)
xglFreeMemory(demo->vertices.mem[j]);
@@ -1419,6 +1434,7 @@ static void demo_cleanup(struct demo *demo)
xglDestroyObject(demo->textures[i].view);
xglBindObjectMemory(demo->textures[i].image, 0, XGL_NULL_HANDLE, 0);
xglDestroyObject(demo->textures[i].image);
+ demo_remove_mem_refs(demo, demo->textures[i].num_mem, demo->textures[i].mem);
for (j = 0; j < demo->textures[i].num_mem; j++)
xglFreeMemory(demo->textures[i].mem[j]);
free(demo->textures[i].mem);
@@ -1427,6 +1443,7 @@ static void demo_cleanup(struct demo *demo)
xglDestroyObject(demo->depth.view);
xglBindObjectMemory(demo->depth.image, 0, XGL_NULL_HANDLE, 0);
+ demo_remove_mem_refs(demo, demo->depth.num_mem, demo->depth.mem);
xglDestroyObject(demo->depth.image);
for (j = 0; j < demo->depth.num_mem; j++)
xglFreeMemory(demo->depth.mem[j]);
@@ -1435,6 +1452,7 @@ static void demo_cleanup(struct demo *demo)
xglDestroyObject(demo->buffers[i].fence);
xglDestroyObject(demo->buffers[i].view);
xglDestroyObject(demo->buffers[i].image);
+ demo_remove_mem_refs(demo, 1, &demo->buffers[i].mem);
}
xglDestroyDevice(demo->device);