linux/drivers/gpu/drm/i915
Ville Syrjälä 9eb0463cfe drm/i915/fbc: Fix fence_y_offset handling
The current fence_y_offset calculation is broken. I think it more or
less used to do the right thing, but then I changed the plane code
to put the final x/y source offsets back into the src rectangle so
now it's just subtraacting the same value from itself. The code would
never have worked if we allowed the framebuffer to have a non-zero
offset.

Let's do this in a better way by just calculating the fence_y_offset
from the final plane surface offset. Note that we don't align the
plane surface address to fence rows so with horizontal panning there's
often a horizontal offset from the fence start to the surface address
as well. We have no way to tell the hardware about that so we just
ignore it. Based on some quick tests the invlidation still happens
correctly. I presume due to the invalidation nuking at least the full
line (or a segment of multiple lines).

Fixes: 54d4d719fa ("drm/i915: Overcome display engine stride limits via GTT remapping")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200429101034.8208-4-ville.syrjala@linux.intel.com
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
(cherry picked from commit 5331889b5f)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2020-07-06 17:15:57 -07:00
..
display drm/i915/fbc: Fix fence_y_offset handling 2020-07-06 17:15:57 -07:00
gem drm fixes for 5.7-rc1 2020-06-11 12:27:06 -07:00
gt drm/i915: Include asm sources for {ivb, hsw}_clear_kernel.c 2020-06-29 11:29:12 +03:00
gvt drm/i915/gvt: Use GFP_ATOMIC instead of GFP_KERNEL in atomic context 2020-06-17 12:36:19 +08:00
selftests drm/i915/gt: Incrementally check for rewinding 2020-06-16 11:34:23 +03:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
i915_active_types.h
i915_active.c drm/i915: Allow asynchronous waits on the i915_active barriers 2020-04-06 19:48:06 +01:00
i915_active.h drm/i915: Allow asynchronous waits on the i915_active barriers 2020-04-06 19:48:06 +01:00
i915_buddy.c
i915_buddy.h
i915_cmd_parser.c drm/i915: Whitelist context-local timestamp in the gen9 cmdparser 2020-06-02 16:35:29 +03:00
i915_config.c drm/i915: Replace the hardcoded I915_FENCE_TIMEOUT 2020-05-09 12:57:57 +01:00
i915_debugfs_params.c
i915_debugfs_params.h
i915_debugfs.c drm/i915: Skip stale object handle for debugfs per-file-stats 2020-07-06 17:15:55 -07:00
i915_debugfs.h drm/i915: have *_debugfs_init() functions return void. 2020-03-18 16:27:22 +01:00
i915_drv.c Merge tag 'drm-intel-next-2020-04-30' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2020-05-14 11:33:10 +10:00
i915_drv.h drm/i915/fbc: Fix fence_y_offset handling 2020-07-06 17:15:57 -07:00
i915_fixed.h
i915_gem_evict.c drm/i915: Handle idling during i915_gem_evict_something busy loops 2020-05-13 14:39:41 -07:00
i915_gem_gtt.c
i915_gem_gtt.h
i915_gem.c drm/i915/gem: Drop cached obj->bind_count 2020-04-02 01:17:39 +01:00
i915_gem.h
i915_getparam.c drm/i915: Store CS timestamp frequency in Hz 2020-05-14 19:59:53 +03:00
i915_globals.c
i915_globals.h
i915_gpu_error.c drm/i915: Avoid dereferencing a dead context 2020-05-04 10:35:47 -07:00
i915_gpu_error.h drm/i915: Replace zero-length array with flexible-array 2020-05-09 12:59:23 +01:00
i915_ioc32.c i915 compat ioctl(): just use drm_ioctl_kernel() 2020-05-01 20:35:26 -04:00
i915_ioc32.h
i915_irq.c drm/i915/icl+: Fix hotplug interrupt disabling after storm detection 2020-06-16 11:34:24 +03:00
i915_irq.h
i915_memcpy.c drm/i915: remove always-defined CONFIG_AS_MOVNTDQA 2020-04-09 00:01:59 +09:00
i915_memcpy.h
i915_mm.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
i915_params.c drm/i915/params: fix i915.reset module param type 2020-06-08 12:58:13 +03:00
i915_params.h drm/i915/params: don't expose inject_probe_failure in debugfs 2020-06-02 16:35:33 +03:00
i915_pci.c Merge tag 'drm-intel-next-2020-05-15' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2020-05-20 13:36:45 +10:00
i915_perf_types.h drm/i915/perf: Schedule oa_config after modifying the contexts 2020-03-30 18:20:34 +01:00
i915_perf.c Merge branch 'uaccess.i915' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2020-06-10 16:04:27 -07:00
i915_perf.h
i915_pmu.c drm/i915/pmu: avoid an maybe-uninitialized warning 2020-06-15 12:36:02 +03:00
i915_pmu.h
i915_priolist_types.h drm/i915/gt: Prevent timeslicing into unpreemptable requests 2020-06-16 11:34:23 +03:00
i915_pvinfo.h
i915_query.c i915: switch copy_perf_config_registers_or_number() to unsafe_put_user() 2020-05-01 20:35:07 -04:00
i915_query.h
i915_reg.h drm/i915/gt: Move ivb GT workarounds from init_clock_gating to workarounds 2020-06-16 11:34:24 +03:00
i915_request.c drm/i915: Check for awaits on still currently executing requests 2020-06-01 15:23:01 +03:00
i915_request.h drm/i915: Drop no-semaphore boosting 2020-05-14 06:14:33 +01:00
i915_scatterlist.c
i915_scatterlist.h
i915_scheduler_types.h drm/i915: Drop no-semaphore boosting 2020-05-14 06:14:33 +01:00
i915_scheduler.c drm/i915: Don't set queue-priority hint when supressing the reschedule 2020-05-25 15:40:26 +03:00
i915_scheduler.h drm/i915: Mark concurrent submissions with a weak-dependency 2020-05-11 10:54:04 -07:00
i915_selftest.h drm/i915/gem: Implement legacy MI_STORE_DATA_IMM 2020-05-04 15:15:04 +01:00
i915_suspend.c
i915_suspend.h
i915_sw_fence_work.c drm/i915: Immediately execute the fenced work 2020-03-25 13:05:04 +00:00
i915_sw_fence_work.h drm/i915: Immediately execute the fenced work 2020-03-25 13:05:04 +00:00
i915_sw_fence.c drm/i915: Tidy awaiting on dma-fences 2020-05-11 12:56:45 +01:00
i915_sw_fence.h
i915_switcheroo.c drm/i915/switcheroo: use struct drm_device based logging 2020-04-08 13:49:35 +03:00
i915_switcheroo.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c
i915_sysfs.h
i915_trace_points.c
i915_trace.h
i915_user_extensions.c
i915_user_extensions.h
i915_utils.c drm/i915: Avoid setting timer->expires to 0 2020-04-03 16:33:09 +01:00
i915_utils.h drm/i915: be more solid in checking the alignment 2020-03-11 23:12:39 +02:00
i915_vgpu.c
i915_vgpu.h
i915_vma_types.h
i915_vma.c drm/i915: Check current i915_vma.pin_count status first on unbind 2020-05-06 15:36:54 -07:00
i915_vma.h drm/i915/gt: Make fence revocation unequivocal 2020-04-01 23:34:17 +01:00
intel_device_info.c drm/i915: Extract i915_cs_timestamp_{ns_to_ticks,tick_to_ns}() 2020-05-14 20:04:02 +03:00
intel_device_info.h drm/i915: Store CS timestamp frequency in Hz 2020-05-14 19:59:53 +03:00
intel_dram.c drm/i915/dram: prefer struct drm_device based logging 2020-04-08 13:49:35 +03:00
intel_dram.h
intel_gvt.c
intel_gvt.h
intel_memory_region.c
intel_memory_region.h
intel_pch.c
intel_pch.h
intel_pm.c drm/i915/gt: Move gen4 GT workarounds from init_clock_gating to workarounds 2020-06-16 11:34:24 +03:00
intel_pm.h drm/i915: Make active_pipes check skl specific 2020-05-13 16:21:20 +03:00
intel_region_lmem.c
intel_region_lmem.h
intel_runtime_pm.c PM: sleep: core: Rename DPM_FLAG_NEVER_SKIP 2020-04-24 21:33:09 +02:00
intel_runtime_pm.h
intel_sideband.c drm/i915: Added required new PCode commands 2020-05-05 13:59:55 +03:00
intel_sideband.h
intel_uncore.c drm/i915: Remove unused HAS_FWTABLE macro 2020-05-11 16:57:36 +01:00
intel_uncore.h drm/i915/selftests: Measure the energy consumed while in RC6 2020-03-25 11:33:05 +00:00
intel_wakeref.c drm/i915: Extend intel_wakeref to support delayed puts 2020-03-23 12:51:05 +00:00
intel_wakeref.h drm/i915: Extend intel_wakeref to support delayed puts 2020-03-23 12:51:05 +00:00
intel_wopcm.c drm/i915: Remove cnl pre-prod workarounds 2020-05-04 18:44:52 +03:00
intel_wopcm.h
Kconfig
Kconfig.debug
Kconfig.profile drm/i915: Replace the hardcoded I915_FENCE_TIMEOUT 2020-05-09 12:57:57 +01:00
Kconfig.unstable
Makefile drm/i915: Replace the hardcoded I915_FENCE_TIMEOUT 2020-05-09 12:57:57 +01:00
vlv_suspend.c
vlv_suspend.h