mesa/src/amd/vulkan
Samuel Pitoiset d2f4934121 radv/llvm,aco: always split typed vertex buffer loads on GFX6 and GFX10+
To avoid any alignment issues that triggers memory violations and
eventually a GPU. This can happen if the stride (static or dynamic)
is unaligned and also if the VBO offset is aligned to scalar
(eg. stride is 8 and VBO offset is 2 for R16G16B16A16_SNORM).

The AMD Windows driver also always splits typed vertex fetches.

fossils-db (Sienna Cichlid):
Totals from 56508 (40.54% of 139391) affected shaders:
SGPRs: 2643545 -> 2664516 (+0.79%); split: -0.19%, +0.98%
VGPRs: 2007472 -> 1995408 (-0.60%); split: -0.74%, +0.13%
CodeSize: 70596372 -> 73913312 (+4.70%); split: -0.00%, +4.70%
MaxWaves: 772653 -> 774916 (+0.29%); split: +0.37%, -0.08%
Instrs: 14074162 -> 14567072 (+3.50%); split: -0.00%, +3.51%
Cycles: 69281276 -> 71253252 (+2.85%); split: -0.00%, +2.85%
VMEM: 22047039 -> 25554196 (+15.91%); split: +17.20%, -1.29%
SMEM: 4120370 -> 4360820 (+5.84%); split: +7.41%, -1.58%
VClause: 416913 -> 438361 (+5.14%); split: -1.86%, +7.01%
SClause: 536739 -> 542637 (+1.10%); split: -0.33%, +1.43%
Copies: 977194 -> 970015 (-0.73%); split: -2.43%, +1.69%
Branches: 241205 -> 241193 (-0.00%); split: -0.06%, +0.06%
PreVGPRs: 1505645 -> 1505379 (-0.02%)

This fixes GPU hangs with bin/draw-vertices from Piglit on GFX10+
with Zink.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8363>
2021-01-07 17:28:00 +00:00
..
layers ac/sqtt: move rgp/sqtt def to ac 2021-01-07 10:09:57 +01:00
winsys radv: Put commandbuffers in VRAM if all VRAM is CPU visible. 2021-01-04 13:10:15 +00:00
.editorconfig amd: add .editorconfig 2017-08-29 01:08:58 +03:00
Android.mk android: radv: add libcutils shared dependency 2020-12-07 23:54:25 +01:00
Makefile.sources ac/radv: move radv_rgp.c to ac 2021-01-07 10:09:49 +01:00
meson.build wsi/x11: Always link against xcb-xrandr 2021-01-07 14:57:45 +01:00
radv_android.c radv/android: Remove unused variable 2020-08-05 18:08:07 +00:00
radv_check_va.py radv: add a Python script to check if a VA was ever valid 2020-12-30 08:40:21 +01:00
radv_cmd_buffer.c ac/sqtt: add ac_thread_trace_data 2021-01-07 10:09:45 +01:00
radv_constants.h radv: Remove RANGE_SIZE usage 2020-05-05 00:28:00 +00:00
radv_cs.h radv: Fix emitting SQTT userdata. 2020-09-28 15:46:08 +00:00
radv_debug.c radv: dump VA ranges history when a GPU hang is detected 2020-12-30 08:40:19 +01:00
radv_debug.h radv: Use VRAM for upload buffers if entire VRAM is CPU-visible. 2021-01-04 13:10:15 +00:00
radv_descriptor_set.c radv: Implement VK_VALVE_mutable_descriptor_type. 2020-12-07 15:25:17 +00:00
radv_descriptor_set.h radv: Do not access set layout during vkCmdBindDescriptorSets. 2020-10-28 03:06:20 +00:00
radv_device.c ac/sqtt: add ac_thread_trace_data 2021-01-07 10:09:45 +01:00
radv_entrypoints_gen.py Switch from cElementTree to ElementTree. 2020-06-05 23:42:54 -07:00
radv_extensions.py radv: add code that checks if the extension table is sorted correctly 2020-12-22 14:09:54 +01:00
radv_formats.c radv: disable A2 SNORM/SSCALED/SINT for texel buffers & images on all gens 2021-01-04 17:19:41 +00:00
radv_icd.py python: Specify the JSON separators 2018-07-05 12:52:38 +01:00
radv_image.c radv: enable TC-compat HTILE in GENERAL on GFX10+ 2021-01-05 12:10:11 +00:00
radv_llvm_helper.cpp radv/gfx10: use the correct target machine for Wave32 2019-08-02 09:37:38 +02:00
radv_meta.c radv: implement VK_KHR_fragment_shading_rate 2020-12-14 16:22:38 +00:00
radv_meta.h radv: make sure FMASK compression is enabled for MSAA copies 2020-12-23 11:25:34 +00:00
radv_meta_blit.c radv: Add option to disable DCC in renderpasses without layout. 2020-12-21 18:32:24 +00:00
radv_meta_blit2d.c radv: Disable DCC explicitly for incompatible copies. 2020-12-21 18:32:24 +00:00
radv_meta_buffer.c radv: use intrinsic builders 2020-11-26 17:50:38 +00:00
radv_meta_bufimage.c radv: Disable DCC explicitly for incompatible copies. 2020-12-21 18:32:24 +00:00
radv_meta_clear.c radv: enable TC-compat HTILE in GENERAL on GFX10+ 2021-01-05 12:10:11 +00:00
radv_meta_copy.c radv: Disable DCC explicitly for incompatible copies. 2020-12-21 18:32:24 +00:00
radv_meta_decompress.c radv: Add option to disable DCC in renderpasses without layout. 2020-12-21 18:32:24 +00:00
radv_meta_fast_clear.c Revert "radv: use 32-bit predication for skipping FCE on GFX10.3+" 2020-12-24 09:56:25 +01:00
radv_meta_fmask_expand.c radv: use intrinsic builders 2020-11-26 17:50:38 +00:00
radv_meta_resolve.c radv: Add option to disable DCC in renderpasses without layout. 2020-12-21 18:32:24 +00:00
radv_meta_resolve_cs.c radv: always clear the SR0/SR1 bits of the HTILE buffer 2021-01-05 12:10:11 +00:00
radv_meta_resolve_fs.c radv: Add option to disable DCC in renderpasses without layout. 2020-12-21 18:32:24 +00:00
radv_nir_lower_ycbcr_textures.c radv: use common nir_convert_ycbcr 2020-04-20 22:01:43 +00:00
radv_nir_to_llvm.c radv/llvm,aco: always split typed vertex buffer loads on GFX6 and GFX10+ 2021-01-07 17:28:00 +00:00
radv_pass.c radv: destroy the base object if VkCreateRenderPass*() failed 2020-07-15 13:53:21 +02:00
radv_pipeline.c nir,radv: add and use nir_vectorize_tess_levels() 2021-01-07 16:34:53 +00:00
radv_pipeline_cache.c radv: Replace pthread mutex with mtx_t 2020-12-02 11:27:01 +00:00
radv_private.h radv: implement CREATE_REQUIRE_FULL_SUBGROUPS_BIT with cswave32 2021-01-07 15:01:02 +00:00
radv_query.c radv: use intrinsic builders 2020-11-26 17:50:38 +00:00
radv_radeon_winsys.h radv: Use VRAM for upload buffers if entire VRAM is CPU-visible. 2021-01-04 13:10:15 +00:00
radv_shader.c radv: track if VRS is enabled to apply a workaround on GFX10.3 2020-12-14 16:22:38 +00:00
radv_shader.h radv: track if VRS is enabled to apply a workaround on GFX10.3 2020-12-14 16:22:38 +00:00
radv_shader_args.c ac: unify shader arguments that are duplicated 2020-12-09 20:13:25 +00:00
radv_shader_args.h util+treewide: container_of() cleanup 2020-12-10 16:48:36 +00:00
radv_shader_helper.h radv/gfx10: use the correct target machine for Wave32 2019-08-02 09:37:38 +02:00
radv_shader_info.c nir,spirv: add sparse image loads 2021-01-06 20:36:38 +00:00
radv_sqtt.c ac/sqtt: move radv_get_expected_buffer_size to ac 2021-01-07 10:10:16 +01:00
radv_util.c radv: report errors back to the application via VK_EXT_debug_report 2020-08-10 14:09:21 +02:00
radv_util.h
radv_wsi.c vulkan/wsi: add sw support. (v2) 2020-08-17 14:30:50 +10:00
radv_wsi_display.c radv: Fix asserts using assign instead of compare. 2020-10-03 01:04:28 +00:00
radv_wsi_wayland.c radv/wsi: Don't include wayland headers 2017-03-13 11:16:30 +00:00
radv_wsi_x11.c vulkan: drop always-true param 2018-10-26 18:33:11 +01:00
si_cmd_buffer.c radv: Use VRAM for the initial gfx cmdbuffer. 2021-01-04 13:10:16 +00:00
vk_format.h radv: Wrap pragmas with __GNUC__ to fix MSVC 2020-12-02 11:27:01 +00:00
vk_format_layout.csv radv: Implement VK_EXT_4444_formats 2020-08-03 19:27:37 +01:00
vk_format_parse.py radv: Add logic for multisample format descriptions. 2019-04-25 19:56:20 +00:00
vk_format_table.py util: rename PIPE_ARCH_*_ENDIAN to UTIL_ARCH_*_ENDIAN 2019-11-05 16:39:55 +00:00
vulkan.sym radv: restrict exported symbols with static llvm 2020-08-19 11:19:18 +00:00