Instead of calling i915_gem_object_invalidate_frontbuffer(), call i915_gem_object_flush_frontbuffer() which will eventually call psr_force_hw_tracking_exit(). This will force HW tracking to exit PSR instead of disabling and re-enabling. On Gen9 Intel chromebooks, while playing around with Squid software, after drawing line, line delay was observed.Also can see flash, garbage and even shaking display sometimes. With this fix, issues reported were resolved on Gen9 and Gen11 Intel chromebooks. Tested the patch on non-PSR, PSR1 and PSR2 panels, no issue observed. Signed-off-by: Gaurav K Singh <gaurav.k.singh@xxxxxxxxx> --- drivers/gpu/drm/i915/gem/i915_gem_domain.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_domain.c b/drivers/gpu/drm/i915/gem/i915_gem_domain.c index 7f76fc68f498..810fc2381743 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_domain.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_domain.c @@ -461,6 +461,7 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, struct drm_file *file) { struct drm_i915_gem_set_domain *args = data; + struct drm_i915_private *dev_priv = to_i915(dev); struct drm_i915_gem_object *obj; u32 read_domains = args->read_domains; u32 write_domain = args->write_domain; @@ -552,8 +553,13 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, i915_gem_object_unlock(obj); - if (write_domain) - i915_gem_object_invalidate_frontbuffer(obj, ORIGIN_CPU); + if (write_domain) { + if (dev_priv->psr.active) + i915_gem_object_flush_frontbuffer(obj, ORIGIN_DIRTYFB); + else + i915_gem_object_invalidate_frontbuffer(obj, + ORIGIN_CPU); + } out_unpin: i915_gem_object_unpin_pages(obj); -- 2.27.0-rc2 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx