1
0
Fork 0
forked from suyu/suyu

video_core/engines/maxwell_3d: Add is_trivially_copyable_v check for Regs

std::memset is used to clear the entire register structure, which
requires that the Regs struct be trivially copyable (otherwise undefined
behavior is invoked). This prevents the case where a non-trivial type is
potentially added to the struct.
This commit is contained in:
Lioncash 2019-05-14 08:41:51 -04:00
parent c4d549919f
commit c212fc9b2c

View file

@ -6,6 +6,7 @@
#include <array> #include <array>
#include <bitset> #include <bitset>
#include <type_traits>
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
@ -1107,6 +1108,7 @@ public:
} regs{}; } regs{};
static_assert(sizeof(Regs) == Regs::NUM_REGS * sizeof(u32), "Maxwell3D Regs has wrong size"); static_assert(sizeof(Regs) == Regs::NUM_REGS * sizeof(u32), "Maxwell3D Regs has wrong size");
static_assert(std::is_trivially_copyable_v<Regs>, "Maxwell3D Regs must be trivially copyable");
struct State { struct State {
struct ConstBufferInfo { struct ConstBufferInfo {