diff options
| author | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-04-02 16:30:29 -0600 |
|---|---|---|
| committer | Chia-I Wu <olv@lunarg.com> | 2015-04-16 17:33:29 +0800 |
| commit | c30c3ca2e515dfcc3f4c7e3a3dcb7ac3d8f2d3d8 (patch) | |
| tree | 619b88097b7a739ec2d4e613b79e0dc53c0bd983 | |
| parent | 1359b7adadbc182e121ffa0e5f3cf5c17efdd281 (diff) | |
| download | usermoji-c30c3ca2e515dfcc3f4c7e3a3dcb7ac3d8f2d3d8.tar.xz | |
tri: Add AddMemRef support
| -rw-r--r-- | demos/tri.c | 18 |
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); |
