summaryrefslogtreecommitdiff
authorStark 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)
commit7ec8463991673f4a6895a7e0eca56545b61611b2 (patch)
treef54d642fcecc93a7578c84e8c791a7ec69f87380
parent1371c5101108b16e1a70a69f55fa051942f544e6 (diff)
downloadgralloc-7ec8463991673f4a6895a7e0eca56545b61611b2.zip
gralloc-7ec8463991673f4a6895a7e0eca56545b61611b2.tar.gz
gralloc-7ec8463991673f4a6895a7e0eca56545b61611b2.tar.bz2
PD#138785: use share_fd instead of phyaddr.
Change-Id: Iccf9222ce3011fb98ccce47c9210d682df98701c
Diffstat
-rw-r--r--framebuffer.cpp44
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;