diff options
author | Stephen Hines <srhines@google.com> | 2013-08-27 22:15:29 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2013-08-27 22:15:29 +0000 |
commit | dda5e89800e781ff373bad575e3f2a4af68ec03b (patch) | |
tree | e0b51a318296b71ebfab001ff35b89088d572145 | |
parent | 647a0e7af5d29bb46b70a35b933d7067f710652a (diff) | |
parent | 8725468a009ca71e65d518cfa948ea75437db0de (diff) | |
download | rs-tools_r22.2.tar.gz |
Merge "DO NOT MERGE - Add Sampler custom alloc/delete"tools_r22.2
-rw-r--r-- | rsSampler.cpp | 16 | ||||
-rw-r--r-- | rsSampler.h | 2 |
2 files changed, 17 insertions, 1 deletions
diff --git a/rsSampler.cpp b/rsSampler.cpp index fededb18..2a8476a0 100644 --- a/rsSampler.cpp +++ b/rsSampler.cpp @@ -98,7 +98,13 @@ ObjectBaseRef<Sampler> Sampler::getSampler(Context *rsc, } ObjectBase::asyncUnlock(); - Sampler *s = new Sampler(rsc, magFilter, minFilter, wrapS, wrapT, wrapR, aniso); + void* allocMem = rsc->mHal.funcs.allocRuntimeMem(sizeof(Sampler), 0); + if (!allocMem) { + rsc->setError(RS_ERROR_FATAL_DRIVER, "Couldn't allocate memory for Allocation"); + return NULL; + } + + Sampler *s = new (allocMem) Sampler(rsc, magFilter, minFilter, wrapS, wrapT, wrapR, aniso); returnRef.set(s); ObjectBase::asyncLock(); @@ -108,6 +114,14 @@ ObjectBaseRef<Sampler> Sampler::getSampler(Context *rsc, return returnRef; } +void Sampler::operator delete(void* ptr) { + if (ptr) { + Sampler *s = (Sampler*) ptr; + s->getContext()->mHal.funcs.freeRuntimeMem(ptr); + } +} + + //////////////////////////////// namespace android { diff --git a/rsSampler.h b/rsSampler.h index 81220a88..2fdf7073 100644 --- a/rsSampler.h +++ b/rsSampler.h @@ -51,6 +51,8 @@ public: }; Hal mHal; + void operator delete(void* ptr); + static ObjectBaseRef<Sampler> getSampler(Context *, RsSamplerValue magFilter, RsSamplerValue minFilter, |