mesa/src/intel
Jason Ekstrand dc63c715cb intel/isl: Stop padding surfaces
The docs contain a bunch of commentary about the need to pad various
surfaces out to multiples of something or other.  However, all of those
requirements are about avoiding GTT errors due to missing pages when the
data port or sampler accesses slightly out-of-bounds.  However, because
the kernel already fills all the empty space in our GTT with the scratch
page, we never have to worry about faulting due to OOB reads.  There are
two caveats to this:

 1) There is some potential for issues with caches here if extra data
    ends up in a cache we don't expect due to OOB reads.  However,
    because we always trash the entire cache whenever we need to move
    anything between cache domains, this shouldn't be an issue.

 2) There is a potential issue if a surface gets placed at the very top
    of the GTT by the kernel.  In this case, the hardware could
    potentially end up trying to read past the top of the GTT.  If it
    nicely wraps around at the 48-bit (or 32-bit) boundary, then this
    shouldn't be an issue thanks to the scratch page.  If it doesn't,
    then we need to come up with something to handle it.

Up until some of the GL move to ISL, having the padding code in there
just caused us to harmlessly use a bit more memory in Vulkan.  However,
now that we're using ISL sizes to validate external dma-buf images,
these padding requirements are causing us to reject otherwise valid
images due to the size of the BO being too small.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Tapani Pälli <tapani.palli@intel.com>
Tested-by: Tomasz Figa <tfiga@chromium.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Cc: "17.2" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit c15b92ce11)
2017-08-11 20:52:19 +01:00
..
blorp intel/isl: Add a helper to get a subimage surface 2017-07-22 21:41:12 -07:00
common intel: add number of subslices to device info 2017-07-11 16:14:57 +01:00
compiler intel/vec4/gs: reset nr_pull_param if DUAL_INSTANCED compile failed. 2017-08-05 00:09:25 +01:00
genxml intel: genxml: make a couple of enums show up in aubinator 2017-07-02 00:45:38 +01:00
isl intel/isl: Stop padding surfaces 2017-08-11 20:52:19 +01:00
tools aubinator: don't leak fd of opened aubfile 2017-07-13 22:50:50 +01:00
vulkan anv/formats: Allow sampling on depth-only formats on gen7 2017-08-11 20:52:16 +01:00
Android.blorp.mk intel: android: remove libdrm_intel requirement 2017-03-30 19:07:23 +01:00
Android.common.mk android: intel: fix include paths in new "common" library 2016-09-03 20:03:16 -07:00
Android.compiler.mk intel: android: remove libdrm_intel requirement 2017-03-30 19:07:23 +01:00
Android.genxml.mk i965/cnl: Wire up android Mesa build files for gen10 2017-06-09 16:02:58 -07:00
Android.isl.mk i965/cnl: Wire up android Mesa build files for gen10 2017-06-09 16:02:58 -07:00
Android.mk intel/vulkan: Get rid of recursive make 2017-03-13 11:16:35 +00:00
Android.vulkan.mk intel: Move the DRM uapi headers to a non-Intel location. 2017-07-12 10:58:33 -07:00
Makefile.am intel/isl: Add basic modifier introspection 2017-07-12 21:15:46 -07:00
Makefile.blorp.am blorp: automake: add TODO to the tarball 2017-02-24 17:37:00 +00:00
Makefile.common.am intel: common: Fix link failure with standalone Android build 2017-07-05 18:49:21 +01:00
Makefile.compiler.am intel/compiler: link all tests again gtest, even test_eu_compact" 2017-03-13 11:16:35 +00:00
Makefile.genxml.am intel: genxml: automake: include gen_bits_header.py in the tarball 2017-04-05 13:16:28 +01:00
Makefile.isl.am i965/cnl: Wire up Mesa build files for gen10 2017-06-09 16:02:58 -07:00
Makefile.sources intel/blorp: ship blorp_genX_exec.h within the tarball 2017-07-24 16:59:32 +01:00
Makefile.tools.am intel: tools: add intel_aub.h as part of aubinator 2017-06-29 10:03:40 +02:00
Makefile.vulkan.am intel: Move the DRM uapi headers to a non-Intel location. 2017-07-12 10:58:33 -07:00