标签:layer 12 _. buffer frame bo crop source
用于GPU合成的GraphicBuffer的size(width & height) -- > 所有走GPU的layer,会绘制到这个buffer中
然后setClientTarget传递给HWC
- SourceCrop 表示要把源的哪一部分做显示,需不需要裁剪
- Client Target 应该是不需要做裁剪的,应该把 buffer中的所有内容 都 经由 HWC 显示到 display frame指定的位置/大小,这也就是为什么 drm_hwcomposer中 SourceCrop 取的是 buffer的width & height,如:
DrmHwcTwo::HwcDisplay::SetClientTarget
HWC2::Error DrmHwcTwo::HwcDisplay::SetClientTarget(buffer_handle_t target,
int32_t acquire_fence,
int32_t dataspace,
hwc_region_t /*damage*/) {
supported(__func__);
UniqueFd uf(acquire_fence);
client_layer_.set_buffer(target);
client_layer_.set_acquire_fence(uf.get());
client_layer_.SetLayerDataspace(dataspace);
/* TODO: Do not update source_crop every call.
* It makes sense to do it once after every hotplug event. */
hwc_drm_bo bo{};
BufferInfoGetter::GetInstance()->ConvertBoInfo(target, &bo);
hwc_frect_t source_crop = {.left = 0.0f,
.top = 0.0f,
.right = bo.width + 0.0f,
.bottom = bo.height + 0.0f};
client_layer_.SetLayerSourceCrop(source_crop);
return HWC2::Error::None;
}
- display frame 是要显示到什么位置,显示大小是多少,如果 source crop 与 display frame 不同,就涉及到VO 去缩放了
标签:layer,12,_.,buffer,frame,bo,crop,source 来源: https://www.cnblogs.com/roger-yu/p/16528327.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。