Browse Source

shader: Align constant buffer sizes to 16 bytes

WAR for AMD reading zeroes on uniform buffers of size 2.
nce_cpp
ReinUsesLisp 5 years ago
committed by ameerj
parent
commit
9c387a270b
  1. 3
      src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp

3
src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp

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

Loading…
Cancel
Save