diff options
author | Lioncash <mathew1800@gmail.com> | 2019-05-14 08:41:51 -0400 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2019-05-14 08:47:56 -0400 |
commit | c212fc9b2c6a389dfe7ea59bc66c745397c349fd (patch) | |
tree | 57334dcfdfb201ee4e982010ce5e1144b19d8b62 | |
parent | c4d549919fbcae062d7bfc6ecb4162fdbcf858f4 (diff) |
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.
-rw-r--r-- | src/video_core/engines/maxwell_3d.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index 4883b582a..48e4fec33 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h @@ -6,6 +6,7 @@ #include <array> #include <bitset> +#include <type_traits> #include <unordered_map> #include <vector> @@ -1107,6 +1108,7 @@ public: } regs{}; 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 ConstBufferInfo { |