Forráskód Böngészése

shader: Align constant buffer sizes to 16 bytes

WAR for AMD reading zeroes on uniform buffers of size 2.
ReinUsesLisp 5 éve
szülő
commit
0cd08b3e72

+ 2 - 1
src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp

@@ -2,6 +2,7 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
+#include "common/alignment.h"
 #include "shader_recompiler/environment.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 #include "shader_recompiler/frontend/ir/program.h"
@@ -602,7 +603,7 @@ void VisitUsages(Info& info, IR::Inst& inst) {
         }
         u32& size{info.constant_buffer_used_sizes[index.U32()]};
         if (offset.IsImmediate()) {
-            size = std::max(size, offset.U32() + element_size);
+            size = Common::AlignUp(std::max(size, offset.U32() + element_size), 16u);
         } else {
             size = 0x10'000;
         }