shader: Align constant buffer sizes to 16 bytes

WAR for AMD reading zeroes on uniform buffers of size 2.
This commit is contained in:
ReinUsesLisp 2021-06-17 20:35:25 -03:00 committed by ameerj
parent 59fead3a47
commit 0cd08b3e72

View file

@ -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;
}