diff options
author | Prabhanjan Kandula <pkandula@codeaurora.org> | 2018-06-06 18:07:15 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-10-15 06:33:14 -0700 |
commit | 468c1e1ba74179022a55d1e4c79e511693ca276e (patch) | |
tree | 11870ae2b7d6faa6069e8dcead91c54eb7db78a6 | |
parent | bdbe838f2355072b8f6c59766bd9feae9464cee6 (diff) | |
download | android_hardware_qcom_sdm710_display-468c1e1ba74179022a55d1e4c79e511693ca276e.tar.gz android_hardware_qcom_sdm710_display-468c1e1ba74179022a55d1e4c79e511693ca276e.tar.bz2 android_hardware_qcom_sdm710_display-468c1e1ba74179022a55d1e4c79e511693ca276e.zip |
sdm: Fix Concurrent Writeback fence handling
Fence get is now part of atomic commit. Update fence get property
for Concurrent Writeback before pushing commit.
Change-Id: Ib089633408dd801cff8a0b779401521e1c3bbfec
-rw-r--r-- | sdm/libs/core/drm/hw_peripheral_drm.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sdm/libs/core/drm/hw_peripheral_drm.cpp b/sdm/libs/core/drm/hw_peripheral_drm.cpp index 61e67c11..a7bb33d6 100644 --- a/sdm/libs/core/drm/hw_peripheral_drm.cpp +++ b/sdm/libs/core/drm/hw_peripheral_drm.cpp @@ -165,6 +165,13 @@ void HWPeripheralDRM::SetupConcurrentWriteback(const HWLayersInfo &hw_layer_info if (enable) { // Set DRM properties for Concurrent Writeback. ConfigureConcurrentWriteback(hw_layer_info.stack); + + if (!validate) { + // Set GET_RETIRE_FENCE property to get Concurrent Writeback fence. + int *fence = &hw_layer_info.stack->output_buffer->release_fence_fd; + drm_atomic_intf_->Perform(DRMOps::CONNECTOR_GET_RETIRE_FENCE, + cwb_config_.token.conn_id, fence); + } } else { // Tear down the Concurrent Writeback topology. drm_atomic_intf_->Perform(DRMOps::CONNECTOR_SET_CRTC, cwb_config_.token.conn_id, 0); @@ -239,11 +246,7 @@ void HWPeripheralDRM::ConfigureConcurrentWriteback(LayerStack *layer_stack) { void HWPeripheralDRM::PostCommitConcurrentWriteback(LayerBuffer *output_buffer) { bool enabled = hw_resource_.has_concurrent_writeback && output_buffer; - if (enabled) { - // Get Concurrent Writeback fence - int *fence = &output_buffer->release_fence_fd; - drm_atomic_intf_->Perform(DRMOps::CONNECTOR_GET_RETIRE_FENCE, cwb_config_.token.conn_id, fence); - } else { + if (!enabled) { drm_mgr_intf_->UnregisterDisplay(cwb_config_.token); cwb_config_.enabled = false; } |