diff options
| author | TSR Berry <20988865+TSRBerry@users.noreply.github.com> | 2023-04-08 01:22:00 +0200 |
|---|---|---|
| committer | Mary <thog@protonmail.com> | 2023-04-27 23:51:14 +0200 |
| commit | cee712105850ac3385cd0091a923438167433f9f (patch) | |
| tree | 4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.Graphics.Nvdec/Vp9Decoder.cs | |
| parent | cd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff) | |
Move solution and projects to src
Diffstat (limited to 'Ryujinx.Graphics.Nvdec/Vp9Decoder.cs')
| -rw-r--r-- | Ryujinx.Graphics.Nvdec/Vp9Decoder.cs | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/Ryujinx.Graphics.Nvdec/Vp9Decoder.cs b/Ryujinx.Graphics.Nvdec/Vp9Decoder.cs deleted file mode 100644 index 9bb3529e..00000000 --- a/Ryujinx.Graphics.Nvdec/Vp9Decoder.cs +++ /dev/null @@ -1,90 +0,0 @@ -using Ryujinx.Common; -using Ryujinx.Graphics.Gpu.Memory; -using Ryujinx.Graphics.Nvdec.Image; -using Ryujinx.Graphics.Nvdec.Types.Vp9; -using Ryujinx.Graphics.Nvdec.Vp9; -using Ryujinx.Graphics.Video; -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using static Ryujinx.Graphics.Nvdec.MemoryExtensions; - -namespace Ryujinx.Graphics.Nvdec -{ - static class Vp9Decoder - { - private static Decoder _decoder = new Decoder(); - - public unsafe static void Decode(ResourceManager rm, ref NvdecRegisters state) - { - PictureInfo pictureInfo = rm.Gmm.DeviceRead<PictureInfo>(state.SetDrvPicSetupOffset); - EntropyProbs entropy = rm.Gmm.DeviceRead<EntropyProbs>(state.Vp9SetProbTabBufOffset); - - ISurface Rent(uint lumaOffset, uint chromaOffset, FrameSize size) - { - return rm.Cache.Get(_decoder, lumaOffset, chromaOffset, size.Width, size.Height); - } - - ISurface lastSurface = Rent(state.SetPictureLumaOffset[0], state.SetPictureChromaOffset[0], pictureInfo.LastFrameSize); - ISurface goldenSurface = Rent(state.SetPictureLumaOffset[1], state.SetPictureChromaOffset[1], pictureInfo.GoldenFrameSize); - ISurface altSurface = Rent(state.SetPictureLumaOffset[2], state.SetPictureChromaOffset[2], pictureInfo.AltFrameSize); - ISurface currentSurface = Rent(state.SetPictureLumaOffset[3], state.SetPictureChromaOffset[3], pictureInfo.CurrentFrameSize); - - Vp9PictureInfo info = pictureInfo.Convert(); - - info.LastReference = lastSurface; - info.GoldenReference = goldenSurface; - info.AltReference = altSurface; - - entropy.Convert(ref info.Entropy); - - ReadOnlySpan<byte> bitstream = rm.Gmm.DeviceGetSpan(state.SetInBufBaseOffset, (int)pictureInfo.BitstreamSize); - - ReadOnlySpan<Vp9MvRef> mvsIn = ReadOnlySpan<Vp9MvRef>.Empty; - - if (info.UsePrevInFindMvRefs) - { - mvsIn = GetMvsInput(rm.Gmm, pictureInfo.CurrentFrameSize, state.Vp9SetColMvReadBufOffset); - } - - int miCols = BitUtils.DivRoundUp(pictureInfo.CurrentFrameSize.Width, 8); - int miRows = BitUtils.DivRoundUp(pictureInfo.CurrentFrameSize.Height, 8); - - using var mvsRegion = rm.Gmm.GetWritableRegion(ExtendOffset(state.Vp9SetColMvWriteBufOffset), miRows * miCols * 16); - - Span<Vp9MvRef> mvsOut = MemoryMarshal.Cast<byte, Vp9MvRef>(mvsRegion.Memory.Span); - - uint lumaOffset = state.SetPictureLumaOffset[3]; - uint chromaOffset = state.SetPictureChromaOffset[3]; - - if (_decoder.Decode(ref info, currentSurface, bitstream, mvsIn, mvsOut)) - { - SurfaceWriter.Write(rm.Gmm, currentSurface, lumaOffset, chromaOffset); - } - - WriteBackwardUpdates(rm.Gmm, state.Vp9SetCtxCounterBufOffset, ref info.BackwardUpdateCounts); - - rm.Cache.Put(lastSurface); - rm.Cache.Put(goldenSurface); - rm.Cache.Put(altSurface); - rm.Cache.Put(currentSurface); - } - - private static ReadOnlySpan<Vp9MvRef> GetMvsInput(MemoryManager gmm, FrameSize size, uint offset) - { - int miCols = BitUtils.DivRoundUp(size.Width, 8); - int miRows = BitUtils.DivRoundUp(size.Height, 8); - - return MemoryMarshal.Cast<byte, Vp9MvRef>(gmm.DeviceGetSpan(offset, miRows * miCols * 16)); - } - - private static void WriteBackwardUpdates(MemoryManager gmm, uint offset, ref Vp9BackwardUpdates counts) - { - using var backwardUpdatesRegion = gmm.GetWritableRegion(ExtendOffset(offset), Unsafe.SizeOf<BackwardUpdates>()); - - ref var backwardUpdates = ref MemoryMarshal.Cast<byte, BackwardUpdates>(backwardUpdatesRegion.Memory.Span)[0]; - - backwardUpdates = new BackwardUpdates(ref counts); - } - } -} |
