linux/drivers/gpu/drm
Paulo Zanoni 74b4ea1e4e drm/i915: special-case dirtyfb for frontbuffer tracking
First, an introduction. We currently have two types of GTT mmaps: the
"normal" old mmap, and the WC mmap. For frontbuffer-related features
that have automatic hardware tracking, only the non-WC mmap writes are
detected by the hardware. Since inside the Kernel both are treated as
ORIGIN_GTT, any features ignoring ORIGIN_GTT because of the hardware
tracking are destined to fail.

One of the special rules defined for the WC mmaps is that the user
should call the dirtyfb IOCTL after he is done using the pointers, so
that results in an intel_fb_obj_flush() call. The problem is that the
dirtyfb is passing ORIGIN_GTT, so it is being ignored by FBC - even
though the hardware tracking is not detecing the WC mmap operations.
So in order to fix that without having to give up the automatic
hardware tracking for GTT mmaps we transform the flush operation from
dirtyfb into a special operation: ORIGIN_DIRTYFB.

This commit fixes all the kms_frontbuffer_tracking subtests that
contain "fbc" and "mmap-wc" in their names and are currently failing
(for a total of 16 subtests).

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-08-05 10:01:22 +02:00
..
amd Merge tag 'drm-amdkfd-fixes-2015-07-09' of git://people.freedesktop.org/~gabbayo/linux into drm-fixes 2015-07-10 15:56:19 +10:00
armada Merge branch 'drm-armada-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into drm-next 2015-05-15 15:24:41 +10:00
ast
atmel-hlcdc
bochs
bridge drm/exynos: atomic dpms support 2015-06-20 00:32:52 +09:00
cirrus
exynos drm/exynos: dsi: do not set TE GPIO direction by input 2015-06-22 20:05:03 +09:00
gma500
i2c Merge branch 'drm-tda998x-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into drm-next 2015-05-29 09:19:59 +10:00
i810
i915 drm/i915: special-case dirtyfb for frontbuffer tracking 2015-08-05 10:01:22 +02:00
imx
mga
mgag200 drm/mgag200: Reject non-character-cell-aligned mode widths 2015-06-16 10:01:16 +10:00
msm drm/msm: restart queued submits after hang 2015-06-11 13:11:06 -04:00
nouveau drm/nouveau/gem: use kvfree() in u_free() 2015-06-30 19:44:59 -07:00
omapdrm drm/omap: replace ALIGN(PAGE_SIZE) by PAGE_ALIGN 2015-07-02 15:58:07 +03:00
panel drm/panel: simple: Add bus format for HannStar HSD100PXN1 2015-06-12 16:40:42 +02:00
qxl drm/qxl: Propagate correctly errors from qxlhw_handle_to_bo 2015-06-05 11:00:52 +10:00
r128
radeon drm/radeon: disable vce init on cayman (v2) 2015-07-09 11:40:12 -04:00
rcar-du drm: rcar-du: Use the drm atomic state duplication helpers for planes 2015-06-16 14:25:55 +03:00
rockchip drivers/gpu: include <module.h> for modular rockchip code 2015-06-16 14:12:25 -04:00
savage
shmobile
sis
sti drm/sti: vtg fix CEA-861E video format timing error 2015-06-08 15:28:28 +02:00
tdfx
tegra drm/tegra: Changes for v4.2-rc1 2015-06-18 12:53:54 +10:00
tilcdc drm/tilcdc: Add DRM_TILCDC_SLAVE_COMPAT for ti,tilcdc,slave binding support 2015-05-27 13:13:33 +03:00
ttm drm/ttm: dma: Don't crash on memory in the vmalloc range 2015-06-02 17:24:49 +10:00
udl
vgem drm/vgem: Set unique to "vgem" 2015-06-24 11:20:46 +10:00
via
virtio virtio-gpu: add locking for vbuf pool 2015-06-16 11:22:41 +02:00
vmwgfx
ati_pcigart.c
drm_agpsupport.c
drm_atomic.c drm/atomic: Extract needs_modeset function 2015-06-19 17:25:01 +02:00
drm_atomic_helper.c drm/atomic: Don't set crtc_state->enable manually 2015-06-22 13:45:33 +02:00
drm_auth.c
drm_bridge.c drm/DocBook: Add more drm_bridge documentation 2015-05-21 13:56:51 +02:00
drm_bufs.c
drm_cache.c drm: Avoid the double clflush on the last cache line in drm_clflush_virt_range() 2015-06-19 17:25:17 +02:00
drm_context.c
drm_crtc.c Merge tag 'drm-intel-fixes-2015-07-15' into drm-intel-next-queued 2015-07-15 16:36:50 +02:00
drm_crtc_helper.c drm: Add drm_atomic_set_mode_for_crtc 2015-05-26 15:50:34 +02:00
drm_crtc_internal.h
drm_debugfs.c
drm_dma.c
drm_dp_helper.c
drm_dp_mst_topology.c drm/dp/mst: close deadlock in connector destruction. 2015-06-25 11:57:23 +10:00
drm_drv.c drm: Always enable atomic API 2015-06-24 11:21:35 +10:00
drm_edid.c Merge tag 'topic/drm-misc-2015-05-19' of git://anongit.freedesktop.org/drm-intel into drm-next 2015-05-20 09:19:58 +10:00
drm_edid_load.c
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c
drm_flip_work.c drm/core: get rid of -Iinclude/drm 2015-05-13 11:28:22 +02:00
drm_fops.c drm/mode: Add user blob-creation ioctl 2015-05-22 16:18:28 +02:00
drm_gem.c
drm_gem_cma_helper.c drm/cma: Fix 64-bit size_t build warnings 2015-06-15 07:45:49 +02:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
drm_irq.c Merge branch 'virtio-gpu-drm-next' of git://git.kraxel.org/linux into drm-next 2015-06-04 09:36:39 +10:00
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c drm: clean up drm_mm debugfs output 2015-05-29 09:17:57 +10:00
drm_modes.c drm/mode: Unstatic kernel-userspace mode conversion 2015-05-22 16:18:21 +02:00
drm_modeset_lock.c
drm_of.c
drm_panel.c
drm_pci.c
drm_plane_helper.c drm/plane-helper: Adapt cursor hack to transitional helpers 2015-05-22 08:48:08 +03:00
drm_platform.c
drm_prime.c drm: prime: Document gem_prime_mmap 2015-06-19 17:50:05 +02:00
drm_probe_helper.c
drm_rect.c
drm_scatter.c
drm_sysfs.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
drm_trace.h
drm_trace_points.c
drm_vm.c
drm_vma_manager.c
Kconfig drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
Makefile drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00