Codec2: Integrate support for the system-uncached DMA BUF Heap
While not yet upstream, the system-uncached heap has been added
to android12-5.10, so lets enable support for selecting it on
buffers who's usage flags are not set to C2MemoryUsage::CPU_READ
or C2MemoryUsage::CPU_WRITE.
Because it isn't guarenteed to exist, this adds a helper
function to check if system-uncached is supported as well, so
devices without it can fall back to the system heap.
Signed-off-by: John Stultz <john.stultz@linaro.org>
Change-Id: I525525cae85b6759e460598c454f1e5f150391f9
diff --git a/media/codec2/vndk/C2Store.cpp b/media/codec2/vndk/C2Store.cpp
index 1e907c1..6c82d15 100644
--- a/media/codec2/vndk/C2Store.cpp
+++ b/media/codec2/vndk/C2Store.cpp
@@ -780,7 +780,13 @@
};
static C2R setDmaBufUsage(bool /* mayBlock */, C2P<C2StoreDmaBufUsageInfo> &me) {
- strncpy(me.set().m.heapName, "system", me.v.flexCount());
+ long long usage = (long long)me.get().m.usage;
+ if (C2DmaBufAllocator::system_uncached_supported() &&
+ !(usage & (C2MemoryUsage::CPU_READ | C2MemoryUsage::CPU_WRITE))) {
+ strncpy(me.set().m.heapName, "system-uncached", me.v.flexCount());
+ } else {
+ strncpy(me.set().m.heapName, "system", me.v.flexCount());
+ }
me.set().m.allocFlags = 0;
return C2R::Ok();
};