summaryrefslogtreecommitdiffstats
path: root/libs/rs/driver/rsdAllocation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/rs/driver/rsdAllocation.cpp')
-rw-r--r--libs/rs/driver/rsdAllocation.cpp11
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;
}