Common: Add convenience function for hashing a struct
This commit is contained in:
parent
7f77820460
commit
d93ee65164
3 changed files with 15 additions and 5 deletions
|
@ -65,6 +65,7 @@ PicaShaderConfig PicaShaderConfig::BuildFromRegs(const Pica::Regs& regs) {
|
|||
PicaShaderConfig res;
|
||||
|
||||
auto& state = res.state;
|
||||
// Memset structure to zero padding bits, so that they will be deterministic when hashing
|
||||
std::memset(&state, 0, sizeof(PicaShaderConfig::State));
|
||||
|
||||
state.scissor_test_mode = regs.rasterizer.scissor_test.mode;
|
||||
|
|
|
@ -131,10 +131,6 @@ union PicaShaderConfig {
|
|||
|
||||
} state;
|
||||
};
|
||||
#if (__GNUC__ >= 5) || defined(__clang__) || defined(_MSC_VER)
|
||||
static_assert(std::is_trivially_copyable<PicaShaderConfig::State>::value,
|
||||
"PicaShaderConfig::State must be trivially copyable");
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Generates the GLSL vertex shader program source code for the current Pica state
|
||||
|
@ -156,7 +152,7 @@ namespace std {
|
|||
template <>
|
||||
struct hash<GLShader::PicaShaderConfig> {
|
||||
size_t operator()(const GLShader::PicaShaderConfig& k) const {
|
||||
return Common::ComputeHash64(&k.state, sizeof(GLShader::PicaShaderConfig::State));
|
||||
return Common::ComputeStructHash64(k.state);
|
||||
}
|
||||
};
|
||||
} // namespace std
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue