Home | History | Annotate | Download | only in libhwcomposer

Lines Matching defs:CopyBit

21 #include <copybit.h>
72 void CopyBit::reset() {
77 bool CopyBit::canUseCopybitForYUV(hwc_context_t *ctx) {
85 bool CopyBit::canUseCopybitForRGB(hwc_context_t *ctx,
93 // use copybit, if (TotalRGBRenderArea < threashold * FB Area)
106 // MDP composition, use COPYBIT always
109 // C2D composition, use COPYBIT
115 unsigned int CopyBit::getRGBRenderingArea
134 int CopyBit::getLayersChanging(hwc_context_t *ctx,
186 int CopyBit::checkDirtyRect(hwc_context_t *ctx,
211 bool CopyBit::prepareOverlap(hwc_context_t *ctx,
272 bool CopyBit::prepare(hwc_context_t *ctx, hwc_display_contents_1_t *list,
276 // No copybit device found - cannot use copybit
361 // We cannot mix copybit layer with layers marked to be drawn on FB
370 // Mark all layers to be drawn by copybit
385 int CopyBit::clear (private_handle_t* hnd, hwc_rect_t& rect)
399 copybit_device_t *copybit = mEngine;
400 ret = copybit->clear(copybit, &buf, &clear_rect);
404 bool CopyBit::drawUsingAppBufferComposition(hwc_context_t *ctx,
455 copybit_device_t *copybit = getCopyBitDevice();
457 copybit->set_sync(copybit,
464 ALOGE("%s : Copybit failed", __FUNCTION__);
467 // Get Release Fence FD of copybit for the App layer(s)
468 copybit->flush_get_fence(copybit, copybitFd);
477 bool CopyBit::draw(hwc_context_t *ctx, hwc_display_contents_1_t *list,
479 // draw layers marked for COPYBIT
487 mFbCache.reset(); // there is no layer marked for copybit
515 copybit_device_t *copybit = getCopyBitDevice();
516 copybit->set_sync(copybit, list->hwLayers[last].acquireFenceFd);
537 ALOGD_IF(DEBUG_COPYBIT, "%s: Not Marked for copybit", __FUNCTION__);
564 copybit_device_t *copybit = getCopyBitDevice();
566 copybit->flush_get_fence(copybit, fd);
576 int CopyBit::drawOverlap(hwc_context_t *ctx, hwc_display_contents_1_t *list) {
625 copybit_device_t *copybit = getCopyBitDevice();
626 copybit->flush_get_fence(copybit, &fd);
634 int CopyBit::drawRectUsingCopybit(hwc_context_t *dev, hwc_layer_1_t *layer,
656 // Set the Copybit Source
673 // Copybit source rect
677 // Copybit destination rect
681 // Copybit dst
689 copybit_device_t *copybit = mEngine;
691 // Copybit region is the destRect
699 copybit->set_parameter(copybit, COPYBIT_FRAMEBUFFER_WIDTH,
701 copybit->set_parameter(copybit, COPYBIT_FRAMEBUFFER_HEIGHT,
703 copybit->set_parameter(copybit, COPYBIT_TRANSFORM, layer->transform);
704 copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, layer->planeAlpha);
705 copybit->set_parameter(copybit, COPYBIT_BLEND_MODE, layer->blending);
706 copybit->set_parameter(copybit, COPYBIT_DITHER,
709 copybit->set_sync(copybit, acquireFd);
710 int err = copybit->stretch(copybit, &dst, &src, &dstRect, &srcRect,
714 ALOGE("%s: copybit stretch failed",__FUNCTION__);
719 int CopyBit::drawLayerUsingCopybit(hwc_context_t *dev, hwc_layer_1_t *layer,
744 // Set the copybit source:
788 // Copybit source rect
794 // Copybit destination rect
809 // Copybit dst
817 copybit_device_t *copybit = mEngine;
824 // Copybit dst
826 (float)copybit->get(copybit,COPYBIT_MAGNIFICATION_LIMIT);
828 (float)copybit->get(copybit,COPYBIT_MINIFICATION_LIMIT);
891 // We do not want copybit to generate alpha values from nothing
913 copybit->set_parameter(copybit,COPYBIT_TRANSFORM,0);
915 copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, 255);
916 copybit->set_sync(copybit, acquireFd);
917 err = copybit->stretch(copybit,&tmp_dst, &src, &tmp_rect,
920 ALOGE("%s:%d::tmp copybit stretch failed",__FUNCTION__,
928 copybit->flush_get_fence(copybit, &acquireFd);
937 // Copybit region
941 copybit->set_parameter(copybit, COPYBIT_FRAMEBUFFER_WIDTH,
943 copybit->set_parameter(copybit, COPYBIT_FRAMEBUFFER_HEIGHT,
945 copybit->set_parameter(copybit, COPYBIT_TRANSFORM,
948 copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, 255);
949 copybit->set_parameter(copybit, COPYBIT_BLEND_MODE,
951 copybit->set_parameter(copybit, COPYBIT_DITHER,
954 copybit->set_parameter(copybit, COPYBIT_FG_LAYER, isFG ?
957 copybit->set_parameter(copybit, COPYBIT_BLIT_TO_FRAMEBUFFER,
959 copybit->set_sync(copybit, acquireFd);
960 err = copybit->stretch(copybit, &dst, &src, &dstRect, &srcRect,
962 copybit->set_parameter(copybit, COPYBIT_BLIT_TO_FRAMEBUFFER,
969 copybit->flush_get_fence(copybit, &releaseFd);
981 ALOGE("%s: copybit stretch failed",__FUNCTION__);
985 int CopyBit::fillColorUsingCopybit(hwc_layer_1_t *layer,
993 // Copybit dst
1001 // Copybit dst rect
1007 copybit_device_t *copybit = mEngine;
1008 copybit->set_parameter(copybit, COPYBIT_FRAMEBUFFER_WIDTH,
1010 copybit->set_parameter(copybit, COPYBIT_FRAMEBUFFER_HEIGHT,
1012 copybit->set_parameter(copybit, COPYBIT_DITHER,
1015 copybit->set_parameter(copybit, COPYBIT_TRANSFORM, 0);
1016 copybit->set_parameter(copybit, COPYBIT_BLEND_MODE, layer->blending);
1017 copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, layer->planeAlpha);
1018 copybit->set_parameter(copybit, COPYBIT_BLIT_TO_FRAMEBUFFER,COPYBIT_ENABLE);
1019 int res = copybit->fill_color(copybit, &dst, &dstRect, color);
1020 copybit->set_parameter(copybit,COPYBIT_BLIT_TO_FRAMEBUFFER,COPYBIT_DISABLE);
1024 void CopyBit::getLayerResolution(const hwc_layer_1_t* layer,
1033 bool CopyBit::validateParams(hwc_context_t *ctx,
1047 int CopyBit::allocRenderBuffers(int w, int h, int f)
1064 void CopyBit::freeRenderBuffers()
1079 private_handle_t * CopyBit::getCurrentRenderBuffer() {
1083 void CopyBit::setReleaseFd(int fd) {
1089 void CopyBit::setReleaseFdSync(int fd) {
1101 struct copybit_device_t* CopyBit::getCopyBitDevice() {
1105 CopyBit::CopyBit(hwc_context_t *ctx, const int& dpy) : mEngine(0),
1129 ALOGE("FATAL ERROR: copybit open failed.");
1132 ALOGE("FATAL ERROR: copybit hw module not found");
1136 CopyBit::~CopyBit()
1145 CopyBit::LayerCache::LayerCache() {
1148 void CopyBit::LayerCache::reset() {
1152 void CopyBit::LayerCache::updateCounts(hwc_context_t *ctx,
1161 CopyBit::FbCache::FbCache() {
1164 void CopyBit::FbCache::reset() {
1169 void CopyBit::FbCache::insertAndUpdateFbCache(hwc_rect_t dirtyRect) {
1175 int CopyBit::FbCache::getUnchangedFbDRCount(hwc_rect_t dirtyRect){