diff options
Diffstat (limited to 'sdm/libs/hwc2/hwc_display_primary.cpp')
-rw-r--r-- | sdm/libs/hwc2/hwc_display_primary.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/sdm/libs/hwc2/hwc_display_primary.cpp b/sdm/libs/hwc2/hwc_display_primary.cpp index a520db52..f86fbe1d 100644 --- a/sdm/libs/hwc2/hwc_display_primary.cpp +++ b/sdm/libs/hwc2/hwc_display_primary.cpp @@ -565,8 +565,9 @@ void HWCDisplayPrimary::HandleFrameDump() { } } -HWC2::Error HWCDisplayPrimary::SetFrameDumpConfig(uint32_t count, uint32_t bit_mask_layer_type) { - HWCDisplay::SetFrameDumpConfig(count, bit_mask_layer_type); +HWC2::Error HWCDisplayPrimary::SetFrameDumpConfig(uint32_t count, uint32_t bit_mask_layer_type, + int32_t format, bool post_processed) { + HWCDisplay::SetFrameDumpConfig(count, bit_mask_layer_type, format, post_processed); dump_output_to_file_ = bit_mask_layer_type & (1 << OUTPUT_LAYER_DUMP); DLOGI("output_layer_dump_enable %d", dump_output_to_file_); @@ -576,10 +577,18 @@ HWC2::Error HWCDisplayPrimary::SetFrameDumpConfig(uint32_t count, uint32_t bit_m // Allocate and map output buffer output_buffer_info_ = {}; - // Since we dump DSPP output use Panel resolution. - GetPanelResolution(&output_buffer_info_.buffer_config.width, - &output_buffer_info_.buffer_config.height); - output_buffer_info_.buffer_config.format = kFormatRGB888; + + if (post_processed) { + // To dump post-processed (DSPP) output, use Panel resolution. + GetPanelResolution(&output_buffer_info_.buffer_config.width, + &output_buffer_info_.buffer_config.height); + } else { + // To dump Layer Mixer output, use FrameBuffer resolution. + GetFrameBufferResolution(&output_buffer_info_.buffer_config.width, + &output_buffer_info_.buffer_config.height); + } + + output_buffer_info_.buffer_config.format = GetSDMFormat(format, 0); output_buffer_info_.buffer_config.buffer_count = 1; if (buffer_allocator_->AllocateBuffer(&output_buffer_info_) != 0) { DLOGE("Buffer allocation failed"); @@ -599,7 +608,7 @@ HWC2::Error HWCDisplayPrimary::SetFrameDumpConfig(uint32_t count, uint32_t bit_m output_buffer_base_ = buffer; const native_handle_t *handle = static_cast<native_handle_t *>(output_buffer_info_.private_data); - SetReadbackBuffer(handle, -1, true); + SetReadbackBuffer(handle, -1, post_processed); return HWC2::Error::None; } |