diff options
Diffstat (limited to 'src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs')
-rw-r--r-- | src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs | 84 |
1 files changed, 44 insertions, 40 deletions
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs b/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs index 26711286..95a0a6bd 100644 --- a/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs +++ b/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs @@ -221,7 +221,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache int indexOfSpace = fileName.IndexOf(' '); if (indexOfSpace >= 0) { - fileName = fileName.Substring(0, indexOfSpace); + fileName = fileName[..indexOfSpace]; } return string.Concat(fileName.Split(Path.GetInvalidFileNameChars(), StringSplitOptions.RemoveEmptyEntries)); @@ -287,10 +287,10 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache using var guestTocFileStream = _guestStorage.OpenTocFileStream(); using var guestDataFileStream = _guestStorage.OpenDataFileStream(); - BinarySerializer tocReader = new BinarySerializer(tocFileStream); - BinarySerializer dataReader = new BinarySerializer(dataFileStream); + BinarySerializer tocReader = new(tocFileStream); + BinarySerializer dataReader = new(dataFileStream); - TocHeader header = new TocHeader(); + TocHeader header = new(); if (!tocReader.TryRead(ref header) || header.Magic != TocsMagic) { @@ -306,7 +306,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache int programIndex = 0; - DataEntry entry = new DataEntry(); + DataEntry entry = new(); while (tocFileStream.Position < tocFileStream.Length && loader.Active) { @@ -337,7 +337,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache GuestCodeAndCbData?[] guestShaders = new GuestCodeAndCbData?[isCompute ? 1 : Constants.ShaderStages + 1]; - DataEntryPerStage stageEntry = new DataEntryPerStage(); + DataEntryPerStage stageEntry = new(); while (stagesBitMask != 0) { @@ -389,7 +389,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache hostProgram = context.Renderer.LoadProgramBinary(hostCode, hasFragmentShader, shaderInfo); } - CachedShaderProgram program = new CachedShaderProgram(hostProgram, specState, shaders); + CachedShaderProgram program = new(hostProgram, specState, shaders); loader.QueueHostProgram(program, hostCode, programIndex, isCompute); } @@ -448,9 +448,9 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache tocFileStream = DiskCacheCommon.OpenFile(_basePath, GetHostTocFileName(context), writable: false); dataFileStream = DiskCacheCommon.OpenFile(_basePath, GetHostDataFileName(context), writable: false); - BinarySerializer tempTocReader = new BinarySerializer(tocFileStream); + BinarySerializer tempTocReader = new(tocFileStream); - TocHeader header = new TocHeader(); + TocHeader header = new(); tempTocReader.Read(ref header); @@ -473,9 +473,9 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache tocFileStream.Seek(offset, SeekOrigin.Begin); - BinarySerializer tocReader = new BinarySerializer(tocFileStream); + BinarySerializer tocReader = new(tocFileStream); - OffsetAndSize offsetAndSize = new OffsetAndSize(); + OffsetAndSize offsetAndSize = new(); tocReader.Read(ref offsetAndSize); if (offsetAndSize.Offset >= (ulong)dataFileStream.Length) @@ -490,7 +490,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache BinarySerializer.ReadCompressed(dataFileStream, hostCode); CachedShaderStage[] shaders = new CachedShaderStage[guestShaders.Length]; - BinarySerializer dataReader = new BinarySerializer(dataFileStream); + BinarySerializer dataReader = new(dataFileStream); dataFileStream.Seek((long)(offsetAndSize.Offset + offsetAndSize.CompressedSize), SeekOrigin.Begin); @@ -559,27 +559,28 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache if (tocFileStream.Length == 0) { - TocHeader header = new TocHeader(); + TocHeader header = new(); CreateToc(tocFileStream, ref header, TocsMagic, CodeGenVersion, timestamp); } tocFileStream.Seek(0, SeekOrigin.End); dataFileStream.Seek(0, SeekOrigin.End); - BinarySerializer tocWriter = new BinarySerializer(tocFileStream); - BinarySerializer dataWriter = new BinarySerializer(dataFileStream); + BinarySerializer tocWriter = new(tocFileStream); + BinarySerializer dataWriter = new(dataFileStream); ulong dataOffset = (ulong)dataFileStream.Position; tocWriter.Write(ref dataOffset); - DataEntry entry = new DataEntry(); - - entry.StagesBitMask = stagesBitMask; + DataEntry entry = new() + { + StagesBitMask = stagesBitMask, + }; dataWriter.BeginCompression(DiskCacheCommon.GetCompressionAlgorithm()); dataWriter.Write(ref entry); - DataEntryPerStage stageEntry = new DataEntryPerStage(); + DataEntryPerStage stageEntry = new(); for (int index = 0; index < program.Shaders.Length; index++) { @@ -665,19 +666,21 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache if (tocFileStream.Length == 0) { - TocHeader header = new TocHeader(); + TocHeader header = new(); CreateToc(tocFileStream, ref header, TochMagic, 0, timestamp); } tocFileStream.Seek(0, SeekOrigin.End); dataFileStream.Seek(0, SeekOrigin.End); - BinarySerializer tocWriter = new BinarySerializer(tocFileStream); - BinarySerializer dataWriter = new BinarySerializer(dataFileStream); + BinarySerializer tocWriter = new(tocFileStream); + BinarySerializer dataWriter = new(dataFileStream); - OffsetAndSize offsetAndSize = new OffsetAndSize(); - offsetAndSize.Offset = (ulong)dataFileStream.Position; - offsetAndSize.UncompressedSize = (uint)hostCode.Length; + OffsetAndSize offsetAndSize = new() + { + Offset = (ulong)dataFileStream.Position, + UncompressedSize = (uint)hostCode.Length, + }; long dataStartPosition = dataFileStream.Position; @@ -714,9 +717,9 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache /// <param name="magic">Magic value to be written</param> /// <param name="codegenVersion">Shader codegen version, only valid for the host file</param> /// <param name="timestamp">File creation timestamp</param> - private void CreateToc(Stream tocFileStream, ref TocHeader header, uint magic, uint codegenVersion, ulong timestamp) + private static void CreateToc(Stream tocFileStream, ref TocHeader header, uint magic, uint codegenVersion, ulong timestamp) { - BinarySerializer writer = new BinarySerializer(tocFileStream); + BinarySerializer writer = new(tocFileStream); header.Magic = magic; header.FormatVersion = FileFormatVersionPacked; @@ -741,7 +744,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache /// <returns>Shader program info</returns> private static ShaderProgramInfo ReadShaderProgramInfo(ref BinarySerializer dataReader) { - DataShaderInfo dataInfo = new DataShaderInfo(); + DataShaderInfo dataInfo = new(); dataReader.ReadWithMagicAndSize(ref dataInfo, ShdiMagic); @@ -797,18 +800,19 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache return; } - DataShaderInfo dataInfo = new DataShaderInfo(); - - dataInfo.CBuffersCount = (ushort)info.CBuffers.Count; - dataInfo.SBuffersCount = (ushort)info.SBuffers.Count; - dataInfo.TexturesCount = (ushort)info.Textures.Count; - dataInfo.ImagesCount = (ushort)info.Images.Count; - dataInfo.Stage = info.Stage; - dataInfo.UsesInstanceId = info.UsesInstanceId; - dataInfo.UsesDrawParameters = info.UsesDrawParameters; - dataInfo.UsesRtLayer = info.UsesRtLayer; - dataInfo.ClipDistancesWritten = info.ClipDistancesWritten; - dataInfo.FragmentOutputMap = info.FragmentOutputMap; + DataShaderInfo dataInfo = new() + { + CBuffersCount = (ushort)info.CBuffers.Count, + SBuffersCount = (ushort)info.SBuffers.Count, + TexturesCount = (ushort)info.Textures.Count, + ImagesCount = (ushort)info.Images.Count, + Stage = info.Stage, + UsesInstanceId = info.UsesInstanceId, + UsesDrawParameters = info.UsesDrawParameters, + UsesRtLayer = info.UsesRtLayer, + ClipDistancesWritten = info.ClipDistancesWritten, + FragmentOutputMap = info.FragmentOutputMap, + }; dataWriter.WriteWithMagicAndSize(ref dataInfo, ShdiMagic); |