Lines Matching refs:cb
90 static int map_buffer(cb_handle_t *cb, void **vaddr)
92 if (cb->fd < 0 || cb->ashmemSize <= 0) {
96 void *addr = mmap(0, cb->ashmemSize, PROT_READ | PROT_WRITE,
97 MAP_SHARED, cb->fd, 0);
102 cb->ashmemBase = intptr_t(addr);
103 cb->ashmemBasePid = getpid();
217 cb_handle_t *cb = new cb_handle_t(fd, ashmem_size, usage,
225 int err = map_buffer(cb, &vaddr);
228 delete cb;
232 cb->setFd(fd);
241 cb->hostHandle = rcEnc->rcCreateColorBuffer(rcEnc, w, h, glFormat);
242 D("Created host ColorBuffer 0x%x\n", cb->hostHandle);
245 if (!cb->hostHandle) {
248 delete cb;
258 node->handle = cb;
267 *pHandle = cb;
274 const cb_handle_t *cb = (const cb_handle_t *)handle;
275 if (!cb_handle_t::validate((cb_handle_t*)cb)) {
280 if (cb->hostHandle != 0) {
282 D("Closing host ColorBuffer 0x%x\n", cb->hostHandle);
283 rcEnc->rcCloseColorBuffer(rcEnc, cb->hostHandle);
289 if (cb->fd > 0) {
290 if (cb->ashmemSize > 0 && cb->ashmemBase) {
291 munmap((void *)cb->ashmemBase, cb->ashmemSize);
293 close(cb->fd);
300 while( n && n->handle != cb ) {
319 delete cb;
351 cb_handle_t *cb = (cb_handle_t *)buffer;
353 if (!fbdev || !cb_handle_t::validate(cb) || !cb->canBePosted()) {
361 uint32_t *postCountPtr = (uint32_t *)cb->ashmemBase;
369 rcEnc->rcFBPost(rcEnc, cb->hostHandle);
437 cb_handle_t *cb = (cb_handle_t *)handle;
438 if (!gr || !cb_handle_t::validate(cb)) {
439 ERR("gralloc_register_buffer(%p): invalid buffer", cb);
443 if (cb->hostHandle != 0) {
445 D("Opening host ColorBuffer 0x%x\n", cb->hostHandle);
446 rcEnc->rcOpenColorBuffer(rcEnc, cb->hostHandle);
453 if (cb->ashmemSize > 0 && cb->mappedPid != getpid()) {
455 int err = map_buffer(cb, &vaddr);
457 ERR("gralloc_register_buffer(%p): map failed: %s", cb, strerror(-err));
460 cb->mappedPid = getpid();
474 cb_handle_t *cb = (cb_handle_t *)handle;
475 if (!gr || !cb_handle_t::validate(cb)) {
476 ERR("gralloc_unregister_buffer(%p): invalid buffer", cb);
480 if (cb->hostHandle != 0) {
482 D("Closing host ColorBuffer 0x%x\n", cb->hostHandle);
483 rcEnc->rcCloseColorBuffer(rcEnc, cb->hostHandle);
490 if (cb->ashmemSize > 0 && cb->mappedPid == getpid()) {
492 int err = munmap((void *)cb->ashmemBase, cb->ashmemSize);
494 ERR("gralloc_unregister_buffer(%p): unmap failed", cb);
497 cb->ashmemBase = NULL;
498 cb->mappedPid = 0;
501 D("gralloc_unregister_buffer(%p) done\n", cb);
516 cb_handle_t *cb = (cb_handle_t *)handle;
517 if (!gr || !cb_handle_t::validate(cb)) {
530 bool sw_read_allowed = (0 != (cb->usage & GRALLOC_USAGE_SW_READ_MASK));
531 bool sw_write_allowed = (0 != (cb->usage & GRALLOC_USAGE_SW_WRITE_MASK));
537 LOGE("gralloc_lock usage mismatch usage=0x%x cb->usage=0x%x\n", usage, cb->usage);
547 if (cb->canBePosted() || sw_read || sw_write) {
548 if (cb->ashmemBasePid != getpid() || !cb->ashmemBase) {
552 if (cb->canBePosted()) {
553 postCount = *((int *)cb->ashmemBase);
554 cpu_addr = (void *)(cb->ashmemBase + sizeof(int));
557 cpu_addr = (void *)(cb->ashmemBase);
561 if (cb->hostHandle) {
568 int hostSyncStatus = rcEnc->rcColorBufferCacheFlush(rcEnc, cb->hostHandle,
591 cb->lockedLeft = l;
592 cb->lockedTop = t;
593 cb->lockedWidth = w;
594 cb->lockedHeight = h;
608 cb_handle_t *cb = (cb_handle_t *)handle;
609 if (!gr || !cb_handle_t::validate(cb)) {
617 if (cb->lockedWidth > 0 && cb->lockedHeight > 0 && cb->hostHandle) {
623 if (cb->canBePosted()) {
624 cpu_addr = (void *)(cb->ashmemBase + sizeof(int));
627 cpu_addr = (void *)(cb->ashmemBase);
630 if (cb->lockedWidth < cb->width || cb->lockedHeight < cb->height) {
631 int bpp = glUtilsPixelBitSize(cb->glFormat, cb->glType) >> 3;
632 char *tmpBuf = new char[cb->lockedWidth * cb->lockedHeight * bpp];
634 int dst_line_len = cb->lockedWidth * bpp;
635 int src_line_len = cb->width * bpp;
636 char *src = (char *)cpu_addr + cb->lockedTop*src_line_len + cb->lockedLeft*bpp;
638 for (int y=0; y<cb->lockedHeight; y++) {
644 rcEnc->rcUpdateColorBuffer(rcEnc, cb->hostHandle,
645 cb->lockedLeft, cb->lockedTop,
646 cb->lockedWidth, cb->lockedHeight,
647 cb->glFormat, cb->glType,
653 rcEnc->rcUpdateColorBuffer(rcEnc, cb->hostHandle, 0, 0,
654 cb->width, cb->height,
655 cb->glFormat, cb->glType,
660 cb->lockedWidth = cb->lockedHeight = 0;