On primary plane, we sometimes fallback to use XRGB format if
ARGB is not supported. As we cache buffers now, we check if fb is
present and if so ignore the request. In this case we should
delete existing fb and create a new one.
Jira: None.
Test: All hwc-val tests pass on Android.
Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com>
} else {
const OverlayLayer* layer =
&(*(layers.begin() + last_plane.source_layers().front()));
- layer->GetBuffer()->CreateFrameBuffer(gpu_fd_);
+ if (layer->GetBuffer()->GetFb() == 0) {
+ layer->GetBuffer()->CreateFrameBuffer(gpu_fd_);
+ }
+
last_plane.SetOverlayLayer(layer);
if (layer->HasLayerContentChanged() || layer->HasDimensionsChanged()) {
ignore_commit = false;
bool DrmBuffer::CreateFrameBuffer(uint32_t gpu_fd) {
if (image_.drm_fd_) {
- // Has been created before
- return true;
+ ResourceHandle temp;
+ temp.drm_fd_ = image_.drm_fd_;
+ resource_manager_->MarkResourceForDeletion(temp, false);
}
+ image_.drm_fd_ = 0;
+
int ret = drmModeAddFB2(gpu_fd, width_, height_, frame_buffer_format_,
gem_handles_, pitches_, offsets_, &image_.drm_fd_, 0);