author | Stark Li <stark.li@amlogic.com> | 2017-02-09 10:10:23 (GMT) |
---|---|---|
committer | Frank Chen <frank.chen@amlogic.com> | 2017-02-21 06:23:15 (GMT) |
commit | 7ec8463991673f4a6895a7e0eca56545b61611b2 (patch) | |
tree | f54d642fcecc93a7578c84e8c791a7ec69f87380 | |
parent | 1371c5101108b16e1a70a69f55fa051942f544e6 (diff) | |
download | gralloc-7ec8463991673f4a6895a7e0eca56545b61611b2.zip gralloc-7ec8463991673f4a6895a7e0eca56545b61611b2.tar.gz gralloc-7ec8463991673f4a6895a7e0eca56545b61611b2.tar.bz2 |
PD#138785: use share_fd instead of phyaddr.
Change-Id: Iccf9222ce3011fb98ccce47c9210d682df98701c
-rw-r--r-- | framebuffer.cpp | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/framebuffer.cpp b/framebuffer.cpp index b81fff3..fb49af4 100644 --- a/framebuffer.cpp +++ b/framebuffer.cpp @@ -572,7 +572,7 @@ int hwc_fb_post_with_fence_locked( int width; int height; int format; - unsigned int paddr; + int shared_fd; unsigned int op; unsigned int reserve; } fb_sync_request_t; @@ -581,26 +581,34 @@ int hwc_fb_post_with_fence_locked( fb_sync_request_t sync_req; memset(&sync_req, 0, sizeof(fb_sync_request_t)); - sync_req.xoffset = fbinfo->info.xoffset; - sync_req.yoffset = buffer->offset / fbinfo->finfo.line_length; + sync_req.shared_fd = -1; + switch (fbinfo->renderMode) { + case GLES_COMPOSE_MODE: + sync_req.xoffset = fbinfo->info.xoffset; + sync_req.yoffset = buffer->offset / fbinfo->finfo.line_length; + break; + case DIRECT_COMPOSE_MODE: + sync_req.width = buffer->width; + sync_req.height = buffer->height; + sync_req.format = buffer->format; + sync_req.shared_fd = buffer->share_fd; + break; + case GE2D_COMPOSE_MODE: + sync_req.width = fbinfo->info.xres; + sync_req.height = fbinfo->info.yres; + sync_req.format = HAL_PIXEL_FORMAT_RGBA_8888; + sync_req.yoffset = fbinfo->yOffset; + sync_req.shared_fd = buffer->share_fd; + break; + default: + ALOGE("unknown compose mode!!!"); + break; + } // acquire fence. sync_req.in_fen_fd = in_fence; - if (fbinfo->renderMode == DIRECT_COMPOSE_MODE) { // Direct composer mode. - sync_req.width = buffer->width; - sync_req.height = buffer->height; - sync_req.format = buffer->format; - sync_req.paddr = getIonPhyAddr(fbinfo, hnd); - } else if (fbinfo->renderMode == GE2D_COMPOSE_MODE) { // GE2D composer mode. - sync_req.width = fbinfo->info.xres; - sync_req.height = fbinfo->info.yres; - sync_req.format = HAL_PIXEL_FORMAT_RGBA_8888; - unsigned int paddr = getIonPhyAddr(fbinfo, hnd); - if (0 != paddr) - sync_req.paddr = paddr + fbinfo->yOffset * fbinfo->finfo.line_length; - } sync_req.op = fbinfo->op; - // ALOGD( "req offset: %d, width: %d, height: %d, format: %d, addr: 0x%x, op: 0x%x\n", - // sync_req.yoffset, sync_req.width, sync_req.height, sync_req.format, sync_req.paddr, sync_req.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); ioctl(fbinfo->fd, FBIOPUT_OSD_SYNC_RENDER_ADD, &sync_req); return sync_req.out_fen_fd; |