mesa/src/intel
Jason Ekstrand 1e5fd2f839 anv/image: Support creating uncompressed views of compressed images
In order to get support everywhere, this gets a bit complicated.  On Sky
Lake and later, everything is fine because HALIGN/VALIGN are specified
in surface elements and are required to be at least 4 so any offsetting
we may need to do falls neatly within the heavy restrictions placed on
the X/Y Offset parameter of RENDER_SURFACE_STATE.  On Broadwell and
earlier, HALIGN/VALIGN are specified in pixels and are hard-coded to
align to exactly the block size of the compressed texture.  This means
that, when reinterpreted as a non-compressed texture, the tile offsets
may be anything and we can't rely on X/Y Offset.

In order to work around this issue, we fall back to linear where we can
trivially offset to whatever element we so choose.  However, since
linear texturing performance is terrible, we create a tiled shadow copy
of the image to use for texturing.  Whenever the user does a layout
transition from anything to SHADER_READ_ONLY_OPTIMAL, we use blorp to
copy the contents of the texture from the linear copy to the tiled
shadow copy.  This assumes that the client will use the image far more
for texturing than as a storage image or render target.

Even though we don't need the shadow copy on Sky Lake, we implement it
this way first to make testing easier.  Due to the hardware restriction
that ASTC must not be linear, ASTC does not work yet.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2017-09-20 17:21:06 -07:00
..
blorp intel/blorp: Support clearing L8_UNORM_SRGB surfaces 2017-09-19 12:06:26 -07:00
common i965: Add an INTEL_DEBUG=reemit option. 2017-09-15 21:51:45 -07:00
compiler intel/eu/validate: Look up types on demand in execution_type() 2017-09-12 15:01:00 -07:00
genxml genxml: Make Border Color Pointer an address on Gen4-5, not an offset. 2017-09-02 12:56:18 -07:00
isl intel/isl: Add a drm_modifier_get_default_aux_state helper 2017-09-18 12:14:24 -07:00
tools aubinator: remove duplicate initialisation 2017-09-01 17:06:43 +01:00
vulkan anv/image: Support creating uncompressed views of compressed images 2017-09-20 17:21:06 -07:00
Android.blorp.mk intel: android: remove libdrm_intel requirement 2017-03-30 19:07:23 +01:00
Android.common.mk android: link libmesa_intel_common with zlib and expat 2017-08-02 10:30:50 +03: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 anv: Feed vk_android_native_buffer.xml to generators (v2) 2017-09-18 14:26:54 -07:00
Makefile.am configure: Test for -Wno-initializer-overrides 2017-08-29 15:20:57 -07:00
Makefile.blorp.am blorp: automake: add TODO to the tarball 2017-02-24 17:37:00 +00:00
Makefile.common.am intel: move gen_decoder.* back to COMMON_FILES 2017-08-02 10:31:13 +03: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: automake: add isl_genX_priv.h in the source list 2017-09-19 19:23:46 +02: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 configure.ac: split the wayland client/server confusion 2017-09-19 19:02:34 +01:00