From 13d4c3303ee6bbbe87e29dcf4a65f19597d2a12c Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Sat, 11 Apr 2015 12:55:53 +0800 Subject: demo: remove XCB_NVIDIA paths The memory returned by xglWsiX11CreatePresentableImage() is not supposed to be freed. This change at worse leaks the memories on app exiting for some implementations. That should be fine. Also, the function returns at most one memory. Remove multiple memory support from tri. --- demos/cube.c | 3 --- demos/tri.c | 22 +++++++--------------- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/demos/cube.c b/demos/cube.c index fcec0e04..6553962e 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -1808,9 +1808,6 @@ static void demo_cleanup(struct demo *demo) xglDestroyObject(demo->buffers[i].view); xglDestroyObject(demo->buffers[i].image); xglDestroyObject(demo->buffers[i].cmd); -#if defined(XCB_NVIDIA) - xglFreeMemory(demo->buffers[i].mem); -#endif } xglDestroyDevice(demo->device); diff --git a/demos/tri.c b/demos/tri.c index a835c7f7..7262ff3b 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -44,8 +44,7 @@ struct demo { struct { XGL_IMAGE image; - uint32_t num_mem; - XGL_GPU_MEMORY *mem; + XGL_GPU_MEMORY mem; XGL_COLOR_ATTACHMENT_VIEW view; XGL_FENCE fence; @@ -206,8 +205,9 @@ static void demo_draw(struct demo *demo) uint32_t i, idx = 0; XGL_MEMORY_REF *memRefs = 0; - memRefs = malloc(sizeof(XGL_MEMORY_REF) * (2 + demo->depth.num_mem + - demo->textures[0].num_mem + demo->vertices.num_mem)); + memRefs = malloc(sizeof(XGL_MEMORY_REF) * (DEMO_BUFFER_COUNT + + demo->depth.num_mem + demo->textures[0].num_mem + + demo->vertices.num_mem)); for (i = 0; i < demo->depth.num_mem; i++, idx++) { memRefs[idx].mem = demo->depth.mem[i]; memRefs[idx].flags = 0; @@ -217,10 +217,8 @@ static void demo_draw(struct demo *demo) memRefs[idx].flags = 0; } for (i = 0; i < DEMO_BUFFER_COUNT; i++) { - for (uint32_t j = 0; j < demo->buffers[i].num_mem; j++) { - memRefs[idx].mem = demo->buffers[i].mem[j]; - memRefs[idx++].flags = 0; - } + memRefs[idx].mem = demo->buffers[i].mem; + memRefs[idx++].flags = 0; } for (i = 0; i < demo->vertices.num_mem; i++, idx++) { memRefs[idx].mem = demo->vertices.mem[i]; @@ -267,9 +265,8 @@ static void demo_prepare_buffers(struct demo *demo) demo->buffers[i].mem = malloc(sizeof(XGL_GPU_MEMORY)); err = xglWsiX11CreatePresentableImage(demo->device, &presentable_image, - &demo->buffers[i].image, &demo->buffers[i].mem[0]); + &demo->buffers[i].image, &demo->buffers[i].mem); assert(!err); - demo->buffers[i].num_mem = 1; color_attachment_view.image = demo->buffers[i].image; @@ -1322,11 +1319,6 @@ static void demo_cleanup(struct demo *demo) xglDestroyObject(demo->buffers[i].fence); xglDestroyObject(demo->buffers[i].view); xglDestroyObject(demo->buffers[i].image); -#if defined(XCB_NVIDIA) - for (j = 0; j < demo->buffers[i].num_mem; j++) - xglFreeMemory(demo->buffers[i].mem[j]); -#endif - free(demo->buffers[i].mem); } xglDestroyDevice(demo->device); -- cgit v1.2.3