From: Rhys Perry Date: Thu, 13 Dec 2018 17:03:23 +0000 (+0000) Subject: ac: split 16-bit ssbo loads that may not be dword aligned X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bde9f482de69528db5ccf5dd6bbfd8359adfbb19;p=mesa.git ac: split 16-bit ssbo loads that may not be dword aligned Fixes: 7e7ee826982 ('ac: add support for 16bit buffer loads') Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108114 Signed-off-by: Rhys Perry Reviewed-by: Samuel Pitoiset --- diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 2f68e0dcf1e..73e4d41c3b3 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -1640,6 +1640,8 @@ static LLVMValueRef visit_load_buffer(struct ac_nir_context *ctx, LLVMValueRef results[4]; for (int i = 0; i < num_components;) { int num_elems = num_components - i; + if (elem_size_bytes < 4 && nir_intrinsic_align(instr) % 4 != 0) + num_elems = 1; if (num_elems * elem_size_bytes > 16) num_elems = 16 / elem_size_bytes; int load_bytes = num_elems * elem_size_bytes;