aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics/Vic
diff options
context:
space:
mode:
authorgdk <gab.dark.100@gmail.com>2019-10-13 03:02:07 -0300
committerThog <thog@protonmail.com>2020-01-09 02:13:00 +0100
commit1876b346fea647e8284a66bb6d62c38801035cff (patch)
tree6eeff094298cda84d1613dc5ec0691e51d7b35f1 /Ryujinx.Graphics/Vic
parentf617fb542a0e3d36012d77a4b5acbde7b08902f2 (diff)
Initial work
Diffstat (limited to 'Ryujinx.Graphics/Vic')
-rw-r--r--Ryujinx.Graphics/Vic/StructUnpacker.cs69
-rw-r--r--Ryujinx.Graphics/Vic/SurfaceOutputConfig.cs33
-rw-r--r--Ryujinx.Graphics/Vic/SurfacePixelFormat.cs8
-rw-r--r--Ryujinx.Graphics/Vic/VideoImageComposer.cs107
-rw-r--r--Ryujinx.Graphics/Vic/VideoImageComposerMeth.cs12
5 files changed, 0 insertions, 229 deletions
diff --git a/Ryujinx.Graphics/Vic/StructUnpacker.cs b/Ryujinx.Graphics/Vic/StructUnpacker.cs
deleted file mode 100644
index 6b6b9795..00000000
--- a/Ryujinx.Graphics/Vic/StructUnpacker.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-using Ryujinx.Graphics.Memory;
-using System;
-
-namespace Ryujinx.Graphics.Vic
-{
- class StructUnpacker
- {
- private NvGpuVmm _vmm;
-
- private long _position;
-
- private ulong _buffer;
- private int _buffPos;
-
- public StructUnpacker(NvGpuVmm vmm, long position)
- {
- _vmm = vmm;
- _position = position;
-
- _buffPos = 64;
- }
-
- public int Read(int bits)
- {
- if ((uint)bits > 32)
- {
- throw new ArgumentOutOfRangeException(nameof(bits));
- }
-
- int value = 0;
-
- while (bits > 0)
- {
- RefillBufferIfNeeded();
-
- int readBits = bits;
-
- int maxReadBits = 64 - _buffPos;
-
- if (readBits > maxReadBits)
- {
- readBits = maxReadBits;
- }
-
- value <<= readBits;
-
- value |= (int)(_buffer >> _buffPos) & (int)(0xffffffff >> (32 - readBits));
-
- _buffPos += readBits;
-
- bits -= readBits;
- }
-
- return value;
- }
-
- private void RefillBufferIfNeeded()
- {
- if (_buffPos >= 64)
- {
- _buffer = _vmm.ReadUInt64(_position);
-
- _position += 8;
-
- _buffPos = 0;
- }
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Vic/SurfaceOutputConfig.cs b/Ryujinx.Graphics/Vic/SurfaceOutputConfig.cs
deleted file mode 100644
index bdd55fc7..00000000
--- a/Ryujinx.Graphics/Vic/SurfaceOutputConfig.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-namespace Ryujinx.Graphics.Vic
-{
- struct SurfaceOutputConfig
- {
- public SurfacePixelFormat PixelFormat;
-
- public int SurfaceWidth;
- public int SurfaceHeight;
- public int GobBlockHeight;
-
- public long SurfaceLumaAddress;
- public long SurfaceChromaUAddress;
- public long SurfaceChromaVAddress;
-
- public SurfaceOutputConfig(
- SurfacePixelFormat pixelFormat,
- int surfaceWidth,
- int surfaceHeight,
- int gobBlockHeight,
- long outputSurfaceLumaAddress,
- long outputSurfaceChromaUAddress,
- long outputSurfaceChromaVAddress)
- {
- PixelFormat = pixelFormat;
- SurfaceWidth = surfaceWidth;
- SurfaceHeight = surfaceHeight;
- GobBlockHeight = gobBlockHeight;
- SurfaceLumaAddress = outputSurfaceLumaAddress;
- SurfaceChromaUAddress = outputSurfaceChromaUAddress;
- SurfaceChromaVAddress = outputSurfaceChromaVAddress;
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Vic/SurfacePixelFormat.cs b/Ryujinx.Graphics/Vic/SurfacePixelFormat.cs
deleted file mode 100644
index 8dabd094..00000000
--- a/Ryujinx.Graphics/Vic/SurfacePixelFormat.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Ryujinx.Graphics.Vic
-{
- enum SurfacePixelFormat
- {
- Rgba8 = 0x1f,
- Yuv420P = 0x44
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Vic/VideoImageComposer.cs b/Ryujinx.Graphics/Vic/VideoImageComposer.cs
deleted file mode 100644
index e05bcfdb..00000000
--- a/Ryujinx.Graphics/Vic/VideoImageComposer.cs
+++ /dev/null
@@ -1,107 +0,0 @@
-using Ryujinx.Graphics.Memory;
-
-namespace Ryujinx.Graphics.Vic
-{
- class VideoImageComposer
- {
- private NvGpu _gpu;
-
- private long _configStructAddress;
- private long _outputSurfaceLumaAddress;
- private long _outputSurfaceChromaUAddress;
- private long _outputSurfaceChromaVAddress;
-
- public VideoImageComposer(NvGpu gpu)
- {
- _gpu = gpu;
- }
-
- public void Process(NvGpuVmm vmm, int methodOffset, int[] arguments)
- {
- VideoImageComposerMeth method = (VideoImageComposerMeth)methodOffset;
-
- switch (method)
- {
- case VideoImageComposerMeth.Execute:
- Execute(vmm, arguments);
- break;
-
- case VideoImageComposerMeth.SetConfigStructOffset:
- SetConfigStructOffset(vmm, arguments);
- break;
-
- case VideoImageComposerMeth.SetOutputSurfaceLumaOffset:
- SetOutputSurfaceLumaOffset(vmm, arguments);
- break;
-
- case VideoImageComposerMeth.SetOutputSurfaceChromaUOffset:
- SetOutputSurfaceChromaUOffset(vmm, arguments);
- break;
-
- case VideoImageComposerMeth.SetOutputSurfaceChromaVOffset:
- SetOutputSurfaceChromaVOffset(vmm, arguments);
- break;
- }
- }
-
- private void Execute(NvGpuVmm vmm, int[] arguments)
- {
- StructUnpacker unpacker = new StructUnpacker(vmm, _configStructAddress + 0x20);
-
- SurfacePixelFormat pixelFormat = (SurfacePixelFormat)unpacker.Read(7);
-
- int chromaLocHoriz = unpacker.Read(2);
- int chromaLocVert = unpacker.Read(2);
-
- int blockLinearKind = unpacker.Read(4);
- int blockLinearHeightLog2 = unpacker.Read(4);
-
- int reserved0 = unpacker.Read(3);
- int reserved1 = unpacker.Read(10);
-
- int surfaceWidthMinus1 = unpacker.Read(14);
- int surfaceHeightMinus1 = unpacker.Read(14);
-
- int gobBlockHeight = 1 << blockLinearHeightLog2;
-
- int surfaceWidth = surfaceWidthMinus1 + 1;
- int surfaceHeight = surfaceHeightMinus1 + 1;
-
- SurfaceOutputConfig outputConfig = new SurfaceOutputConfig(
- pixelFormat,
- surfaceWidth,
- surfaceHeight,
- gobBlockHeight,
- _outputSurfaceLumaAddress,
- _outputSurfaceChromaUAddress,
- _outputSurfaceChromaVAddress);
-
- _gpu.VideoDecoder.CopyPlanes(vmm, outputConfig);
- }
-
- private void SetConfigStructOffset(NvGpuVmm vmm, int[] arguments)
- {
- _configStructAddress = GetAddress(arguments);
- }
-
- private void SetOutputSurfaceLumaOffset(NvGpuVmm vmm, int[] arguments)
- {
- _outputSurfaceLumaAddress = GetAddress(arguments);
- }
-
- private void SetOutputSurfaceChromaUOffset(NvGpuVmm vmm, int[] arguments)
- {
- _outputSurfaceChromaUAddress = GetAddress(arguments);
- }
-
- private void SetOutputSurfaceChromaVOffset(NvGpuVmm vmm, int[] arguments)
- {
- _outputSurfaceChromaVAddress = GetAddress(arguments);
- }
-
- private static long GetAddress(int[] arguments)
- {
- return (long)(uint)arguments[0] << 8;
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Vic/VideoImageComposerMeth.cs b/Ryujinx.Graphics/Vic/VideoImageComposerMeth.cs
deleted file mode 100644
index b30cabea..00000000
--- a/Ryujinx.Graphics/Vic/VideoImageComposerMeth.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Ryujinx.Graphics.Vic
-{
- enum VideoImageComposerMeth
- {
- Execute = 0xc0,
- SetControlParams = 0x1c1,
- SetConfigStructOffset = 0x1c2,
- SetOutputSurfaceLumaOffset = 0x1c8,
- SetOutputSurfaceChromaUOffset = 0x1c9,
- SetOutputSurfaceChromaVOffset = 0x1ca
- }
-} \ No newline at end of file