From af5c40cf7b9ac5ee62fd34e5b9aeabe525766f06 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 9 Jul 2015 14:37:08 +0200 Subject: [PATCH] Need to allocate memory via callback to renderdoc.dll as well as freeing * This whole interface really needs a tidy-up at some point, but for now this is enough. --- renderdoc/api/replay/basic_types.h | 3 ++- renderdoc/api/replay/renderdoc_replay.h | 3 +++ renderdoc/replay/entry_points.cpp | 6 ++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/renderdoc/api/replay/basic_types.h b/renderdoc/api/replay/basic_types.h index 85161a127..9c245ea6b 100644 --- a/renderdoc/api/replay/basic_types.h +++ b/renderdoc/api/replay/basic_types.h @@ -63,11 +63,12 @@ struct array } #ifdef RENDERDOC_EXPORTS + static void *allocate(size_t s) { return malloc(s); } static void deallocate(const void *p) { free((void *)p); } #else + static void *allocate(size_t s) { return RENDERDOC_AllocArrayMem(s); } static void deallocate(const void *p) { RENDERDOC_FreeArrayMem(p); } #endif - static void *allocate(size_t s) { return malloc(s); } T &operator [](size_t i) { return elems[i]; } const T &operator [](size_t i) const { return elems[i]; } diff --git a/renderdoc/api/replay/renderdoc_replay.h b/renderdoc/api/replay/renderdoc_replay.h index a21c017af..fa6d82d67 100644 --- a/renderdoc/api/replay/renderdoc_replay.h +++ b/renderdoc/api/replay/renderdoc_replay.h @@ -60,6 +60,9 @@ typedef uint32_t bool32; extern "C" RENDERDOC_API void RENDERDOC_CC RENDERDOC_FreeArrayMem(const void *mem); typedef void (RENDERDOC_CC *pRENDERDOC_FreeArrayMem)(const void *mem); +extern "C" RENDERDOC_API void *RENDERDOC_CC RENDERDOC_AllocArrayMem(size_t sz); +typedef void *(RENDERDOC_CC *pRENDERDOC_AllocArrayMem)(size_t sz); + #include "basic_types.h" // We give every resource a globally unique ID so that we can differentiate diff --git a/renderdoc/replay/entry_points.cpp b/renderdoc/replay/entry_points.cpp index f613563a8..dd7c56694 100644 --- a/renderdoc/replay/entry_points.cpp +++ b/renderdoc/replay/entry_points.cpp @@ -383,6 +383,12 @@ void RENDERDOC_CC RENDERDOC_FreeArrayMem(const void *mem) rdctype::array::deallocate(mem); } +extern "C" RENDERDOC_API +void *RENDERDOC_CC RENDERDOC_AllocArrayMem(size_t sz) +{ + return rdctype::array::allocate(sz); +} + extern "C" RENDERDOC_API void RENDERDOC_CC RENDERDOC_InitRemoteAccess(uint32_t *ident) {