author | Stark 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) |
commit | 68316c1a7a949b55f8958bab5469f7b966461256 (patch) | |
tree | d6186acf76f3df76642ab8ded51b8bc324458c74 | |
parent | 86aa61aa91c0c771488f921d1cc280f05d4c6f30 (diff) | |
download | gralloc-68316c1a7a949b55f8958bab5469f7b966461256.zip gralloc-68316c1a7a949b55f8958bab5469f7b966461256.tar.gz gralloc-68316c1a7a949b55f8958bab5469f7b966461256.tar.bz2 |
PD#139798: for android.leanbackjank.cts.CtsDeviceLeanback#testScrollingByTimer
Change-Id: I91826ec515289bdfc82168cefdcc3929ad3622db
-rw-r--r-- | alloc_ion.cpp | 54 | ||||
-rw-r--r-- | framebuffer.cpp | 4 |
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; |