commit 9c12d6d512caea604a7d6145c896952095f2de90
parent 1807f98fa916bc5af092607e21e84b00499910af
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Fri, 14 Dec 2018 12:34:56 +0100
Merge branch 'release_0.0.2'
Diffstat:
4 files changed, 56 insertions(+), 2 deletions(-)
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
@@ -60,7 +60,7 @@ include_directories(
################################################################################
set(VERSION_MAJOR 0)
set(VERSION_MINOR 0)
-set(VERSION_PATCH 1)
+set(VERSION_PATCH 2)
set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
set(HTRDR_ARGS_DEFAULT_CAMERA_POS "0,0,0")
diff --git a/src/htrdr.c b/src/htrdr.c
@@ -459,6 +459,9 @@ htrdr_init
htrdr->width = args->image.definition[0];
htrdr->height = args->image.definition[1];
+ res = mem_init_regular_allocator(&htrdr->svx_allocator);
+ if(res != RES_OK) goto error;
+
res = init_mpi(htrdr);
if(res != RES_OK) goto error;
@@ -485,7 +488,7 @@ htrdr_init
}
res = svx_device_create
- (&htrdr->logger, htrdr->allocator, args->verbose, &htrdr->svx);
+ (&htrdr->logger, &htrdr->svx_allocator, args->verbose, &htrdr->svx);
if(res != RES_OK) {
htrdr_log_err(htrdr,
"%s: could not create the Star-VoXel device -- %s.\n",
@@ -589,6 +592,9 @@ htrdr_release(struct htrdr* htrdr)
}
str_release(&htrdr->output_name);
logger_release(&htrdr->logger);
+
+ ASSERT(MEM_ALLOCATED_SIZE(&htrdr->svx_allocator) == 0);
+ mem_shutdown_regular_allocator(&htrdr->svx_allocator);
}
res_T
diff --git a/src/htrdr.h b/src/htrdr.h
@@ -78,6 +78,7 @@ struct htrdr {
struct logger logger;
struct mem_allocator* allocator;
+ struct mem_allocator svx_allocator;
struct mem_allocator* lifo_allocators; /* Per thread lifo allocator */
};
diff --git a/src/htrdr_sky.c b/src/htrdr_sky.c
@@ -207,6 +207,51 @@ struct htrdr_sky {
/*******************************************************************************
* Helper function
******************************************************************************/
+static void
+log_svx_memory_usage(struct htrdr* htrdr)
+{
+ char dump[128];
+ char* dst = dump;
+ size_t available_space = sizeof(dump);
+ const size_t KILO_BYTE = 1024;
+ const size_t MEGA_BYTE = 1024*KILO_BYTE;
+ const size_t GIGA_BYTE = 1024*MEGA_BYTE;
+ size_t ngigas, nmegas, nkilos, memsz, len;
+ ASSERT(htrdr);
+
+ memsz = MEM_ALLOCATED_SIZE(&htrdr->svx_allocator);
+
+ if((ngigas = memsz / GIGA_BYTE) != 0) {
+ len = (size_t)snprintf(dst, available_space,
+ "%lu GB ", (unsigned long)ngigas);
+ CHK(len < available_space);
+ dst += len;
+ available_space -= len;
+ memsz -= ngigas * GIGA_BYTE;
+ }
+ if((nmegas = memsz / MEGA_BYTE) != 0) {
+ len = (size_t)snprintf(dst, available_space,
+ "%lu MB ", (unsigned long)nmegas);
+ CHK(len < available_space);
+ dst += len;
+ available_space -= len;
+ memsz -= nmegas * MEGA_BYTE;
+ }
+ if((nkilos = memsz / KILO_BYTE) != 0) {
+ len = (size_t)snprintf(dst, available_space,
+ "%lu KB ", (unsigned long)nkilos);
+ dst += len;
+ available_space -= len;
+ memsz -= nkilos * KILO_BYTE;
+ }
+ if(memsz) {
+ len = (size_t)snprintf(dst, available_space,
+ "%lu Byte%s", (unsigned long)memsz, memsz > 1 ? "s" : "");
+ CHK(len < available_space);
+ }
+ htrdr_log(htrdr, "SVX memory usage: %s\n", dump);
+}
+
/* Transform pos from world to cloud space */
static INLINE double*
world_to_cloud
@@ -1709,6 +1754,8 @@ htrdr_sky_create
if(res != RES_OK) goto error;
}
+ log_svx_memory_usage(htrdr);
+
exit:
*out_sky = sky;
return res;