]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Check incoming alignment for unfenced buffers (on i915gm)
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 31 Oct 2017 10:36:07 +0000 (10:36 +0000)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Wed, 1 Nov 2017 17:28:28 +0000 (10:28 -0700)
commit977f86b324e00bb885446ebe33ad10c92de1e6ef
treeffc5a6e8e2ef5efb8d44ebd6bc94db9a9c46cc68
parente244e0fb5be7acecf5c833b4de7a4de64a2fc453
drm/i915: Check incoming alignment for unfenced buffers (on i915gm)

In case the object has changed tiling between calls to execbuf, we need
to check if the existing offset inside the GTT matches the new tiling
constraint. We even need to do this for "unfenced" tiled objects, where
the 3D commands use an implied fence and so the object still needs to
match the physical fence restrictions on alignment (only required for
gen2 and early gen3).

In commit 96ef520d65ef ("drm/i915: Eliminate lots of iterations over
the execobjects array"), the idea was to remove the second guessing and
only set the NEEDS_MAP flag when required. However, the entire check
for an unusable offset for fencing was removed and not just the
secondary check. I.e.

/* avoid costly ping-pong once a batch bo ended up non-mappable */
        if (entry->flags & __EXEC_OBJECT_NEEDS_MAP &&
            !i915_vma_is_map_and_fenceable(vma))
                return !only_mappable_for_reloc(entry->flags);

was entirely removed as the ping-pong between execbuf passes was fixed,
but its primary purpose in forcing unaligned unfenced access to be
rebound was forgotten.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103502
Fixes: 96ef520d65ef ("drm/i915: Eliminate lots of iterations over the execobjects array")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171031103607.17836-1-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
(cherry picked from commit 1d033beb20d6d5885587a02a393b6598d766a382)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/i915/i915_gem_execbuffer.c