mesa/src
Jason Ekstrand c0093c4668 anv: Flip around the way we reason about storage image lowering
There are roughly two cases when it comes to storage images.  In the
easy case, we have full hardware support and we can just emit a typed
read/write message in the shader and we're done.  In the more complex
cases, we may need to fall back to a typed read with a different format
or even to a raw (SSBO) read.

The hardware has always had basically full support for typed writes all
the way back to Ivy Bridge but typed reads have been harder to come by.
Starting with Skylake, we finally have enough that we at least have a
format of the right bit size but not necessarily the right format so we
can use a typed read but may still have to do an int->unorm or similar
cast in the shader.

Previously, in ANV, we treated lowered images as the default and write-
only as a special case that we can optimize.  This flips everything
around and treats the cases where we don't need to do any lowering as
the default "vanilla" case and treats the lowered case as special.
Importantly, this means that read-write access to surfaces where the
native format handles typed writes now use the same surface state as
write-only access and the only thing that uses the lowered surface state
is access read-write access with a format that doesn't support typed
reads.  This has the added benefit that now, if someone does a read
without specifying a format, we can default to the vanilla surface and
it will work as long as it's a format that supports typed reads.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13198>
2021-10-11 10:29:09 -05:00
..
amd radv: store the post-processed shader binary config to the cache 2021-10-11 12:25:41 +00:00
android_stub android_stub: update platform headers to include atrace 2021-10-09 00:42:32 +00:00
asahi nir: add indirect loop unrolling to compiler options 2021-08-03 10:54:50 +00:00
broadcom v3dv: Switch to the new vk_error helpers 2021-10-07 20:51:36 +00:00
compiler nir/lower_discard_or_demote: Fix metadata 2021-10-08 23:24:49 +00:00
drm-shim drm-shim: Support kernels with >4k pages 2021-08-13 23:33:52 +00:00
egl util/vector: make util_vector_init harder to misuse 2021-10-08 00:15:11 +00:00
etnaviv etnaviv: move drm version readout to drm layer 2021-10-01 10:13:32 +00:00
freedreno tu: Expose VK_KHR_shader_subgroup_extended_types 2021-10-11 11:00:56 +00:00
gallium radeonsi: Check if modifier supports the image extent 2021-10-11 11:43:39 +00:00
gbm gbm: assume USE_SCANOUT in create_with_modifiers 2021-10-01 00:02:36 +02:00
getopt
glx gallium: add PIPE_CAP_PREFER_BACK_BUFFER_REUSE 2021-09-29 08:14:57 +00:00
gtest
hgl
imgui
intel anv: Flip around the way we reason about storage image lowering 2021-10-11 10:29:09 -05:00
loader loader/dri3: fix swap out of order when changing swap interval 2021-09-30 03:27:14 +00:00
mapi mesa: GL_ARB_ES3_2_compatibility GL compat profile support 2021-09-23 11:10:23 +00:00
mesa swrast: Fix another warning from gcc 11 2021-10-10 19:19:23 +00:00
microsoft microsoft/spirv_to_dxil: use dxil_nir_lower_bool_input pass 2021-10-08 17:21:33 +00:00
nouveau
panfrost vulkan/device: Use vk_error 2021-10-07 20:51:36 +00:00
tool pps: Panfrost pps driver 2021-07-13 11:03:55 +00:00
util util/vector: make util_vector_init harder to misuse 2021-10-08 00:15:11 +00:00
virtio venus: update to latest venus-protocol to include tracing 2021-10-09 00:42:32 +00:00
vulkan vulkan: Generate #defines with every bit in a given bitfield 2021-10-11 10:29:05 -05:00
meson.build radv: Allow building when LLVM isn’t enabled 2021-10-01 10:40:18 +02:00