Lines Matching refs:cb
86 static int map_buffer(cb_handle_t *cb, void **vaddr)
88 if (cb->fd < 0 || cb->ashmemSize <= 0) {
92 void *addr = mmap(0, cb->ashmemSize, PROT_READ | PROT_WRITE,
93 MAP_SHARED, cb->fd, 0);
98 cb->ashmemBase = intptr_t(addr);
99 cb->ashmemBasePid = getpid();
292 cb_handle_t *cb = new cb_handle_t(fd, ashmem_size, usage,
301 int err = map_buffer(cb, &vaddr);
304 delete cb;
308 cb->setFd(fd);
320 cb->hostHandle = rcEnc->rcCreateColorBuffer(rcEnc, w, h, glFormat);
321 D("Created host ColorBuffer 0x%x\n", cb->hostHandle);
324 if (!cb->hostHandle) {
327 delete cb;
337 node->handle = cb;
346 *pHandle = cb;
358 const cb_handle_t *cb = (const cb_handle_t *)handle;
359 if (!cb_handle_t::validate((cb_handle_t*)cb)) {
364 if (cb->hostHandle != 0) {
366 D("Closing host ColorBuffer 0x%x\n", cb->hostHandle);
367 rcEnc->rcCloseColorBuffer(rcEnc, cb->hostHandle);
373 if (cb->fd > 0) {
374 if (cb->ashmemSize > 0 && cb->ashmemBase) {
375 munmap((void *)cb->ashmemBase, cb->ashmemSize);
377 close(cb->fd);
384 while( n && n->handle != cb ) {
403 delete cb;
437 cb_handle_t *cb = (cb_handle_t *)buffer;
439 if (!fbdev || !cb_handle_t::validate(cb) || !cb->canBePosted()) {
447 intptr_t *postCountPtr = (intptr_t *)cb->ashmemBase;
455 rcEnc->rcFBPost(rcEnc, cb->hostHandle);
528 cb_handle_t *cb = (cb_handle_t *)handle;
529 if (!gr || !cb_handle_t::validate(cb)) {
530 ERR("gralloc_register_buffer(%p): invalid buffer", cb);
534 if (cb->hostHandle != 0) {
536 D("Opening host ColorBuffer 0x%x\n", cb->hostHandle);
537 rcEnc->rcOpenColorBuffer2(rcEnc, cb->hostHandle);
544 if (cb->ashmemSize > 0 && cb->mappedPid != getpid()) {
546 int err = map_buffer(cb, &vaddr);
548 ERR("gralloc_register_buffer(%p): map failed: %s", cb, strerror(-err));
551 cb->mappedPid = getpid();
565 cb_handle_t *cb = (cb_handle_t *)handle;
566 if (!gr || !cb_handle_t::validate(cb)) {
567 ERR("gralloc_unregister_buffer(%p): invalid buffer", cb);
571 if (cb->hostHandle != 0) {
573 D("Closing host ColorBuffer 0x%x\n", cb->hostHandle);
574 rcEnc->rcCloseColorBuffer(rcEnc, cb->hostHandle);
581 if (cb->ashmemSize > 0 && cb->mappedPid == getpid()) {
583 int err = munmap((void *)cb->ashmemBase, cb->ashmemSize);
585 ERR("gralloc_unregister_buffer(%p): unmap failed", cb);
588 cb->ashmemBase = 0;
589 cb->mappedPid = 0;
592 D("gralloc_unregister_buffer(%p) done\n", cb);
607 cb_handle_t *cb = (cb_handle_t *)handle;
608 if (!gr || !cb_handle_t::validate(cb)) {
614 if (cb->frameworkFormat == HAL_PIXEL_FORMAT_YCbCr_420_888) {
630 bool sw_read_allowed = (0 != (cb->usage & GRALLOC_USAGE_SW_READ_MASK));
631 bool sw_write_allowed = (0 != (cb->usage & GRALLOC_USAGE_SW_WRITE_MASK));
639 ALOGE("gralloc_lock usage mismatch usage=0x%x cb->usage=0x%x\n", usage,
640 cb->usage);
650 if (cb->canBePosted() || sw_read || sw_write ||
653 if (cb->ashmemBasePid != getpid() || !cb->ashmemBase) {
657 if (cb->canBePosted()) {
658 postCount = *((intptr_t *)cb->ashmemBase);
659 cpu_addr = (void *)(cb->ashmemBase + sizeof(intptr_t));
662 cpu_addr = (void *)(cb->ashmemBase);
666 if (cb->hostHandle) {
673 int hostSyncStatus = rcEnc->rcColorBufferCacheFlush(rcEnc, cb->hostHandle,
684 const bool sw_read = (cb->usage & GRALLOC_USAGE_SW_READ_MASK);
685 const bool hw_write = (cb->usage & GRALLOC_USAGE_HW_RENDER);
688 D("gralloc_lock read back color buffer %d %d\n", cb->width, cb->height);
690 rcEnc->rcReadColorBuffer(rcEnc, cb->hostHandle,
691 0, 0, cb->width, cb->height, GL_RGBA, GL_UNSIGNED_BYTE, cpu_addr);
706 cb->lockedLeft = l;
707 cb->lockedTop = t;
708 cb->lockedWidth = w;
709 cb->lockedHeight = h;
726 cb_handle_t *cb = (cb_handle_t *)handle;
727 if (!gr || !cb_handle_t::validate(cb)) {
735 if (cb->lockedWidth > 0 && cb->lockedHeight > 0 && cb->hostHandle) {
741 if (cb->canBePosted()) {
742 cpu_addr = (void *)(cb->ashmemBase + sizeof(int));
745 cpu_addr = (void *)(cb->ashmemBase);
748 if (cb->lockedWidth < cb->width || cb->lockedHeight < cb->height) {
749 int bpp = glUtilsPixelBitSize(cb->glFormat, cb->glType) >> 3;
750 char *tmpBuf = new char[cb->lockedWidth * cb->lockedHeight * bpp];
752 int dst_line_len = cb->lockedWidth * bpp;
753 int src_line_len = cb->width * bpp;
754 char *src = (char *)cpu_addr + cb->lockedTop*src_line_len + cb->lockedLeft*bpp;
756 for (int y=0; y<cb->lockedHeight; y++) {
762 rcEnc->rcUpdateColorBuffer(rcEnc, cb->hostHandle,
763 cb->lockedLeft, cb->lockedTop,
764 cb->lockedWidth, cb->lockedHeight,
765 cb->glFormat, cb->glType,
771 rcEnc->rcUpdateColorBuffer(rcEnc, cb->hostHandle, 0, 0,
772 cb->width, cb->height,
773 cb->glFormat, cb->glType,
778 cb->lockedWidth = cb->lockedHeight = 0;
798 cb_handle_t *cb = (cb_handle_t *)handle;
799 if (!gr || !cb_handle_t::validate(cb)) {
804 if (cb->frameworkFormat != HAL_PIXEL_FORMAT_YCbCr_420_888) {
807 cb->frameworkFormat);
815 bool sw_read_allowed = (0 != (cb->usage & GRALLOC_USAGE_SW_READ_MASK));
819 ALOGE("gralloc_lock_ycbcr usage mismatch usage:0x%x cb->usage:0x%x\n",
820 usage, cb->usage);
825 if (cb->ashmemBasePid != getpid() || !cb->ashmemBase) {
831 if (cb->canBePosted()) {
832 cpu_addr = (uint8_t *)(cb->ashmemBase + sizeof(int));
835 cpu_addr = (uint8_t *)(cb->ashmemBase);
845 switch (cb->format) {
847 yStride = cb->width;
848 cStride = cb->width;
850 vOffset = yStride * cb->height;
856 cb->format);
861 ycbcr->cb = cpu_addr + uOffset;
873 cb->lockedLeft = l;
874 cb->lockedTop = t;
875 cb->lockedWidth = w;
876 cb->lockedHeight = h;
878 DD("gralloc_lock_ycbcr success. usage: %x, ycbcr.y: %p, .cb: %p, .cr: %p, "
880 ycbcr->y, ycbcr->cb, ycbcr->cr, ycbcr->ystride, ycbcr->cstride,