diff --git a/drivers/gpu/drm/msm/sde/sde_connector.c b/drivers/gpu/drm/msm/sde/sde_connector.c index 5da02221103c..83aaeee13d73 100644 --- a/drivers/gpu/drm/msm/sde/sde_connector.c +++ b/drivers/gpu/drm/msm/sde/sde_connector.c @@ -477,7 +477,10 @@ static int sde_connector_atomic_set_property(struct drm_connector *connector, if (!val) goto end; - rc = sde_fence_create(&c_conn->retire_fence, &fence_fd, 0); + /* + * update the the offset to a timeline for commit completion + */ + rc = sde_fence_create(&c_conn->retire_fence, &fence_fd, 1); if (rc) { SDE_ERROR("fence create failed rc:%d\n", rc); goto end; diff --git a/drivers/gpu/drm/msm/sde/sde_crtc.c b/drivers/gpu/drm/msm/sde/sde_crtc.c index 02b344410cfc..9805c8e8acb4 100644 --- a/drivers/gpu/drm/msm/sde/sde_crtc.c +++ b/drivers/gpu/drm/msm/sde/sde_crtc.c @@ -1720,6 +1720,13 @@ static int _sde_crtc_get_output_fence(struct drm_crtc *crtc, offset = sde_crtc_get_property(cstate, CRTC_PROP_OUTPUT_FENCE_OFFSET); + /* + * Hwcomposer now queries the fences using the commit list in atomic + * commit ioctl. The offset should be set to next timeline + * which will be incremented during the prepare commit phase + */ + offset++; + return sde_fence_create(&sde_crtc->output_fence, val, offset); }