Revert "codec2: C2AllocatorIon/DmaBuf: add support for padding"
This reverts commit 0b2d2f95e8b7c41250829d829b2c67571a3dad09.
Reason for revert: creating revert to be able to test if this CL caused a regression on playback.
Bug: 183684422
Change-Id: Ic64851677b781b118c408762bd33f15a0f98ef1d
diff --git a/media/codec2/vndk/C2AllocatorIon.cpp b/media/codec2/vndk/C2AllocatorIon.cpp
index 12f4027..85623b8 100644
--- a/media/codec2/vndk/C2AllocatorIon.cpp
+++ b/media/codec2/vndk/C2AllocatorIon.cpp
@@ -30,15 +30,10 @@
#include <C2ErrnoUtils.h>
#include <C2HandleIonInternal.h>
-#include <android-base/properties.h>
-
namespace android {
namespace {
constexpr size_t USAGE_LRU_CACHE_SIZE = 1024;
-
- // max padding after ion/dmabuf allocations in bytes
- constexpr uint32_t MAX_PADDING = 0x8000; // 32KB
}
/* size_t <=> int(lo), int(hi) conversions */
@@ -381,34 +376,14 @@
unsigned heapMask, unsigned flags, C2Allocator::id_t id) {
int bufferFd = -1;
ion_user_handle_t buffer = -1;
- // NOTE: read this property directly from the property as this code has to run on
- // Android Q, but the sysprop was only introduced in Android S.
- static size_t sPadding =
- base::GetUintProperty("media.c2.dmabuf.padding", (uint32_t)0, MAX_PADDING);
- if (sPadding > SIZE_MAX - size) {
- ALOGD("ion_alloc: size %#zx cannot accommodate padding %#zx", size, sPadding);
- // use ImplV2 as there is no allocation anyways
- return new ImplV2(ionFd, size, -1, id, -ENOMEM);
- }
-
- size_t allocSize = size + sPadding;
- if (align) {
- if (align - 1 > SIZE_MAX - allocSize) {
- ALOGD("ion_alloc: size %#zx cannot accommodate padding %#zx and alignment %#zx",
- size, sPadding, align);
- // use ImplV2 as there is no allocation anyways
- return new ImplV2(ionFd, size, -1, id, -ENOMEM);
- }
- allocSize += align - 1;
- allocSize &= ~(align - 1);
- }
+ size_t alignedSize = align == 0 ? size : (size + align - 1) & ~(align - 1);
int ret;
if (ion_is_legacy(ionFd)) {
- ret = ion_alloc(ionFd, allocSize, align, heapMask, flags, &buffer);
+ ret = ion_alloc(ionFd, alignedSize, align, heapMask, flags, &buffer);
ALOGV("ion_alloc(ionFd = %d, size = %zu, align = %zu, prot = %d, flags = %d) "
"returned (%d) ; buffer = %d",
- ionFd, allocSize, align, heapMask, flags, ret, buffer);
+ ionFd, alignedSize, align, heapMask, flags, ret, buffer);
if (ret == 0) {
// get buffer fd for native handle constructor
ret = ion_share(ionFd, buffer, &bufferFd);
@@ -417,15 +392,15 @@
buffer = -1;
}
}
- return new Impl(ionFd, size, bufferFd, buffer, id, ret);
+ return new Impl(ionFd, alignedSize, bufferFd, buffer, id, ret);
} else {
- ret = ion_alloc_fd(ionFd, allocSize, align, heapMask, flags, &bufferFd);
+ ret = ion_alloc_fd(ionFd, alignedSize, align, heapMask, flags, &bufferFd);
ALOGV("ion_alloc_fd(ionFd = %d, size = %zu, align = %zu, prot = %d, flags = %d) "
"returned (%d) ; bufferFd = %d",
- ionFd, allocSize, align, heapMask, flags, ret, bufferFd);
+ ionFd, alignedSize, align, heapMask, flags, ret, bufferFd);
- return new ImplV2(ionFd, size, bufferFd, id, ret);
+ return new ImplV2(ionFd, alignedSize, bufferFd, id, ret);
}
}
diff --git a/media/codec2/vndk/C2DmaBufAllocator.cpp b/media/codec2/vndk/C2DmaBufAllocator.cpp
index 7c8999b..750aa31 100644
--- a/media/codec2/vndk/C2DmaBufAllocator.cpp
+++ b/media/codec2/vndk/C2DmaBufAllocator.cpp
@@ -16,13 +16,11 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "C2DmaBufAllocator"
-
#include <BufferAllocator/BufferAllocator.h>
#include <C2Buffer.h>
#include <C2Debug.h>
#include <C2DmaBufAllocator.h>
#include <C2ErrnoUtils.h>
-
#include <linux/ion.h>
#include <sys/mman.h>
#include <unistd.h> // getpagesize, size_t, close, dup
@@ -30,15 +28,14 @@
#include <list>
+#ifdef __ANDROID_APEX__
#include <android-base/properties.h>
+#endif
namespace android {
namespace {
- constexpr size_t USAGE_LRU_CACHE_SIZE = 1024;
-
- // max padding after ion/dmabuf allocations in bytes
- constexpr uint32_t MAX_PADDING = 0x8000; // 32KB
+constexpr size_t USAGE_LRU_CACHE_SIZE = 1024;
}
/* =========================== BUFFER HANDLE =========================== */
@@ -252,23 +249,9 @@
int bufferFd = -1;
int ret = 0;
- // NOTE: read this property directly from the property as this code has to run on
- // Android Q, but the sysprop was only introduced in Android S.
- static size_t sPadding =
- base::GetUintProperty("media.c2.dmabuf.padding", (uint32_t)0, MAX_PADDING);
- if (sPadding > SIZE_MAX - size) {
- // size would overflow
- ALOGD("dmabuf_alloc: size #%zx cannot accommodate padding #%zx", size, sPadding);
- ret = -ENOMEM;
- } else {
- size_t allocSize = size + sPadding;
- bufferFd = alloc.Alloc(heap_name, allocSize, flags);
- if (bufferFd < 0) {
- ret = bufferFd;
- }
- }
+ bufferFd = alloc.Alloc(heap_name, size, flags);
+ if (bufferFd < 0) ret = bufferFd;
- // this may be a non-working handle if bufferFd is negative
mHandle = C2HandleBuf(bufferFd, size);
mId = id;
mInit = c2_status_t(c2_map_errno<ENOMEM, EACCES, EINVAL>(ret));