diff options
Diffstat (limited to 'libs/rs/driver/rsdAllocation.cpp')
-rw-r--r-- | libs/rs/driver/rsdAllocation.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libs/rs/driver/rsdAllocation.cpp b/libs/rs/driver/rsdAllocation.cpp index fac40f2..ea92192 100644 --- a/libs/rs/driver/rsdAllocation.cpp +++ b/libs/rs/driver/rsdAllocation.cpp @@ -219,10 +219,13 @@ bool rsdAllocationInit(const Context *rsc, Allocation *alloc, bool forceZero) { return false; } - void * ptr = malloc(alloc->mHal.state.type->getSizeBytes()); + void * ptr = alloc->mHal.state.usrPtr; if (!ptr) { - free(drv); - return false; + ptr = malloc(alloc->mHal.state.type->getSizeBytes()); + if (!ptr) { + free(drv); + return false; + } } drv->glTarget = GL_NONE; @@ -276,7 +279,7 @@ void rsdAllocationDestroy(const Context *rsc, Allocation *alloc) { drv->renderTargetID = 0; } - if (drv->mallocPtr) { + if (drv->mallocPtr && !alloc->mHal.state.usrPtr) { free(drv->mallocPtr); drv->mallocPtr = NULL; } |