summaryrefslogtreecommitdiff
authorStark Li <stark.li@amlogic.com>2017-02-23 10:37:31 (GMT)
committer Stark Li <stark.li@amlogic.com>2017-03-01 08:00:47 (GMT)
commit68316c1a7a949b55f8958bab5469f7b966461256 (patch)
treed6186acf76f3df76642ab8ded51b8bc324458c74
parent86aa61aa91c0c771488f921d1cc280f05d4c6f30 (diff)
downloadgralloc-68316c1a7a949b55f8958bab5469f7b966461256.zip
gralloc-68316c1a7a949b55f8958bab5469f7b966461256.tar.gz
gralloc-68316c1a7a949b55f8958bab5469f7b966461256.tar.bz2
PD#139798: for android.leanbackjank.cts.CtsDeviceLeanback#testScrollingByTimer
Change-Id: I91826ec515289bdfc82168cefdcc3929ad3622db
Diffstat
-rw-r--r--alloc_ion.cpp54
-rw-r--r--framebuffer.cpp4
2 files changed, 22 insertions, 36 deletions
diff --git a/alloc_ion.cpp b/alloc_ion.cpp
index 4969032..e96d9c4 100644
--- a/alloc_ion.cpp
+++ b/alloc_ion.cpp
@@ -87,51 +87,35 @@ int alloc_backend_alloc(alloc_device_t* dev, size_t size, int usage, buffer_hand
ion_flags = ION_FLAG_CACHED | ION_FLAG_CACHED_NEEDS_SYNC;
}
- bool layerAllocContinousBuf = false;
#ifdef GRALLOC_APP_ALLOC_CONTINUOUS_BUF
-#if 0
- char path[256];
- char comm[256];
- sprintf(path, "/proc/%d/comm", getpid());
- FILE *fp = fopen(path, "r");
- if (fp != NULL)
- {
- fgets(comm, 255, fp);
- if (strstr(comm, "surfaceflinger"))
- {
- layerAllocContinousBuf = true;
- }
- fclose(fp);
- fp = NULL;
- }
-#else
- if (usage & GRALLOC_USAGE_HW_COMPOSER)
- {
- layerAllocContinousBuf = true;
- }
-#endif
+ bool layerAllocContinousBuf = false;
#endif
- bool allocCodecMem = false;
- if (usage & GRALLOC_USAGE_AML_DMA_BUFFER)
- {
- allocCodecMem = true;
- }
-
- //alloc from carveout heap.
- if (allocCodecMem || layerAllocContinousBuf)
+ if (usage & GRALLOC_USAGE_AML_DMA_BUFFER) //alloc from carveout heap.
{
ret = ion_alloc(m->ion_client, size, 0,
ION_HEAP_CARVEOUT_MASK, ion_flags, &ion_hnd);
- if (ret != 0 && layerAllocContinousBuf) {
- layerAllocContinousBuf = false;
- }
- if (ret != 0 && allocCodecMem)
+ if (ret != 0)
{
ret = ion_alloc(m->ion_client, size, 0,
1<<ION_HEAP_TYPE_CUSTOM, ion_flags, &ion_hnd);
}
}
+#ifdef GRALLOC_APP_ALLOC_CONTINUOUS_BUF
+ else if (usage & GRALLOC_USAGE_HW_COMPOSER
+ && !(usage & GRALLOC_USAGE_AML_VIDEO_OVERLAY
+ || usage & GRALLOC_USAGE_AML_OMX_OVERLAY)) {
+ layerAllocContinousBuf = true;
+ ret = ion_alloc(m->ion_client, size, 0,
+ 1<<ION_HEAP_TYPE_CHUNK, ion_flags, &ion_hnd);
+ if (ret != 0) {
+ layerAllocContinousBuf = false;
+ ALOGD("(%d) Failed to alloc ion chunk mem, alloc from system ion buffer.", ret);
+ ret = ion_alloc(m->ion_client, size, 0, heap_mask,
+ ion_flags, &ion_hnd);
+ }
+ }
+#endif
else
{
ret = ion_alloc(m->ion_client, size, 0, heap_mask,
@@ -175,10 +159,12 @@ int alloc_backend_alloc(alloc_device_t* dev, size_t size, int usage, buffer_hand
hnd->ion_hnd = ion_hnd;
/*TODO ion extend hnd->min_pgsz = min_pgsz; */
*pHandle = hnd;
+#ifdef GRALLOC_APP_ALLOC_CONTINUOUS_BUF
if (layerAllocContinousBuf)
{
hnd->flags |= private_handle_t::PRIV_FLAGS_CONTINUOUS_BUF;
}
+#endif
#ifdef GRALLOC_ENABLE_SECURE_LAYER
if (secureOrProtectedLayer)
diff --git a/framebuffer.cpp b/framebuffer.cpp
index e4b7669..e3bb284 100644
--- a/framebuffer.cpp
+++ b/framebuffer.cpp
@@ -579,8 +579,8 @@ int hwc_fb_post_with_fence_locked(
// acquire fence.
sync_req.in_fen_fd = in_fence;
sync_req.op = fbinfo->op;
- // ALOGD( "req offset: %d, width: %d, height: %d, format: %d, shared_fd: %d, op: 0x%x\n",
- // sync_req.yoffset, sync_req.width, sync_req.height, sync_req.format, sync_req.shared_fd, sync_req.op);
+ // ALOGD( "mode: %d, req offset: %d, width: %d, height: %d, format: %d, shared_fd: %d, op: 0x%x\n",
+ // fbinfo->renderMode, sync_req.yoffset, sync_req.width, sync_req.height, sync_req.format, sync_req.shared_fd, sync_req.op);
ioctl(fbinfo->fd, FBIOPUT_OSD_SYNC_RENDER_ADD, &sync_req);
return sync_req.out_fen_fd;