ryujinx/src
Keaton f91cd05260
Implement VP9 loop filtering (#550)
Unmerged PR from OG Ryujinx (#4367). From @gdkchan:

> The main goal of this change is porting the loop filtering from
libvpx, which should fix the block artifacts on some VP9 videos on games
using NVDEC to decode them. In addition to that, there are two other
changes:
> 
> - The remaining decoder code required to decode a VP9 video (with
headers included) has been added. That was done because it's much better
to test the decoder standalone with a video file. I decided to keep that
code on the emulator, even if some of it is unused, since it makes
standalone testing easier in the future too, and we can include unit
tests with video files.
> - Large refactoring of both new and existing code to conform with our
conding [sic] styles, done by @TSRBerry (thanks!) Some of it has been
automated.
> 
> Since we had no loop filtering before, this change will make video
decoding slower. That may cause frame drop etc if the decoder is not
fast enough in some games. I plan to optimize the decoder more in the
future to make up for that, but if possible I'd prefer to not do it as
part of this PR, but if the perf loss is too severe I might consider.
> 
> This will need to be tested on games that had the block artifacts, it
would be nice to confirm if they match hardware now, and get some
before/after screenshots etc.

Comment from @Bjorn29512:

> Significantly improves the block artifacts in FE: Engage.
> 
> Before:
>
![](https://user-images.githubusercontent.com/110204265/216882414-ec88dbda-7544-4490-8a47-37f074056ae3.png)
> 
> After:
>
![](https://user-images.githubusercontent.com/110204265/216882478-4e81fead-1033-4877-b282-f9cac6d6aa3b.png)

---------

Co-authored-by: gdkchan <gab.dark.100@gmail.com>
Co-authored-by: TSR Berry <20988865+TSRBerry@users.noreply.github.com>
2025-02-18 20:59:36 -06:00
..
ARMeilleure Prevent log from showing negative JIT cache sizes (32bit-int overflow) (#664) 2025-02-14 21:37:19 -06:00
Ryujinx Small PT-BR update (#688) 2025-02-18 17:29:58 -06:00
Ryujinx.Audio misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.Audio.Backends.OpenAL
Ryujinx.Audio.Backends.SDL2 misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.Audio.Backends.SoundIo misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.BuildValidationTasks misc: chore: Fix object creation everywhere else 2025-01-26 15:28:18 -06:00
Ryujinx.Common metal: Commented Bayonetta & New Pokemon Snap for Metal for more testing, removed Astral Chain 2025-02-17 13:43:28 -06:00
Ryujinx.Cpu Prevent log from showing negative JIT cache sizes (32bit-int overflow) (#664) 2025-02-14 21:37:19 -06:00
Ryujinx.Graphics.Device misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.Graphics.GAL misc: chore: Use collection expressions everywhere else (except VP9) 2025-01-26 15:59:11 -06:00
Ryujinx.Graphics.Gpu gpu: Switch the 500ms timeout back to 1s 2025-02-01 19:21:19 -06:00
Ryujinx.Graphics.Host1x misc: chore: Use collection expressions everywhere else (except VP9) 2025-01-26 15:59:11 -06:00
Ryujinx.Graphics.Metal misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.Graphics.Metal.SharpMetalExtensions
Ryujinx.Graphics.Nvdec Implement VP9 loop filtering (#550) 2025-02-18 20:59:36 -06:00
Ryujinx.Graphics.Nvdec.FFmpeg misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.Graphics.Nvdec.Vp9 Implement VP9 loop filtering (#550) 2025-02-18 20:59:36 -06:00
Ryujinx.Graphics.OpenGL misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.Graphics.Shader misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.Graphics.Texture misc: chore: Use collection expressions everywhere else (except VP9) 2025-01-26 15:59:11 -06:00
Ryujinx.Graphics.Vic misc: chore: Use explicit types in Texture & Vic 2025-01-25 14:08:35 -06:00
Ryujinx.Graphics.Video Implement VP9 loop filtering (#550) 2025-02-18 20:59:36 -06:00
Ryujinx.Graphics.Vulkan misc: chore: [ci skip] Remove unused 'using' directives from solution 2025-02-10 14:34:12 -06:00
Ryujinx.HLE HLE: LDN: Reduce NAT timeout from 5 seconds to 2.5 2025-02-16 17:48:19 -06:00
Ryujinx.HLE.Generators misc: chore: Use collection expressions everywhere else (except VP9) 2025-01-26 15:59:11 -06:00
Ryujinx.Horizon misc: chore: [ci skip] Remove unused 'using' directives from solution 2025-02-10 14:34:12 -06:00
Ryujinx.Horizon.Common misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.Horizon.Generators misc: chore: Use collection expressions in Generator projects 2025-01-26 15:45:43 -06:00
Ryujinx.Horizon.Kernel.Generators misc: chore: Use collection expressions in Generator projects 2025-01-26 15:45:43 -06:00
Ryujinx.Input UI: setting: Disable Input when Out of Focus 2025-02-11 22:12:05 -06:00
Ryujinx.Input.SDL2 misc: chore: Pass rainbow color by reference in the event instead of passing around a packed int. 2025-01-29 20:51:55 -06:00
Ryujinx.Memory misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.SDL2.Common misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.ShaderTools
Ryujinx.Tests misc: chore: Remove unused using directives across entire solution. 2025-01-30 20:27:17 -06:00
Ryujinx.Tests.Memory misc: chore: Use collection expressions everywhere else (except VP9) 2025-01-26 15:59:11 -06:00
Ryujinx.Tests.Unicorn misc: chore: Use collection expressions everywhere else (except VP9) 2025-01-26 15:59:11 -06:00
Ryujinx.UI.LocaleGenerator misc: chore: Use explicit types in Generator projects 2025-01-25 14:11:46 -06:00
Spv.Generator misc: chore: Use collection expressions in Generator projects 2025-01-26 15:45:43 -06:00