Merge "QCamera3: Do not cache Jpeg input buffers" into oc-mr1-dev
diff --git a/msm8998/QCamera2/HAL3/QCamera3Channel.cpp b/msm8998/QCamera2/HAL3/QCamera3Channel.cpp
index 6307aaa..fd0c9c4 100644
--- a/msm8998/QCamera2/HAL3/QCamera3Channel.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3Channel.cpp
@@ -3715,7 +3715,7 @@
Mutex::Autolock lock(mFreeBuffersLock);
uint32_t bufIdx;
if (mFreeBufferList.empty()) {
- rc = mYuvMemory->allocateOne(mFrameLen);
+ rc = mYuvMemory->allocateOne(mFrameLen, /*isCached*/false);
if (rc < 0) {
LOGE("Failed to allocate heap buffer. Fatal");
return rc;
@@ -4049,7 +4049,7 @@
// Get an available YUV buffer.
if (mFreeBufferList.empty()) {
// Allocate a buffer if no one is available.
- rc = mYuvMemory->allocateOne(mFrameLen);
+ rc = mYuvMemory->allocateOne(mFrameLen, /*isCached*/false);
if (rc < 0) {
LOGE("Failed to allocate heap buffer. Fatal");
return rc;
@@ -4132,9 +4132,6 @@
return rc;
}
- // Invalidate YUV buffer cache
- mYuvMemory->invalidateCache(frame->buf_idx);
-
// Start postprocessor
startPostProc(reproc_cfg);
diff --git a/msm8998/QCamera2/HAL3/QCamera3Mem.cpp b/msm8998/QCamera2/HAL3/QCamera3Mem.cpp
index 4298bbe..9cccf32 100755
--- a/msm8998/QCamera2/HAL3/QCamera3Mem.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3Mem.cpp
@@ -303,7 +303,7 @@
* none-zero failure code
*==========================================================================*/
int QCamera3HeapMemory::allocOneBuffer(QCamera3MemInfo &memInfo,
- unsigned int heap_id, size_t size)
+ unsigned int heap_id, size_t size, bool isCached)
{
int rc = OK;
struct ion_handle_data handle_data;
@@ -320,7 +320,9 @@
/* to make it page size aligned */
allocData.len = (allocData.len + 4095U) & (~4095U);
allocData.align = 4096;
- allocData.flags = ION_FLAG_CACHED;
+ if (isCached) {
+ allocData.flags = ION_FLAG_CACHED;
+ }
allocData.heap_id_mask = heap_id;
rc = ioctl(main_ion_fd, ION_IOC_ALLOC, &allocData);
if (rc < 0) {
@@ -617,7 +619,7 @@
* NO_ERROR -- success
* none-zero failure code
*==========================================================================*/
-int QCamera3HeapMemory::allocateOne(size_t size)
+int QCamera3HeapMemory::allocateOne(size_t size, bool isCached)
{
unsigned int heap_id_mask = 0x1 << ION_IOMMU_HEAP_ID;
int rc = NO_ERROR;
@@ -631,7 +633,7 @@
return BAD_INDEX;
}
- rc = allocOneBuffer(mMemInfo[mBufferCount], heap_id_mask, size);
+ rc = allocOneBuffer(mMemInfo[mBufferCount], heap_id_mask, size, isCached);
if (rc < 0) {
LOGE("AllocateIonMemory failed");
return NO_MEMORY;
diff --git a/msm8998/QCamera2/HAL3/QCamera3Mem.h b/msm8998/QCamera2/HAL3/QCamera3Mem.h
index 14224e4..eb1ac6f 100644
--- a/msm8998/QCamera2/HAL3/QCamera3Mem.h
+++ b/msm8998/QCamera2/HAL3/QCamera3Mem.h
@@ -107,7 +107,7 @@
virtual ~QCamera3HeapMemory();
int allocate(size_t size);
- int allocateOne(size_t size);
+ int allocateOne(size_t size, bool isCached = true);
void deallocate();
virtual int cacheOps(uint32_t index, unsigned int cmd);
@@ -123,7 +123,7 @@
virtual void *getPtrLocked(uint32_t index);
private:
int allocOneBuffer(struct QCamera3MemInfo &memInfo,
- unsigned int heap_id, size_t size);
+ unsigned int heap_id, size_t size, bool isCached = true);
void deallocOneBuffer(struct QCamera3MemInfo &memInfo);
uint32_t mMaxCnt;
};
diff --git a/msm8998/QCamera2/HAL3/QCamera3StreamMem.cpp b/msm8998/QCamera2/HAL3/QCamera3StreamMem.cpp
index 5412abd..e307539 100644
--- a/msm8998/QCamera2/HAL3/QCamera3StreamMem.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3StreamMem.cpp
@@ -395,10 +395,10 @@
return mHeapMem.allocate(size);
}
-int QCamera3StreamMem::allocateOne(size_t size)
+int QCamera3StreamMem::allocateOne(size_t size, bool isCached)
{
Mutex::Autolock lock(mLock);
- return mHeapMem.allocateOne(size);
+ return mHeapMem.allocateOne(size, isCached);
}
/*===========================================================================
diff --git a/msm8998/QCamera2/HAL3/QCamera3StreamMem.h b/msm8998/QCamera2/HAL3/QCamera3StreamMem.h
index cbe3ea6..263d798 100644
--- a/msm8998/QCamera2/HAL3/QCamera3StreamMem.h
+++ b/msm8998/QCamera2/HAL3/QCamera3StreamMem.h
@@ -74,7 +74,7 @@
// Heap buffer related functions
int allocateAll(size_t size);
- int allocateOne(size_t size);
+ int allocateOne(size_t size, bool isCached = true);
void deallocate(); //TODO: replace with unified clear() function?
// Clear function: unregister for gralloc buffer, and deallocate for heap buffer