Mesa (master): ac: split 16-bit ssbo loads that may not be dword aligned

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun Dec 16 15:00:20 UTC 2018


Module: Mesa
Branch: master
Commit: bde9f482de69528db5ccf5dd6bbfd8359adfbb19
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bde9f482de69528db5ccf5dd6bbfd8359adfbb19

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Thu Dec 13 17:03:23 2018 +0000

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 <pendingchaos02 at gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>

---

 src/amd/common/ac_nir_to_llvm.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 2f68e0dcf1..73e4d41c3b 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;




More information about the mesa-commit mailing list