diff options
author | Mary <me@thog.eu> | 2020-11-13 00:15:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-13 00:15:34 +0100 |
commit | 48f6570557fc76496936514d94e3ccddf55ec633 (patch) | |
tree | ce455833899cb33a312e5853a7a3d191bb5d18d9 /Ryujinx.Common/Hash128.cs | |
parent | 7166e82c3cf1fd8cf2fce3281017ee88122684d8 (diff) |
Salieri: shader cache (#1701)
Here come Salieri, my implementation of a disk shader cache!
"I'm sure you know why I named it that."
"It doesn't really mean anything."
This implementation collects shaders at runtime and cache them to be later compiled when starting a game.
Diffstat (limited to 'Ryujinx.Common/Hash128.cs')
-rw-r--r-- | Ryujinx.Common/Hash128.cs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Ryujinx.Common/Hash128.cs b/Ryujinx.Common/Hash128.cs new file mode 100644 index 00000000..99cd015c --- /dev/null +++ b/Ryujinx.Common/Hash128.cs @@ -0,0 +1,42 @@ +using System; +using System.Runtime.InteropServices; + +namespace Ryujinx.Common +{ + [StructLayout(LayoutKind.Sequential)] + public struct Hash128 : IEquatable<Hash128> + { + public ulong Low; + public ulong High; + + public override string ToString() + { + return $"{High:x16}{Low:x16}"; + } + + public static bool operator ==(Hash128 x, Hash128 y) + { + return x.Equals(y); + } + + public static bool operator !=(Hash128 x, Hash128 y) + { + return !x.Equals(y); + } + + public override bool Equals(object obj) + { + return obj is Hash128 hash128 && Equals(hash128); + } + + public bool Equals(Hash128 cmpObj) + { + return Low == cmpObj.Low && High == cmpObj.High; + } + + public override int GetHashCode() + { + return HashCode.Combine(Low, High); + } + } +} |