diff --git a/.editorconfig b/.editorconfig
index db08c67e2..ae4c97662 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -5,6 +5,9 @@ root = true
#### Core EditorConfig Options ####
+# Set default charset
+charset = utf-8
+
# Indentation and spacing
indent_size = 4
indent_style = space
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 1516f8a7d..491676acb 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -13,7 +13,7 @@ updates:
- package-ecosystem: nuget
directory: /
- open-pull-requests-limit: 5
+ open-pull-requests-limit: 10
schedule:
interval: daily
labels:
@@ -22,3 +22,19 @@ updates:
- marysaka
commit-message:
prefix: nuget
+ groups:
+ Avalonia:
+ patterns:
+ - "*Avalonia*"
+ Silk.NET:
+ patterns:
+ - "Silk.NET*"
+ OpenTK:
+ patterns:
+ - "OpenTK*"
+ SixLabors:
+ patterns:
+ - "SixLabors*"
+ NUnit:
+ patterns:
+ - "NUnit*"
diff --git a/.github/labeler.yml b/.github/labeler.yml
index 587830be1..027448437 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -1,33 +1,35 @@
-audio: 'src/Ryujinx.Audio*/**'
+audio:
+- changed-files:
+ - any-glob-to-any-file: 'src/Ryujinx.Audio*/**'
cpu:
- - 'src/ARMeilleure/**'
- - 'src/Ryujinx.Cpu/**'
- - 'src/Ryujinx.Memory/**'
+- changed-files:
+ - any-glob-to-any-file: ['src/ARMeilleure/**', 'src/Ryujinx.Cpu/**', 'src/Ryujinx.Memory/**']
gpu:
- - 'src/Ryujinx.Graphics.*/**'
- - 'src/Spv.Generator/**'
- - 'src/Ryujinx.ShaderTools/**'
+- changed-files:
+ - any-glob-to-any-file: ['src/Ryujinx.Graphics.*/**', 'src/Spv.Generator/**', 'src/Ryujinx.ShaderTools/**']
+
+'graphics-backend:opengl':
+- changed-files:
+ - any-glob-to-any-file: 'src/Ryujinx.Graphics.OpenGL/**'
-'graphics-backend:opengl': 'src/Ryujinx.Graphics.OpenGL/**'
'graphics-backend:vulkan':
- - 'src/Ryujinx.Graphics.Vulkan/**'
- - 'src/Spv.Generator/**'
+- changed-files:
+ - any-glob-to-any-file: ['src/Ryujinx.Graphics.Vulkan/**', 'src/Spv.Generator/**']
gui:
- - 'src/Ryujinx/**'
- - 'src/Ryujinx.Ui.Common/**'
- - 'src/Ryujinx.Ui.LocaleGenerator/**'
- - 'src/Ryujinx.Ava/**'
+- changed-files:
+ - any-glob-to-any-file: ['src/Ryujinx/**', 'src/Ryujinx.Ui.Common/**', 'src/Ryujinx.Ui.LocaleGenerator/**', 'src/Ryujinx.Ava/**']
horizon:
- - 'src/Ryujinx.HLE/**'
- - 'src/Ryujinx.Horizon*/**'
+- changed-files:
+ - any-glob-to-any-file: ['src/Ryujinx.HLE/**', 'src/Ryujinx.Horizon/**']
-kernel: 'src/Ryujinx.HLE/HOS/Kernel/**'
+kernel:
+- changed-files:
+ - any-glob-to-any-file: 'src/Ryujinx.HLE/HOS/Kernel/**'
infra:
- - '.github/**'
- - 'distribution/**'
- - 'Directory.Packages.props'
\ No newline at end of file
+- changed-files:
+ - any-glob-to-any-file: ['.github/**', 'distribution/**', 'Directory.Packages.props']
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 7d46adc2c..cf4fdf051 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -37,7 +37,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-dotnet@v3
+ - uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
@@ -79,21 +79,21 @@ jobs:
if: github.event_name == 'pull_request' && matrix.os == 'ubuntu-latest'
- name: Upload Ryujinx artifact
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-${{ matrix.RELEASE_ZIP_OS_NAME }}
path: publish
if: github.event_name == 'pull_request' && matrix.os != 'macOS-latest'
- name: Upload Ryujinx.Headless.SDL2 artifact
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: sdl2-ryujinx-headless-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-${{ matrix.RELEASE_ZIP_OS_NAME }}
path: publish_sdl2_headless
if: github.event_name == 'pull_request' && matrix.os != 'macOS-latest'
- name: Upload Ryujinx.Ava artifact
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: ava-ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-${{ matrix.RELEASE_ZIP_OS_NAME }}
path: publish_ava
@@ -110,7 +110,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-dotnet@v3
+ - uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
@@ -144,14 +144,14 @@ jobs:
./distribution/macos/create_macos_build_headless.sh . publish_tmp_headless publish_headless ./distribution/macos/entitlements.xml "${{ env.RYUJINX_BASE_VERSION }}" "${{ steps.git_short_hash.outputs.result }}" "${{ matrix.configuration }}" "-p:ExtraDefineConstants=DISABLE_UPDATER"
- name: Upload Ryujinx.Ava artifact
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: ava-ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-macos_universal
path: "publish_ava/*.tar.gz"
if: github.event_name == 'pull_request'
- name: Upload Ryujinx.Headless.SDL2 artifact
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: sdl2-ryujinx-headless-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-macos_universal
path: "publish_headless/*.tar.gz"
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
index 2c982d506..5311a67f6 100644
--- a/.github/workflows/checks.yml
+++ b/.github/workflows/checks.yml
@@ -27,7 +27,7 @@ jobs:
with:
fetch-depth: 0
- - uses: actions/setup-dotnet@v3
+ - uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
@@ -63,7 +63,7 @@ jobs:
- name: Upload report
if: failure()
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: dotnet-format
path: ./*-report.json
diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml
index c1ae9fe8f..f529bea03 100644
--- a/.github/workflows/flatpak.yml
+++ b/.github/workflows/flatpak.yml
@@ -28,7 +28,7 @@ jobs:
with:
path: Ryujinx
- - uses: actions/setup-dotnet@v3
+ - uses: actions/setup-dotnet@v4
with:
global-json-file: Ryujinx/global.json
diff --git a/.github/workflows/pr_triage.yml b/.github/workflows/pr_triage.yml
index e1c7b8ae8..93aa89626 100644
--- a/.github/workflows/pr_triage.yml
+++ b/.github/workflows/pr_triage.yml
@@ -32,7 +32,7 @@ jobs:
uses: ./.ryujinx-mako/.github/actions/setup-mako
- name: Update labels based on changes
- uses: actions/labeler@v4
+ uses: actions/labeler@v5
with:
sync-labels: true
dot: true
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 4dc1d091d..7a4b13d7d 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -64,7 +64,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-dotnet@v3
+ - uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
@@ -152,7 +152,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-dotnet@v3
+ - uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 44f9b5d40..c163cb0bf 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -3,24 +3,25 @@
true
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
+
@@ -46,9 +47,8 @@
-
-
+
\ No newline at end of file
diff --git a/distribution/macos/Info.plist b/distribution/macos/Info.plist
index 51c71eaa1..53929f95e 100644
--- a/distribution/macos/Info.plist
+++ b/distribution/macos/Info.plist
@@ -10,14 +10,25 @@
Ryujinx
CFBundleIconFile
Ryujinx.icns
- CFBundleTypeExtensions
-
- nca
- nro
- nso
- nsp
- xci
-
+ CFBundleDocumentTypes
+
+
+ CFBundleTypeExtensions
+
+ nca
+ nro
+ nso
+ nsp
+ xci
+
+ CFBundleTypeName
+ Nintendo Switch File
+ CFBundleTypeRole
+ Viewer
+ LSHandlerRank
+ Default
+
+
CFBundleIdentifier
org.ryujinx.Ryujinx
CFBundleInfoDictionaryVersion
diff --git a/src/ARMeilleure/Allocators.cs b/src/ARMeilleure/Allocators.cs
index ba782b99a..fba302657 100644
--- a/src/ARMeilleure/Allocators.cs
+++ b/src/ARMeilleure/Allocators.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Common;
+using ARMeilleure.Common;
using System;
using System.Runtime.CompilerServices;
diff --git a/src/ARMeilleure/CodeGen/Linking/Symbol.cs b/src/ARMeilleure/CodeGen/Linking/Symbol.cs
index 39e0c3eb1..5559afe09 100644
--- a/src/ARMeilleure/CodeGen/Linking/Symbol.cs
+++ b/src/ARMeilleure/CodeGen/Linking/Symbol.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.CodeGen.Linking
{
diff --git a/src/ARMeilleure/CodeGen/Linking/SymbolType.cs b/src/ARMeilleure/CodeGen/Linking/SymbolType.cs
index ed348751b..29011a762 100644
--- a/src/ARMeilleure/CodeGen/Linking/SymbolType.cs
+++ b/src/ARMeilleure/CodeGen/Linking/SymbolType.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.CodeGen.Linking
+namespace ARMeilleure.CodeGen.Linking
{
///
/// Types of .
diff --git a/src/ARMeilleure/CodeGen/Optimizations/BlockPlacement.cs b/src/ARMeilleure/CodeGen/Optimizations/BlockPlacement.cs
index 9e243d378..5f0e37721 100644
--- a/src/ARMeilleure/CodeGen/Optimizations/BlockPlacement.cs
+++ b/src/ARMeilleure/CodeGen/Optimizations/BlockPlacement.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.IntermediateRepresentation;
+using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
using System.Diagnostics;
using static ARMeilleure.IntermediateRepresentation.Operand.Factory;
diff --git a/src/ARMeilleure/CodeGen/Optimizations/TailMerge.cs b/src/ARMeilleure/CodeGen/Optimizations/TailMerge.cs
index e94df159c..e63c4da0d 100644
--- a/src/ARMeilleure/CodeGen/Optimizations/TailMerge.cs
+++ b/src/ARMeilleure/CodeGen/Optimizations/TailMerge.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.IntermediateRepresentation;
+using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
using static ARMeilleure.IntermediateRepresentation.Operation.Factory;
diff --git a/src/ARMeilleure/CodeGen/RegisterAllocators/LiveIntervalList.cs b/src/ARMeilleure/CodeGen/RegisterAllocators/LiveIntervalList.cs
index d999d767b..84b892f42 100644
--- a/src/ARMeilleure/CodeGen/RegisterAllocators/LiveIntervalList.cs
+++ b/src/ARMeilleure/CodeGen/RegisterAllocators/LiveIntervalList.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.CodeGen.RegisterAllocators
{
diff --git a/src/ARMeilleure/CodeGen/RegisterAllocators/UseList.cs b/src/ARMeilleure/CodeGen/RegisterAllocators/UseList.cs
index a945eccf4..806002f83 100644
--- a/src/ARMeilleure/CodeGen/RegisterAllocators/UseList.cs
+++ b/src/ARMeilleure/CodeGen/RegisterAllocators/UseList.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.CodeGen.RegisterAllocators
{
diff --git a/src/ARMeilleure/CodeGen/X86/AssemblerTable.cs b/src/ARMeilleure/CodeGen/X86/AssemblerTable.cs
index e4114a335..8910e8891 100644
--- a/src/ARMeilleure/CodeGen/X86/AssemblerTable.cs
+++ b/src/ARMeilleure/CodeGen/X86/AssemblerTable.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics.CodeAnalysis;
namespace ARMeilleure.CodeGen.X86
diff --git a/src/ARMeilleure/CodeGen/X86/CodeGenCommon.cs b/src/ARMeilleure/CodeGen/X86/CodeGenCommon.cs
index 237ecee4e..ae83ea80c 100644
--- a/src/ARMeilleure/CodeGen/X86/CodeGenCommon.cs
+++ b/src/ARMeilleure/CodeGen/X86/CodeGenCommon.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.IntermediateRepresentation;
+using ARMeilleure.IntermediateRepresentation;
namespace ARMeilleure.CodeGen.X86
{
diff --git a/src/ARMeilleure/CodeGen/X86/Mxcsr.cs b/src/ARMeilleure/CodeGen/X86/Mxcsr.cs
index 83d7a5845..719afe59e 100644
--- a/src/ARMeilleure/CodeGen/X86/Mxcsr.cs
+++ b/src/ARMeilleure/CodeGen/X86/Mxcsr.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.CodeGen.X86
{
diff --git a/src/ARMeilleure/CodeGen/X86/X86Optimizer.cs b/src/ARMeilleure/CodeGen/X86/X86Optimizer.cs
index 9d23f9ada..690ca5043 100644
--- a/src/ARMeilleure/CodeGen/X86/X86Optimizer.cs
+++ b/src/ARMeilleure/CodeGen/X86/X86Optimizer.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.CodeGen.Optimizations;
+using ARMeilleure.CodeGen.Optimizations;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
using System.Collections.Generic;
diff --git a/src/ARMeilleure/Common/AddressTable.cs b/src/ARMeilleure/Common/AddressTable.cs
index 9db2d00de..c9b0062b5 100644
--- a/src/ARMeilleure/Common/AddressTable.cs
+++ b/src/ARMeilleure/Common/AddressTable.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Diagnostics;
+using ARMeilleure.Diagnostics;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
diff --git a/src/ARMeilleure/Common/Allocator.cs b/src/ARMeilleure/Common/Allocator.cs
index 247a8e8bc..6905a614f 100644
--- a/src/ARMeilleure/Common/Allocator.cs
+++ b/src/ARMeilleure/Common/Allocator.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.Common
{
diff --git a/src/ARMeilleure/Common/ArenaAllocator.cs b/src/ARMeilleure/Common/ArenaAllocator.cs
index f810c2abd..ce8e33913 100644
--- a/src/ARMeilleure/Common/ArenaAllocator.cs
+++ b/src/ARMeilleure/Common/ArenaAllocator.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
diff --git a/src/ARMeilleure/Common/Counter.cs b/src/ARMeilleure/Common/Counter.cs
index d7210d159..6db9561ca 100644
--- a/src/ARMeilleure/Common/Counter.cs
+++ b/src/ARMeilleure/Common/Counter.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.Common
{
diff --git a/src/ARMeilleure/Common/EntryTable.cs b/src/ARMeilleure/Common/EntryTable.cs
index 6f2057979..625e3f73f 100644
--- a/src/ARMeilleure/Common/EntryTable.cs
+++ b/src/ARMeilleure/Common/EntryTable.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Numerics;
diff --git a/src/ARMeilleure/Common/NativeAllocator.cs b/src/ARMeilleure/Common/NativeAllocator.cs
index 71c04a9b1..93c48adda 100644
--- a/src/ARMeilleure/Common/NativeAllocator.cs
+++ b/src/ARMeilleure/Common/NativeAllocator.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace ARMeilleure.Common
diff --git a/src/ARMeilleure/Decoders/DecoderMode.cs b/src/ARMeilleure/Decoders/DecoderMode.cs
index 280ebb649..708d5c8fb 100644
--- a/src/ARMeilleure/Decoders/DecoderMode.cs
+++ b/src/ARMeilleure/Decoders/DecoderMode.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
enum DecoderMode
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32AluBf.cs b/src/ARMeilleure/Decoders/IOpCode32AluBf.cs
index 206c2965e..d1fe59039 100644
--- a/src/ARMeilleure/Decoders/IOpCode32AluBf.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32AluBf.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32AluBf
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32AluImm.cs b/src/ARMeilleure/Decoders/IOpCode32AluImm.cs
index 9d49a440d..b89990187 100644
--- a/src/ARMeilleure/Decoders/IOpCode32AluImm.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32AluImm.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32AluImm : IOpCode32Alu
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32AluReg.cs b/src/ARMeilleure/Decoders/IOpCode32AluReg.cs
index 1612cc5c9..1a35e664c 100644
--- a/src/ARMeilleure/Decoders/IOpCode32AluReg.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32AluReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32AluReg : IOpCode32Alu
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32AluRsImm.cs b/src/ARMeilleure/Decoders/IOpCode32AluRsImm.cs
index 8b976b58f..37a2c1000 100644
--- a/src/ARMeilleure/Decoders/IOpCode32AluRsImm.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32AluRsImm.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32AluRsImm : IOpCode32Alu
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32AluRsReg.cs b/src/ARMeilleure/Decoders/IOpCode32AluRsReg.cs
index e8c33c2b1..ed9859fc0 100644
--- a/src/ARMeilleure/Decoders/IOpCode32AluRsReg.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32AluRsReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32AluRsReg : IOpCode32Alu
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32AluUx.cs b/src/ARMeilleure/Decoders/IOpCode32AluUx.cs
index d03c7e219..d390f6b81 100644
--- a/src/ARMeilleure/Decoders/IOpCode32AluUx.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32AluUx.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32AluUx : IOpCode32AluReg
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32Exception.cs b/src/ARMeilleure/Decoders/IOpCode32Exception.cs
index 4c1fc231c..c38af9078 100644
--- a/src/ARMeilleure/Decoders/IOpCode32Exception.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32Exception.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32Exception
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32HasSetFlags.cs b/src/ARMeilleure/Decoders/IOpCode32HasSetFlags.cs
index 772e1080f..fd9337d9b 100644
--- a/src/ARMeilleure/Decoders/IOpCode32HasSetFlags.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32HasSetFlags.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32HasSetFlags
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32MemEx.cs b/src/ARMeilleure/Decoders/IOpCode32MemEx.cs
index aca7200a5..5f6b9321e 100644
--- a/src/ARMeilleure/Decoders/IOpCode32MemEx.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32MemEx.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32MemEx : IOpCode32Mem
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32MemReg.cs b/src/ARMeilleure/Decoders/IOpCode32MemReg.cs
index f356e4d7c..6a63f7f69 100644
--- a/src/ARMeilleure/Decoders/IOpCode32MemReg.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32MemReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32MemReg : IOpCode32Mem
{
diff --git a/src/ARMeilleure/Decoders/IOpCode32Simd.cs b/src/ARMeilleure/Decoders/IOpCode32Simd.cs
index 687254d92..0dccd2679 100644
--- a/src/ARMeilleure/Decoders/IOpCode32Simd.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32Simd.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32Simd : IOpCode32, IOpCodeSimd { }
}
diff --git a/src/ARMeilleure/Decoders/IOpCode32SimdImm.cs b/src/ARMeilleure/Decoders/IOpCode32SimdImm.cs
index a0cb669c7..a8e646092 100644
--- a/src/ARMeilleure/Decoders/IOpCode32SimdImm.cs
+++ b/src/ARMeilleure/Decoders/IOpCode32SimdImm.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
interface IOpCode32SimdImm : IOpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32AluBf.cs b/src/ARMeilleure/Decoders/OpCode32AluBf.cs
index 0cee34e6d..c34784428 100644
--- a/src/ARMeilleure/Decoders/OpCode32AluBf.cs
+++ b/src/ARMeilleure/Decoders/OpCode32AluBf.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32AluBf : OpCode32, IOpCode32AluBf
{
diff --git a/src/ARMeilleure/Decoders/OpCode32AluImm16.cs b/src/ARMeilleure/Decoders/OpCode32AluImm16.cs
index e24edeb41..2af35bd51 100644
--- a/src/ARMeilleure/Decoders/OpCode32AluImm16.cs
+++ b/src/ARMeilleure/Decoders/OpCode32AluImm16.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32AluImm16 : OpCode32Alu, IOpCode32AluImm16
{
diff --git a/src/ARMeilleure/Decoders/OpCode32AluMla.cs b/src/ARMeilleure/Decoders/OpCode32AluMla.cs
index 2cd2b9dcc..bc5d23908 100644
--- a/src/ARMeilleure/Decoders/OpCode32AluMla.cs
+++ b/src/ARMeilleure/Decoders/OpCode32AluMla.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32AluMla : OpCode32, IOpCode32AluMla
{
diff --git a/src/ARMeilleure/Decoders/OpCode32AluReg.cs b/src/ARMeilleure/Decoders/OpCode32AluReg.cs
index 493a977f0..9ef7571cf 100644
--- a/src/ARMeilleure/Decoders/OpCode32AluReg.cs
+++ b/src/ARMeilleure/Decoders/OpCode32AluReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32AluReg : OpCode32Alu, IOpCode32AluReg
{
diff --git a/src/ARMeilleure/Decoders/OpCode32AluRsReg.cs b/src/ARMeilleure/Decoders/OpCode32AluRsReg.cs
index 04740d086..6379b3bde 100644
--- a/src/ARMeilleure/Decoders/OpCode32AluRsReg.cs
+++ b/src/ARMeilleure/Decoders/OpCode32AluRsReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32AluRsReg : OpCode32Alu, IOpCode32AluRsReg
{
diff --git a/src/ARMeilleure/Decoders/OpCode32AluUmull.cs b/src/ARMeilleure/Decoders/OpCode32AluUmull.cs
index bf80df3ff..44b7ea154 100644
--- a/src/ARMeilleure/Decoders/OpCode32AluUmull.cs
+++ b/src/ARMeilleure/Decoders/OpCode32AluUmull.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32AluUmull : OpCode32, IOpCode32AluUmull
{
diff --git a/src/ARMeilleure/Decoders/OpCode32AluUx.cs b/src/ARMeilleure/Decoders/OpCode32AluUx.cs
index 57068675d..68da302fc 100644
--- a/src/ARMeilleure/Decoders/OpCode32AluUx.cs
+++ b/src/ARMeilleure/Decoders/OpCode32AluUx.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.State;
+using ARMeilleure.State;
namespace ARMeilleure.Decoders
{
diff --git a/src/ARMeilleure/Decoders/OpCode32Exception.cs b/src/ARMeilleure/Decoders/OpCode32Exception.cs
index b4edcc100..51a535e43 100644
--- a/src/ARMeilleure/Decoders/OpCode32Exception.cs
+++ b/src/ARMeilleure/Decoders/OpCode32Exception.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32Exception : OpCode32, IOpCode32Exception
{
diff --git a/src/ARMeilleure/Decoders/OpCode32MemLdEx.cs b/src/ARMeilleure/Decoders/OpCode32MemLdEx.cs
index 520113f46..0f0b37eac 100644
--- a/src/ARMeilleure/Decoders/OpCode32MemLdEx.cs
+++ b/src/ARMeilleure/Decoders/OpCode32MemLdEx.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32MemLdEx : OpCode32Mem, IOpCode32MemEx
{
diff --git a/src/ARMeilleure/Decoders/OpCode32MemReg.cs b/src/ARMeilleure/Decoders/OpCode32MemReg.cs
index 786f37fab..d8f1c29b2 100644
--- a/src/ARMeilleure/Decoders/OpCode32MemReg.cs
+++ b/src/ARMeilleure/Decoders/OpCode32MemReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32MemReg : OpCode32Mem, IOpCode32MemReg
{
diff --git a/src/ARMeilleure/Decoders/OpCode32MemRsImm.cs b/src/ARMeilleure/Decoders/OpCode32MemRsImm.cs
index e1284cf7e..b0e5aa4b9 100644
--- a/src/ARMeilleure/Decoders/OpCode32MemRsImm.cs
+++ b/src/ARMeilleure/Decoders/OpCode32MemRsImm.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32MemRsImm : OpCode32Mem, IOpCode32MemRsImm
{
diff --git a/src/ARMeilleure/Decoders/OpCode32MemStEx.cs b/src/ARMeilleure/Decoders/OpCode32MemStEx.cs
index dcf93b224..180a9b5ac 100644
--- a/src/ARMeilleure/Decoders/OpCode32MemStEx.cs
+++ b/src/ARMeilleure/Decoders/OpCode32MemStEx.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32MemStEx : OpCode32Mem, IOpCode32MemEx
{
diff --git a/src/ARMeilleure/Decoders/OpCode32MsrReg.cs b/src/ARMeilleure/Decoders/OpCode32MsrReg.cs
index 7186ebf74..dcd06aa01 100644
--- a/src/ARMeilleure/Decoders/OpCode32MsrReg.cs
+++ b/src/ARMeilleure/Decoders/OpCode32MsrReg.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.State;
+using ARMeilleure.State;
namespace ARMeilleure.Decoders
{
diff --git a/src/ARMeilleure/Decoders/OpCode32Simd.cs b/src/ARMeilleure/Decoders/OpCode32Simd.cs
index 636aa0a82..1e69b2341 100644
--- a/src/ARMeilleure/Decoders/OpCode32Simd.cs
+++ b/src/ARMeilleure/Decoders/OpCode32Simd.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32Simd : OpCode32SimdBase
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdBase.cs b/src/ARMeilleure/Decoders/OpCode32SimdBase.cs
index 2361ac1eb..d0634a0e1 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdBase.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdBase.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.Decoders
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdBinary.cs b/src/ARMeilleure/Decoders/OpCode32SimdBinary.cs
index ba190de96..c0c8277a9 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdBinary.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdBinary.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
///
/// A special alias that always runs in 64 bit int, to speed up binary ops a little.
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdCmpZ.cs b/src/ARMeilleure/Decoders/OpCode32SimdCmpZ.cs
index 445e67819..d8bc109e7 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdCmpZ.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdCmpZ.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdCmpZ : OpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdCvtFFixed.cs b/src/ARMeilleure/Decoders/OpCode32SimdCvtFFixed.cs
index 32faad1ec..200df73ad 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdCvtFFixed.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdCvtFFixed.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdCvtFFixed : OpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdCvtFI.cs b/src/ARMeilleure/Decoders/OpCode32SimdCvtFI.cs
index 41cf4d884..ee8f94a4e 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdCvtFI.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdCvtFI.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdCvtFI : OpCode32SimdS
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdDupElem.cs b/src/ARMeilleure/Decoders/OpCode32SimdDupElem.cs
index c455b5b4e..b6cdff088 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdDupElem.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdDupElem.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdDupElem : OpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdDupGP.cs b/src/ARMeilleure/Decoders/OpCode32SimdDupGP.cs
index 31546ea31..57adea5e6 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdDupGP.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdDupGP.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdDupGP : OpCode32, IOpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdExt.cs b/src/ARMeilleure/Decoders/OpCode32SimdExt.cs
index 6dbb5b662..4fe9f25db 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdExt.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdExt.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdExt : OpCode32SimdReg
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdImm.cs b/src/ARMeilleure/Decoders/OpCode32SimdImm.cs
index bf0ca527d..9e931e791 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdImm.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdImm.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdImm : OpCode32SimdBase, IOpCode32SimdImm
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdImm44.cs b/src/ARMeilleure/Decoders/OpCode32SimdImm44.cs
index fa00a935a..55df1ba6e 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdImm44.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdImm44.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdImm44 : OpCode32, IOpCode32SimdImm
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdLong.cs b/src/ARMeilleure/Decoders/OpCode32SimdLong.cs
index 558771a38..5c068de16 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdLong.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdLong.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdLong : OpCode32SimdBase
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdMemImm.cs b/src/ARMeilleure/Decoders/OpCode32SimdMemImm.cs
index c933a5ad2..86870dfea 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdMemImm.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdMemImm.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdMemImm : OpCode32, IOpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdMemMult.cs b/src/ARMeilleure/Decoders/OpCode32SimdMemMult.cs
index a16a03d3b..c3b8670f8 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdMemMult.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdMemMult.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdMemMult : OpCode32
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdMemPair.cs b/src/ARMeilleure/Decoders/OpCode32SimdMemPair.cs
index 325be4ece..6a18211c6 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdMemPair.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdMemPair.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.State;
+using ARMeilleure.State;
namespace ARMeilleure.Decoders
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdMemSingle.cs b/src/ARMeilleure/Decoders/OpCode32SimdMemSingle.cs
index 35dd41c29..5df45000f 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdMemSingle.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdMemSingle.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.State;
+using ARMeilleure.State;
namespace ARMeilleure.Decoders
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdMovGp.cs b/src/ARMeilleure/Decoders/OpCode32SimdMovGp.cs
index 5afd34883..35b8cc9f1 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdMovGp.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdMovGp.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdMovGp : OpCode32, IOpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdMovGpDouble.cs b/src/ARMeilleure/Decoders/OpCode32SimdMovGpDouble.cs
index 2d6931199..4399fb3c0 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdMovGpDouble.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdMovGpDouble.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdMovGpDouble : OpCode32, IOpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdMovGpElem.cs b/src/ARMeilleure/Decoders/OpCode32SimdMovGpElem.cs
index 7816665f3..f6fce7d99 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdMovGpElem.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdMovGpElem.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdMovGpElem : OpCode32, IOpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdReg.cs b/src/ARMeilleure/Decoders/OpCode32SimdReg.cs
index 1c46b0e01..eaf17b8c6 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdReg.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdReg : OpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdRegElem.cs b/src/ARMeilleure/Decoders/OpCode32SimdRegElem.cs
index 173c52652..147de44ba 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdRegElem.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdRegElem.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdRegElem : OpCode32SimdReg
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdRegElemLong.cs b/src/ARMeilleure/Decoders/OpCode32SimdRegElemLong.cs
index b87ac4130..8aea44cb0 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdRegElemLong.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdRegElemLong.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdRegElemLong : OpCode32SimdRegElem
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdRegLong.cs b/src/ARMeilleure/Decoders/OpCode32SimdRegLong.cs
index 110693835..1349fb479 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdRegLong.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdRegLong.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdRegLong : OpCode32SimdReg
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdRegS.cs b/src/ARMeilleure/Decoders/OpCode32SimdRegS.cs
index 8168e83fd..2dfb0074d 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdRegS.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdRegS.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdRegS : OpCode32SimdS
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdRegWide.cs b/src/ARMeilleure/Decoders/OpCode32SimdRegWide.cs
index fd2b3bf1d..6f9c639f9 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdRegWide.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdRegWide.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdRegWide : OpCode32SimdReg
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdRev.cs b/src/ARMeilleure/Decoders/OpCode32SimdRev.cs
index cb64765f4..26d8be2b9 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdRev.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdRev.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdRev : OpCode32SimdCmpZ
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdS.cs b/src/ARMeilleure/Decoders/OpCode32SimdS.cs
index 63c03c019..0bb62cb52 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdS.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdS.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdS : OpCode32, IOpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdSel.cs b/src/ARMeilleure/Decoders/OpCode32SimdSel.cs
index cb28418c3..a6667ba19 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdSel.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdSel.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdSel : OpCode32SimdRegS
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdShImm.cs b/src/ARMeilleure/Decoders/OpCode32SimdShImm.cs
index 55ddc3958..040dce6f1 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdShImm.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdShImm.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdShImm : OpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdShImmLong.cs b/src/ARMeilleure/Decoders/OpCode32SimdShImmLong.cs
index 6b1b0ad1e..13d89ca42 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdShImmLong.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdShImmLong.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdShImmLong : OpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdShImmNarrow.cs b/src/ARMeilleure/Decoders/OpCode32SimdShImmNarrow.cs
index 5351e65ff..ce1e79069 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdShImmNarrow.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdShImmNarrow.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdShImmNarrow : OpCode32SimdShImm
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdSpecial.cs b/src/ARMeilleure/Decoders/OpCode32SimdSpecial.cs
index 61a9f3870..9b6f47321 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdSpecial.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdSpecial.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdSpecial : OpCode32
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdSqrte.cs b/src/ARMeilleure/Decoders/OpCode32SimdSqrte.cs
index 5b715535a..8f8fa4b03 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdSqrte.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdSqrte.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdSqrte : OpCode32Simd
{
diff --git a/src/ARMeilleure/Decoders/OpCode32SimdTbl.cs b/src/ARMeilleure/Decoders/OpCode32SimdTbl.cs
index c4fb4b9ce..fcac9e014 100644
--- a/src/ARMeilleure/Decoders/OpCode32SimdTbl.cs
+++ b/src/ARMeilleure/Decoders/OpCode32SimdTbl.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32SimdTbl : OpCode32SimdReg
{
diff --git a/src/ARMeilleure/Decoders/OpCode32System.cs b/src/ARMeilleure/Decoders/OpCode32System.cs
index 89e93349b..f6f5e0f96 100644
--- a/src/ARMeilleure/Decoders/OpCode32System.cs
+++ b/src/ARMeilleure/Decoders/OpCode32System.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCode32System : OpCode32
{
diff --git a/src/ARMeilleure/Decoders/OpCodeSimdHelper.cs b/src/ARMeilleure/Decoders/OpCodeSimdHelper.cs
index d900ed9ba..b006cc954 100644
--- a/src/ARMeilleure/Decoders/OpCodeSimdHelper.cs
+++ b/src/ARMeilleure/Decoders/OpCodeSimdHelper.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
public static class OpCodeSimdHelper
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16AddSubImm3.cs b/src/ARMeilleure/Decoders/OpCodeT16AddSubImm3.cs
index cefb50e4a..683d638a8 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16AddSubImm3.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16AddSubImm3.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16AddSubImm3 : OpCodeT16, IOpCode32AluImm
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16AddSubReg.cs b/src/ARMeilleure/Decoders/OpCodeT16AddSubReg.cs
index 2a407b2d2..201fc8aab 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16AddSubReg.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16AddSubReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16AddSubReg : OpCodeT16, IOpCode32AluReg
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16AluImm8.cs b/src/ARMeilleure/Decoders/OpCodeT16AluImm8.cs
index 673a46045..122698d7e 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16AluImm8.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16AluImm8.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16AluImm8 : OpCodeT16, IOpCode32AluImm
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16AluImmZero.cs b/src/ARMeilleure/Decoders/OpCodeT16AluImmZero.cs
index b23f8fe03..f67a75f96 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16AluImmZero.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16AluImmZero.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16AluImmZero : OpCodeT16, IOpCode32AluImm
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16AluRegHigh.cs b/src/ARMeilleure/Decoders/OpCodeT16AluRegHigh.cs
index 6d5ac8fd3..5458f65f2 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16AluRegHigh.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16AluRegHigh.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16AluRegHigh : OpCodeT16, IOpCode32AluReg
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16AluRegLow.cs b/src/ARMeilleure/Decoders/OpCodeT16AluRegLow.cs
index b37b4f661..f86f48bd4 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16AluRegLow.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16AluRegLow.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16AluRegLow : OpCodeT16, IOpCode32AluReg
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16BImm11.cs b/src/ARMeilleure/Decoders/OpCodeT16BImm11.cs
index fab098a8f..5ed8a4e6c 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16BImm11.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16BImm11.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16BImm11 : OpCodeT16, IOpCode32BImm
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16BImm8.cs b/src/ARMeilleure/Decoders/OpCodeT16BImm8.cs
index edfa86ba5..85318e5be 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16BImm8.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16BImm8.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16BImm8 : OpCodeT16, IOpCode32BImm
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16BReg.cs b/src/ARMeilleure/Decoders/OpCodeT16BReg.cs
index 3122cd07e..da2a007a5 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16BReg.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16BReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16BReg : OpCodeT16, IOpCode32BReg
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16Exception.cs b/src/ARMeilleure/Decoders/OpCodeT16Exception.cs
index bb0050834..8ccdf09ba 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16Exception.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16Exception.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16Exception : OpCodeT16, IOpCode32Exception
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16IfThen.cs b/src/ARMeilleure/Decoders/OpCodeT16IfThen.cs
index 8c3de689e..ea435a79b 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16IfThen.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16IfThen.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace ARMeilleure.Decoders
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16MemImm5.cs b/src/ARMeilleure/Decoders/OpCodeT16MemImm5.cs
index 873c63b93..e9b383989 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16MemImm5.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16MemImm5.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Instructions;
+using ARMeilleure.Instructions;
using System;
namespace ARMeilleure.Decoders
diff --git a/src/ARMeilleure/Decoders/OpCodeT16MemLit.cs b/src/ARMeilleure/Decoders/OpCodeT16MemLit.cs
index f8c16e299..63a452ad3 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16MemLit.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16MemLit.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.State;
+using ARMeilleure.State;
namespace ARMeilleure.Decoders
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16MemMult.cs b/src/ARMeilleure/Decoders/OpCodeT16MemMult.cs
index 3f3057acd..92b027a6e 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16MemMult.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16MemMult.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Instructions;
+using ARMeilleure.Instructions;
using System;
using System.Numerics;
diff --git a/src/ARMeilleure/Decoders/OpCodeT16MemReg.cs b/src/ARMeilleure/Decoders/OpCodeT16MemReg.cs
index 71100112e..17d6966b2 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16MemReg.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16MemReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16MemReg : OpCodeT16, IOpCode32MemReg
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16MemSp.cs b/src/ARMeilleure/Decoders/OpCodeT16MemSp.cs
index a038b915b..ed42679a5 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16MemSp.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16MemSp.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.State;
+using ARMeilleure.State;
namespace ARMeilleure.Decoders
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16MemStack.cs b/src/ARMeilleure/Decoders/OpCodeT16MemStack.cs
index 9d7b0d203..28d5db4d9 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16MemStack.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16MemStack.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Instructions;
+using ARMeilleure.Instructions;
using ARMeilleure.State;
using System;
using System.Numerics;
diff --git a/src/ARMeilleure/Decoders/OpCodeT16ShiftImm.cs b/src/ARMeilleure/Decoders/OpCodeT16ShiftImm.cs
index 8f35e4391..18e7b9e2e 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16ShiftImm.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16ShiftImm.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16ShiftImm : OpCodeT16, IOpCode32AluRsImm
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT16ShiftReg.cs b/src/ARMeilleure/Decoders/OpCodeT16ShiftReg.cs
index 9f8982814..ce47dfb5d 100644
--- a/src/ARMeilleure/Decoders/OpCodeT16ShiftReg.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT16ShiftReg.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT16ShiftReg : OpCodeT16, IOpCode32AluRsReg
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT32.cs b/src/ARMeilleure/Decoders/OpCodeT32.cs
index 5ccbd6a27..87a0520d9 100644
--- a/src/ARMeilleure/Decoders/OpCodeT32.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT32.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT32 : OpCode32
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT32Alu.cs b/src/ARMeilleure/Decoders/OpCodeT32Alu.cs
index 1f92f7558..cdef007a9 100644
--- a/src/ARMeilleure/Decoders/OpCodeT32Alu.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT32Alu.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT32Alu : OpCodeT32, IOpCode32Alu
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT32AluImm.cs b/src/ARMeilleure/Decoders/OpCodeT32AluImm.cs
index 863d14bda..ce88964c9 100644
--- a/src/ARMeilleure/Decoders/OpCodeT32AluImm.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT32AluImm.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Common;
+using ARMeilleure.Common;
using System.Runtime.Intrinsics;
namespace ARMeilleure.Decoders
diff --git a/src/ARMeilleure/Decoders/OpCodeT32AluRsImm.cs b/src/ARMeilleure/Decoders/OpCodeT32AluRsImm.cs
index edf0298df..dad0d9575 100644
--- a/src/ARMeilleure/Decoders/OpCodeT32AluRsImm.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT32AluRsImm.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT32AluRsImm : OpCodeT32Alu, IOpCode32AluRsImm
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT32BImm20.cs b/src/ARMeilleure/Decoders/OpCodeT32BImm20.cs
index 13256ee54..793f82627 100644
--- a/src/ARMeilleure/Decoders/OpCodeT32BImm20.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT32BImm20.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT32BImm20 : OpCodeT32, IOpCode32BImm
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT32BImm24.cs b/src/ARMeilleure/Decoders/OpCodeT32BImm24.cs
index d7c606619..d35ab8a45 100644
--- a/src/ARMeilleure/Decoders/OpCodeT32BImm24.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT32BImm24.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Instructions;
+using ARMeilleure.Instructions;
namespace ARMeilleure.Decoders
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT32MemImm12.cs b/src/ARMeilleure/Decoders/OpCodeT32MemImm12.cs
index 4977cdf50..aac8dbfba 100644
--- a/src/ARMeilleure/Decoders/OpCodeT32MemImm12.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT32MemImm12.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT32MemImm12 : OpCodeT32, IOpCode32Mem
{
diff --git a/src/ARMeilleure/Decoders/OpCodeT32MemImm8.cs b/src/ARMeilleure/Decoders/OpCodeT32MemImm8.cs
index f84e41400..d80ce86c5 100644
--- a/src/ARMeilleure/Decoders/OpCodeT32MemImm8.cs
+++ b/src/ARMeilleure/Decoders/OpCodeT32MemImm8.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Decoders
+namespace ARMeilleure.Decoders
{
class OpCodeT32MemImm8 : OpCodeT32, IOpCode32Mem
{
diff --git a/src/ARMeilleure/Decoders/Optimizations/TailCallRemover.cs b/src/ARMeilleure/Decoders/Optimizations/TailCallRemover.cs
index 20759f356..9d988f0c9 100644
--- a/src/ARMeilleure/Decoders/Optimizations/TailCallRemover.cs
+++ b/src/ARMeilleure/Decoders/Optimizations/TailCallRemover.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
namespace ARMeilleure.Decoders.Optimizations
diff --git a/src/ARMeilleure/Diagnostics/Symbols.cs b/src/ARMeilleure/Diagnostics/Symbols.cs
index d857c079f..be74d2b5b 100644
--- a/src/ARMeilleure/Diagnostics/Symbols.cs
+++ b/src/ARMeilleure/Diagnostics/Symbols.cs
@@ -1,4 +1,4 @@
-using System.Collections.Concurrent;
+using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
diff --git a/src/ARMeilleure/Diagnostics/TranslatorEventSource.cs b/src/ARMeilleure/Diagnostics/TranslatorEventSource.cs
index 6452bf0af..2e1be8c51 100644
--- a/src/ARMeilleure/Diagnostics/TranslatorEventSource.cs
+++ b/src/ARMeilleure/Diagnostics/TranslatorEventSource.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics.Tracing;
+using System.Diagnostics.Tracing;
using System.Threading;
namespace ARMeilleure.Diagnostics
diff --git a/src/ARMeilleure/Instructions/InstEmitException32.cs b/src/ARMeilleure/Instructions/InstEmitException32.cs
index ec0c32bf9..57af1522b 100644
--- a/src/ARMeilleure/Instructions/InstEmitException32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitException32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.Translation;
using static ARMeilleure.IntermediateRepresentation.Operand.Factory;
diff --git a/src/ARMeilleure/Instructions/InstEmitHash32.cs b/src/ARMeilleure/Instructions/InstEmitHash32.cs
index 5d39f8afc..30c893a78 100644
--- a/src/ARMeilleure/Instructions/InstEmitHash32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitHash32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
using static ARMeilleure.Instructions.InstEmitHashHelper;
diff --git a/src/ARMeilleure/Instructions/InstEmitHashHelper.cs b/src/ARMeilleure/Instructions/InstEmitHashHelper.cs
index 9218e1ae0..9b1ad8721 100644
--- a/src/ARMeilleure/Instructions/InstEmitHashHelper.cs
+++ b/src/ARMeilleure/Instructions/InstEmitHashHelper.cs
@@ -1,4 +1,4 @@
-// https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf
+// https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
diff --git a/src/ARMeilleure/Instructions/InstEmitMemoryEx32.cs b/src/ARMeilleure/Instructions/InstEmitMemoryEx32.cs
index c0b6fc39d..150218827 100644
--- a/src/ARMeilleure/Instructions/InstEmitMemoryEx32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitMemoryEx32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.State;
using ARMeilleure.Translation;
diff --git a/src/ARMeilleure/Instructions/InstEmitMemoryExHelper.cs b/src/ARMeilleure/Instructions/InstEmitMemoryExHelper.cs
index c9a99a3b5..7fca5b853 100644
--- a/src/ARMeilleure/Instructions/InstEmitMemoryExHelper.cs
+++ b/src/ARMeilleure/Instructions/InstEmitMemoryExHelper.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.IntermediateRepresentation;
+using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.State;
using ARMeilleure.Translation;
using static ARMeilleure.Instructions.InstEmitHelper;
diff --git a/src/ARMeilleure/Instructions/InstEmitMul32.cs b/src/ARMeilleure/Instructions/InstEmitMul32.cs
index b9680fb69..b9966ad1d 100644
--- a/src/ARMeilleure/Instructions/InstEmitMul32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitMul32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.State;
using ARMeilleure.Translation;
diff --git a/src/ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs b/src/ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs
index 1d99cbc3d..27608ebf8 100644
--- a/src/ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
using System;
diff --git a/src/ARMeilleure/Instructions/InstEmitSimdCmp32.cs b/src/ARMeilleure/Instructions/InstEmitSimdCmp32.cs
index a990e057d..1d68bce6b 100644
--- a/src/ARMeilleure/Instructions/InstEmitSimdCmp32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitSimdCmp32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.State;
using ARMeilleure.Translation;
diff --git a/src/ARMeilleure/Instructions/InstEmitSimdCrypto32.cs b/src/ARMeilleure/Instructions/InstEmitSimdCrypto32.cs
index 24fd7c87e..7a0c981e7 100644
--- a/src/ARMeilleure/Instructions/InstEmitSimdCrypto32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitSimdCrypto32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
diff --git a/src/ARMeilleure/Instructions/InstEmitSimdCvt32.cs b/src/ARMeilleure/Instructions/InstEmitSimdCvt32.cs
index b03855910..630e114c4 100644
--- a/src/ARMeilleure/Instructions/InstEmitSimdCvt32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitSimdCvt32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.State;
using ARMeilleure.Translation;
diff --git a/src/ARMeilleure/Instructions/InstEmitSimdLogical32.cs b/src/ARMeilleure/Instructions/InstEmitSimdLogical32.cs
index 747acb101..26d093447 100644
--- a/src/ARMeilleure/Instructions/InstEmitSimdLogical32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitSimdLogical32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
diff --git a/src/ARMeilleure/Instructions/InstEmitSimdMemory32.cs b/src/ARMeilleure/Instructions/InstEmitSimdMemory32.cs
index b774bd061..35c6dd328 100644
--- a/src/ARMeilleure/Instructions/InstEmitSimdMemory32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitSimdMemory32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.State;
using ARMeilleure.Translation;
diff --git a/src/ARMeilleure/Instructions/InstEmitSimdMove32.cs b/src/ARMeilleure/Instructions/InstEmitSimdMove32.cs
index 050d35e9d..9fa740997 100644
--- a/src/ARMeilleure/Instructions/InstEmitSimdMove32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitSimdMove32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
using System;
diff --git a/src/ARMeilleure/Instructions/InstEmitSimdShift32.cs b/src/ARMeilleure/Instructions/InstEmitSimdShift32.cs
index 5c7d48287..e40600a47 100644
--- a/src/ARMeilleure/Instructions/InstEmitSimdShift32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitSimdShift32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.State;
using ARMeilleure.Translation;
diff --git a/src/ARMeilleure/Instructions/InstEmitSystem32.cs b/src/ARMeilleure/Instructions/InstEmitSystem32.cs
index 82e625715..74d6169c6 100644
--- a/src/ARMeilleure/Instructions/InstEmitSystem32.cs
+++ b/src/ARMeilleure/Instructions/InstEmitSystem32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Decoders;
+using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.State;
using ARMeilleure.Translation;
diff --git a/src/ARMeilleure/IntermediateRepresentation/BasicBlockFrequency.cs b/src/ARMeilleure/IntermediateRepresentation/BasicBlockFrequency.cs
index 74aaea6b1..e4f7ae809 100644
--- a/src/ARMeilleure/IntermediateRepresentation/BasicBlockFrequency.cs
+++ b/src/ARMeilleure/IntermediateRepresentation/BasicBlockFrequency.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.IntermediateRepresentation
+namespace ARMeilleure.IntermediateRepresentation
{
enum BasicBlockFrequency
{
diff --git a/src/ARMeilleure/IntermediateRepresentation/Comparison.cs b/src/ARMeilleure/IntermediateRepresentation/Comparison.cs
index e3a68b49d..3d6a9d818 100644
--- a/src/ARMeilleure/IntermediateRepresentation/Comparison.cs
+++ b/src/ARMeilleure/IntermediateRepresentation/Comparison.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.IntermediateRepresentation
+namespace ARMeilleure.IntermediateRepresentation
{
enum Comparison
{
diff --git a/src/ARMeilleure/IntermediateRepresentation/IIntrusiveListNode.cs b/src/ARMeilleure/IntermediateRepresentation/IIntrusiveListNode.cs
index caa9b83fe..05be8a5ae 100644
--- a/src/ARMeilleure/IntermediateRepresentation/IIntrusiveListNode.cs
+++ b/src/ARMeilleure/IntermediateRepresentation/IIntrusiveListNode.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.IntermediateRepresentation
+namespace ARMeilleure.IntermediateRepresentation
{
interface IIntrusiveListNode
{
diff --git a/src/ARMeilleure/IntermediateRepresentation/IntrusiveList.cs b/src/ARMeilleure/IntermediateRepresentation/IntrusiveList.cs
index 184df87c8..8d300075d 100644
--- a/src/ARMeilleure/IntermediateRepresentation/IntrusiveList.cs
+++ b/src/ARMeilleure/IntermediateRepresentation/IntrusiveList.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.CompilerServices;
diff --git a/src/ARMeilleure/IntermediateRepresentation/PhiOperation.cs b/src/ARMeilleure/IntermediateRepresentation/PhiOperation.cs
index d2a3cf218..672c280fa 100644
--- a/src/ARMeilleure/IntermediateRepresentation/PhiOperation.cs
+++ b/src/ARMeilleure/IntermediateRepresentation/PhiOperation.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Translation;
+using ARMeilleure.Translation;
using static ARMeilleure.IntermediateRepresentation.Operand.Factory;
namespace ARMeilleure.IntermediateRepresentation
diff --git a/src/ARMeilleure/Memory/IJitMemoryAllocator.cs b/src/ARMeilleure/Memory/IJitMemoryAllocator.cs
index 19b696b0a..ff64bf13e 100644
--- a/src/ARMeilleure/Memory/IJitMemoryAllocator.cs
+++ b/src/ARMeilleure/Memory/IJitMemoryAllocator.cs
@@ -1,10 +1,8 @@
-namespace ARMeilleure.Memory
+namespace ARMeilleure.Memory
{
public interface IJitMemoryAllocator
{
IJitMemoryBlock Allocate(ulong size);
IJitMemoryBlock Reserve(ulong size);
-
- ulong GetPageSize();
}
}
diff --git a/src/ARMeilleure/Memory/IJitMemoryBlock.cs b/src/ARMeilleure/Memory/IJitMemoryBlock.cs
index e94b0a60d..cd49f314a 100644
--- a/src/ARMeilleure/Memory/IJitMemoryBlock.cs
+++ b/src/ARMeilleure/Memory/IJitMemoryBlock.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.Memory
{
diff --git a/src/ARMeilleure/Memory/IMemoryManager.cs b/src/ARMeilleure/Memory/IMemoryManager.cs
index ec5b81ebe..952cd2b4f 100644
--- a/src/ARMeilleure/Memory/IMemoryManager.cs
+++ b/src/ARMeilleure/Memory/IMemoryManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.Memory
{
diff --git a/src/ARMeilleure/Memory/MemoryManagerType.cs b/src/ARMeilleure/Memory/MemoryManagerType.cs
index e897a038f..b1cdbb069 100644
--- a/src/ARMeilleure/Memory/MemoryManagerType.cs
+++ b/src/ARMeilleure/Memory/MemoryManagerType.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.Memory
+namespace ARMeilleure.Memory
{
///
/// Indicates the type of a memory manager and the method it uses for memory mapping
@@ -31,7 +31,7 @@
HostMappedUnsafe,
}
- static class MemoryManagerTypeExtensions
+ public static class MemoryManagerTypeExtensions
{
public static bool IsHostMapped(this MemoryManagerType type)
{
diff --git a/src/ARMeilleure/Memory/ReservedRegion.cs b/src/ARMeilleure/Memory/ReservedRegion.cs
index 2197afad9..d0ffa8f1b 100644
--- a/src/ARMeilleure/Memory/ReservedRegion.cs
+++ b/src/ARMeilleure/Memory/ReservedRegion.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.Memory
{
diff --git a/src/ARMeilleure/Signal/NativeSignalHandler.cs b/src/ARMeilleure/Signal/NativeSignalHandlerGenerator.cs
similarity index 61%
rename from src/ARMeilleure/Signal/NativeSignalHandler.cs
rename to src/ARMeilleure/Signal/NativeSignalHandlerGenerator.cs
index 3f0e9e4bf..c5e708e16 100644
--- a/src/ARMeilleure/Signal/NativeSignalHandler.cs
+++ b/src/ARMeilleure/Signal/NativeSignalHandlerGenerator.cs
@@ -1,63 +1,14 @@
-using ARMeilleure.IntermediateRepresentation;
-using ARMeilleure.Memory;
+using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
-using ARMeilleure.Translation.Cache;
using System;
-using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using static ARMeilleure.IntermediateRepresentation.Operand.Factory;
namespace ARMeilleure.Signal
{
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- struct SignalHandlerRange
+ public static class NativeSignalHandlerGenerator
{
- public int IsActive;
- public nuint RangeAddress;
- public nuint RangeEndAddress;
- public IntPtr ActionPointer;
- }
-
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- struct SignalHandlerConfig
- {
- ///
- /// The byte offset of the faulting address in the SigInfo or ExceptionRecord struct.
- ///
- public int StructAddressOffset;
-
- ///
- /// The byte offset of the write flag in the SigInfo or ExceptionRecord struct.
- ///
- public int StructWriteOffset;
-
- ///
- /// The sigaction handler that was registered before this one. (unix only)
- ///
- public nuint UnixOldSigaction;
-
- ///
- /// The type of the previous sigaction. True for the 3 argument variant. (unix only)
- ///
- public int UnixOldSigaction3Arg;
-
- public SignalHandlerRange Range0;
- public SignalHandlerRange Range1;
- public SignalHandlerRange Range2;
- public SignalHandlerRange Range3;
- public SignalHandlerRange Range4;
- public SignalHandlerRange Range5;
- public SignalHandlerRange Range6;
- public SignalHandlerRange Range7;
- }
-
- public static class NativeSignalHandler
- {
- private delegate void UnixExceptionHandler(int sig, IntPtr info, IntPtr ucontext);
- [UnmanagedFunctionPointer(CallingConvention.Winapi)]
- private delegate int VectoredExceptionHandler(IntPtr exceptionInfo);
-
- private const int MaxTrackedRanges = 8;
+ public const int MaxTrackedRanges = 8;
private const int StructAddressOffset = 0;
private const int StructWriteOffset = 4;
@@ -70,125 +21,10 @@ namespace ARMeilleure.Signal
private const uint EXCEPTION_ACCESS_VIOLATION = 0xc0000005;
- private static ulong _pageSize;
- private static ulong _pageMask;
-
- private static readonly IntPtr _handlerConfig;
- private static IntPtr _signalHandlerPtr;
- private static IntPtr _signalHandlerHandle;
-
- private static readonly object _lock = new();
- private static bool _initialized;
-
- static NativeSignalHandler()
+ private static Operand EmitGenericRegionCheck(EmitterContext context, IntPtr signalStructPtr, Operand faultAddress, Operand isWrite, int rangeStructSize, ulong pageSize)
{
- _handlerConfig = Marshal.AllocHGlobal(Unsafe.SizeOf());
- ref SignalHandlerConfig config = ref GetConfigRef();
+ ulong pageMask = pageSize - 1;
- config = new SignalHandlerConfig();
- }
-
- public static void Initialize(IJitMemoryAllocator allocator)
- {
- JitCache.Initialize(allocator);
- }
-
- public static void InitializeSignalHandler(ulong pageSize, Func customSignalHandlerFactory = null)
- {
- if (_initialized)
- {
- return;
- }
-
- lock (_lock)
- {
- if (_initialized)
- {
- return;
- }
-
- _pageSize = pageSize;
- _pageMask = pageSize - 1;
-
- ref SignalHandlerConfig config = ref GetConfigRef();
-
- if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS())
- {
- _signalHandlerPtr = Marshal.GetFunctionPointerForDelegate(GenerateUnixSignalHandler(_handlerConfig));
-
- if (customSignalHandlerFactory != null)
- {
- _signalHandlerPtr = customSignalHandlerFactory(UnixSignalHandlerRegistration.GetSegfaultExceptionHandler().sa_handler, _signalHandlerPtr);
- }
-
- var old = UnixSignalHandlerRegistration.RegisterExceptionHandler(_signalHandlerPtr);
-
- config.UnixOldSigaction = (nuint)(ulong)old.sa_handler;
- config.UnixOldSigaction3Arg = old.sa_flags & 4;
- }
- else
- {
- config.StructAddressOffset = 40; // ExceptionInformation1
- config.StructWriteOffset = 32; // ExceptionInformation0
-
- _signalHandlerPtr = Marshal.GetFunctionPointerForDelegate(GenerateWindowsSignalHandler(_handlerConfig));
-
- if (customSignalHandlerFactory != null)
- {
- _signalHandlerPtr = customSignalHandlerFactory(IntPtr.Zero, _signalHandlerPtr);
- }
-
- _signalHandlerHandle = WindowsSignalHandlerRegistration.RegisterExceptionHandler(_signalHandlerPtr);
- }
-
- _initialized = true;
- }
- }
-
- private static unsafe ref SignalHandlerConfig GetConfigRef()
- {
- return ref Unsafe.AsRef((void*)_handlerConfig);
- }
-
- public static unsafe bool AddTrackedRegion(nuint address, nuint endAddress, IntPtr action)
- {
- var ranges = &((SignalHandlerConfig*)_handlerConfig)->Range0;
-
- for (int i = 0; i < MaxTrackedRanges; i++)
- {
- if (ranges[i].IsActive == 0)
- {
- ranges[i].RangeAddress = address;
- ranges[i].RangeEndAddress = endAddress;
- ranges[i].ActionPointer = action;
- ranges[i].IsActive = 1;
-
- return true;
- }
- }
-
- return false;
- }
-
- public static unsafe bool RemoveTrackedRegion(nuint address)
- {
- var ranges = &((SignalHandlerConfig*)_handlerConfig)->Range0;
-
- for (int i = 0; i < MaxTrackedRanges; i++)
- {
- if (ranges[i].IsActive == 1 && ranges[i].RangeAddress == address)
- {
- ranges[i].IsActive = 0;
-
- return true;
- }
- }
-
- return false;
- }
-
- private static Operand EmitGenericRegionCheck(EmitterContext context, IntPtr signalStructPtr, Operand faultAddress, Operand isWrite)
- {
Operand inRegionLocal = context.AllocateLocal(OperandType.I32);
context.Copy(inRegionLocal, Const(0));
@@ -196,7 +32,7 @@ namespace ARMeilleure.Signal
for (int i = 0; i < MaxTrackedRanges; i++)
{
- ulong rangeBaseOffset = (ulong)(RangeOffset + i * Unsafe.SizeOf());
+ ulong rangeBaseOffset = (ulong)(RangeOffset + i * rangeStructSize);
Operand nextLabel = Label();
@@ -210,13 +46,12 @@ namespace ARMeilleure.Signal
// Is the fault address within this tracked region?
Operand inRange = context.BitwiseAnd(
context.ICompare(faultAddress, rangeAddress, Comparison.GreaterOrEqualUI),
- context.ICompare(faultAddress, rangeEndAddress, Comparison.LessUI)
- );
+ context.ICompare(faultAddress, rangeEndAddress, Comparison.LessUI));
// Only call tracking if in range.
context.BranchIfFalse(nextLabel, inRange, BasicBlockFrequency.Cold);
- Operand offset = context.BitwiseAnd(context.Subtract(faultAddress, rangeAddress), Const(~_pageMask));
+ Operand offset = context.BitwiseAnd(context.Subtract(faultAddress, rangeAddress), Const(~pageMask));
// Call the tracking action, with the pointer's relative offset to the base address.
Operand trackingActionPtr = context.Load(OperandType.I64, Const((ulong)signalStructPtr + rangeBaseOffset + 20));
@@ -227,7 +62,7 @@ namespace ARMeilleure.Signal
// Tracking action should be non-null to call it, otherwise assume false return.
context.BranchIfFalse(skipActionLabel, trackingActionPtr);
- Operand result = context.Call(trackingActionPtr, OperandType.I32, offset, Const(_pageSize), isWrite);
+ Operand result = context.Call(trackingActionPtr, OperandType.I32, offset, Const(pageSize), isWrite);
context.Copy(inRegionLocal, result);
context.MarkLabel(skipActionLabel);
@@ -269,8 +104,7 @@ namespace ARMeilleure.Signal
Operand esr = context.Load(OperandType.I64, context.Add(ctxPtr, Const(EsrOffset)));
return context.BitwiseAnd(esr, Const(0x40ul));
}
-
- if (RuntimeInformation.ProcessArchitecture == Architecture.X64)
+ else if (RuntimeInformation.ProcessArchitecture == Architecture.X64)
{
const ulong ErrOffset = 4; // __es.__err
Operand err = context.Load(OperandType.I64, context.Add(ctxPtr, Const(ErrOffset)));
@@ -310,8 +144,7 @@ namespace ARMeilleure.Signal
Operand esr = context.Load(OperandType.I64, context.Add(auxPtr, Const(8ul)));
return context.BitwiseAnd(esr, Const(0x40ul));
}
-
- if (RuntimeInformation.ProcessArchitecture == Architecture.X64)
+ else if (RuntimeInformation.ProcessArchitecture == Architecture.X64)
{
const int ErrOffset = 192; // uc_mcontext.gregs[REG_ERR]
Operand err = context.Load(OperandType.I64, context.Add(ucontextPtr, Const(ErrOffset)));
@@ -322,7 +155,7 @@ namespace ARMeilleure.Signal
throw new PlatformNotSupportedException();
}
- private static UnixExceptionHandler GenerateUnixSignalHandler(IntPtr signalStructPtr)
+ public static byte[] GenerateUnixSignalHandler(IntPtr signalStructPtr, int rangeStructSize, ulong pageSize)
{
EmitterContext context = new();
@@ -335,7 +168,7 @@ namespace ARMeilleure.Signal
Operand isWrite = context.ICompareNotEqual(writeFlag, Const(0L)); // Normalize to 0/1.
- Operand isInRegion = EmitGenericRegionCheck(context, signalStructPtr, faultAddress, isWrite);
+ Operand isInRegion = EmitGenericRegionCheck(context, signalStructPtr, faultAddress, isWrite, rangeStructSize, pageSize);
Operand endLabel = Label();
@@ -367,10 +200,10 @@ namespace ARMeilleure.Signal
OperandType[] argTypes = new OperandType[] { OperandType.I32, OperandType.I64, OperandType.I64 };
- return Compiler.Compile(cfg, argTypes, OperandType.None, CompilerOptions.HighCq, RuntimeInformation.ProcessArchitecture).Map();
+ return Compiler.Compile(cfg, argTypes, OperandType.None, CompilerOptions.HighCq, RuntimeInformation.ProcessArchitecture).Code;
}
- private static VectoredExceptionHandler GenerateWindowsSignalHandler(IntPtr signalStructPtr)
+ public static byte[] GenerateWindowsSignalHandler(IntPtr signalStructPtr, int rangeStructSize, ulong pageSize)
{
EmitterContext context = new();
@@ -399,7 +232,7 @@ namespace ARMeilleure.Signal
Operand isWrite = context.ICompareNotEqual(writeFlag, Const(0L)); // Normalize to 0/1.
- Operand isInRegion = EmitGenericRegionCheck(context, signalStructPtr, faultAddress, isWrite);
+ Operand isInRegion = EmitGenericRegionCheck(context, signalStructPtr, faultAddress, isWrite, rangeStructSize, pageSize);
Operand endLabel = Label();
@@ -421,7 +254,7 @@ namespace ARMeilleure.Signal
OperandType[] argTypes = new OperandType[] { OperandType.I64 };
- return Compiler.Compile(cfg, argTypes, OperandType.I32, CompilerOptions.HighCq, RuntimeInformation.ProcessArchitecture).Map();
+ return Compiler.Compile(cfg, argTypes, OperandType.I32, CompilerOptions.HighCq, RuntimeInformation.ProcessArchitecture).Code;
}
}
}
diff --git a/src/ARMeilleure/Signal/TestMethods.cs b/src/ARMeilleure/Signal/TestMethods.cs
index ec228c850..0a8b3f5ff 100644
--- a/src/ARMeilleure/Signal/TestMethods.cs
+++ b/src/ARMeilleure/Signal/TestMethods.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.IntermediateRepresentation;
+using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
using System;
using System.Runtime.InteropServices;
diff --git a/src/ARMeilleure/Signal/WindowsPartialUnmapHandler.cs b/src/ARMeilleure/Signal/WindowsPartialUnmapHandler.cs
index 4da1b32dc..3bf6a4498 100644
--- a/src/ARMeilleure/Signal/WindowsPartialUnmapHandler.cs
+++ b/src/ARMeilleure/Signal/WindowsPartialUnmapHandler.cs
@@ -1,8 +1,8 @@
-using ARMeilleure.IntermediateRepresentation;
+using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
using Ryujinx.Common.Memory.PartialUnmaps;
using System;
-
+using System.Runtime.InteropServices;
using static ARMeilleure.IntermediateRepresentation.Operand.Factory;
namespace ARMeilleure.Signal
@@ -10,8 +10,28 @@ namespace ARMeilleure.Signal
///
/// Methods to handle signals caused by partial unmaps. See the structs for C# implementations of the methods.
///
- internal static class WindowsPartialUnmapHandler
+ internal static partial class WindowsPartialUnmapHandler
{
+ [LibraryImport("kernel32.dll", SetLastError = true, EntryPoint = "LoadLibraryA")]
+ private static partial IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)] string lpFileName);
+
+ [LibraryImport("kernel32.dll", SetLastError = true)]
+ private static partial IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procName);
+
+ private static IntPtr _getCurrentThreadIdPtr;
+
+ public static IntPtr GetCurrentThreadIdFunc()
+ {
+ if (_getCurrentThreadIdPtr == IntPtr.Zero)
+ {
+ IntPtr handle = LoadLibrary("kernel32.dll");
+
+ _getCurrentThreadIdPtr = GetProcAddress(handle, "GetCurrentThreadId");
+ }
+
+ return _getCurrentThreadIdPtr;
+ }
+
public static Operand EmitRetryFromAccessViolation(EmitterContext context)
{
IntPtr partialRemapStatePtr = PartialUnmapState.GlobalState;
@@ -20,7 +40,7 @@ namespace ARMeilleure.Signal
// Get the lock first.
EmitNativeReaderLockAcquire(context, IntPtr.Add(partialRemapStatePtr, PartialUnmapState.PartialUnmapLockOffset));
- IntPtr getCurrentThreadId = WindowsSignalHandlerRegistration.GetCurrentThreadIdFunc();
+ IntPtr getCurrentThreadId = GetCurrentThreadIdFunc();
Operand threadId = context.Call(Const((ulong)getCurrentThreadId), OperandType.I32);
Operand threadIndex = EmitThreadLocalMapIntGetOrReserve(context, localCountsPtr, threadId, Const(0));
@@ -137,17 +157,6 @@ namespace ARMeilleure.Signal
return context.Add(structsPtr, context.SignExtend32(OperandType.I64, offset));
}
-#pragma warning disable IDE0051 // Remove unused private member
- private static void EmitThreadLocalMapIntRelease(EmitterContext context, IntPtr threadLocalMapPtr, Operand threadId, Operand index)
- {
- Operand offset = context.Multiply(index, Const(sizeof(int)));
- Operand idsPtr = Const((ulong)IntPtr.Add(threadLocalMapPtr, ThreadLocalMap.ThreadIdsOffset));
- Operand idPtr = context.Add(idsPtr, context.SignExtend32(OperandType.I64, offset));
-
- context.CompareAndSwap(idPtr, threadId, Const(0));
- }
-#pragma warning restore IDE0051
-
private static void EmitAtomicAddI32(EmitterContext context, Operand ptr, Operand additive)
{
Operand loop = Label();
diff --git a/src/ARMeilleure/Signal/WindowsSignalHandlerRegistration.cs b/src/ARMeilleure/Signal/WindowsSignalHandlerRegistration.cs
deleted file mode 100644
index 3219e015d..000000000
--- a/src/ARMeilleure/Signal/WindowsSignalHandlerRegistration.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-
-namespace ARMeilleure.Signal
-{
- unsafe partial class WindowsSignalHandlerRegistration
- {
- [LibraryImport("kernel32.dll")]
- private static partial IntPtr AddVectoredExceptionHandler(uint first, IntPtr handler);
-
- [LibraryImport("kernel32.dll")]
- private static partial ulong RemoveVectoredExceptionHandler(IntPtr handle);
-
- [LibraryImport("kernel32.dll", SetLastError = true, EntryPoint = "LoadLibraryA")]
- private static partial IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)] string lpFileName);
-
- [LibraryImport("kernel32.dll", SetLastError = true)]
- private static partial IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procName);
-
- private static IntPtr _getCurrentThreadIdPtr;
-
- public static IntPtr RegisterExceptionHandler(IntPtr action)
- {
- return AddVectoredExceptionHandler(1, action);
- }
-
- public static bool RemoveExceptionHandler(IntPtr handle)
- {
- return RemoveVectoredExceptionHandler(handle) != 0;
- }
-
- public static IntPtr GetCurrentThreadIdFunc()
- {
- if (_getCurrentThreadIdPtr == IntPtr.Zero)
- {
- IntPtr handle = LoadLibrary("kernel32.dll");
-
- _getCurrentThreadIdPtr = GetProcAddress(handle, "GetCurrentThreadId");
- }
-
- return _getCurrentThreadIdPtr;
- }
- }
-}
diff --git a/src/ARMeilleure/State/FPState.cs b/src/ARMeilleure/State/FPState.cs
index 027272eee..e76f48240 100644
--- a/src/ARMeilleure/State/FPState.cs
+++ b/src/ARMeilleure/State/FPState.cs
@@ -1,4 +1,4 @@
-namespace ARMeilleure.State
+namespace ARMeilleure.State
{
public enum FPState
{
diff --git a/src/ARMeilleure/Translation/Cache/CacheMemoryAllocator.cs b/src/ARMeilleure/Translation/Cache/CacheMemoryAllocator.cs
index dd67e4201..f36bf7a3d 100644
--- a/src/ARMeilleure/Translation/Cache/CacheMemoryAllocator.cs
+++ b/src/ARMeilleure/Translation/Cache/CacheMemoryAllocator.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
diff --git a/src/ARMeilleure/Translation/DispatcherFunction.cs b/src/ARMeilleure/Translation/DispatcherFunction.cs
index 7d5a3388e..649fa0f50 100644
--- a/src/ARMeilleure/Translation/DispatcherFunction.cs
+++ b/src/ARMeilleure/Translation/DispatcherFunction.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace ARMeilleure.Translation
{
diff --git a/src/ARMeilleure/Translation/Translator.cs b/src/ARMeilleure/Translation/Translator.cs
index dc18038ba..48c1a575c 100644
--- a/src/ARMeilleure/Translation/Translator.cs
+++ b/src/ARMeilleure/Translation/Translator.cs
@@ -57,9 +57,6 @@ namespace ARMeilleure.Translation
private Thread[] _backgroundTranslationThreads;
private volatile int _threadCount;
- // FIXME: Remove this once the init logic of the emulator will be redone.
- public static readonly ManualResetEvent IsReadyForTranslation = new(false);
-
public Translator(IJitMemoryAllocator allocator, IMemoryManager memory, bool for64Bits)
{
_allocator = allocator;
@@ -79,11 +76,6 @@ namespace ARMeilleure.Translation
Stubs = new TranslatorStubs(this);
FunctionTable.Fill = (ulong)Stubs.SlowDispatchStub;
-
- if (memory.Type.IsHostMapped())
- {
- NativeSignalHandler.InitializeSignalHandler(allocator.GetPageSize());
- }
}
public IPtcLoadState LoadDiskCache(string titleIdText, string displayVersion, bool enabled)
@@ -105,8 +97,6 @@ namespace ARMeilleure.Translation
{
if (Interlocked.Increment(ref _threadCount) == 1)
{
- IsReadyForTranslation.WaitOne();
-
if (_ptc.State == PtcState.Enabled)
{
Debug.Assert(Functions.Count == 0);
diff --git a/src/ARMeilleure/Translation/TranslatorQueue.cs b/src/ARMeilleure/Translation/TranslatorQueue.cs
index fc0aa64f2..cee2f9080 100644
--- a/src/ARMeilleure/Translation/TranslatorQueue.cs
+++ b/src/ARMeilleure/Translation/TranslatorQueue.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Diagnostics;
+using ARMeilleure.Diagnostics;
using ARMeilleure.State;
using System;
using System.Collections.Generic;
diff --git a/src/ARMeilleure/Translation/TranslatorStubs.cs b/src/ARMeilleure/Translation/TranslatorStubs.cs
index eceb1b742..bbe48c165 100644
--- a/src/ARMeilleure/Translation/TranslatorStubs.cs
+++ b/src/ARMeilleure/Translation/TranslatorStubs.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Instructions;
+using ARMeilleure.Instructions;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.State;
using ARMeilleure.Translation.Cache;
diff --git a/src/ARMeilleure/Translation/TranslatorTestMethods.cs b/src/ARMeilleure/Translation/TranslatorTestMethods.cs
index 35cd8dc56..8cc7a3cf8 100644
--- a/src/ARMeilleure/Translation/TranslatorTestMethods.cs
+++ b/src/ARMeilleure/Translation/TranslatorTestMethods.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.CodeGen.X86;
+using ARMeilleure.CodeGen.X86;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.State;
using System;
diff --git a/src/Ryujinx.Audio.Backends.OpenAL/OpenALAudioBuffer.cs b/src/Ryujinx.Audio.Backends.OpenAL/OpenALAudioBuffer.cs
index 050b52a9f..bd7a9c25c 100644
--- a/src/Ryujinx.Audio.Backends.OpenAL/OpenALAudioBuffer.cs
+++ b/src/Ryujinx.Audio.Backends.OpenAL/OpenALAudioBuffer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Audio.Backends.OpenAL
+namespace Ryujinx.Audio.Backends.OpenAL
{
class OpenALAudioBuffer
{
diff --git a/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs b/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs
index 86a2efa40..744a4bc56 100644
--- a/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs
+++ b/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs
@@ -1,4 +1,4 @@
-using OpenTK.Audio.OpenAL;
+using OpenTK.Audio.OpenAL;
using Ryujinx.Audio.Common;
using Ryujinx.Audio.Integration;
using Ryujinx.Memory;
diff --git a/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceSession.cs b/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceSession.cs
index ee177c311..a52821616 100644
--- a/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceSession.cs
+++ b/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceSession.cs
@@ -1,4 +1,4 @@
-using OpenTK.Audio.OpenAL;
+using OpenTK.Audio.OpenAL;
using Ryujinx.Audio.Backends.Common;
using Ryujinx.Audio.Common;
using Ryujinx.Memory;
diff --git a/src/Ryujinx.Audio.Backends.SDL2/SDL2AudioBuffer.cs b/src/Ryujinx.Audio.Backends.SDL2/SDL2AudioBuffer.cs
index 71ef414a9..a390c5467 100644
--- a/src/Ryujinx.Audio.Backends.SDL2/SDL2AudioBuffer.cs
+++ b/src/Ryujinx.Audio.Backends.SDL2/SDL2AudioBuffer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Audio.Backends.SDL2
+namespace Ryujinx.Audio.Backends.SDL2
{
class SDL2AudioBuffer
{
diff --git a/src/Ryujinx.Audio.Backends.SDL2/SDL2HardwareDeviceDriver.cs b/src/Ryujinx.Audio.Backends.SDL2/SDL2HardwareDeviceDriver.cs
index f1de42b01..b83e63dbc 100644
--- a/src/Ryujinx.Audio.Backends.SDL2/SDL2HardwareDeviceDriver.cs
+++ b/src/Ryujinx.Audio.Backends.SDL2/SDL2HardwareDeviceDriver.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.Audio.Integration;
using Ryujinx.Common.Logging;
using Ryujinx.Memory;
diff --git a/src/Ryujinx.Audio.Backends.SDL2/SDL2HardwareDeviceSession.cs b/src/Ryujinx.Audio.Backends.SDL2/SDL2HardwareDeviceSession.cs
index 0bd73f3c7..7a683f4ed 100644
--- a/src/Ryujinx.Audio.Backends.SDL2/SDL2HardwareDeviceSession.cs
+++ b/src/Ryujinx.Audio.Backends.SDL2/SDL2HardwareDeviceSession.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Backends.Common;
+using Ryujinx.Audio.Backends.Common;
using Ryujinx.Audio.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Memory;
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIo.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIo.cs
index 31af3e9d3..7fdb1fc04 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIo.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoBackend.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoBackend.cs
index 7094b7d5b..d91eca488 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoBackend.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoBackend.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Audio.Backends.SoundIo.Native
+namespace Ryujinx.Audio.Backends.SoundIo.Native
{
public enum SoundIoBackend
{
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoChannelId.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoChannelId.cs
index 70346e0bf..c1a14e1ea 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoChannelId.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoChannelId.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Audio.Backends.SoundIo.Native
+namespace Ryujinx.Audio.Backends.SoundIo.Native
{
public enum SoundIoChannelId
{
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoContext.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoContext.cs
index afa86befa..f2e91fcd7 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoContext.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoContext.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Threading;
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoDeviceAim.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoDeviceAim.cs
index a1943810d..58bdce394 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoDeviceAim.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoDeviceAim.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Audio.Backends.SoundIo.Native
+namespace Ryujinx.Audio.Backends.SoundIo.Native
{
public enum SoundIoDeviceAim
{
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoDeviceContext.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoDeviceContext.cs
index 42bcc6e3b..7923e9b17 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoDeviceContext.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoDeviceContext.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using static Ryujinx.Audio.Backends.SoundIo.Native.SoundIo;
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoError.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoError.cs
index 9e33fa194..64329450c 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoError.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoError.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Audio.Backends.SoundIo.Native
+namespace Ryujinx.Audio.Backends.SoundIo.Native
{
public enum SoundIoError
{
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoException.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoException.cs
index a033356e8..1a33472da 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoException.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoException.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
using static Ryujinx.Audio.Backends.SoundIo.Native.SoundIo;
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoFormat.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoFormat.cs
index 0eee97804..7e8c22a9f 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoFormat.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoFormat.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Audio.Backends.SoundIo.Native
+namespace Ryujinx.Audio.Backends.SoundIo.Native
{
public enum SoundIoFormat
{
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoOutStreamContext.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoOutStreamContext.cs
index 2e432b311..4148ea0dd 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoOutStreamContext.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoOutStreamContext.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using static Ryujinx.Audio.Backends.SoundIo.Native.SoundIo;
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/SoundIoAudioBuffer.cs b/src/Ryujinx.Audio.Backends.SoundIo/SoundIoAudioBuffer.cs
index 7f32b9533..e1a62de75 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/SoundIoAudioBuffer.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/SoundIoAudioBuffer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Audio.Backends.SoundIo
+namespace Ryujinx.Audio.Backends.SoundIo
{
class SoundIoAudioBuffer
{
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceDriver.cs b/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceDriver.cs
index 9dac0992c..ff0392882 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceDriver.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceDriver.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Backends.SoundIo.Native;
+using Ryujinx.Audio.Backends.SoundIo.Native;
using Ryujinx.Audio.Common;
using Ryujinx.Audio.Integration;
using Ryujinx.Memory;
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceSession.cs b/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceSession.cs
index 0aa13e7ed..123cfd27a 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceSession.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceSession.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Backends.Common;
+using Ryujinx.Audio.Backends.Common;
using Ryujinx.Audio.Backends.SoundIo.Native;
using Ryujinx.Audio.Common;
using Ryujinx.Memory;
diff --git a/src/Ryujinx.Audio/Renderer/Dsp/Command/CompressorCommand.cs b/src/Ryujinx.Audio/Renderer/Dsp/Command/CompressorCommand.cs
index 1d5917bbe..09f415d20 100644
--- a/src/Ryujinx.Audio/Renderer/Dsp/Command/CompressorCommand.cs
+++ b/src/Ryujinx.Audio/Renderer/Dsp/Command/CompressorCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Renderer.Dsp.Effect;
+using Ryujinx.Audio.Renderer.Dsp.Effect;
using Ryujinx.Audio.Renderer.Dsp.State;
using Ryujinx.Audio.Renderer.Parameter.Effect;
using Ryujinx.Audio.Renderer.Server.Effect;
diff --git a/src/Ryujinx.Audio/Renderer/Dsp/Effect/ExponentialMovingAverage.cs b/src/Ryujinx.Audio/Renderer/Dsp/Effect/ExponentialMovingAverage.cs
index 253400a5a..d44aec0ae 100644
--- a/src/Ryujinx.Audio/Renderer/Dsp/Effect/ExponentialMovingAverage.cs
+++ b/src/Ryujinx.Audio/Renderer/Dsp/Effect/ExponentialMovingAverage.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Audio.Renderer.Dsp.Effect
+namespace Ryujinx.Audio.Renderer.Dsp.Effect
{
public struct ExponentialMovingAverage
{
diff --git a/src/Ryujinx.Audio/Renderer/Dsp/State/CompressorState.cs b/src/Ryujinx.Audio/Renderer/Dsp/State/CompressorState.cs
index 9ee573205..5ca8cd20a 100644
--- a/src/Ryujinx.Audio/Renderer/Dsp/State/CompressorState.cs
+++ b/src/Ryujinx.Audio/Renderer/Dsp/State/CompressorState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Renderer.Dsp.Effect;
+using Ryujinx.Audio.Renderer.Dsp.Effect;
using Ryujinx.Audio.Renderer.Parameter.Effect;
namespace Ryujinx.Audio.Renderer.Dsp.State
diff --git a/src/Ryujinx.Audio/Renderer/Parameter/Effect/CompressorParameter.cs b/src/Ryujinx.Audio/Renderer/Parameter/Effect/CompressorParameter.cs
index 1a936b0df..b403f1370 100644
--- a/src/Ryujinx.Audio/Renderer/Parameter/Effect/CompressorParameter.cs
+++ b/src/Ryujinx.Audio/Renderer/Parameter/Effect/CompressorParameter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Renderer.Server.Effect;
+using Ryujinx.Audio.Renderer.Server.Effect;
using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Audio/Renderer/Server/Effect/CompressorEffect.cs b/src/Ryujinx.Audio/Renderer/Server/Effect/CompressorEffect.cs
index 32162abcd..826c32cb0 100644
--- a/src/Ryujinx.Audio/Renderer/Server/Effect/CompressorEffect.cs
+++ b/src/Ryujinx.Audio/Renderer/Server/Effect/CompressorEffect.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Renderer.Common;
+using Ryujinx.Audio.Renderer.Common;
using Ryujinx.Audio.Renderer.Dsp.State;
using Ryujinx.Audio.Renderer.Parameter;
using Ryujinx.Audio.Renderer.Parameter.Effect;
diff --git a/src/Ryujinx.Ava/AppHost.cs b/src/Ryujinx.Ava/AppHost.cs
index 4d751e2a9..e434deb0a 100644
--- a/src/Ryujinx.Ava/AppHost.cs
+++ b/src/Ryujinx.Ava/AppHost.cs
@@ -1,4 +1,3 @@
-using ARMeilleure.Translation;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
@@ -346,16 +345,9 @@ namespace Ryujinx.Ava
_viewModel.IsGameRunning = true;
- var activeProcess = Device.Processes.ActiveApplication;
-
- string titleNameSection = string.IsNullOrWhiteSpace(activeProcess.Name) ? string.Empty : $" {activeProcess.Name}";
- string titleVersionSection = string.IsNullOrWhiteSpace(activeProcess.DisplayVersion) ? string.Empty : $" v{activeProcess.DisplayVersion}";
- string titleIdSection = $" ({activeProcess.ProgramIdText.ToUpper()})";
- string titleArchSection = activeProcess.Is64Bit ? " (64-bit)" : " (32-bit)";
-
Dispatcher.UIThread.InvokeAsync(() =>
{
- _viewModel.Title = $"Ryujinx {Program.Version} -{titleNameSection}{titleVersionSection}{titleIdSection}{titleArchSection}";
+ _viewModel.Title = TitleHelper.ActiveApplicationTitle(Device.Processes.ActiveApplication, Program.Version);
});
_viewModel.SetUiProgressHandlers(Device);
@@ -727,6 +719,8 @@ namespace Ryujinx.Ava
Device?.System.TogglePauseEmulation(false);
_viewModel.IsPaused = false;
+ _viewModel.Title = TitleHelper.ActiveApplicationTitle(Device?.Processes.ActiveApplication, Program.Version);
+ Logger.Info?.Print(LogClass.Emulation, "Emulation was resumed");
}
internal void Pause()
@@ -734,6 +728,8 @@ namespace Ryujinx.Ava
Device?.System.TogglePauseEmulation(true);
_viewModel.IsPaused = true;
+ _viewModel.Title = TitleHelper.ActiveApplicationTitle(Device?.Processes.ActiveApplication, Program.Version, LocaleManager.Instance[LocaleKeys.Paused]);
+ Logger.Info?.Print(LogClass.Emulation, "Emulation was paused");
}
private void InitializeSwitchInstance()
@@ -919,7 +915,6 @@ namespace Ryujinx.Ava
{
Device.Gpu.SetGpuThread();
Device.Gpu.InitializeShaderCache(_gpuCancellationTokenSource.Token);
- Translator.IsReadyForTranslation.Set();
_renderer.Window.ChangeVSyncMode(Device.EnableDeviceVsync);
@@ -1091,10 +1086,11 @@ namespace Ryujinx.Ava
case KeyboardHotkeyState.ToggleMute:
if (Device.IsAudioMuted())
{
- Device.SetVolume(ConfigurationState.Instance.System.AudioVolume);
+ Device.SetVolume(_viewModel.VolumeBeforeMute);
}
else
{
+ _viewModel.VolumeBeforeMute = Device.GetVolume();
Device.SetVolume(0);
}
diff --git a/src/Ryujinx.Ava/Assets/Icons/Controller_JoyConLeft.svg b/src/Ryujinx.Ava/Assets/Icons/Controller_JoyConLeft.svg
new file mode 100644
index 000000000..cf78cf120
--- /dev/null
+++ b/src/Ryujinx.Ava/Assets/Icons/Controller_JoyConLeft.svg
@@ -0,0 +1,155 @@
+
+
+
diff --git a/src/Ryujinx.Ava/Assets/Icons/Controller_JoyConPair.svg b/src/Ryujinx.Ava/Assets/Icons/Controller_JoyConPair.svg
new file mode 100644
index 000000000..8097762df
--- /dev/null
+++ b/src/Ryujinx.Ava/Assets/Icons/Controller_JoyConPair.svg
@@ -0,0 +1,341 @@
+
+
+
diff --git a/src/Ryujinx.Ava/Assets/Icons/Controller_JoyConRight.svg b/src/Ryujinx.Ava/Assets/Icons/Controller_JoyConRight.svg
new file mode 100644
index 000000000..adb6e1e18
--- /dev/null
+++ b/src/Ryujinx.Ava/Assets/Icons/Controller_JoyConRight.svg
@@ -0,0 +1,185 @@
+
+
+
diff --git a/src/Ryujinx.Ava/Assets/Icons/Controller_ProCon.svg b/src/Ryujinx.Ava/Assets/Icons/Controller_ProCon.svg
new file mode 100644
index 000000000..53eef82c2
--- /dev/null
+++ b/src/Ryujinx.Ava/Assets/Icons/Controller_ProCon.svg
@@ -0,0 +1,84 @@
+
+
\ No newline at end of file
diff --git a/src/Ryujinx.Ava/Assets/Locales/en_US.json b/src/Ryujinx.Ava/Assets/Locales/en_US.json
index bc2bbfe82..72b5e8e3c 100644
--- a/src/Ryujinx.Ava/Assets/Locales/en_US.json
+++ b/src/Ryujinx.Ava/Assets/Locales/en_US.json
@@ -549,9 +549,10 @@
"SoftwareKeyboardModeNumeric": "Must be 0-9 or '.' only",
"SoftwareKeyboardModeAlphabet": "Must be non CJK-characters only",
"SoftwareKeyboardModeASCII": "Must be ASCII text only",
- "DialogControllerAppletMessagePlayerRange": "Application requests {0} player(s) with:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Please open Settings and reconfigure Input now or press Close.",
- "DialogControllerAppletMessage": "Application requests exactly {0} player(s) with:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Please open Settings and reconfigure Input now or press Close.",
- "DialogControllerAppletDockModeSet": "Docked mode set. Handheld is also invalid.\n\n",
+ "ControllerAppletControllers": "Supported Controllers:",
+ "ControllerAppletPlayers": "Players:",
+ "ControllerAppletDescription": "Your current configuration is invalid. Open settings and reconfigure your inputs.",
+ "ControllerAppletDocked": "Docked mode set. Handheld control should be disabled.",
"UpdaterRenaming": "Renaming Old Files...",
"UpdaterRenameFailed": "Updater was unable to rename file: {0}",
"UpdaterAddingFiles": "Adding New Files...",
@@ -600,6 +601,7 @@
"Cancel": "Cancel",
"Save": "Save",
"Discard": "Discard",
+ "Paused": "Paused",
"UserProfilesSetProfileImage": "Set Profile Image",
"UserProfileEmptyNameError": "Name is required",
"UserProfileNoImageError": "Profile image must be set",
diff --git a/src/Ryujinx.Ava/Common/KeyboardHotkeyState.cs b/src/Ryujinx.Ava/Common/KeyboardHotkeyState.cs
index 1d7f0b9ce..b24016404 100644
--- a/src/Ryujinx.Ava/Common/KeyboardHotkeyState.cs
+++ b/src/Ryujinx.Ava/Common/KeyboardHotkeyState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ava.Common
+namespace Ryujinx.Ava.Common
{
public enum KeyboardHotkeyState
{
diff --git a/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs b/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs
index 8d345ae08..40661bf3a 100644
--- a/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs
+++ b/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs
@@ -1,4 +1,4 @@
-using Avalonia.Data.Core;
+using Avalonia.Data.Core;
using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.MarkupExtensions;
using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings;
diff --git a/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs b/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs
index 583619fe5..0e613838d 100644
--- a/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs
+++ b/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Ava.UI.ViewModels;
+using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Common;
using Ryujinx.Common.Utilities;
using Ryujinx.Ui.Common.Configuration;
@@ -16,8 +16,10 @@ namespace Ryujinx.Ava.Common.Locale
private readonly Dictionary _localeStrings;
private Dictionary _localeDefaultStrings;
private readonly ConcurrentDictionary _dynamicValues;
+ private string _localeLanguageCode;
public static LocaleManager Instance { get; } = new();
+ public event Action LocaleChanged;
public LocaleManager()
{
@@ -104,6 +106,15 @@ namespace Ryujinx.Ava.Common.Locale
}
}
+ public bool IsRTL()
+ {
+ return _localeLanguageCode switch
+ {
+ "he_IL" => true,
+ _ => false
+ };
+ }
+
public string UpdateAndGetDynamicValue(LocaleKeys key, params object[] values)
{
_dynamicValues[key] = values;
@@ -124,6 +135,9 @@ namespace Ryujinx.Ava.Common.Locale
{
this[item.Key] = item.Value;
}
+
+ _localeLanguageCode = languageCode;
+ LocaleChanged?.Invoke();
}
private static Dictionary LoadJsonLanguage(string languageCode = DefaultLanguageCode)
diff --git a/src/Ryujinx.Ava/Input/AvaloniaKeyboard.cs b/src/Ryujinx.Ava/Input/AvaloniaKeyboard.cs
index d07c81340..fbaaaabab 100644
--- a/src/Ryujinx.Ava/Input/AvaloniaKeyboard.cs
+++ b/src/Ryujinx.Ava/Input/AvaloniaKeyboard.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid;
+using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Keyboard;
using Ryujinx.Input;
using System;
diff --git a/src/Ryujinx.Ava/Input/AvaloniaKeyboardDriver.cs b/src/Ryujinx.Ava/Input/AvaloniaKeyboardDriver.cs
index bff24a81e..e9e71b99b 100644
--- a/src/Ryujinx.Ava/Input/AvaloniaKeyboardDriver.cs
+++ b/src/Ryujinx.Ava/Input/AvaloniaKeyboardDriver.cs
@@ -1,4 +1,4 @@
-using Avalonia.Controls;
+using Avalonia.Controls;
using Avalonia.Input;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Input;
diff --git a/src/Ryujinx.Ava/Input/AvaloniaKeyboardMappingHelper.cs b/src/Ryujinx.Ava/Input/AvaloniaKeyboardMappingHelper.cs
index d30a7566a..97ebd721d 100644
--- a/src/Ryujinx.Ava/Input/AvaloniaKeyboardMappingHelper.cs
+++ b/src/Ryujinx.Ava/Input/AvaloniaKeyboardMappingHelper.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Input;
+using Ryujinx.Input;
using System;
using System.Collections.Generic;
using AvaKey = Avalonia.Input.Key;
diff --git a/src/Ryujinx.Ava/Ryujinx.Ava.csproj b/src/Ryujinx.Ava/Ryujinx.Ava.csproj
index 6812e57c4..b6d37a2f1 100644
--- a/src/Ryujinx.Ava/Ryujinx.Ava.csproj
+++ b/src/Ryujinx.Ava/Ryujinx.Ava.csproj
@@ -119,6 +119,7 @@
+
@@ -132,6 +133,10 @@
+
+
+
+
@@ -139,6 +144,7 @@
+
@@ -151,6 +157,10 @@
+
+
+
+
diff --git a/src/Ryujinx.Ava/UI/Applet/AvaHostUiHandler.cs b/src/Ryujinx.Ava/UI/Applet/AvaHostUiHandler.cs
index 9fc7c6b6d..e11939104 100644
--- a/src/Ryujinx.Ava/UI/Applet/AvaHostUiHandler.cs
+++ b/src/Ryujinx.Ava/UI/Applet/AvaHostUiHandler.cs
@@ -29,14 +29,24 @@ namespace Ryujinx.Ava.UI.Applet
public bool DisplayMessageDialog(ControllerAppletUiArgs args)
{
- string message = LocaleManager.Instance.UpdateAndGetDynamicValue(
- args.PlayerCountMin == args.PlayerCountMax ? LocaleKeys.DialogControllerAppletMessage : LocaleKeys.DialogControllerAppletMessagePlayerRange,
- args.PlayerCountMin == args.PlayerCountMax ? args.PlayerCountMin.ToString() : $"{args.PlayerCountMin}-{args.PlayerCountMax}",
- args.SupportedStyles,
- string.Join(", ", args.SupportedPlayers),
- args.IsDocked ? LocaleManager.Instance[LocaleKeys.DialogControllerAppletDockModeSet] : "");
+ ManualResetEvent dialogCloseEvent = new(false);
- return DisplayMessageDialog(LocaleManager.Instance[LocaleKeys.DialogControllerAppletTitle], message);
+ bool okPressed = false;
+
+ Dispatcher.UIThread.InvokeAsync(async () =>
+ {
+ var response = await ControllerAppletDialog.ShowControllerAppletDialog(_parent, args);
+ if (response == UserResult.Ok)
+ {
+ okPressed = true;
+ }
+
+ dialogCloseEvent.Set();
+ });
+
+ dialogCloseEvent.WaitOne();
+
+ return okPressed;
}
public bool DisplayMessageDialog(string title, string message)
@@ -75,6 +85,8 @@ namespace Ryujinx.Ava.UI.Applet
await _parent.SettingsWindow.ShowDialog(window);
+ _parent.SettingsWindow = null;
+
opened = false;
});
diff --git a/src/Ryujinx.Ava/UI/Applet/AvaloniaDynamicTextInputHandler.cs b/src/Ryujinx.Ava/UI/Applet/AvaloniaDynamicTextInputHandler.cs
index 2fa4d54f8..2411659f7 100644
--- a/src/Ryujinx.Ava/UI/Applet/AvaloniaDynamicTextInputHandler.cs
+++ b/src/Ryujinx.Ava/UI/Applet/AvaloniaDynamicTextInputHandler.cs
@@ -1,4 +1,4 @@
-using Avalonia;
+using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Threading;
diff --git a/src/Ryujinx.Ava/UI/Applet/AvaloniaHostUiTheme.cs b/src/Ryujinx.Ava/UI/Applet/AvaloniaHostUiTheme.cs
index 3cf273347..4ee177d72 100644
--- a/src/Ryujinx.Ava/UI/Applet/AvaloniaHostUiTheme.cs
+++ b/src/Ryujinx.Ava/UI/Applet/AvaloniaHostUiTheme.cs
@@ -1,4 +1,4 @@
-using Avalonia.Media;
+using Avalonia.Media;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.HLE.Ui;
using System;
diff --git a/src/Ryujinx.Ava/UI/Applet/ControllerAppletDialog.axaml b/src/Ryujinx.Ava/UI/Applet/ControllerAppletDialog.axaml
new file mode 100644
index 000000000..b2c22f6bb
--- /dev/null
+++ b/src/Ryujinx.Ava/UI/Applet/ControllerAppletDialog.axaml
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ryujinx.Ava/UI/Applet/ControllerAppletDialog.axaml.cs b/src/Ryujinx.Ava/UI/Applet/ControllerAppletDialog.axaml.cs
new file mode 100644
index 000000000..34de5223b
--- /dev/null
+++ b/src/Ryujinx.Ava/UI/Applet/ControllerAppletDialog.axaml.cs
@@ -0,0 +1,139 @@
+using Avalonia.Controls;
+using Avalonia.Styling;
+using Avalonia.Svg.Skia;
+using Avalonia.Threading;
+using FluentAvalonia.UI.Controls;
+using Ryujinx.Ava.Common.Locale;
+using Ryujinx.Ava.UI.Helpers;
+using Ryujinx.Ava.UI.Windows;
+using Ryujinx.Common;
+using Ryujinx.HLE.HOS.Applets;
+using Ryujinx.HLE.HOS.Services.Hid;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace Ryujinx.Ava.UI.Applet
+{
+ internal partial class ControllerAppletDialog : UserControl
+ {
+ private const string ProControllerResource = "Ryujinx.Ava/Assets/Icons/Controller_ProCon.svg";
+ private const string JoyConPairResource = "Ryujinx.Ava/Assets/Icons/Controller_JoyConPair.svg";
+ private const string JoyConLeftResource = "Ryujinx.Ava/Assets/Icons/Controller_JoyConLeft.svg";
+ private const string JoyConRightResource = "Ryujinx.Ava/Assets/Icons/Controller_JoyConRight.svg";
+
+ public static SvgImage ProControllerImage => GetResource(ProControllerResource);
+ public static SvgImage JoyconPairImage => GetResource(JoyConPairResource);
+ public static SvgImage JoyconLeftImage => GetResource(JoyConLeftResource);
+ public static SvgImage JoyconRightImage => GetResource(JoyConRightResource);
+
+ public string PlayerCount { get; set; } = "";
+ public bool SupportsProController { get; set; }
+ public bool SupportsLeftJoycon { get; set; }
+ public bool SupportsRightJoycon { get; set; }
+ public bool SupportsJoyconPair { get; set; }
+ public bool IsDocked { get; set; }
+
+ private readonly MainWindow _mainWindow;
+
+ public ControllerAppletDialog(MainWindow mainWindow, ControllerAppletUiArgs args)
+ {
+ if (args.PlayerCountMin == args.PlayerCountMax)
+ {
+ PlayerCount = args.PlayerCountMin.ToString();
+ }
+ else
+ {
+ PlayerCount = $"{args.PlayerCountMin} - {args.PlayerCountMax}";
+ }
+
+ SupportsProController = (args.SupportedStyles & ControllerType.ProController) != 0;
+ SupportsLeftJoycon = (args.SupportedStyles & ControllerType.JoyconLeft) != 0;
+ SupportsRightJoycon = (args.SupportedStyles & ControllerType.JoyconRight) != 0;
+ SupportsJoyconPair = (args.SupportedStyles & ControllerType.JoyconPair) != 0;
+
+ IsDocked = args.IsDocked;
+
+ _mainWindow = mainWindow;
+
+ DataContext = this;
+
+ InitializeComponent();
+ }
+
+ public ControllerAppletDialog(MainWindow mainWindow)
+ {
+ _mainWindow = mainWindow;
+ DataContext = this;
+
+ InitializeComponent();
+ }
+
+ public static async Task ShowControllerAppletDialog(MainWindow window, ControllerAppletUiArgs args)
+ {
+ ContentDialog contentDialog = new();
+ UserResult result = UserResult.Cancel;
+ ControllerAppletDialog content = new(window, args);
+
+ contentDialog.Title = LocaleManager.Instance[LocaleKeys.DialogControllerAppletTitle];
+ contentDialog.Content = content;
+
+ void Handler(ContentDialog sender, ContentDialogClosedEventArgs eventArgs)
+ {
+ if (eventArgs.Result == ContentDialogResult.Primary)
+ {
+ result = UserResult.Ok;
+ }
+ }
+
+ contentDialog.Closed += Handler;
+
+ Style bottomBorder = new(x => x.OfType().Name("DialogSpace").Child().OfType());
+ bottomBorder.Setters.Add(new Setter(IsVisibleProperty, false));
+
+ contentDialog.Styles.Add(bottomBorder);
+
+ await ContentDialogHelper.ShowAsync(contentDialog);
+
+ return result;
+ }
+
+ private static SvgImage GetResource(string path)
+ {
+ SvgImage image = new();
+
+ if (!string.IsNullOrWhiteSpace(path))
+ {
+ SvgSource source = new();
+
+ source.Load(EmbeddedResources.GetStream(path));
+
+ image.Source = source;
+ }
+
+ return image;
+ }
+
+ public void OpenSettingsWindow()
+ {
+ if (_mainWindow.SettingsWindow == null)
+ {
+ Dispatcher.UIThread.InvokeAsync(async () =>
+ {
+ _mainWindow.SettingsWindow = new SettingsWindow(_mainWindow.VirtualFileSystem, _mainWindow.ContentManager);
+ _mainWindow.SettingsWindow.NavPanel.Content = _mainWindow.SettingsWindow.InputPage;
+ _mainWindow.SettingsWindow.NavPanel.SelectedItem = _mainWindow.SettingsWindow.NavPanel.MenuItems.ElementAt(1);
+
+ await ContentDialogHelper.ShowWindowAsync(_mainWindow.SettingsWindow, _mainWindow);
+ _mainWindow.SettingsWindow = null;
+ this.Close();
+ });
+ }
+ }
+
+ public void Close()
+ {
+ ((ContentDialog)Parent)?.Hide();
+ }
+ }
+}
+
diff --git a/src/Ryujinx.Ava/UI/Controls/ApplicationListView.axaml b/src/Ryujinx.Ava/UI/Controls/ApplicationListView.axaml
index 9004f7518..fecf08883 100644
--- a/src/Ryujinx.Ava/UI/Controls/ApplicationListView.axaml
+++ b/src/Ryujinx.Ava/UI/Controls/ApplicationListView.axaml
@@ -86,17 +86,17 @@
HorizontalAlignment="Stretch"
FontWeight="Bold"
Text="{Binding TitleName}"
- TextAlignment="Left"
+ TextAlignment="Start"
TextWrapping="Wrap" />
@@ -110,12 +110,12 @@
ShowContentDialog(
string title,
@@ -310,16 +311,20 @@ namespace Ryujinx.Ava.UI.Helpers
public static async Task ShowAsync(ContentDialog contentDialog)
{
ContentDialogResult result;
-
- ContentDialogOverlayWindow contentDialogOverlayWindow = null;
+ bool isTopDialog = true;
Window parent = GetMainWindow();
+ if (_contentDialogOverlayWindow != null)
+ {
+ isTopDialog = false;
+ }
+
if (parent is MainWindow window)
{
parent.Activate();
- contentDialogOverlayWindow = new()
+ _contentDialogOverlayWindow = new ContentDialogOverlayWindow
{
Height = parent.Bounds.Height,
Width = parent.Bounds.Width,
@@ -331,14 +336,14 @@ namespace Ryujinx.Ava.UI.Helpers
void OverlayOnPositionChanged(object sender, PixelPointEventArgs e)
{
- contentDialogOverlayWindow.Position = parent.PointToScreen(new Point());
+ _contentDialogOverlayWindow.Position = parent.PointToScreen(new Point());
}
- contentDialogOverlayWindow.ContentDialog = contentDialog;
+ _contentDialogOverlayWindow.ContentDialog = contentDialog;
bool opened = false;
- contentDialogOverlayWindow.Opened += OverlayOnActivated;
+ _contentDialogOverlayWindow.Opened += OverlayOnActivated;
async void OverlayOnActivated(object sender, EventArgs e)
{
@@ -349,12 +354,12 @@ namespace Ryujinx.Ava.UI.Helpers
opened = true;
- contentDialogOverlayWindow.Position = parent.PointToScreen(new Point());
+ _contentDialogOverlayWindow.Position = parent.PointToScreen(new Point());
result = await ShowDialog();
}
- result = await contentDialogOverlayWindow.ShowDialog(parent);
+ result = await _contentDialogOverlayWindow.ShowDialog(parent);
}
else
{
@@ -363,11 +368,11 @@ namespace Ryujinx.Ava.UI.Helpers
async Task ShowDialog()
{
- if (contentDialogOverlayWindow is not null)
+ if (_contentDialogOverlayWindow is not null)
{
- result = await contentDialog.ShowAsync(contentDialogOverlayWindow);
+ result = await contentDialog.ShowAsync(_contentDialogOverlayWindow);
- contentDialogOverlayWindow!.Close();
+ _contentDialogOverlayWindow!.Close();
}
else
{
@@ -379,15 +384,22 @@ namespace Ryujinx.Ava.UI.Helpers
return result;
}
- if (contentDialogOverlayWindow is not null)
+ if (isTopDialog && _contentDialogOverlayWindow is not null)
{
- contentDialogOverlayWindow.Content = null;
- contentDialogOverlayWindow.Close();
+ _contentDialogOverlayWindow.Content = null;
+ _contentDialogOverlayWindow.Close();
}
return result;
}
+ public static Task ShowWindowAsync(Window dialogWindow, Window mainWindow = null)
+ {
+ mainWindow ??= GetMainWindow();
+
+ return dialogWindow.ShowDialog(_contentDialogOverlayWindow ?? mainWindow);
+ }
+
private static Window GetMainWindow()
{
if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime al)
diff --git a/src/Ryujinx.Ava/UI/Helpers/Glyph.cs b/src/Ryujinx.Ava/UI/Helpers/Glyph.cs
index e30de69bb..f257dc02c 100644
--- a/src/Ryujinx.Ava/UI/Helpers/Glyph.cs
+++ b/src/Ryujinx.Ava/UI/Helpers/Glyph.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ava.UI.Helpers
+namespace Ryujinx.Ava.UI.Helpers
{
public enum Glyph
{
diff --git a/src/Ryujinx.Ava/UI/Helpers/LocalizedNeverConverter.cs b/src/Ryujinx.Ava/UI/Helpers/LocalizedNeverConverter.cs
index 737896986..b61a924f4 100644
--- a/src/Ryujinx.Ava/UI/Helpers/LocalizedNeverConverter.cs
+++ b/src/Ryujinx.Ava/UI/Helpers/LocalizedNeverConverter.cs
@@ -1,4 +1,4 @@
-using Avalonia.Data.Converters;
+using Avalonia.Data.Converters;
using Avalonia.Markup.Xaml;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ui.Common.Helper;
diff --git a/src/Ryujinx.Ava/UI/Helpers/MiniCommand.cs b/src/Ryujinx.Ava/UI/Helpers/MiniCommand.cs
index 864f53b8a..7e1bb9a68 100644
--- a/src/Ryujinx.Ava/UI/Helpers/MiniCommand.cs
+++ b/src/Ryujinx.Ava/UI/Helpers/MiniCommand.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading.Tasks;
using System.Windows.Input;
diff --git a/src/Ryujinx.Ava/UI/Helpers/NotificationHelper.cs b/src/Ryujinx.Ava/UI/Helpers/NotificationHelper.cs
index a11fb5267..656a8b52f 100644
--- a/src/Ryujinx.Ava/UI/Helpers/NotificationHelper.cs
+++ b/src/Ryujinx.Ava/UI/Helpers/NotificationHelper.cs
@@ -1,4 +1,4 @@
-using Avalonia;
+using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Notifications;
using Avalonia.Threading;
diff --git a/src/Ryujinx.Ava/UI/Helpers/TimeZoneConverter.cs b/src/Ryujinx.Ava/UI/Helpers/TimeZoneConverter.cs
index 4ec0ff306..876d51f71 100644
--- a/src/Ryujinx.Ava/UI/Helpers/TimeZoneConverter.cs
+++ b/src/Ryujinx.Ava/UI/Helpers/TimeZoneConverter.cs
@@ -1,4 +1,4 @@
-using Avalonia.Data.Converters;
+using Avalonia.Data.Converters;
using System;
using System.Globalization;
using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
diff --git a/src/Ryujinx.Ava/UI/Helpers/UserErrorDialog.cs b/src/Ryujinx.Ava/UI/Helpers/UserErrorDialog.cs
index afd2958c6..fc82bd6b1 100644
--- a/src/Ryujinx.Ava/UI/Helpers/UserErrorDialog.cs
+++ b/src/Ryujinx.Ava/UI/Helpers/UserErrorDialog.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Ava.Common.Locale;
+using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ui.Common;
using Ryujinx.Ui.Common.Helper;
using System.Threading.Tasks;
diff --git a/src/Ryujinx.Ava/UI/Helpers/Win32NativeInterop.cs b/src/Ryujinx.Ava/UI/Helpers/Win32NativeInterop.cs
index 35d16b9e0..4834df802 100644
--- a/src/Ryujinx.Ava/UI/Helpers/Win32NativeInterop.cs
+++ b/src/Ryujinx.Ava/UI/Helpers/Win32NativeInterop.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx.Ava/UI/Models/CheatModel.cs b/src/Ryujinx.Ava/UI/Models/CheatModel.cs
deleted file mode 100644
index 4434c09f4..000000000
--- a/src/Ryujinx.Ava/UI/Models/CheatModel.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using Ryujinx.Ava.UI.ViewModels;
-using System;
-
-namespace Ryujinx.Ava.UI.Models
-{
- public class CheatModel : BaseModel
- {
- private bool _isEnabled;
-
- public event EventHandler EnableToggled;
-
- public CheatModel(string name, string buildId, bool isEnabled)
- {
- Name = name;
- BuildId = buildId;
- IsEnabled = isEnabled;
- }
-
- public bool IsEnabled
- {
- get => _isEnabled;
- set
- {
- _isEnabled = value;
-
- EnableToggled?.Invoke(this, _isEnabled);
-
- OnPropertyChanged();
- }
- }
-
- public string BuildId { get; }
-
- public string BuildIdKey => $"{BuildId}-{Name}";
-
- public string Name { get; }
-
- public string CleanName => Name[1..^7];
- }
-}
diff --git a/src/Ryujinx.Ava/UI/Models/CheatNode.cs b/src/Ryujinx.Ava/UI/Models/CheatNode.cs
new file mode 100644
index 000000000..8e9aee254
--- /dev/null
+++ b/src/Ryujinx.Ava/UI/Models/CheatNode.cs
@@ -0,0 +1,57 @@
+using Ryujinx.Ava.UI.ViewModels;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+using System.Linq;
+
+namespace Ryujinx.Ava.UI.Models
+{
+ public class CheatNode : BaseModel
+ {
+ private bool _isEnabled = false;
+ public ObservableCollection SubNodes { get; } = new();
+ public string CleanName => Name[1..^7];
+ public string BuildIdKey => $"{BuildId}-{Name}";
+ public bool IsRootNode { get; }
+ public string Name { get; }
+ public string BuildId { get; }
+ public string Path { get; }
+ public bool IsEnabled
+ {
+ get
+ {
+ if (SubNodes.Count > 0)
+ {
+ return SubNodes.ToList().TrueForAll(x => x.IsEnabled);
+ }
+
+ return _isEnabled;
+ }
+ set
+ {
+ foreach (var cheat in SubNodes)
+ {
+ cheat.IsEnabled = value;
+ cheat.OnPropertyChanged();
+ }
+
+ _isEnabled = value;
+ }
+ }
+
+ public CheatNode(string name, string buildId, string path, bool isRootNode, bool isEnabled = false)
+ {
+ Name = name;
+ BuildId = buildId;
+ Path = path;
+ IsEnabled = isEnabled;
+ IsRootNode = isRootNode;
+
+ SubNodes.CollectionChanged += CheatsList_CollectionChanged;
+ }
+
+ private void CheatsList_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+ {
+ OnPropertyChanged(nameof(IsEnabled));
+ }
+ }
+}
diff --git a/src/Ryujinx.Ava/UI/Models/CheatsList.cs b/src/Ryujinx.Ava/UI/Models/CheatsList.cs
deleted file mode 100644
index 1cb0480c7..000000000
--- a/src/Ryujinx.Ava/UI/Models/CheatsList.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using System.Collections.ObjectModel;
-using System.Collections.Specialized;
-using System.ComponentModel;
-using System.Linq;
-
-namespace Ryujinx.Ava.UI.Models
-{
- public class CheatsList : ObservableCollection
- {
- public CheatsList(string buildId, string path)
- {
- BuildId = buildId;
- Path = path;
-
- CollectionChanged += CheatsList_CollectionChanged;
- }
-
- public string BuildId { get; }
- public string Path { get; }
-
- public bool IsEnabled
- {
- get
- {
- return this.ToList().TrueForAll(x => x.IsEnabled);
- }
- set
- {
- foreach (var cheat in this)
- {
- cheat.IsEnabled = value;
- }
-
- OnPropertyChanged(new PropertyChangedEventArgs(nameof(IsEnabled)));
- }
- }
-
- private void CheatsList_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
- {
- if (e.Action == NotifyCollectionChangedAction.Add)
- {
- (e.NewItems[0] as CheatModel).EnableToggled += Item_EnableToggled;
- }
- }
-
- private void Item_EnableToggled(object sender, bool e)
- {
- OnPropertyChanged(new PropertyChangedEventArgs(nameof(IsEnabled)));
- }
- }
-}
diff --git a/src/Ryujinx.Ava/UI/Models/ControllerModel.cs b/src/Ryujinx.Ava/UI/Models/ControllerModel.cs
index 2af2d13b8..98de7757f 100644
--- a/src/Ryujinx.Ava/UI/Models/ControllerModel.cs
+++ b/src/Ryujinx.Ava/UI/Models/ControllerModel.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid;
+using Ryujinx.Common.Configuration.Hid;
namespace Ryujinx.Ava.UI.Models
{
diff --git a/src/Ryujinx.Ava/UI/Models/DownloadableContentModel.cs b/src/Ryujinx.Ava/UI/Models/DownloadableContentModel.cs
index fedb3527b..9e400441d 100644
--- a/src/Ryujinx.Ava/UI/Models/DownloadableContentModel.cs
+++ b/src/Ryujinx.Ava/UI/Models/DownloadableContentModel.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Ava.UI.ViewModels;
+using Ryujinx.Ava.UI.ViewModels;
using System.IO;
namespace Ryujinx.Ava.UI.Models
diff --git a/src/Ryujinx.Ava/UI/Models/PlayerModel.cs b/src/Ryujinx.Ava/UI/Models/PlayerModel.cs
index f0b1bf7a8..a19852b94 100644
--- a/src/Ryujinx.Ava/UI/Models/PlayerModel.cs
+++ b/src/Ryujinx.Ava/UI/Models/PlayerModel.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid;
+using Ryujinx.Common.Configuration.Hid;
namespace Ryujinx.Ava.UI.Models
{
diff --git a/src/Ryujinx.Ava/UI/Models/StatusUpdatedEventArgs.cs b/src/Ryujinx.Ava/UI/Models/StatusUpdatedEventArgs.cs
index cc29442d0..7f04c0eed 100644
--- a/src/Ryujinx.Ava/UI/Models/StatusUpdatedEventArgs.cs
+++ b/src/Ryujinx.Ava/UI/Models/StatusUpdatedEventArgs.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Ava.UI.Models
{
diff --git a/src/Ryujinx.Ava/UI/Models/TitleUpdateModel.cs b/src/Ryujinx.Ava/UI/Models/TitleUpdateModel.cs
index 3b44e8ee6..c270c9ed4 100644
--- a/src/Ryujinx.Ava/UI/Models/TitleUpdateModel.cs
+++ b/src/Ryujinx.Ava/UI/Models/TitleUpdateModel.cs
@@ -1,4 +1,4 @@
-using LibHac.Ns;
+using LibHac.Ns;
using Ryujinx.Ava.Common.Locale;
namespace Ryujinx.Ava.UI.Models
diff --git a/src/Ryujinx.Ava/UI/Renderer/RendererHost.axaml b/src/Ryujinx.Ava/UI/Renderer/RendererHost.axaml
index bb96b10d2..e0b586b45 100644
--- a/src/Ryujinx.Ava/UI/Renderer/RendererHost.axaml
+++ b/src/Ryujinx.Ava/UI/Renderer/RendererHost.axaml
@@ -1,11 +1,12 @@
-
-
\ No newline at end of file
+
diff --git a/src/Ryujinx.Ava/UI/Renderer/SPBOpenGLContext.cs b/src/Ryujinx.Ava/UI/Renderer/SPBOpenGLContext.cs
index a2c7aa279..5ff756f24 100644
--- a/src/Ryujinx.Ava/UI/Renderer/SPBOpenGLContext.cs
+++ b/src/Ryujinx.Ava/UI/Renderer/SPBOpenGLContext.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Graphics.OpenGL;
using SPB.Graphics;
using SPB.Graphics.OpenGL;
diff --git a/src/Ryujinx.Ava/UI/ViewModels/AmiiboWindowViewModel.cs b/src/Ryujinx.Ava/UI/ViewModels/AmiiboWindowViewModel.cs
index 83624f5f3..0e0d858a4 100644
--- a/src/Ryujinx.Ava/UI/ViewModels/AmiiboWindowViewModel.cs
+++ b/src/Ryujinx.Ava/UI/ViewModels/AmiiboWindowViewModel.cs
@@ -17,6 +17,7 @@ using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text;
+using System.Text.Json;
using System.Threading.Tasks;
namespace Ryujinx.Ava.UI.ViewModels
@@ -188,35 +189,83 @@ namespace Ryujinx.Ava.UI.ViewModels
_httpClient.Dispose();
}
- private async Task LoadContentAsync()
+ private static bool TryGetAmiiboJson(string json, out AmiiboJson amiiboJson)
{
- string amiiboJsonString = DefaultJson;
-
- if (File.Exists(_amiiboJsonPath))
+ if (string.IsNullOrEmpty(json))
{
- amiiboJsonString = await File.ReadAllTextAsync(_amiiboJsonPath);
+ amiiboJson = JsonHelper.Deserialize(DefaultJson, _serializerContext.AmiiboJson);
- if (await NeedsUpdate(JsonHelper.Deserialize(amiiboJsonString, _serializerContext.AmiiboJson).LastUpdated))
- {
- amiiboJsonString = await DownloadAmiiboJson();
- }
+ return false;
}
- else
+
+ try
+ {
+ amiiboJson = JsonHelper.Deserialize(json, _serializerContext.AmiiboJson);
+
+ return true;
+ }
+ catch (JsonException exception)
+ {
+ Logger.Error?.Print(LogClass.Application, $"Unable to deserialize amiibo data: {exception}");
+ amiiboJson = JsonHelper.Deserialize(DefaultJson, _serializerContext.AmiiboJson);
+
+ return false;
+ }
+ }
+
+ private async Task GetMostRecentAmiiboListOrDefaultJson()
+ {
+ bool localIsValid = false;
+ bool remoteIsValid = false;
+ AmiiboJson amiiboJson = new();
+
+ try
{
try
{
- amiiboJsonString = await DownloadAmiiboJson();
+ if (File.Exists(_amiiboJsonPath))
+ {
+ localIsValid = TryGetAmiiboJson(await File.ReadAllTextAsync(_amiiboJsonPath), out amiiboJson);
+ }
}
- catch (Exception ex)
+ catch (Exception exception)
{
- Logger.Error?.Print(LogClass.Application, $"Failed to download amiibo data: {ex}");
+ Logger.Warning?.Print(LogClass.Application, $"Unable to read data from '{_amiiboJsonPath}': {exception}");
+ }
+ if (!localIsValid || await NeedsUpdate(amiiboJson.LastUpdated))
+ {
+ remoteIsValid = TryGetAmiiboJson(await DownloadAmiiboJson(), out amiiboJson);
+ }
+ }
+ catch (Exception exception)
+ {
+ if (!(localIsValid || remoteIsValid))
+ {
+ Logger.Error?.Print(LogClass.Application, $"Couldn't get valid amiibo data: {exception}");
+
+ // Neither local or remote files are valid JSON, close window.
+ ShowInfoDialog();
+ Close();
+ }
+ else if (!remoteIsValid)
+ {
+ Logger.Warning?.Print(LogClass.Application, $"Couldn't update amiibo data: {exception}");
+
+ // Only the local file is valid, the local one should be used
+ // but the user should be warned.
ShowInfoDialog();
}
}
- _amiiboList = JsonHelper.Deserialize(amiiboJsonString, _serializerContext.AmiiboJson).Amiibo;
- _amiiboList = _amiiboList.OrderBy(amiibo => amiibo.AmiiboSeries).ToList();
+ return amiiboJson;
+ }
+
+ private async Task LoadContentAsync()
+ {
+ AmiiboJson amiiboJson = await GetMostRecentAmiiboListOrDefaultJson();
+
+ _amiiboList = amiiboJson.Amiibo.OrderBy(amiibo => amiibo.AmiiboSeries).ToList();
ParseAmiiboData();
}
@@ -364,43 +413,50 @@ namespace Ryujinx.Ava.UI.ViewModels
{
try
{
- HttpResponseMessage response =
- await _httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Head, "https://amiibo.ryujinx.org/"));
+ HttpResponseMessage response = await _httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Head, "https://amiibo.ryujinx.org/"));
if (response.IsSuccessStatusCode)
{
- return response.Content.Headers.LastModified != new DateTimeOffset(oldLastModified.Ticks - (oldLastModified.Ticks % TimeSpan.TicksPerSecond), TimeSpan.Zero);
+ return response.Content.Headers.LastModified != oldLastModified;
}
-
- return false;
}
- catch (Exception ex)
+ catch (HttpRequestException exception)
{
- Logger.Error?.Print(LogClass.Application, $"Failed to check for amiibo updates: {ex}");
-
- ShowInfoDialog();
-
- return false;
+ Logger.Error?.Print(LogClass.Application, $"Unable to check for amiibo data updates: {exception}");
}
+
+ return false;
}
private async Task DownloadAmiiboJson()
{
- HttpResponseMessage response = await _httpClient.GetAsync("https://amiibo.ryujinx.org/");
-
- if (response.IsSuccessStatusCode)
+ try
{
- string amiiboJsonString = await response.Content.ReadAsStringAsync();
+ HttpResponseMessage response = await _httpClient.GetAsync("https://amiibo.ryujinx.org/");
- using (FileStream amiiboJsonStream = File.Create(_amiiboJsonPath, 4096, FileOptions.WriteThrough))
+ if (response.IsSuccessStatusCode)
{
- amiiboJsonStream.Write(Encoding.UTF8.GetBytes(amiiboJsonString));
+ string amiiboJsonString = await response.Content.ReadAsStringAsync();
+
+ try
+ {
+ using FileStream dlcJsonStream = File.Create(_amiiboJsonPath, 4096, FileOptions.WriteThrough);
+ dlcJsonStream.Write(Encoding.UTF8.GetBytes(amiiboJsonString));
+ }
+ catch (Exception exception)
+ {
+ Logger.Warning?.Print(LogClass.Application, $"Couldn't write amiibo data to file '{_amiiboJsonPath}: {exception}'");
+ }
+
+ return amiiboJsonString;
}
- return amiiboJsonString;
+ Logger.Error?.Print(LogClass.Application, $"Failed to download amiibo data. Response status code: {response.StatusCode}");
+ }
+ catch (HttpRequestException exception)
+ {
+ Logger.Error?.Print(LogClass.Application, $"Failed to request amiibo data: {exception}");
}
-
- Logger.Error?.Print(LogClass.Application, $"Failed to download amiibo data. Response status code: {response.StatusCode}");
await ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogAmiiboApiTitle],
LocaleManager.Instance[LocaleKeys.DialogAmiiboApiFailFetchMessage],
@@ -408,9 +464,7 @@ namespace Ryujinx.Ava.UI.ViewModels
"",
LocaleManager.Instance[LocaleKeys.RyujinxInfo]);
- Close();
-
- return DefaultJson;
+ return null;
}
private void Close()
diff --git a/src/Ryujinx.Ava/UI/ViewModels/BaseModel.cs b/src/Ryujinx.Ava/UI/ViewModels/BaseModel.cs
index 0ff72dbc4..4db9cf812 100644
--- a/src/Ryujinx.Ava/UI/ViewModels/BaseModel.cs
+++ b/src/Ryujinx.Ava/UI/ViewModels/BaseModel.cs
@@ -1,4 +1,4 @@
-using System.ComponentModel;
+using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace Ryujinx.Ava.UI.ViewModels
diff --git a/src/Ryujinx.Ava/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx.Ava/UI/ViewModels/MainWindowViewModel.cs
index 80df5d398..7146dfd7c 100644
--- a/src/Ryujinx.Ava/UI/ViewModels/MainWindowViewModel.cs
+++ b/src/Ryujinx.Ava/UI/ViewModels/MainWindowViewModel.cs
@@ -90,6 +90,7 @@ namespace Ryujinx.Ava.UI.ViewModels
private string _pauseKey = "F5";
private string _screenshotKey = "F8";
private float _volume;
+ private float _volumeBeforeMute;
private string _backendText;
private bool _canUpdate = true;
@@ -554,6 +555,17 @@ namespace Ryujinx.Ava.UI.ViewModels
}
}
+ public float VolumeBeforeMute
+ {
+ get => _volumeBeforeMute;
+ set
+ {
+ _volumeBeforeMute = value;
+
+ OnPropertyChanged();
+ }
+ }
+
public bool ShowStatusSeparator
{
get => _showStatusSeparator;
diff --git a/src/Ryujinx.Ava/UI/ViewModels/UserSaveManagerViewModel.cs b/src/Ryujinx.Ava/UI/ViewModels/UserSaveManagerViewModel.cs
index 0a13f24a8..85adef005 100644
--- a/src/Ryujinx.Ava/UI/ViewModels/UserSaveManagerViewModel.cs
+++ b/src/Ryujinx.Ava/UI/ViewModels/UserSaveManagerViewModel.cs
@@ -1,4 +1,4 @@
-using DynamicData;
+using DynamicData;
using DynamicData.Binding;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Models;
diff --git a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml
index d636873a3..99f2b6b69 100644
--- a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml
+++ b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml
@@ -101,7 +101,7 @@
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
SelectedIndex="0"
- ItemsSource="{Binding ProfilesList}"
+ ItemsSource="{Binding ProfilesList}"
Text="{Binding ProfileName, Mode=TwoWay}" />
-
\ No newline at end of file
+
diff --git a/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml b/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml
index debf4b843..3fdb4ab92 100644
--- a/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml
+++ b/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml
@@ -49,7 +49,7 @@
diff --git a/src/Ryujinx.Ava/UI/Windows/AboutWindow.axaml.cs b/src/Ryujinx.Ava/UI/Windows/AboutWindow.axaml.cs
index ca1c40350..7f28ad352 100644
--- a/src/Ryujinx.Ava/UI/Windows/AboutWindow.axaml.cs
+++ b/src/Ryujinx.Ava/UI/Windows/AboutWindow.axaml.cs
@@ -1,4 +1,4 @@
-using Avalonia.Controls;
+using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Layout;
diff --git a/src/Ryujinx.Ava/UI/Windows/AmiiboWindow.axaml b/src/Ryujinx.Ava/UI/Windows/AmiiboWindow.axaml
index caf7c1f3f..c587aa873 100644
--- a/src/Ryujinx.Ava/UI/Windows/AmiiboWindow.axaml
+++ b/src/Ryujinx.Ava/UI/Windows/AmiiboWindow.axaml
@@ -72,4 +72,4 @@
Click="CancelButton_Click" />
-
\ No newline at end of file
+
diff --git a/src/Ryujinx.Ava/UI/Windows/CheatWindow.axaml b/src/Ryujinx.Ava/UI/Windows/CheatWindow.axaml
index 8a5da5cc2..57d5f7eff 100644
--- a/src/Ryujinx.Ava/UI/Windows/CheatWindow.axaml
+++ b/src/Ryujinx.Ava/UI/Windows/CheatWindow.axaml
@@ -86,28 +86,16 @@
-
-
+
+
-
-
+
+
+
-
-
-
-
-
-
-
+
LoadedCheats { get; }
+ public AvaloniaList LoadedCheats { get; }
public string Heading { get; }
public string BuildId { get; }
@@ -33,7 +33,7 @@ namespace Ryujinx.Ava.UI.Windows
public CheatWindow(VirtualFileSystem virtualFileSystem, string titleId, string titleName, string titlePath)
{
- LoadedCheats = new AvaloniaList();
+ LoadedCheats = new AvaloniaList();
Heading = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.CheatWindowHeading, titleName, titleId.ToUpper());
BuildId = ApplicationData.GetApplicationBuildId(virtualFileSystem, titlePath);
@@ -62,7 +62,7 @@ namespace Ryujinx.Ava.UI.Windows
string currentCheatFile = string.Empty;
string buildId = string.Empty;
- CheatsList currentGroup = null;
+ CheatNode currentGroup = null;
foreach (var cheat in mods.Cheats)
{
@@ -72,13 +72,13 @@ namespace Ryujinx.Ava.UI.Windows
string parentPath = currentCheatFile.Replace(titleModsPath, "");
buildId = Path.GetFileNameWithoutExtension(currentCheatFile).ToUpper();
- currentGroup = new CheatsList(buildId, parentPath);
+ currentGroup = new CheatNode("", buildId, parentPath, true);
LoadedCheats.Add(currentGroup);
}
- var model = new CheatModel(cheat.Name, buildId, enabled.Contains($"{buildId}-{cheat.Name}"));
- currentGroup?.Add(model);
+ var model = new CheatNode(cheat.Name, buildId, "", false, enabled.Contains($"{buildId}-{cheat.Name}"));
+ currentGroup?.SubNodes.Add(model);
cheatAdded++;
}
@@ -104,7 +104,7 @@ namespace Ryujinx.Ava.UI.Windows
foreach (var cheats in LoadedCheats)
{
- foreach (var cheat in cheats)
+ foreach (var cheat in cheats.SubNodes)
{
if (cheat.IsEnabled)
{
diff --git a/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml b/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml
index 0d9a59499..4def7c281 100644
--- a/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml
+++ b/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml
@@ -158,7 +158,7 @@
FontWeight="Bold"
IsVisible="{Binding ShowLoadProgress}"
Text="{Binding LoadHeading}"
- TextAlignment="Left"
+ TextAlignment="Start"
TextWrapping="Wrap"
MaxWidth="500" />
@@ -202,4 +202,4 @@
Grid.Row="2" />
-
\ No newline at end of file
+
diff --git a/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml.cs
index c78f4160d..1aecbd041 100644
--- a/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml.cs
+++ b/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml.cs
@@ -436,10 +436,11 @@ namespace Ryujinx.Ava.UI.Windows
{
if (!volumeSplitButton.IsChecked)
{
- ViewModel.AppHost.Device.SetVolume(ConfigurationState.Instance.System.AudioVolume);
+ ViewModel.AppHost.Device.SetVolume(ViewModel.VolumeBeforeMute);
}
else
{
+ ViewModel.VolumeBeforeMute = ViewModel.AppHost.Device.GetVolume();
ViewModel.AppHost.Device.SetVolume(0);
}
diff --git a/src/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml b/src/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
index a0a75f611..40cac90dd 100644
--- a/src/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
+++ b/src/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
@@ -101,6 +101,9 @@
+
-
\ No newline at end of file
+
diff --git a/src/Ryujinx.Common/AsyncWorkQueue.cs b/src/Ryujinx.Common/AsyncWorkQueue.cs
index e9f758985..abb5867b0 100644
--- a/src/Ryujinx.Common/AsyncWorkQueue.cs
+++ b/src/Ryujinx.Common/AsyncWorkQueue.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Concurrent;
using System.Threading;
diff --git a/src/Ryujinx.Common/Collections/IntervalTree.cs b/src/Ryujinx.Common/Collections/IntervalTree.cs
index baab579e7..d3a5e7fcf 100644
--- a/src/Ryujinx.Common/Collections/IntervalTree.cs
+++ b/src/Ryujinx.Common/Collections/IntervalTree.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/src/Ryujinx.Common/Collections/TreeDictionary.cs b/src/Ryujinx.Common/Collections/TreeDictionary.cs
index ff1794883..5379d353c 100644
--- a/src/Ryujinx.Common/Collections/TreeDictionary.cs
+++ b/src/Ryujinx.Common/Collections/TreeDictionary.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
diff --git a/src/Ryujinx.Common/Configuration/AntiAliasing.cs b/src/Ryujinx.Common/Configuration/AntiAliasing.cs
index 9ab0458cd..5e3e1b891 100644
--- a/src/Ryujinx.Common/Configuration/AntiAliasing.cs
+++ b/src/Ryujinx.Common/Configuration/AntiAliasing.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration
diff --git a/src/Ryujinx.Common/Configuration/AspectRatioExtensions.cs b/src/Ryujinx.Common/Configuration/AspectRatioExtensions.cs
index c9bf24650..bae6e35de 100644
--- a/src/Ryujinx.Common/Configuration/AspectRatioExtensions.cs
+++ b/src/Ryujinx.Common/Configuration/AspectRatioExtensions.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration
diff --git a/src/Ryujinx.Common/Configuration/BackendThreading.cs b/src/Ryujinx.Common/Configuration/BackendThreading.cs
index 44aa422e4..4fbb56bcb 100644
--- a/src/Ryujinx.Common/Configuration/BackendThreading.cs
+++ b/src/Ryujinx.Common/Configuration/BackendThreading.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration
diff --git a/src/Ryujinx.Common/Configuration/DownloadableContentContainer.cs b/src/Ryujinx.Common/Configuration/DownloadableContentContainer.cs
index f9e68a3c2..6f12e9767 100644
--- a/src/Ryujinx.Common/Configuration/DownloadableContentContainer.cs
+++ b/src/Ryujinx.Common/Configuration/DownloadableContentContainer.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration
diff --git a/src/Ryujinx.Common/Configuration/DownloadableContentJsonSerializerContext.cs b/src/Ryujinx.Common/Configuration/DownloadableContentJsonSerializerContext.cs
index 0dbc0a301..cc89cb128 100644
--- a/src/Ryujinx.Common/Configuration/DownloadableContentJsonSerializerContext.cs
+++ b/src/Ryujinx.Common/Configuration/DownloadableContentJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration
diff --git a/src/Ryujinx.Common/Configuration/DownloadableContentNca.cs b/src/Ryujinx.Common/Configuration/DownloadableContentNca.cs
index dded719cf..60d4a9bd6 100644
--- a/src/Ryujinx.Common/Configuration/DownloadableContentNca.cs
+++ b/src/Ryujinx.Common/Configuration/DownloadableContentNca.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration
{
diff --git a/src/Ryujinx.Common/Configuration/GraphicsBackend.cs b/src/Ryujinx.Common/Configuration/GraphicsBackend.cs
index 8957c5ccc..e3b4f91b0 100644
--- a/src/Ryujinx.Common/Configuration/GraphicsBackend.cs
+++ b/src/Ryujinx.Common/Configuration/GraphicsBackend.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/GamepadInputId.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/GamepadInputId.cs
index 78bc46f21..1380813b0 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/GamepadInputId.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/GamepadInputId.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration.Hid.Controller
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/GenericControllerInputConfig.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/GenericControllerInputConfig.cs
index abc245bc4..e6fe74d53 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/GenericControllerInputConfig.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/GenericControllerInputConfig.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid.Controller.Motion;
+using Ryujinx.Common.Configuration.Hid.Controller.Motion;
using System;
using System.Text.Json.Serialization;
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/JoyconConfigControllerStick.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/JoyconConfigControllerStick.cs
index aaa3ef1d9..608681551 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/JoyconConfigControllerStick.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/JoyconConfigControllerStick.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid.Controller
+namespace Ryujinx.Common.Configuration.Hid.Controller
{
public class JoyconConfigControllerStick where TButton : unmanaged where TStick : unmanaged
{
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/CemuHookMotionConfigController.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/CemuHookMotionConfigController.cs
index 2a5a73ff0..1c31fff7b 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/CemuHookMotionConfigController.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/CemuHookMotionConfigController.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid.Controller.Motion
+namespace Ryujinx.Common.Configuration.Hid.Controller.Motion
{
public class CemuHookMotionConfigController : MotionConfigController
{
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/JsonMotionConfigControllerConverter.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/JsonMotionConfigControllerConverter.cs
index 613533718..40f067aea 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/JsonMotionConfigControllerConverter.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/JsonMotionConfigControllerConverter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionConfigController.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionConfigController.cs
index 7636aa414..7905ef062 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionConfigController.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionConfigController.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration.Hid.Controller.Motion
{
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionConfigJsonSerializerContext.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionConfigJsonSerializerContext.cs
index f9d154ffd..784e0cb11 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionConfigJsonSerializerContext.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionConfigJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration.Hid.Controller.Motion
{
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionInputBackendType.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionInputBackendType.cs
index fac4e0f7a..fd8391289 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionInputBackendType.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/MotionInputBackendType.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration.Hid.Controller.Motion
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/StandardMotionConfigController.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/StandardMotionConfigController.cs
index df925444a..7f1ac40a2 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/StandardMotionConfigController.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/Motion/StandardMotionConfigController.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid.Controller.Motion
+namespace Ryujinx.Common.Configuration.Hid.Controller.Motion
{
public class StandardMotionConfigController : MotionConfigController { }
}
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/RumbleConfigController.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/RumbleConfigController.cs
index 48be4f13e..ee8ab457d 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/RumbleConfigController.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/RumbleConfigController.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid.Controller
+namespace Ryujinx.Common.Configuration.Hid.Controller
{
public class RumbleConfigController
{
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/StandardControllerInputConfig.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/StandardControllerInputConfig.cs
index 4154a42b0..cfd9755bf 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/StandardControllerInputConfig.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/StandardControllerInputConfig.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid.Controller
+namespace Ryujinx.Common.Configuration.Hid.Controller
{
public class StandardControllerInputConfig : GenericControllerInputConfig { }
}
diff --git a/src/Ryujinx.Common/Configuration/Hid/Controller/StickInputId.cs b/src/Ryujinx.Common/Configuration/Hid/Controller/StickInputId.cs
index cbe63e578..8f9539c46 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Controller/StickInputId.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Controller/StickInputId.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration.Hid.Controller
diff --git a/src/Ryujinx.Common/Configuration/Hid/GenericInputConfigurationCommon.cs b/src/Ryujinx.Common/Configuration/Hid/GenericInputConfigurationCommon.cs
index 618e20b5c..c70594df4 100644
--- a/src/Ryujinx.Common/Configuration/Hid/GenericInputConfigurationCommon.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/GenericInputConfigurationCommon.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid
+namespace Ryujinx.Common.Configuration.Hid
{
public class GenericInputConfigurationCommon : InputConfig where TButton : unmanaged
{
diff --git a/src/Ryujinx.Common/Configuration/Hid/InputBackendType.cs b/src/Ryujinx.Common/Configuration/Hid/InputBackendType.cs
index 1db3f5703..c3e4402b2 100644
--- a/src/Ryujinx.Common/Configuration/Hid/InputBackendType.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/InputBackendType.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration.Hid
diff --git a/src/Ryujinx.Common/Configuration/Hid/InputConfig.cs b/src/Ryujinx.Common/Configuration/Hid/InputConfig.cs
index 16a1042e3..a93b721ad 100644
--- a/src/Ryujinx.Common/Configuration/Hid/InputConfig.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/InputConfig.cs
@@ -1,4 +1,4 @@
-using System.ComponentModel;
+using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Text.Json.Serialization;
diff --git a/src/Ryujinx.Common/Configuration/Hid/InputConfigJsonSerializerContext.cs b/src/Ryujinx.Common/Configuration/Hid/InputConfigJsonSerializerContext.cs
index 30138049b..bd8be2491 100644
--- a/src/Ryujinx.Common/Configuration/Hid/InputConfigJsonSerializerContext.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/InputConfigJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid.Controller;
+using Ryujinx.Common.Configuration.Hid.Controller;
using Ryujinx.Common.Configuration.Hid.Keyboard;
using System.Text.Json.Serialization;
diff --git a/src/Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs b/src/Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs
index 81b0d932d..6c2a69b88 100644
--- a/src/Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid.Controller;
+using Ryujinx.Common.Configuration.Hid.Controller;
using Ryujinx.Common.Configuration.Hid.Keyboard;
using Ryujinx.Common.Utilities;
using System;
diff --git a/src/Ryujinx.Common/Configuration/Hid/Key.cs b/src/Ryujinx.Common/Configuration/Hid/Key.cs
index a82a99592..e3dd8e50c 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Key.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Key.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration.Hid
diff --git a/src/Ryujinx.Common/Configuration/Hid/Keyboard/GenericKeyboardInputConfig.cs b/src/Ryujinx.Common/Configuration/Hid/Keyboard/GenericKeyboardInputConfig.cs
index 37819a26d..ecddd31e3 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Keyboard/GenericKeyboardInputConfig.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Keyboard/GenericKeyboardInputConfig.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid.Keyboard
+namespace Ryujinx.Common.Configuration.Hid.Keyboard
{
public class GenericKeyboardInputConfig : GenericInputConfigurationCommon where TKey : unmanaged
{
diff --git a/src/Ryujinx.Common/Configuration/Hid/Keyboard/JoyconConfigKeyboardStick.cs b/src/Ryujinx.Common/Configuration/Hid/Keyboard/JoyconConfigKeyboardStick.cs
index e0bdefc5c..36292a8b7 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Keyboard/JoyconConfigKeyboardStick.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Keyboard/JoyconConfigKeyboardStick.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid.Keyboard
+namespace Ryujinx.Common.Configuration.Hid.Keyboard
{
public class JoyconConfigKeyboardStick where TKey : unmanaged
{
diff --git a/src/Ryujinx.Common/Configuration/Hid/Keyboard/StandardKeyboardInputConfig.cs b/src/Ryujinx.Common/Configuration/Hid/Keyboard/StandardKeyboardInputConfig.cs
index 054d777d5..1e8b188e7 100644
--- a/src/Ryujinx.Common/Configuration/Hid/Keyboard/StandardKeyboardInputConfig.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/Keyboard/StandardKeyboardInputConfig.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid.Keyboard
+namespace Ryujinx.Common.Configuration.Hid.Keyboard
{
public class StandardKeyboardInputConfig : GenericKeyboardInputConfig { }
}
diff --git a/src/Ryujinx.Common/Configuration/Hid/KeyboardHotkeys.cs b/src/Ryujinx.Common/Configuration/Hid/KeyboardHotkeys.cs
index f0707c73d..b4f2f9468 100644
--- a/src/Ryujinx.Common/Configuration/Hid/KeyboardHotkeys.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/KeyboardHotkeys.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid
+namespace Ryujinx.Common.Configuration.Hid
{
// NOTE: Please don't change this to struct.
// This breaks Avalonia's TwoWay binding, which makes us unable to save new KeyboardHotkeys.
diff --git a/src/Ryujinx.Common/Configuration/Hid/LeftJoyconCommonConfig.cs b/src/Ryujinx.Common/Configuration/Hid/LeftJoyconCommonConfig.cs
index 4ae890721..140453555 100644
--- a/src/Ryujinx.Common/Configuration/Hid/LeftJoyconCommonConfig.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/LeftJoyconCommonConfig.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid
+namespace Ryujinx.Common.Configuration.Hid
{
public class LeftJoyconCommonConfig
{
diff --git a/src/Ryujinx.Common/Configuration/Hid/RightJoyconCommonConfig.cs b/src/Ryujinx.Common/Configuration/Hid/RightJoyconCommonConfig.cs
index e121b9a52..1fb99104f 100644
--- a/src/Ryujinx.Common/Configuration/Hid/RightJoyconCommonConfig.cs
+++ b/src/Ryujinx.Common/Configuration/Hid/RightJoyconCommonConfig.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Hid
+namespace Ryujinx.Common.Configuration.Hid
{
public class RightJoyconCommonConfig
{
diff --git a/src/Ryujinx.Common/Configuration/MemoryManagerMode.cs b/src/Ryujinx.Common/Configuration/MemoryManagerMode.cs
index 8b7150b5c..93031928f 100644
--- a/src/Ryujinx.Common/Configuration/MemoryManagerMode.cs
+++ b/src/Ryujinx.Common/Configuration/MemoryManagerMode.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration
diff --git a/src/Ryujinx.Common/Configuration/Multiplayer/MultiplayerMode.cs b/src/Ryujinx.Common/Configuration/Multiplayer/MultiplayerMode.cs
index 05108716d..69f7d876d 100644
--- a/src/Ryujinx.Common/Configuration/Multiplayer/MultiplayerMode.cs
+++ b/src/Ryujinx.Common/Configuration/Multiplayer/MultiplayerMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Configuration.Multiplayer
+namespace Ryujinx.Common.Configuration.Multiplayer
{
public enum MultiplayerMode
{
diff --git a/src/Ryujinx.Common/Configuration/TitleUpdateMetadata.cs b/src/Ryujinx.Common/Configuration/TitleUpdateMetadata.cs
index 17a13bf15..a1b14f6f7 100644
--- a/src/Ryujinx.Common/Configuration/TitleUpdateMetadata.cs
+++ b/src/Ryujinx.Common/Configuration/TitleUpdateMetadata.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Ryujinx.Common.Configuration
{
diff --git a/src/Ryujinx.Common/Configuration/TitleUpdateMetadataJsonSerializerContext.cs b/src/Ryujinx.Common/Configuration/TitleUpdateMetadataJsonSerializerContext.cs
index 4cfd232c7..a4b6efff4 100644
--- a/src/Ryujinx.Common/Configuration/TitleUpdateMetadataJsonSerializerContext.cs
+++ b/src/Ryujinx.Common/Configuration/TitleUpdateMetadataJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration
{
diff --git a/src/Ryujinx.Common/Extensions/BinaryReaderExtensions.cs b/src/Ryujinx.Common/Extensions/BinaryReaderExtensions.cs
index 3b82f96a2..dece2384c 100644
--- a/src/Ryujinx.Common/Extensions/BinaryReaderExtensions.cs
+++ b/src/Ryujinx.Common/Extensions/BinaryReaderExtensions.cs
@@ -1,4 +1,4 @@
-using System.IO;
+using System.IO;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/Extensions/BinaryWriterExtensions.cs b/src/Ryujinx.Common/Extensions/BinaryWriterExtensions.cs
index c96bc698f..9c3e72329 100644
--- a/src/Ryujinx.Common/Extensions/BinaryWriterExtensions.cs
+++ b/src/Ryujinx.Common/Extensions/BinaryWriterExtensions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/Extensions/StreamExtensions.cs b/src/Ryujinx.Common/Extensions/StreamExtensions.cs
index f6fc870ab..431d5534a 100644
--- a/src/Ryujinx.Common/Extensions/StreamExtensions.cs
+++ b/src/Ryujinx.Common/Extensions/StreamExtensions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Buffers.Binary;
using System.IO;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/GraphicsDriver/DriverUtilities.cs b/src/Ryujinx.Common/GraphicsDriver/DriverUtilities.cs
index 3aabced7c..7fe2a4f02 100644
--- a/src/Ryujinx.Common/GraphicsDriver/DriverUtilities.cs
+++ b/src/Ryujinx.Common/GraphicsDriver/DriverUtilities.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Common.GraphicsDriver
{
diff --git a/src/Ryujinx.Common/GraphicsDriver/NVAPI/Nvapi.cs b/src/Ryujinx.Common/GraphicsDriver/NVAPI/Nvapi.cs
index 60b9455c7..985e5e6d3 100644
--- a/src/Ryujinx.Common/GraphicsDriver/NVAPI/Nvapi.cs
+++ b/src/Ryujinx.Common/GraphicsDriver/NVAPI/Nvapi.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.GraphicsDriver.NVAPI
+namespace Ryujinx.Common.GraphicsDriver.NVAPI
{
enum Nvapi : uint
{
diff --git a/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs b/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs
index 4a71ce70b..f3e0ffd02 100644
--- a/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs
+++ b/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
using System.Text;
namespace Ryujinx.Common.GraphicsDriver.NVAPI
diff --git a/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsApplicationV4.cs b/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsApplicationV4.cs
index 78e1b6952..39820bfef 100644
--- a/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsApplicationV4.cs
+++ b/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsApplicationV4.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.Common.GraphicsDriver.NVAPI
{
diff --git a/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsProfile.cs b/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsProfile.cs
index 6d9b8e51b..f9fe4ed41 100644
--- a/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsProfile.cs
+++ b/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsProfile.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.Common.GraphicsDriver.NVAPI
{
diff --git a/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsSetting.cs b/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsSetting.cs
index 6cd0360dd..a36781baf 100644
--- a/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsSetting.cs
+++ b/src/Ryujinx.Common/GraphicsDriver/NVAPI/NvdrsSetting.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.Common.GraphicsDriver.NVAPI
{
diff --git a/src/Ryujinx.Common/GraphicsDriver/NVThreadedOptimization.cs b/src/Ryujinx.Common/GraphicsDriver/NVThreadedOptimization.cs
index cda889d96..f7b11783d 100644
--- a/src/Ryujinx.Common/GraphicsDriver/NVThreadedOptimization.cs
+++ b/src/Ryujinx.Common/GraphicsDriver/NVThreadedOptimization.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.GraphicsDriver.NVAPI;
+using Ryujinx.Common.GraphicsDriver.NVAPI;
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/Hash128.cs b/src/Ryujinx.Common/Hash128.cs
index 28c0946b3..e0ffd230e 100644
--- a/src/Ryujinx.Common/Hash128.cs
+++ b/src/Ryujinx.Common/Hash128.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.Common
diff --git a/src/Ryujinx.Common/Logging/Formatters/DefaultLogFormatter.cs b/src/Ryujinx.Common/Logging/Formatters/DefaultLogFormatter.cs
index ed2a8144b..b1cffcb56 100644
--- a/src/Ryujinx.Common/Logging/Formatters/DefaultLogFormatter.cs
+++ b/src/Ryujinx.Common/Logging/Formatters/DefaultLogFormatter.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics;
+using System.Diagnostics;
using System.Text;
namespace Ryujinx.Common.Logging.Formatters
diff --git a/src/Ryujinx.Common/Logging/Formatters/DynamicObjectFormatter.cs b/src/Ryujinx.Common/Logging/Formatters/DynamicObjectFormatter.cs
index 1ee73acd6..b1cc0eae3 100644
--- a/src/Ryujinx.Common/Logging/Formatters/DynamicObjectFormatter.cs
+++ b/src/Ryujinx.Common/Logging/Formatters/DynamicObjectFormatter.cs
@@ -1,4 +1,4 @@
-#nullable enable
+#nullable enable
using System;
using System.Reflection;
using System.Text;
diff --git a/src/Ryujinx.Common/Logging/Formatters/ILogFormatter.cs b/src/Ryujinx.Common/Logging/Formatters/ILogFormatter.cs
index 5c660a52b..3a2261a6b 100644
--- a/src/Ryujinx.Common/Logging/Formatters/ILogFormatter.cs
+++ b/src/Ryujinx.Common/Logging/Formatters/ILogFormatter.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Logging.Formatters
+namespace Ryujinx.Common.Logging.Formatters
{
interface ILogFormatter
{
diff --git a/src/Ryujinx.Common/Logging/LogEventArgsJson.cs b/src/Ryujinx.Common/Logging/LogEventArgsJson.cs
index 9628a757c..7c745d63e 100644
--- a/src/Ryujinx.Common/Logging/LogEventArgsJson.cs
+++ b/src/Ryujinx.Common/Logging/LogEventArgsJson.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging.Formatters;
+using Ryujinx.Common.Logging.Formatters;
using System;
using System.Text.Json.Serialization;
diff --git a/src/Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs b/src/Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs
index c5dd6114e..ac63d9a10 100644
--- a/src/Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs
+++ b/src/Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Ryujinx.Common.Logging
{
diff --git a/src/Ryujinx.Common/Logging/Targets/AsyncLogTargetWrapper.cs b/src/Ryujinx.Common/Logging/Targets/AsyncLogTargetWrapper.cs
index 226318b0d..02c6dc97b 100644
--- a/src/Ryujinx.Common/Logging/Targets/AsyncLogTargetWrapper.cs
+++ b/src/Ryujinx.Common/Logging/Targets/AsyncLogTargetWrapper.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Concurrent;
using System.Threading;
diff --git a/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs b/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs
index 16735834a..42ba00cd5 100644
--- a/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs
+++ b/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging.Formatters;
+using Ryujinx.Common.Logging.Formatters;
using System;
namespace Ryujinx.Common.Logging.Targets
diff --git a/src/Ryujinx.Common/Logging/Targets/FileLogTarget.cs b/src/Ryujinx.Common/Logging/Targets/FileLogTarget.cs
index 8d1a94e51..8aa2a26b9 100644
--- a/src/Ryujinx.Common/Logging/Targets/FileLogTarget.cs
+++ b/src/Ryujinx.Common/Logging/Targets/FileLogTarget.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging.Formatters;
+using Ryujinx.Common.Logging.Formatters;
using System;
using System.IO;
using System.Linq;
diff --git a/src/Ryujinx.Common/Logging/Targets/ILogTarget.cs b/src/Ryujinx.Common/Logging/Targets/ILogTarget.cs
index e3b1ad208..2d7aca4fe 100644
--- a/src/Ryujinx.Common/Logging/Targets/ILogTarget.cs
+++ b/src/Ryujinx.Common/Logging/Targets/ILogTarget.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Common.Logging.Targets
{
diff --git a/src/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs b/src/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs
index 1873dc606..c5bf23cdb 100644
--- a/src/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs
+++ b/src/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System;
using System.IO;
diff --git a/src/Ryujinx.Common/Memory/ArrayPtr.cs b/src/Ryujinx.Common/Memory/ArrayPtr.cs
index 0365a5089..7487a1ff5 100644
--- a/src/Ryujinx.Common/Memory/ArrayPtr.cs
+++ b/src/Ryujinx.Common/Memory/ArrayPtr.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/Memory/Box.cs b/src/Ryujinx.Common/Memory/Box.cs
index 743cc31dc..e7dd76a65 100644
--- a/src/Ryujinx.Common/Memory/Box.cs
+++ b/src/Ryujinx.Common/Memory/Box.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Memory
+namespace Ryujinx.Common.Memory
{
public class Box where T : unmanaged
{
diff --git a/src/Ryujinx.Common/Memory/ByteMemoryPool.ByteMemoryPoolBuffer.cs b/src/Ryujinx.Common/Memory/ByteMemoryPool.ByteMemoryPoolBuffer.cs
index 8f2a61c85..df3f8dc93 100644
--- a/src/Ryujinx.Common/Memory/ByteMemoryPool.ByteMemoryPoolBuffer.cs
+++ b/src/Ryujinx.Common/Memory/ByteMemoryPool.ByteMemoryPoolBuffer.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Buffers;
using System.Threading;
diff --git a/src/Ryujinx.Common/Memory/ByteMemoryPool.cs b/src/Ryujinx.Common/Memory/ByteMemoryPool.cs
index b63449f83..071f56b13 100644
--- a/src/Ryujinx.Common/Memory/ByteMemoryPool.cs
+++ b/src/Ryujinx.Common/Memory/ByteMemoryPool.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Buffers;
namespace Ryujinx.Common.Memory
diff --git a/src/Ryujinx.Common/Memory/IArray.cs b/src/Ryujinx.Common/Memory/IArray.cs
index 8f17fade0..3e0385c2d 100644
--- a/src/Ryujinx.Common/Memory/IArray.cs
+++ b/src/Ryujinx.Common/Memory/IArray.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common.Memory
+namespace Ryujinx.Common.Memory
{
///
/// Array interface.
diff --git a/src/Ryujinx.Common/Memory/MemoryStreamManager.cs b/src/Ryujinx.Common/Memory/MemoryStreamManager.cs
index cc3a59682..834210e07 100644
--- a/src/Ryujinx.Common/Memory/MemoryStreamManager.cs
+++ b/src/Ryujinx.Common/Memory/MemoryStreamManager.cs
@@ -1,4 +1,4 @@
-using Microsoft.IO;
+using Microsoft.IO;
using System;
namespace Ryujinx.Common.Memory
diff --git a/src/Ryujinx.Common/Memory/PartialUnmaps/NativeReaderWriterLock.cs b/src/Ryujinx.Common/Memory/PartialUnmaps/NativeReaderWriterLock.cs
index 03d48fd8d..17106ae5f 100644
--- a/src/Ryujinx.Common/Memory/PartialUnmaps/NativeReaderWriterLock.cs
+++ b/src/Ryujinx.Common/Memory/PartialUnmaps/NativeReaderWriterLock.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
using System.Threading;
using static Ryujinx.Common.Memory.PartialUnmaps.PartialUnmapHelpers;
diff --git a/src/Ryujinx.Common/Memory/PartialUnmaps/PartialUnmapHelpers.cs b/src/Ryujinx.Common/Memory/PartialUnmaps/PartialUnmapHelpers.cs
index e650de068..0daa7c464 100644
--- a/src/Ryujinx.Common/Memory/PartialUnmaps/PartialUnmapHelpers.cs
+++ b/src/Ryujinx.Common/Memory/PartialUnmaps/PartialUnmapHelpers.cs
@@ -1,4 +1,4 @@
-using System.Runtime.CompilerServices;
+using System.Runtime.CompilerServices;
namespace Ryujinx.Common.Memory.PartialUnmaps
{
diff --git a/src/Ryujinx.Common/Memory/PartialUnmaps/PartialUnmapState.cs b/src/Ryujinx.Common/Memory/PartialUnmaps/PartialUnmapState.cs
index a583930b7..93fef5c3b 100644
--- a/src/Ryujinx.Common/Memory/PartialUnmaps/PartialUnmapState.cs
+++ b/src/Ryujinx.Common/Memory/PartialUnmaps/PartialUnmapState.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx.Common/Memory/PartialUnmaps/ThreadLocalMap.cs b/src/Ryujinx.Common/Memory/PartialUnmaps/ThreadLocalMap.cs
index a3c3dc57b..009aff628 100644
--- a/src/Ryujinx.Common/Memory/PartialUnmaps/ThreadLocalMap.cs
+++ b/src/Ryujinx.Common/Memory/PartialUnmaps/ThreadLocalMap.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
using System.Threading;
using static Ryujinx.Common.Memory.PartialUnmaps.PartialUnmapHelpers;
diff --git a/src/Ryujinx.Common/Memory/Ptr.cs b/src/Ryujinx.Common/Memory/Ptr.cs
index 5285d756f..d01748c16 100644
--- a/src/Ryujinx.Common/Memory/Ptr.cs
+++ b/src/Ryujinx.Common/Memory/Ptr.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Common/Memory/SpanOrArray.cs b/src/Ryujinx.Common/Memory/SpanOrArray.cs
index a9798d278..269ac02fd 100644
--- a/src/Ryujinx.Common/Memory/SpanOrArray.cs
+++ b/src/Ryujinx.Common/Memory/SpanOrArray.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Common.Memory
{
diff --git a/src/Ryujinx.Common/Memory/SpanWriter.cs b/src/Ryujinx.Common/Memory/SpanWriter.cs
index 248acc42b..5866652dc 100644
--- a/src/Ryujinx.Common/Memory/SpanWriter.cs
+++ b/src/Ryujinx.Common/Memory/SpanWriter.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/Memory/StructArrayHelpers.cs b/src/Ryujinx.Common/Memory/StructArrayHelpers.cs
index 807bd69c3..94ce8d2f5 100644
--- a/src/Ryujinx.Common/Memory/StructArrayHelpers.cs
+++ b/src/Ryujinx.Common/Memory/StructArrayHelpers.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics.Contracts;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/Memory/StructByteArrayHelpers.cs b/src/Ryujinx.Common/Memory/StructByteArrayHelpers.cs
index f0f452730..3b0666628 100644
--- a/src/Ryujinx.Common/Memory/StructByteArrayHelpers.cs
+++ b/src/Ryujinx.Common/Memory/StructByteArrayHelpers.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.Common.Memory
diff --git a/src/Ryujinx.Common/PerformanceCounter.cs b/src/Ryujinx.Common/PerformanceCounter.cs
index 4b49c5c9e..8c40fd7f4 100644
--- a/src/Ryujinx.Common/PerformanceCounter.cs
+++ b/src/Ryujinx.Common/PerformanceCounter.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics;
+using System.Diagnostics;
namespace Ryujinx.Common
{
diff --git a/src/Ryujinx.Common/Pools/ObjectPool.cs b/src/Ryujinx.Common/Pools/ObjectPool.cs
index a0d3feb95..0b6ce3771 100644
--- a/src/Ryujinx.Common/Pools/ObjectPool.cs
+++ b/src/Ryujinx.Common/Pools/ObjectPool.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading;
namespace Ryujinx.Common
diff --git a/src/Ryujinx.Common/Pools/SharedPools.cs b/src/Ryujinx.Common/Pools/SharedPools.cs
index 272a74180..342eab4dd 100644
--- a/src/Ryujinx.Common/Pools/SharedPools.cs
+++ b/src/Ryujinx.Common/Pools/SharedPools.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Common
+namespace Ryujinx.Common
{
public static class SharedPools
{
diff --git a/src/Ryujinx.Common/Pools/ThreadStaticArray.cs b/src/Ryujinx.Common/Pools/ThreadStaticArray.cs
index 54df50419..a2b9811c5 100644
--- a/src/Ryujinx.Common/Pools/ThreadStaticArray.cs
+++ b/src/Ryujinx.Common/Pools/ThreadStaticArray.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Common.Pools
{
diff --git a/src/Ryujinx.Common/PreciseSleep/IPreciseSleepEvent.cs b/src/Ryujinx.Common/PreciseSleep/IPreciseSleepEvent.cs
new file mode 100644
index 000000000..26b5ab685
--- /dev/null
+++ b/src/Ryujinx.Common/PreciseSleep/IPreciseSleepEvent.cs
@@ -0,0 +1,38 @@
+using System;
+
+namespace Ryujinx.Common.PreciseSleep
+{
+ ///
+ /// An event which works similarly to an AutoResetEvent, but is backed by a
+ /// more precise timer that allows waits of less than a millisecond.
+ ///
+ public interface IPreciseSleepEvent : IDisposable
+ {
+ ///
+ /// Adjust a timepoint to better fit the host clock.
+ /// When no adjustment is made, the input timepoint will be returned.
+ ///
+ /// Timepoint to adjust
+ /// Requested timeout in nanoseconds
+ /// Adjusted timepoint
+ long AdjustTimePoint(long timePoint, long timeoutNs);
+
+ ///
+ /// Sleep until a timepoint, or a signal is received.
+ /// Given no signal, may wake considerably before, or slightly after the timeout.
+ ///
+ /// Timepoint to sleep until
+ /// True if signalled or waited, false if a wait could not be performed
+ bool SleepUntil(long timePoint);
+
+ ///
+ /// Sleep until a signal is received.
+ ///
+ void Sleep();
+
+ ///
+ /// Signal the event, waking any sleeping thread or the next attempted sleep.
+ ///
+ void Signal();
+ }
+}
diff --git a/src/Ryujinx.Common/PreciseSleep/Nanosleep.cs b/src/Ryujinx.Common/PreciseSleep/Nanosleep.cs
new file mode 100644
index 000000000..67f067ae2
--- /dev/null
+++ b/src/Ryujinx.Common/PreciseSleep/Nanosleep.cs
@@ -0,0 +1,160 @@
+using System;
+using System.Runtime.InteropServices;
+using System.Runtime.Versioning;
+
+namespace Ryujinx.Common.PreciseSleep
+{
+ ///
+ /// Access to Linux/MacOS nanosleep, with platform specific bias to improve precision.
+ ///
+ [SupportedOSPlatform("macos")]
+ [SupportedOSPlatform("linux")]
+ [SupportedOSPlatform("android")]
+ [SupportedOSPlatform("ios")]
+ internal static partial class Nanosleep
+ {
+ private const long LinuxBaseNanosleepBias = 50000; // 0.05ms
+
+ // Penalty for max allowed sleep duration
+ private const long LinuxNanosleepAccuracyPenaltyThreshold = 200000; // 0.2ms
+ private const long LinuxNanosleepAccuracyPenalty = 30000; // 0.03ms
+
+ // Penalty for base sleep duration
+ private const long LinuxNanosleepBasePenaltyThreshold = 500000; // 0.5ms
+ private const long LinuxNanosleepBasePenalty = 30000; // 0.03ms
+ private const long LinuxNanosleepPenaltyPerMillisecond = 18000; // 0.018ms
+ private const long LinuxNanosleepPenaltyCap = 18000; // 0.018ms
+
+ private const long LinuxStrictBiasOffset = 150_000; // 0.15ms
+
+ // Nanosleep duration is biased depending on the requested timeout on MacOS.
+ // These match the results when measuring on an M1 processor at AboveNormal priority.
+ private const long MacosBaseNanosleepBias = 5000; // 0.005ms
+ private const long MacosBiasPerMillisecond = 140000; // 0.14ms
+ private const long MacosBiasMaxNanoseconds = 20_000_000; // 20ms
+ private const long MacosStrictBiasOffset = 150_000; // 0.15ms
+
+ public static long Bias { get; }
+
+ ///
+ /// Get bias for a given nanosecond timeout.
+ /// Some platforms calculate their bias differently, this method can be used to counteract it.
+ ///
+ /// Nanosecond timeout
+ /// Bias in nanoseconds
+ public static long GetBias(long timeoutNs)
+ {
+ if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS())
+ {
+ long biasNs = Math.Min(timeoutNs, MacosBiasMaxNanoseconds);
+ return MacosBaseNanosleepBias + biasNs * MacosBiasPerMillisecond / 1_000_000;
+ }
+ else
+ {
+ long bias = LinuxBaseNanosleepBias;
+
+ if (timeoutNs > LinuxNanosleepBasePenaltyThreshold)
+ {
+ long penalty = (timeoutNs - LinuxNanosleepBasePenaltyThreshold) * LinuxNanosleepPenaltyPerMillisecond / 1_000_000;
+ bias += LinuxNanosleepBasePenalty + Math.Min(LinuxNanosleepPenaltyCap, penalty);
+ }
+
+ return bias;
+ }
+ }
+
+ ///
+ /// Get a stricter bias for a given nanosecond timeout,
+ /// which can improve the chances the sleep completes before the timeout.
+ /// Some platforms calculate their bias differently, this method can be used to counteract it.
+ ///
+ /// Nanosecond timeout
+ /// Strict bias in nanoseconds
+ public static long GetStrictBias(long timeoutNs)
+ {
+ if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS())
+ {
+ return GetBias(timeoutNs) + MacosStrictBiasOffset;
+ }
+ else
+ {
+ long bias = GetBias(timeoutNs) + LinuxStrictBiasOffset;
+
+ if (timeoutNs > LinuxNanosleepAccuracyPenaltyThreshold)
+ {
+ bias += LinuxNanosleepAccuracyPenalty;
+ }
+
+ return bias;
+ }
+ }
+
+ static Nanosleep()
+ {
+ Bias = GetBias(0);
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct Timespec
+ {
+ public long tv_sec; // Seconds
+ public long tv_nsec; // Nanoseconds
+ }
+
+ [LibraryImport("libc", SetLastError = true)]
+ private static partial int nanosleep(ref Timespec req, ref Timespec rem);
+
+ ///
+ /// Convert a timeout in nanoseconds to a timespec for nanosleep.
+ ///
+ /// Timeout in nanoseconds
+ /// Timespec for nanosleep
+ private static Timespec GetTimespecFromNanoseconds(ulong nanoseconds)
+ {
+ return new Timespec
+ {
+ tv_sec = (long)(nanoseconds / 1_000_000_000),
+ tv_nsec = (long)(nanoseconds % 1_000_000_000)
+ };
+ }
+
+ ///
+ /// Sleep for approximately a given time period in nanoseconds.
+ ///
+ /// Time to sleep for in nanoseconds
+ public static void Sleep(long nanoseconds)
+ {
+ nanoseconds -= GetBias(nanoseconds);
+
+ if (nanoseconds >= 0)
+ {
+ Timespec req = GetTimespecFromNanoseconds((ulong)nanoseconds);
+ Timespec rem = new();
+
+ nanosleep(ref req, ref rem);
+ }
+ }
+
+ ///
+ /// Sleep for at most a given time period in nanoseconds.
+ /// Uses a stricter bias to wake before the requested duration.
+ ///
+ ///
+ /// Due to OS scheduling behaviour, this timeframe may still be missed.
+ ///
+ /// Maximum allowed time for sleep
+ public static void SleepAtMost(long nanoseconds)
+ {
+ // Stricter bias to ensure we wake before the timepoint.
+ nanoseconds -= GetStrictBias(nanoseconds);
+
+ if (nanoseconds >= 0)
+ {
+ Timespec req = GetTimespecFromNanoseconds((ulong)nanoseconds);
+ Timespec rem = new();
+
+ nanosleep(ref req, ref rem);
+ }
+ }
+ }
+}
diff --git a/src/Ryujinx.Common/PreciseSleep/NanosleepEvent.cs b/src/Ryujinx.Common/PreciseSleep/NanosleepEvent.cs
new file mode 100644
index 000000000..f54fb09c1
--- /dev/null
+++ b/src/Ryujinx.Common/PreciseSleep/NanosleepEvent.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Runtime.Versioning;
+using System.Threading;
+
+namespace Ryujinx.Common.PreciseSleep
+{
+ ///
+ /// A precise sleep event for linux and macos that uses nanosleep for more precise timeouts.
+ ///
+ [SupportedOSPlatform("macos")]
+ [SupportedOSPlatform("linux")]
+ [SupportedOSPlatform("android")]
+ [SupportedOSPlatform("ios")]
+ internal class NanosleepEvent : IPreciseSleepEvent
+ {
+ private readonly AutoResetEvent _waitEvent = new(false);
+ private readonly NanosleepPool _pool;
+
+ public NanosleepEvent()
+ {
+ _pool = new NanosleepPool(_waitEvent);
+ }
+
+ public long AdjustTimePoint(long timePoint, long timeoutNs)
+ {
+ // No adjustment
+ return timePoint;
+ }
+
+ public bool SleepUntil(long timePoint)
+ {
+ long now = PerformanceCounter.ElapsedTicks;
+ long delta = (timePoint - now);
+ long ms = Math.Min(delta / PerformanceCounter.TicksPerMillisecond, int.MaxValue);
+ long ns = (delta * 1_000_000) / PerformanceCounter.TicksPerMillisecond;
+
+ if (ms > 0)
+ {
+ _waitEvent.WaitOne((int)ms);
+
+ return true;
+ }
+ else if (ns - Nanosleep.Bias > 0)
+ {
+ // Don't bother starting a sleep if there's already a signal active.
+ if (_waitEvent.WaitOne(0))
+ {
+ return true;
+ }
+
+ // The 1ms wait will be interrupted by the nanosleep timeout if it completes.
+ if (!_pool.SleepAndSignal(ns, timePoint))
+ {
+ // Too many threads on the pool.
+ return false;
+ }
+ _waitEvent.WaitOne(1);
+ _pool.IgnoreSignal();
+
+ return true;
+ }
+
+ return false;
+ }
+
+ public void Sleep()
+ {
+ _waitEvent.WaitOne();
+ }
+
+ public void Signal()
+ {
+ _waitEvent.Set();
+ }
+
+ public void Dispose()
+ {
+ GC.SuppressFinalize(this);
+
+ _pool.Dispose();
+ _waitEvent.Dispose();
+ }
+ }
+}
diff --git a/src/Ryujinx.Common/PreciseSleep/NanosleepPool.cs b/src/Ryujinx.Common/PreciseSleep/NanosleepPool.cs
new file mode 100644
index 000000000..c0973dcb3
--- /dev/null
+++ b/src/Ryujinx.Common/PreciseSleep/NanosleepPool.cs
@@ -0,0 +1,228 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.Versioning;
+using System.Threading;
+
+namespace Ryujinx.Common.PreciseSleep
+{
+ ///
+ /// A pool of threads used to allow "interruptable" nanosleep for a single target event.
+ ///
+ [SupportedOSPlatform("macos")]
+ [SupportedOSPlatform("linux")]
+ [SupportedOSPlatform("android")]
+ [SupportedOSPlatform("ios")]
+ internal class NanosleepPool : IDisposable
+ {
+ public const int MaxThreads = 8;
+
+ ///
+ /// A thread that nanosleeps and may signal an event on wake.
+ /// When a thread is assigned a nanosleep to perform, it also gets a signal ID.
+ /// The pool's target event is only signalled if this ID matches the latest dispatched one.
+ ///
+ private class NanosleepThread : IDisposable
+ {
+ private static readonly long _timePointEpsilon;
+
+ static NanosleepThread()
+ {
+ _timePointEpsilon = PerformanceCounter.TicksPerMillisecond / 100; // 0.01ms
+ }
+
+ private readonly Thread _thread;
+ private readonly NanosleepPool _parent;
+ private readonly AutoResetEvent _newWaitEvent;
+ private bool _running = true;
+
+ private long _signalId;
+ private long _nanoseconds;
+ private long _timePoint;
+
+ public long SignalId => _signalId;
+
+ ///
+ /// Creates a new NanosleepThread for a parent pool, with a specified thread ID.
+ ///
+ /// Parent NanosleepPool
+ /// Thread ID
+ public NanosleepThread(NanosleepPool parent, int id)
+ {
+ _parent = parent;
+ _newWaitEvent = new(false);
+
+ _thread = new Thread(Loop)
+ {
+ Name = $"Common.Nanosleep.{id}",
+ Priority = ThreadPriority.AboveNormal,
+ IsBackground = true
+ };
+
+ _thread.Start();
+ }
+
+ ///
+ /// Service requests to perform a nanosleep, signal parent pool when complete.
+ ///
+ private void Loop()
+ {
+ _newWaitEvent.WaitOne();
+
+ while (_running)
+ {
+ Nanosleep.Sleep(_nanoseconds);
+
+ _parent.Signal(this);
+ _newWaitEvent.WaitOne();
+ }
+
+ _newWaitEvent.Dispose();
+ }
+
+ ///
+ /// Assign a nanosleep for this thread to perform, then signal at the end.
+ ///
+ /// Nanoseconds to sleep
+ /// Signal ID
+ /// Target timepoint
+ public void SleepAndSignal(long nanoseconds, long signalId, long timePoint)
+ {
+ _signalId = signalId;
+ _nanoseconds = nanoseconds;
+ _timePoint = timePoint;
+ _newWaitEvent.Set();
+ }
+
+ ///
+ /// Resurrect an active nanosleep's signal if its target timepoint is a close enough match.
+ ///
+ /// New signal id to assign the nanosleep
+ /// Target timepoint
+ /// True if resurrected, false otherwise
+ public bool Resurrect(long signalId, long timePoint)
+ {
+ if (Math.Abs(timePoint - _timePoint) < _timePointEpsilon)
+ {
+ _signalId = signalId;
+
+ return true;
+ }
+
+ return false;
+ }
+
+ ///
+ /// Dispose the NanosleepThread, interrupting its worker loop.
+ ///
+ public void Dispose()
+ {
+ if (_running)
+ {
+ _running = false;
+ _newWaitEvent.Set();
+ }
+ }
+ }
+
+ private readonly object _lock = new();
+ private readonly List _threads = new();
+ private readonly List _active = new();
+ private readonly Stack _free = new();
+ private readonly AutoResetEvent _signalTarget;
+
+ private long _signalId;
+
+ ///
+ /// Creates a new NanosleepPool with a target event to signal when a nanosleep completes.
+ ///
+ /// Event to signal when nanosleeps complete
+ public NanosleepPool(AutoResetEvent signalTarget)
+ {
+ _signalTarget = signalTarget;
+ }
+
+ ///
+ /// Signal the target event (if the source sleep has not been superseded)
+ /// and free the nanosleep thread.
+ ///
+ /// Nanosleep thread that completed
+ private void Signal(NanosleepThread thread)
+ {
+ lock (_lock)
+ {
+ _active.Remove(thread);
+ _free.Push(thread);
+
+ if (thread.SignalId == _signalId)
+ {
+ _signalTarget.Set();
+ }
+ }
+ }
+
+ ///
+ /// Sleep for the given number of nanoseconds and signal the target event.
+ /// This does not block the caller thread.
+ ///
+ /// Nanoseconds to sleep
+ /// Target timepoint
+ /// True if the signal will be set, false otherwise
+ public bool SleepAndSignal(long nanoseconds, long timePoint)
+ {
+ lock (_lock)
+ {
+ _signalId++;
+
+ // Check active sleeps, if any line up with the requested timepoint then resurrect that nanosleep.
+ foreach (NanosleepThread existing in _active)
+ {
+ if (existing.Resurrect(_signalId, timePoint))
+ {
+ return true;
+ }
+ }
+
+ if (!_free.TryPop(out NanosleepThread thread))
+ {
+ if (_threads.Count >= MaxThreads)
+ {
+ return false;
+ }
+
+ thread = new NanosleepThread(this, _threads.Count);
+
+ _threads.Add(thread);
+ }
+
+ _active.Add(thread);
+
+ thread.SleepAndSignal(nanoseconds, _signalId, timePoint);
+
+ return true;
+ }
+ }
+
+ ///
+ /// Ignore the latest nanosleep.
+ ///
+ public void IgnoreSignal()
+ {
+ _signalId++;
+ }
+
+ ///
+ /// Dispose the NanosleepPool, disposing all of its active threads.
+ ///
+ public void Dispose()
+ {
+ GC.SuppressFinalize(this);
+
+ foreach (NanosleepThread thread in _threads)
+ {
+ thread.Dispose();
+ }
+
+ _threads.Clear();
+ }
+ }
+}
diff --git a/src/Ryujinx.Common/PreciseSleep/PreciseSleepHelper.cs b/src/Ryujinx.Common/PreciseSleep/PreciseSleepHelper.cs
new file mode 100644
index 000000000..3c30a7f60
--- /dev/null
+++ b/src/Ryujinx.Common/PreciseSleep/PreciseSleepHelper.cs
@@ -0,0 +1,104 @@
+using Ryujinx.Common.SystemInterop;
+using System;
+using System.Threading;
+
+namespace Ryujinx.Common.PreciseSleep
+{
+ public static class PreciseSleepHelper
+ {
+ ///
+ /// Create a precise sleep event for the current platform.
+ ///
+ /// A precise sleep event
+ public static IPreciseSleepEvent CreateEvent()
+ {
+ if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || OperatingSystem.IsAndroid())
+ {
+ return new NanosleepEvent();
+ }
+ else if (OperatingSystem.IsWindows())
+ {
+ return new WindowsSleepEvent();
+ }
+ else
+ {
+ return new SleepEvent();
+ }
+ }
+
+ ///
+ /// Sleeps up to the closest point to the timepoint that the OS reasonably allows.
+ /// The provided event is used by the timer to wake the current thread, and should not be signalled from any other source.
+ ///
+ /// Event used to wake this thread
+ /// Target timepoint in host ticks
+ public static void SleepUntilTimePoint(EventWaitHandle evt, long timePoint)
+ {
+ if (OperatingSystem.IsWindows())
+ {
+ WindowsGranularTimer.Instance.SleepUntilTimePointWithoutExternalSignal(evt, timePoint);
+ }
+ else
+ {
+ // Events might oversleep by a little, depending on OS.
+ // We don't want to miss the timepoint, so bias the wait to be lower.
+ // Nanosleep can possibly handle it better, too.
+ long accuracyBias = PerformanceCounter.TicksPerMillisecond / 2;
+ long now = PerformanceCounter.ElapsedTicks + accuracyBias;
+ long ms = Math.Min((timePoint - now) / PerformanceCounter.TicksPerMillisecond, int.MaxValue);
+
+ if (ms > 0)
+ {
+ evt.WaitOne((int)ms);
+ }
+
+ if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || OperatingSystem.IsAndroid())
+ {
+ // Do a nanosleep.
+ now = PerformanceCounter.ElapsedTicks;
+ long ns = ((timePoint - now) * 1_000_000) / PerformanceCounter.TicksPerMillisecond;
+
+ Nanosleep.SleepAtMost(ns);
+ }
+ }
+ }
+
+ ///
+ /// Spinwait until the given timepoint. If wakeSignal is or becomes 1, return early.
+ /// Thread is allowed to yield.
+ ///
+ /// Target timepoint in host ticks
+ /// Returns early if this is set to 1
+ public static void SpinWaitUntilTimePoint(long timePoint, ref long wakeSignal)
+ {
+ SpinWait spinWait = new();
+
+ while (Interlocked.Read(ref wakeSignal) != 1 && PerformanceCounter.ElapsedTicks < timePoint)
+ {
+ // Our time is close - don't let SpinWait go off and potentially Thread.Sleep().
+ if (spinWait.NextSpinWillYield)
+ {
+ Thread.Yield();
+
+ spinWait.Reset();
+ }
+ else
+ {
+ spinWait.SpinOnce();
+ }
+ }
+ }
+
+ ///
+ /// Spinwait until the given timepoint, with no opportunity to wake early.
+ ///
+ /// Target timepoint in host ticks
+ public static void SpinWaitUntilTimePoint(long timePoint)
+ {
+ while (PerformanceCounter.ElapsedTicks < timePoint)
+ {
+ Thread.SpinWait(5);
+ }
+ }
+ }
+}
diff --git a/src/Ryujinx.Common/PreciseSleep/SleepEvent.cs b/src/Ryujinx.Common/PreciseSleep/SleepEvent.cs
new file mode 100644
index 000000000..f0769d1e4
--- /dev/null
+++ b/src/Ryujinx.Common/PreciseSleep/SleepEvent.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Threading;
+
+namespace Ryujinx.Common.PreciseSleep
+{
+ ///
+ /// A cross-platform precise sleep event that has millisecond granularity.
+ ///
+ internal class SleepEvent : IPreciseSleepEvent
+ {
+ private readonly AutoResetEvent _waitEvent = new(false);
+
+ public long AdjustTimePoint(long timePoint, long timeoutNs)
+ {
+ // No adjustment
+ return timePoint;
+ }
+
+ public bool SleepUntil(long timePoint)
+ {
+ long now = PerformanceCounter.ElapsedTicks;
+ long ms = Math.Min((timePoint - now) / PerformanceCounter.TicksPerMillisecond, int.MaxValue);
+
+ if (ms > 0)
+ {
+ _waitEvent.WaitOne((int)ms);
+
+ return true;
+ }
+
+ return false;
+ }
+
+ public void Sleep()
+ {
+ _waitEvent.WaitOne();
+ }
+
+ public void Signal()
+ {
+ _waitEvent.Set();
+ }
+
+ public void Dispose()
+ {
+ GC.SuppressFinalize(this);
+
+ _waitEvent.Dispose();
+ }
+ }
+}
diff --git a/src/Ryujinx.Common/PreciseSleep/WindowsGranularTimer.cs b/src/Ryujinx.Common/PreciseSleep/WindowsGranularTimer.cs
new file mode 100644
index 000000000..3bf092704
--- /dev/null
+++ b/src/Ryujinx.Common/PreciseSleep/WindowsGranularTimer.cs
@@ -0,0 +1,220 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Runtime.Versioning;
+using System.Threading;
+
+namespace Ryujinx.Common.SystemInterop
+{
+ ///
+ /// Timer that attempts to align with the hardware timer interrupt,
+ /// and can alert listeners on ticks.
+ ///
+ [SupportedOSPlatform("windows")]
+ internal partial class WindowsGranularTimer
+ {
+ private const int MinimumGranularity = 5000;
+
+ private static readonly WindowsGranularTimer _instance = new();
+ public static WindowsGranularTimer Instance => _instance;
+
+ private readonly struct WaitingObject
+ {
+ public readonly long Id;
+ public readonly EventWaitHandle Signal;
+ public readonly long TimePoint;
+
+ public WaitingObject(long id, EventWaitHandle signal, long timePoint)
+ {
+ Id = id;
+ Signal = signal;
+ TimePoint = timePoint;
+ }
+ }
+
+ [LibraryImport("ntdll.dll", SetLastError = true)]
+ private static partial int NtSetTimerResolution(int DesiredResolution, [MarshalAs(UnmanagedType.Bool)] bool SetResolution, out int CurrentResolution);
+
+ [LibraryImport("ntdll.dll", SetLastError = true)]
+ private static partial int NtQueryTimerResolution(out int MaximumResolution, out int MinimumResolution, out int CurrentResolution);
+
+ [LibraryImport("ntdll.dll", SetLastError = true)]
+ private static partial uint NtDelayExecution([MarshalAs(UnmanagedType.Bool)] bool Alertable, ref long DelayInterval);
+
+ public long GranularityNs => _granularityNs;
+ public long GranularityTicks => _granularityTicks;
+
+ private readonly Thread _timerThread;
+ private long _granularityNs = MinimumGranularity * 100L;
+ private long _granularityTicks;
+ private long _lastTicks = PerformanceCounter.ElapsedTicks;
+ private long _lastId;
+
+ private readonly object _lock = new();
+ private readonly List _waitingObjects = new();
+
+ private WindowsGranularTimer()
+ {
+ _timerThread = new Thread(Loop)
+ {
+ IsBackground = true,
+ Name = "Common.WindowsTimer",
+ Priority = ThreadPriority.Highest
+ };
+
+ _timerThread.Start();
+ }
+
+ ///
+ /// Measure and initialize the timer's target granularity.
+ ///
+ private void Initialize()
+ {
+ NtQueryTimerResolution(out _, out int min, out int curr);
+
+ if (min > 0)
+ {
+ min = Math.Max(min, MinimumGranularity);
+
+ _granularityNs = min * 100L;
+ NtSetTimerResolution(min, true, out _);
+ }
+ else
+ {
+ _granularityNs = curr * 100L;
+ }
+
+ _granularityTicks = (_granularityNs * PerformanceCounter.TicksPerMillisecond) / 1_000_000;
+ }
+
+ ///
+ /// Main loop for the timer thread. Wakes every clock tick and signals any listeners,
+ /// as well as keeping track of clock alignment.
+ ///
+ private void Loop()
+ {
+ Initialize();
+ while (true)
+ {
+ long delayInterval = -1; // Next tick
+ NtSetTimerResolution((int)(_granularityNs / 100), true, out _);
+ NtDelayExecution(false, ref delayInterval);
+
+ long newTicks = PerformanceCounter.ElapsedTicks;
+ long nextTicks = newTicks + _granularityTicks;
+
+ lock (_lock)
+ {
+ for (int i = 0; i < _waitingObjects.Count; i++)
+ {
+ if (nextTicks > _waitingObjects[i].TimePoint)
+ {
+ // The next clock tick will be after the timepoint, we need to signal now.
+ _waitingObjects[i].Signal.Set();
+
+ _waitingObjects.RemoveAt(i--);
+ }
+ }
+
+ _lastTicks = newTicks;
+ }
+ }
+ }
+
+ ///
+ /// Sleep until a timepoint.
+ ///
+ /// Reset event to use to be awoken by the clock tick, or an external signal
+ /// Target timepoint
+ /// True if waited or signalled, false otherwise
+ public bool SleepUntilTimePoint(AutoResetEvent evt, long timePoint)
+ {
+ if (evt.WaitOne(0))
+ {
+ return true;
+ }
+
+ long id;
+
+ lock (_lock)
+ {
+ // Return immediately if the next tick is after the requested timepoint.
+ long nextTicks = _lastTicks + _granularityTicks;
+
+ if (nextTicks > timePoint)
+ {
+ return false;
+ }
+
+ id = ++_lastId;
+
+ _waitingObjects.Add(new WaitingObject(id, evt, timePoint));
+ }
+
+ evt.WaitOne();
+
+ lock (_lock)
+ {
+ for (int i = 0; i < _waitingObjects.Count; i++)
+ {
+ if (id == _waitingObjects[i].Id)
+ {
+ _waitingObjects.RemoveAt(i--);
+ break;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ ///
+ /// Sleep until a timepoint, but don't expect any external signals.
+ ///
+ ///
+ /// Saves some effort compared to the sleep that expects to be signalled.
+ ///
+ /// Reset event to use to be awoken by the clock tick
+ /// Target timepoint
+ /// True if waited, false otherwise
+ public bool SleepUntilTimePointWithoutExternalSignal(EventWaitHandle evt, long timePoint)
+ {
+ long id;
+
+ lock (_lock)
+ {
+ // Return immediately if the next tick is after the requested timepoint.
+ long nextTicks = _lastTicks + _granularityTicks;
+
+ if (nextTicks > timePoint)
+ {
+ return false;
+ }
+
+ id = ++_lastId;
+
+ _waitingObjects.Add(new WaitingObject(id, evt, timePoint));
+ }
+
+ evt.WaitOne();
+
+ return true;
+ }
+
+ ///
+ /// Returns the two nearest clock ticks for a given timepoint.
+ ///
+ /// Target timepoint
+ /// The nearest clock ticks before and after the given timepoint
+ public (long, long) ReturnNearestTicks(long timePoint)
+ {
+ long last = _lastTicks;
+ long delta = timePoint - last;
+
+ long lowTicks = delta / _granularityTicks;
+ long highTicks = (delta + _granularityTicks - 1) / _granularityTicks;
+
+ return (last + lowTicks * _granularityTicks, last + highTicks * _granularityTicks);
+ }
+ }
+}
diff --git a/src/Ryujinx.Common/PreciseSleep/WindowsSleepEvent.cs b/src/Ryujinx.Common/PreciseSleep/WindowsSleepEvent.cs
new file mode 100644
index 000000000..87c10d18e
--- /dev/null
+++ b/src/Ryujinx.Common/PreciseSleep/WindowsSleepEvent.cs
@@ -0,0 +1,92 @@
+using Ryujinx.Common.SystemInterop;
+using System;
+using System.Runtime.Versioning;
+using System.Threading;
+
+namespace Ryujinx.Common.PreciseSleep
+{
+ ///
+ /// A precise sleep event that uses Windows specific methods to increase clock resolution beyond 1ms,
+ /// use the clock's phase for more precise waits, and potentially align timepoints with it.
+ ///
+ [SupportedOSPlatform("windows")]
+ internal class WindowsSleepEvent : IPreciseSleepEvent
+ {
+ ///
+ /// The clock can drift a bit, so add this to encourage the clock to still wait if the next tick is forecasted slightly before it.
+ ///
+ private const long ErrorBias = 50000;
+
+ ///
+ /// Allowed to be 0.05ms away from the clock granularity to reduce precision.
+ ///
+ private const long ClockAlignedBias = 50000;
+
+ ///
+ /// The fraction of clock granularity above the timepoint that will align it down to the lower timepoint.
+ /// Currently set to the lower 1/4, so for 0.5ms granularity: 0.1ms would be rounded down, 0.2 ms would be rounded up.
+ ///
+ private const long ReverseTimePointFraction = 4;
+
+ private readonly AutoResetEvent _waitEvent = new(false);
+ private readonly WindowsGranularTimer _timer = WindowsGranularTimer.Instance;
+
+ ///
+ /// Set to true to disable timepoint realignment.
+ ///
+ public bool Precise { get; set; } = false;
+
+ public long AdjustTimePoint(long timePoint, long timeoutNs)
+ {
+ if (Precise || timePoint == long.MaxValue)
+ {
+ return timePoint;
+ }
+
+ // Does the timeout align with the host clock?
+
+ long granularity = _timer.GranularityNs;
+ long misalignment = timeoutNs % granularity;
+
+ if ((misalignment < ClockAlignedBias || misalignment > granularity - ClockAlignedBias) && timeoutNs > ClockAlignedBias)
+ {
+ // Inaccurate sleep for 0.5ms increments, typically.
+
+ (long low, long high) = _timer.ReturnNearestTicks(timePoint);
+
+ if (timePoint - low < _timer.GranularityTicks / ReverseTimePointFraction)
+ {
+ timePoint = low;
+ }
+ else
+ {
+ timePoint = high;
+ }
+ }
+
+ return timePoint;
+ }
+
+ public bool SleepUntil(long timePoint)
+ {
+ return _timer.SleepUntilTimePoint(_waitEvent, timePoint + (ErrorBias * PerformanceCounter.TicksPerMillisecond) / 1_000_000);
+ }
+
+ public void Sleep()
+ {
+ _waitEvent.WaitOne();
+ }
+
+ public void Signal()
+ {
+ _waitEvent.Set();
+ }
+
+ public void Dispose()
+ {
+ GC.SuppressFinalize(this);
+
+ _waitEvent.Dispose();
+ }
+ }
+}
diff --git a/src/Ryujinx.Common/ReactiveObject.cs b/src/Ryujinx.Common/ReactiveObject.cs
index ac7d2c4d8..4831edb52 100644
--- a/src/Ryujinx.Common/ReactiveObject.cs
+++ b/src/Ryujinx.Common/ReactiveObject.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading;
namespace Ryujinx.Common
diff --git a/src/Ryujinx.Common/ReferenceEqualityComparer.cs b/src/Ryujinx.Common/ReferenceEqualityComparer.cs
index d8ec29d83..714a967a4 100644
--- a/src/Ryujinx.Common/ReferenceEqualityComparer.cs
+++ b/src/Ryujinx.Common/ReferenceEqualityComparer.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.Common
diff --git a/src/Ryujinx.Common/ReleaseInformation.cs b/src/Ryujinx.Common/ReleaseInformation.cs
index b561ef03e..ab65a98f3 100644
--- a/src/Ryujinx.Common/ReleaseInformation.cs
+++ b/src/Ryujinx.Common/ReleaseInformation.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration;
+using Ryujinx.Common.Configuration;
using System;
using System.Reflection;
diff --git a/src/Ryujinx.Common/SystemInterop/ForceDpiAware.cs b/src/Ryujinx.Common/SystemInterop/ForceDpiAware.cs
index 3af96ba12..b8e1df7d2 100644
--- a/src/Ryujinx.Common/SystemInterop/ForceDpiAware.cs
+++ b/src/Ryujinx.Common/SystemInterop/ForceDpiAware.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using System;
using System.Globalization;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/SystemInterop/GdiPlusHelper.cs b/src/Ryujinx.Common/SystemInterop/GdiPlusHelper.cs
index bedf56ea4..7e8e9f2a5 100644
--- a/src/Ryujinx.Common/SystemInterop/GdiPlusHelper.cs
+++ b/src/Ryujinx.Common/SystemInterop/GdiPlusHelper.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx.Common/SystemInterop/WindowsMultimediaTimerResolution.cs b/src/Ryujinx.Common/SystemInterop/WindowsMultimediaTimerResolution.cs
index 88acadd57..0fbce37e2 100644
--- a/src/Ryujinx.Common/SystemInterop/WindowsMultimediaTimerResolution.cs
+++ b/src/Ryujinx.Common/SystemInterop/WindowsMultimediaTimerResolution.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/Utilities/Buffers.cs b/src/Ryujinx.Common/Utilities/Buffers.cs
index c85b87130..b66f6025e 100644
--- a/src/Ryujinx.Common/Utilities/Buffers.cs
+++ b/src/Ryujinx.Common/Utilities/Buffers.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/Utilities/CommonJsonContext.cs b/src/Ryujinx.Common/Utilities/CommonJsonContext.cs
index 93f065122..6c59ccae4 100644
--- a/src/Ryujinx.Common/Utilities/CommonJsonContext.cs
+++ b/src/Ryujinx.Common/Utilities/CommonJsonContext.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Utilities
diff --git a/src/Ryujinx.Common/Utilities/HexUtils.cs b/src/Ryujinx.Common/Utilities/HexUtils.cs
index 4690eaa1f..cf975e44a 100644
--- a/src/Ryujinx.Common/Utilities/HexUtils.cs
+++ b/src/Ryujinx.Common/Utilities/HexUtils.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Text;
namespace Ryujinx.Common
diff --git a/src/Ryujinx.Common/Utilities/JsonHelper.cs b/src/Ryujinx.Common/Utilities/JsonHelper.cs
index d4ecf5e9b..95daec27a 100644
--- a/src/Ryujinx.Common/Utilities/JsonHelper.cs
+++ b/src/Ryujinx.Common/Utilities/JsonHelper.cs
@@ -1,4 +1,4 @@
-using System.IO;
+using System.IO;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization.Metadata;
diff --git a/src/Ryujinx.Common/Utilities/MessagePackObjectFormatter.cs b/src/Ryujinx.Common/Utilities/MessagePackObjectFormatter.cs
index a7c596bae..426cd46b7 100644
--- a/src/Ryujinx.Common/Utilities/MessagePackObjectFormatter.cs
+++ b/src/Ryujinx.Common/Utilities/MessagePackObjectFormatter.cs
@@ -1,4 +1,4 @@
-using MsgPack;
+using MsgPack;
using System;
using System.Text;
diff --git a/src/Ryujinx.Common/Utilities/NetworkHelpers.cs b/src/Ryujinx.Common/Utilities/NetworkHelpers.cs
index 3b64a28f5..71e02184e 100644
--- a/src/Ryujinx.Common/Utilities/NetworkHelpers.cs
+++ b/src/Ryujinx.Common/Utilities/NetworkHelpers.cs
@@ -1,4 +1,4 @@
-using System.Buffers.Binary;
+using System.Buffers.Binary;
using System.Net;
using System.Net.NetworkInformation;
diff --git a/src/Ryujinx.Common/Utilities/SpanHelpers.cs b/src/Ryujinx.Common/Utilities/SpanHelpers.cs
index 4765eab3a..8c8e00a45 100644
--- a/src/Ryujinx.Common/Utilities/SpanHelpers.cs
+++ b/src/Ryujinx.Common/Utilities/SpanHelpers.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Common/Utilities/StreamUtils.cs b/src/Ryujinx.Common/Utilities/StreamUtils.cs
index 4d090fe98..7a20c98e9 100644
--- a/src/Ryujinx.Common/Utilities/StreamUtils.cs
+++ b/src/Ryujinx.Common/Utilities/StreamUtils.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
diff --git a/src/Ryujinx.Common/Utilities/TypedStringEnumConverter.cs b/src/Ryujinx.Common/Utilities/TypedStringEnumConverter.cs
index 9c575d69f..9d3944c15 100644
--- a/src/Ryujinx.Common/Utilities/TypedStringEnumConverter.cs
+++ b/src/Ryujinx.Common/Utilities/TypedStringEnumConverter.cs
@@ -1,4 +1,4 @@
-#nullable enable
+#nullable enable
using Ryujinx.Common.Logging;
using System;
using System.Text.Json;
diff --git a/src/Ryujinx.Common/XXHash128.cs b/src/Ryujinx.Common/XXHash128.cs
index 62e23fc23..686867c9d 100644
--- a/src/Ryujinx.Common/XXHash128.cs
+++ b/src/Ryujinx.Common/XXHash128.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Buffers.Binary;
using System.Diagnostics;
using System.Numerics;
diff --git a/src/Ryujinx.Cpu/AppleHv/HvCodePatcher.cs b/src/Ryujinx.Cpu/AppleHv/HvCodePatcher.cs
deleted file mode 100644
index 876597b78..000000000
--- a/src/Ryujinx.Cpu/AppleHv/HvCodePatcher.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Runtime.Intrinsics;
-
-namespace Ryujinx.Cpu.AppleHv
-{
- static class HvCodePatcher
- {
- private const uint XMask = 0x3f808000u;
- private const uint XValue = 0x8000000u;
-
- private const uint ZrIndex = 31u;
-
- public static void RewriteUnorderedExclusiveInstructions(Span code)
- {
- Span codeUint = MemoryMarshal.Cast(code);
- Span> codeVector = MemoryMarshal.Cast>(code);
-
- Vector128 mask = Vector128.Create(XMask);
- Vector128 value = Vector128.Create(XValue);
-
- for (int index = 0; index < codeVector.Length; index++)
- {
- Vector128 v = codeVector[index];
-
- if (Vector128.EqualsAny(Vector128.BitwiseAnd(v, mask), value))
- {
- int baseIndex = index * 4;
-
- for (int instIndex = baseIndex; instIndex < baseIndex + 4; instIndex++)
- {
- ref uint inst = ref codeUint[instIndex];
-
- if ((inst & XMask) != XValue)
- {
- continue;
- }
-
- bool isPair = (inst & (1u << 21)) != 0;
- bool isLoad = (inst & (1u << 22)) != 0;
-
- uint rt2 = (inst >> 10) & 0x1fu;
- uint rs = (inst >> 16) & 0x1fu;
-
- if (isLoad && rs != ZrIndex)
- {
- continue;
- }
-
- if (!isPair && rt2 != ZrIndex)
- {
- continue;
- }
-
- // Set the ordered flag.
- inst |= 1u << 15;
- }
- }
- }
- }
- }
-}
diff --git a/src/Ryujinx.Cpu/AppleHv/HvMemoryManager.cs b/src/Ryujinx.Cpu/AppleHv/HvMemoryManager.cs
index 947c37100..2f9743ab4 100644
--- a/src/Ryujinx.Cpu/AppleHv/HvMemoryManager.cs
+++ b/src/Ryujinx.Cpu/AppleHv/HvMemoryManager.cs
@@ -724,18 +724,6 @@ namespace Ryujinx.Cpu.AppleHv
///
public void Reprotect(ulong va, ulong size, MemoryPermission protection)
{
- if (protection.HasFlag(MemoryPermission.Execute))
- {
- // Some applications use unordered exclusive memory access instructions
- // where it is not valid to do so, leading to memory re-ordering that
- // makes the code behave incorrectly on some CPUs.
- // To work around this, we force all such accesses to be ordered.
-
- using WritableRegion writableRegion = GetWritableRegion(va, (int)size);
-
- HvCodePatcher.RewriteUnorderedExclusiveInstructions(writableRegion.Memory.Span);
- }
-
// TODO
}
diff --git a/src/Ryujinx.Cpu/IVirtualMemoryManagerTracked.cs b/src/Ryujinx.Cpu/IVirtualMemoryManagerTracked.cs
index 5fa88d623..199bff240 100644
--- a/src/Ryujinx.Cpu/IVirtualMemoryManagerTracked.cs
+++ b/src/Ryujinx.Cpu/IVirtualMemoryManagerTracked.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory;
+using Ryujinx.Memory;
using Ryujinx.Memory.Tracking;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Cpu/Jit/JitCpuContext.cs b/src/Ryujinx.Cpu/Jit/JitCpuContext.cs
index 02465a0b3..5876346a0 100644
--- a/src/Ryujinx.Cpu/Jit/JitCpuContext.cs
+++ b/src/Ryujinx.Cpu/Jit/JitCpuContext.cs
@@ -1,5 +1,7 @@
-using ARMeilleure.Memory;
+using ARMeilleure.Memory;
using ARMeilleure.Translation;
+using Ryujinx.Cpu.Signal;
+using Ryujinx.Memory;
namespace Ryujinx.Cpu.Jit
{
@@ -12,6 +14,12 @@ namespace Ryujinx.Cpu.Jit
{
_tickSource = tickSource;
_translator = new Translator(new JitMemoryAllocator(), memory, for64Bit);
+
+ if (memory.Type.IsHostMapped())
+ {
+ NativeSignalHandler.InitializeSignalHandler(MemoryBlock.GetPageSize());
+ }
+
memory.UnmapEvent += UnmapHandler;
}
diff --git a/src/Ryujinx.Cpu/Jit/JitMemoryAllocator.cs b/src/Ryujinx.Cpu/Jit/JitMemoryAllocator.cs
index 4aa78d06c..eb665c2df 100644
--- a/src/Ryujinx.Cpu/Jit/JitMemoryAllocator.cs
+++ b/src/Ryujinx.Cpu/Jit/JitMemoryAllocator.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Memory;
+using ARMeilleure.Memory;
using Ryujinx.Memory;
namespace Ryujinx.Cpu.Jit
@@ -7,7 +7,5 @@ namespace Ryujinx.Cpu.Jit
{
public IJitMemoryBlock Allocate(ulong size) => new JitMemoryBlock(size, MemoryAllocationFlags.None);
public IJitMemoryBlock Reserve(ulong size) => new JitMemoryBlock(size, MemoryAllocationFlags.Reserve | MemoryAllocationFlags.Jit);
-
- public ulong GetPageSize() => MemoryBlock.GetPageSize();
}
}
diff --git a/src/Ryujinx.Cpu/Jit/JitMemoryBlock.cs b/src/Ryujinx.Cpu/Jit/JitMemoryBlock.cs
index ed160680a..bcacd116a 100644
--- a/src/Ryujinx.Cpu/Jit/JitMemoryBlock.cs
+++ b/src/Ryujinx.Cpu/Jit/JitMemoryBlock.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Memory;
+using ARMeilleure.Memory;
using Ryujinx.Memory;
using System;
diff --git a/src/Ryujinx.Cpu/Jit/MemoryManager.cs b/src/Ryujinx.Cpu/Jit/MemoryManager.cs
index 912e3f7e3..b9a547025 100644
--- a/src/Ryujinx.Cpu/Jit/MemoryManager.cs
+++ b/src/Ryujinx.Cpu/Jit/MemoryManager.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Memory;
+using ARMeilleure.Memory;
using Ryujinx.Memory;
using Ryujinx.Memory.Range;
using Ryujinx.Memory.Tracking;
diff --git a/src/Ryujinx.Cpu/Jit/MemoryManagerHostMapped.cs b/src/Ryujinx.Cpu/Jit/MemoryManagerHostMapped.cs
index 6d32787ac..2b315e841 100644
--- a/src/Ryujinx.Cpu/Jit/MemoryManagerHostMapped.cs
+++ b/src/Ryujinx.Cpu/Jit/MemoryManagerHostMapped.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Memory;
+using ARMeilleure.Memory;
using Ryujinx.Memory;
using Ryujinx.Memory.Range;
using Ryujinx.Memory.Tracking;
diff --git a/src/Ryujinx.Cpu/MemoryEhMeilleure.cs b/src/Ryujinx.Cpu/MemoryEhMeilleure.cs
index 9aa101aa9..f3a5b056b 100644
--- a/src/Ryujinx.Cpu/MemoryEhMeilleure.cs
+++ b/src/Ryujinx.Cpu/MemoryEhMeilleure.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Signal;
+using Ryujinx.Cpu.Signal;
using Ryujinx.Memory;
using Ryujinx.Memory.Tracking;
using System;
diff --git a/src/Ryujinx.Cpu/MemoryHelper.cs b/src/Ryujinx.Cpu/MemoryHelper.cs
index ee14ee958..e3d08ad5a 100644
--- a/src/Ryujinx.Cpu/MemoryHelper.cs
+++ b/src/Ryujinx.Cpu/MemoryHelper.cs
@@ -1,4 +1,4 @@
-using Microsoft.IO;
+using Microsoft.IO;
using Ryujinx.Common.Memory;
using Ryujinx.Memory;
using System;
diff --git a/src/Ryujinx.Cpu/MemoryManagerBase.cs b/src/Ryujinx.Cpu/MemoryManagerBase.cs
index d2fc7a196..3288e3a49 100644
--- a/src/Ryujinx.Cpu/MemoryManagerBase.cs
+++ b/src/Ryujinx.Cpu/MemoryManagerBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory;
+using Ryujinx.Memory;
using System.Diagnostics;
using System.Threading;
diff --git a/src/Ryujinx.Cpu/Signal/NativeSignalHandler.cs b/src/Ryujinx.Cpu/Signal/NativeSignalHandler.cs
new file mode 100644
index 000000000..5a9d92cc4
--- /dev/null
+++ b/src/Ryujinx.Cpu/Signal/NativeSignalHandler.cs
@@ -0,0 +1,179 @@
+using ARMeilleure.Signal;
+using Ryujinx.Common;
+using Ryujinx.Memory;
+using System;
+using System.Diagnostics;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.Cpu.Signal
+{
+ [StructLayout(LayoutKind.Sequential, Pack = 1)]
+ struct SignalHandlerRange
+ {
+ public int IsActive;
+ public nuint RangeAddress;
+ public nuint RangeEndAddress;
+ public IntPtr ActionPointer;
+ }
+
+ [InlineArray(NativeSignalHandlerGenerator.MaxTrackedRanges)]
+ struct SignalHandlerRangeArray
+ {
+ public SignalHandlerRange Range0;
+ }
+
+ [StructLayout(LayoutKind.Sequential, Pack = 1)]
+ struct SignalHandlerConfig
+ {
+ ///
+ /// The byte offset of the faulting address in the SigInfo or ExceptionRecord struct.
+ ///
+ public int StructAddressOffset;
+
+ ///
+ /// The byte offset of the write flag in the SigInfo or ExceptionRecord struct.
+ ///
+ public int StructWriteOffset;
+
+ ///
+ /// The sigaction handler that was registered before this one. (unix only)
+ ///
+ public nuint UnixOldSigaction;
+
+ ///
+ /// The type of the previous sigaction. True for the 3 argument variant. (unix only)
+ ///
+ public int UnixOldSigaction3Arg;
+
+ ///
+ /// Fixed size array of tracked ranges.
+ ///
+ public SignalHandlerRangeArray Ranges;
+ }
+
+ static class NativeSignalHandler
+ {
+ private static readonly IntPtr _handlerConfig;
+ private static IntPtr _signalHandlerPtr;
+
+ private static MemoryBlock _codeBlock;
+
+ private static readonly object _lock = new();
+ private static bool _initialized;
+
+ static NativeSignalHandler()
+ {
+ _handlerConfig = Marshal.AllocHGlobal(Unsafe.SizeOf());
+ ref SignalHandlerConfig config = ref GetConfigRef();
+
+ config = new SignalHandlerConfig();
+ }
+
+ public static void InitializeSignalHandler(ulong pageSize, Func customSignalHandlerFactory = null)
+ {
+ if (_initialized)
+ {
+ return;
+ }
+
+ lock (_lock)
+ {
+ if (_initialized)
+ {
+ return;
+ }
+
+ int rangeStructSize = Unsafe.SizeOf();
+
+ ref SignalHandlerConfig config = ref GetConfigRef();
+
+ if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS())
+ {
+ _signalHandlerPtr = MapCode(NativeSignalHandlerGenerator.GenerateUnixSignalHandler(_handlerConfig, rangeStructSize, pageSize));
+
+ if (customSignalHandlerFactory != null)
+ {
+ _signalHandlerPtr = customSignalHandlerFactory(UnixSignalHandlerRegistration.GetSegfaultExceptionHandler().sa_handler, _signalHandlerPtr);
+ }
+
+ var old = UnixSignalHandlerRegistration.RegisterExceptionHandler(_signalHandlerPtr);
+
+ config.UnixOldSigaction = (nuint)(ulong)old.sa_handler;
+ config.UnixOldSigaction3Arg = old.sa_flags & 4;
+ }
+ else
+ {
+ config.StructAddressOffset = 40; // ExceptionInformation1
+ config.StructWriteOffset = 32; // ExceptionInformation0
+
+ _signalHandlerPtr = MapCode(NativeSignalHandlerGenerator.GenerateWindowsSignalHandler(_handlerConfig, rangeStructSize, pageSize));
+
+ if (customSignalHandlerFactory != null)
+ {
+ _signalHandlerPtr = customSignalHandlerFactory(IntPtr.Zero, _signalHandlerPtr);
+ }
+
+ WindowsSignalHandlerRegistration.RegisterExceptionHandler(_signalHandlerPtr);
+ }
+
+ _initialized = true;
+ }
+ }
+
+ private static IntPtr MapCode(ReadOnlySpan code)
+ {
+ Debug.Assert(_codeBlock == null);
+
+ ulong codeSizeAligned = BitUtils.AlignUp((ulong)code.Length, MemoryBlock.GetPageSize());
+
+ _codeBlock = new MemoryBlock(codeSizeAligned);
+ _codeBlock.Write(0, code);
+ _codeBlock.Reprotect(0, codeSizeAligned, MemoryPermission.ReadAndExecute);
+
+ return _codeBlock.Pointer;
+ }
+
+ private static unsafe ref SignalHandlerConfig GetConfigRef()
+ {
+ return ref Unsafe.AsRef((void*)_handlerConfig);
+ }
+
+ public static bool AddTrackedRegion(nuint address, nuint endAddress, IntPtr action)
+ {
+ Span ranges = GetConfigRef().Ranges;
+
+ for (int i = 0; i < NativeSignalHandlerGenerator.MaxTrackedRanges; i++)
+ {
+ if (ranges[i].IsActive == 0)
+ {
+ ranges[i].RangeAddress = address;
+ ranges[i].RangeEndAddress = endAddress;
+ ranges[i].ActionPointer = action;
+ ranges[i].IsActive = 1;
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public static bool RemoveTrackedRegion(nuint address)
+ {
+ Span ranges = GetConfigRef().Ranges;
+
+ for (int i = 0; i < NativeSignalHandlerGenerator.MaxTrackedRanges; i++)
+ {
+ if (ranges[i].IsActive == 1 && ranges[i].RangeAddress == address)
+ {
+ ranges[i].IsActive = 0;
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/src/ARMeilleure/Signal/UnixSignalHandlerRegistration.cs b/src/Ryujinx.Cpu/Signal/UnixSignalHandlerRegistration.cs
similarity index 98%
rename from src/ARMeilleure/Signal/UnixSignalHandlerRegistration.cs
rename to src/Ryujinx.Cpu/Signal/UnixSignalHandlerRegistration.cs
index 79a8f803d..e88a6c0f6 100644
--- a/src/ARMeilleure/Signal/UnixSignalHandlerRegistration.cs
+++ b/src/Ryujinx.Cpu/Signal/UnixSignalHandlerRegistration.cs
@@ -1,7 +1,7 @@
-using System;
+using System;
using System.Runtime.InteropServices;
-namespace ARMeilleure.Signal
+namespace Ryujinx.Cpu.Signal
{
static partial class UnixSignalHandlerRegistration
{
diff --git a/src/Ryujinx.Cpu/Signal/WindowsSignalHandlerRegistration.cs b/src/Ryujinx.Cpu/Signal/WindowsSignalHandlerRegistration.cs
new file mode 100644
index 000000000..1fbce0f72
--- /dev/null
+++ b/src/Ryujinx.Cpu/Signal/WindowsSignalHandlerRegistration.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.Cpu.Signal
+{
+ static partial class WindowsSignalHandlerRegistration
+ {
+ [LibraryImport("kernel32.dll")]
+ private static partial IntPtr AddVectoredExceptionHandler(uint first, IntPtr handler);
+
+ [LibraryImport("kernel32.dll")]
+ private static partial ulong RemoveVectoredExceptionHandler(IntPtr handle);
+
+ public static IntPtr RegisterExceptionHandler(IntPtr action)
+ {
+ return AddVectoredExceptionHandler(1, action);
+ }
+
+ public static bool RemoveExceptionHandler(IntPtr handle)
+ {
+ return RemoveVectoredExceptionHandler(handle) != 0;
+ }
+ }
+}
diff --git a/src/Ryujinx.Graphics.Device/DeviceState.cs b/src/Ryujinx.Graphics.Device/DeviceState.cs
index b07582a8a..de8582a3b 100644
--- a/src/Ryujinx.Graphics.Device/DeviceState.cs
+++ b/src/Ryujinx.Graphics.Device/DeviceState.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
diff --git a/src/Ryujinx.Graphics.Device/IDeviceState.cs b/src/Ryujinx.Graphics.Device/IDeviceState.cs
index 077d69f20..dcd32cf07 100644
--- a/src/Ryujinx.Graphics.Device/IDeviceState.cs
+++ b/src/Ryujinx.Graphics.Device/IDeviceState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Device
+namespace Ryujinx.Graphics.Device
{
public interface IDeviceState
{
diff --git a/src/Ryujinx.Graphics.Device/RwCallback.cs b/src/Ryujinx.Graphics.Device/RwCallback.cs
index dc8499e9d..46428cdd1 100644
--- a/src/Ryujinx.Graphics.Device/RwCallback.cs
+++ b/src/Ryujinx.Graphics.Device/RwCallback.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Device
{
diff --git a/src/Ryujinx.Graphics.Device/SizeCalculator.cs b/src/Ryujinx.Graphics.Device/SizeCalculator.cs
index d5697fe5e..54820ec36 100644
--- a/src/Ryujinx.Graphics.Device/SizeCalculator.cs
+++ b/src/Ryujinx.Graphics.Device/SizeCalculator.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Reflection;
namespace Ryujinx.Graphics.Device
diff --git a/src/Ryujinx.Graphics.GAL/AntiAliasing.cs b/src/Ryujinx.Graphics.GAL/AntiAliasing.cs
index 9f526909b..04b529764 100644
--- a/src/Ryujinx.Graphics.GAL/AntiAliasing.cs
+++ b/src/Ryujinx.Graphics.GAL/AntiAliasing.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL
+namespace Ryujinx.Graphics.GAL
{
public enum AntiAliasing
{
diff --git a/src/Ryujinx.Graphics.GAL/BufferAccess.cs b/src/Ryujinx.Graphics.GAL/BufferAccess.cs
index e7d7ceb0a..faefa5188 100644
--- a/src/Ryujinx.Graphics.GAL/BufferAccess.cs
+++ b/src/Ryujinx.Graphics.GAL/BufferAccess.cs
@@ -1,9 +1,13 @@
+using System;
+
namespace Ryujinx.Graphics.GAL
{
+ [Flags]
public enum BufferAccess
{
- Default,
- FlushPersistent,
- Stream
+ Default = 0,
+ FlushPersistent = 1 << 0,
+ Stream = 1 << 1,
+ SparseCompatible = 1 << 2,
}
}
diff --git a/src/Ryujinx.Graphics.GAL/BufferAssignment.cs b/src/Ryujinx.Graphics.GAL/BufferAssignment.cs
index d129135e2..e302936e9 100644
--- a/src/Ryujinx.Graphics.GAL/BufferAssignment.cs
+++ b/src/Ryujinx.Graphics.GAL/BufferAssignment.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL
+namespace Ryujinx.Graphics.GAL
{
public readonly struct BufferAssignment
{
diff --git a/src/Ryujinx.Graphics.GAL/BufferHandle.cs b/src/Ryujinx.Graphics.GAL/BufferHandle.cs
index a2adea56a..7994e4eea 100644
--- a/src/Ryujinx.Graphics.GAL/BufferHandle.cs
+++ b/src/Ryujinx.Graphics.GAL/BufferHandle.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.Graphics.GAL
{
diff --git a/src/Ryujinx.Graphics.GAL/Capabilities.cs b/src/Ryujinx.Graphics.GAL/Capabilities.cs
index 8959bf93e..dc927eaba 100644
--- a/src/Ryujinx.Graphics.GAL/Capabilities.cs
+++ b/src/Ryujinx.Graphics.GAL/Capabilities.cs
@@ -23,6 +23,7 @@ namespace Ryujinx.Graphics.GAL
public readonly bool SupportsR4G4B4A4Format;
public readonly bool SupportsScaledVertexFormats;
public readonly bool SupportsSnormBufferTextureFormat;
+ public readonly bool SupportsSparseBuffer;
public readonly bool Supports5BitComponentFormat;
public readonly bool SupportsBlendEquationAdvanced;
public readonly bool SupportsFragmentShaderInterlock;
@@ -79,6 +80,7 @@ namespace Ryujinx.Graphics.GAL
bool supportsScaledVertexFormats,
bool supportsSnormBufferTextureFormat,
bool supports5BitComponentFormat,
+ bool supportsSparseBuffer,
bool supportsBlendEquationAdvanced,
bool supportsFragmentShaderInterlock,
bool supportsFragmentShaderOrderingIntel,
@@ -130,6 +132,7 @@ namespace Ryujinx.Graphics.GAL
SupportsScaledVertexFormats = supportsScaledVertexFormats;
SupportsSnormBufferTextureFormat = supportsSnormBufferTextureFormat;
Supports5BitComponentFormat = supports5BitComponentFormat;
+ SupportsSparseBuffer = supportsSparseBuffer;
SupportsBlendEquationAdvanced = supportsBlendEquationAdvanced;
SupportsFragmentShaderInterlock = supportsFragmentShaderInterlock;
SupportsFragmentShaderOrderingIntel = supportsFragmentShaderOrderingIntel;
diff --git a/src/Ryujinx.Graphics.GAL/HardwareInfo.cs b/src/Ryujinx.Graphics.GAL/HardwareInfo.cs
index 4dd6849bd..d8f7d1f71 100644
--- a/src/Ryujinx.Graphics.GAL/HardwareInfo.cs
+++ b/src/Ryujinx.Graphics.GAL/HardwareInfo.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL
+namespace Ryujinx.Graphics.GAL
{
public readonly struct HardwareInfo
{
diff --git a/src/Ryujinx.Graphics.GAL/ICounterEvent.cs b/src/Ryujinx.Graphics.GAL/ICounterEvent.cs
index 13b15ae4b..a410506be 100644
--- a/src/Ryujinx.Graphics.GAL/ICounterEvent.cs
+++ b/src/Ryujinx.Graphics.GAL/ICounterEvent.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.GAL
{
diff --git a/src/Ryujinx.Graphics.GAL/IRenderer.cs b/src/Ryujinx.Graphics.GAL/IRenderer.cs
index 1dabbdaef..3bf56465e 100644
--- a/src/Ryujinx.Graphics.GAL/IRenderer.cs
+++ b/src/Ryujinx.Graphics.GAL/IRenderer.cs
@@ -16,13 +16,10 @@ namespace Ryujinx.Graphics.GAL
void BackgroundContextAction(Action action, bool alwaysBackground = false);
- BufferHandle CreateBuffer(int size, BufferHandle storageHint);
- BufferHandle CreateBuffer(int size)
- {
- return CreateBuffer(size, BufferHandle.Null);
- }
+ BufferHandle CreateBuffer(int size, BufferAccess access = BufferAccess.Default);
+ BufferHandle CreateBuffer(int size, BufferAccess access, BufferHandle storageHint);
BufferHandle CreateBuffer(nint pointer, int size);
- BufferHandle CreateBuffer(int size, BufferAccess access);
+ BufferHandle CreateBufferSparse(ReadOnlySpan storageBuffers);
IProgram CreateProgram(ShaderSource[] shaders, ShaderInfo info);
diff --git a/src/Ryujinx.Graphics.GAL/LogicalOp.cs b/src/Ryujinx.Graphics.GAL/LogicalOp.cs
index 8fe6c782d..6c6a6189b 100644
--- a/src/Ryujinx.Graphics.GAL/LogicalOp.cs
+++ b/src/Ryujinx.Graphics.GAL/LogicalOp.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL
+namespace Ryujinx.Graphics.GAL
{
public enum LogicalOp
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/BufferMap.cs b/src/Ryujinx.Graphics.GAL/Multithreading/BufferMap.cs
index 6377e5eac..e8eec123a 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/BufferMap.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/BufferMap.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs b/src/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs
index 6cd6f1599..5bf3d3283 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Commands;
+using Ryujinx.Graphics.GAL.Multithreading.Commands;
using Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer;
using Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent;
using Ryujinx.Graphics.GAL.Multithreading.Commands.Program;
@@ -44,6 +44,7 @@ namespace Ryujinx.Graphics.GAL.Multithreading
Register(CommandType.Action);
Register(CommandType.CreateBuffer);
Register(CommandType.CreateBufferAccess);
+ Register(CommandType.CreateBufferSparse);
Register(CommandType.CreateHostBuffer);
Register(CommandType.CreateProgram);
Register(CommandType.CreateSampler);
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/CommandType.cs b/src/Ryujinx.Graphics.GAL/Multithreading/CommandType.cs
index c24a934aa..6be639253 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/CommandType.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/CommandType.cs
@@ -1,10 +1,11 @@
-namespace Ryujinx.Graphics.GAL.Multithreading
+namespace Ryujinx.Graphics.GAL.Multithreading
{
enum CommandType : byte
{
Action,
CreateBuffer,
CreateBufferAccess,
+ CreateBufferSparse,
CreateHostBuffer,
CreateProgram,
CreateSampler,
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs
index 4a73a3bc7..fd80a127b 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/BarrierCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct BarrierCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs
index 538ff98d7..7b2f73174 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/BeginTransformFeedbackCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct BeginTransformFeedbackCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs
index 03ee8560f..aaf8e5b2d 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferDisposeCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer
{
struct BufferDisposeCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs
index 0e3950229..b8f61df05 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferGetDataCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs
index 30daf382a..592699e47 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Buffer/BufferSetDataCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using System;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs
index 777a8460b..e94da74be 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearBufferCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct ClearBufferCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs
index 3a24e181a..d4417f667 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetColorCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct ClearRenderTargetColorCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs
index 43c0e89a4..78f81025d 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/ClearRenderTargetDepthStencilCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct ClearRenderTargetDepthStencilCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs
index 975562333..0403b33fe 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CommandBufferBarrierCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct CommandBufferBarrierCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs
index 8cd9e7f10..3eeaefb8b 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CopyBufferCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct CopyBufferCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs
index fd9868b14..1d5eabcfc 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventDisposeCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs
index 590169bc4..27cde8a8b 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/CounterEvent/CounterEventFlushCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs
index 1a7c94f4a..65028378f 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DispatchComputeCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct DispatchComputeCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs
index bd3cb89b7..8acf12ca7 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct DrawIndexedCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs
index c4d5ce661..8d43d4564 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct DrawCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs
index 1f6966226..2be81fbe0 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndexedIndirectCountCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct DrawIndexedIndirectCountCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs
index eae98e4bd..0247aa29c 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawIndirectCountCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct DrawIndirectCountCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs
index 5d30a901d..3f20c0105 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/EndHostConditionalRenderingCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct EndHostConditionalRenderingCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/EndTransformFeedbackCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/EndTransformFeedbackCommand.cs
index d050f477a..f5d5e5c2b 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/EndTransformFeedbackCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/EndTransformFeedbackCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct EndTransformFeedbackCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs
index ea831c8d4..ada6713b3 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/IGALCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
interface IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramCheckLinkCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramCheckLinkCommand.cs
index b9c6e2866..e07fad9dd 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramCheckLinkCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramCheckLinkCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Program
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs
index 839a05bc7..ebe1428d1 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramDisposeCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Program
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs
index b53fc8ac4..9aa72d4b1 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Program/ProgramGetBinaryCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Program
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs
index 309a9cd0c..f0695f26d 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ActionCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using System;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferAccessCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferAccessCommand.cs
index 5efa0a7af..3dbc0b066 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferAccessCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferAccessCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
{
struct CreateBufferAccessCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs
index 214b3589d..60a6e4bf4 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferCommand.cs
@@ -1,16 +1,18 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
{
struct CreateBufferCommand : IGALCommand, IGALCommand
{
public readonly CommandType CommandType => CommandType.CreateBuffer;
private BufferHandle _threadedHandle;
private int _size;
+ private BufferAccess _access;
private BufferHandle _storageHint;
- public void Set(BufferHandle threadedHandle, int size, BufferHandle storageHint)
+ public void Set(BufferHandle threadedHandle, int size, BufferAccess access, BufferHandle storageHint)
{
_threadedHandle = threadedHandle;
_size = size;
+ _access = access;
_storageHint = storageHint;
}
@@ -23,7 +25,7 @@
hint = threaded.Buffers.MapBuffer(command._storageHint);
}
- threaded.Buffers.AssignBuffer(command._threadedHandle, renderer.CreateBuffer(command._size, hint));
+ threaded.Buffers.AssignBuffer(command._threadedHandle, renderer.CreateBuffer(command._size, command._access, hint));
}
}
}
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferSparseCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferSparseCommand.cs
new file mode 100644
index 000000000..965529ad1
--- /dev/null
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateBufferSparseCommand.cs
@@ -0,0 +1,25 @@
+using Ryujinx.Graphics.GAL.Multithreading.Model;
+using System;
+
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
+{
+ struct CreateBufferSparseCommand : IGALCommand, IGALCommand
+ {
+ public readonly CommandType CommandType => CommandType.CreateBufferSparse;
+ private BufferHandle _threadedHandle;
+ private SpanRef _buffers;
+
+ public void Set(BufferHandle threadedHandle, SpanRef buffers)
+ {
+ _threadedHandle = threadedHandle;
+ _buffers = buffers;
+ }
+
+ public static void Run(ref CreateBufferSparseCommand command, ThreadedRenderer threaded, IRenderer renderer)
+ {
+ Span buffers = command._buffers.Get(threaded);
+ threaded.Buffers.AssignBuffer(command._threadedHandle, renderer.CreateBufferSparse(threaded.Buffers.MapBufferRanges(buffers)));
+ command._buffers.Dispose(threaded);
+ }
+ }
+}
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateHostBufferCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateHostBufferCommand.cs
index 1036e997e..0001680b6 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateHostBufferCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateHostBufferCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
{
struct CreateHostBufferCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs
index b0d24b99c..2388c79a2 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateProgramCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources.Programs;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs
index 761882688..ae01bd0c4 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSamplerCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs
index 138a45915..9e9caa982 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateSyncCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
{
struct CreateSyncCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs
index 6ec0daae8..7caf5bc1a 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/CreateTextureCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs
index ade13ddfa..d6e6db7d6 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/GetCapabilitiesCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs
index cf26194b7..b9e2944b3 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/PreFrameCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
{
struct PreFrameCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs
index 659cf4753..18b96f74b 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ReportCounterCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
using System;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs
index a20a6ca2e..44dd674ed 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/ResetCounterCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
{
struct ResetCounterCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs
index e04304c11..a6c877a48 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Renderer/UpdateCountersCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
{
struct UpdateCountersCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs
index 4a68a35d2..2e4eab5fa 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Sampler/SamplerDisposeCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Sampler
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs
index 10bd3c5cd..bee7b866b 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetAlphaTestCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetAlphaTestCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs
index de430b782..6fc2c1a2d 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetBlendStateCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetBlendStateCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs
index c8bb8472f..0c46fbda2 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthBiasCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetDepthBiasCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs
index b7cd2db99..ec34f4733 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthClampCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetDepthClampCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs
index 94bb6d490..1f9b1fbcd 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthModeCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetDepthModeCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs
index 1b316c1af..8df545289 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetDepthTestCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetDepthTestCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs
index 7823ab054..611168f85 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFaceCullingCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetFaceCullingCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs
index 5d4694477..9c0b79e48 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetFrontFaceCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetFrontFaceCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs
index d24174fea..b4e966ca8 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs
index 6a06ab9b3..629906dc9 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetIndexBufferCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetIndexBufferCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs
index 4928360af..d11d46bb4 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLineParametersCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetLineParametersCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs
index 5aecc7773..71f2e1d8e 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetLogicOpStateCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetLogicOpStateCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs
index a0993fb25..6faa25101 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPointParametersCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetPointParametersCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs
index 2289d8bdb..9fd5b5415 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveRestartCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetPrimitiveRestartCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs
index 1458a1fc7..c7cb2a2fe 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetPrimitiveTopologyCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetPrimitiveTopologyCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs
index 5b0114330..7f1d845b8 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetProgramCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs
index 640911009..61f9246f2 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRasterizerDiscardCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetRasterizerDiscardCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs
index 78d357aec..785c3215f 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetColorMasksCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using System;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs
index 13ef32b5b..063cf1e03 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetRenderTargetsCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
using System.Linq;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs
index 9d7d59e24..15ac00de8 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetScissorsCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs
index 23bea88b8..044241e6f 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStencilTestCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetStencilTestCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs
index 525576c64..631605571 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetStorageBuffersCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using System;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs
index 673da496a..6d63db864 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTextureAndSamplerCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
using Ryujinx.Graphics.Shader;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs
index cac837d91..35cb09f88 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetTransformFeedbackBuffersCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using System;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs
index 516a2bd3f..ec3777c39 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUniformBuffersCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using System;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs
index d7500900c..fffa69e62 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetUserClipDistanceCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetUserClipDistanceCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs
index 18decb0b2..a8a182047 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexAttribsCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using System;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs
index bcfb553d8..9138fe429 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetVertexBuffersCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using System;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs
index 4ad264780..03eae09e3 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetViewportsCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using System;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs
index ddbf0e679..80e0814fb 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs
index b43ffea56..8e879229a 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToScaledCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs
index 4f5ab36f9..52c569613 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCopyToSliceCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs
index 9216e9689..04fbb584a 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureCreateViewCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs
index 38010467e..fa0f4f7ad 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs
index e84cf2d2b..1cb92d663 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureGetDataSliceCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs
index a9c528aee..c9727f1a9 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureReleaseCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs
index 9aa2e4eef..36feeeba7 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
using System;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs
index 14fecadfa..c50bfe089 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetDataSliceCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
using System;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs
index fafaa5578..ed53d105a 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Texture/TextureSetStorageCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Texture
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs
index 8b62d1eff..5ad8adfa5 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct TextureBarrierCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs
index 1cae4109c..423a7efb7 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TextureBarrierTiledCommand.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct TextureBarrierTiledCommand : IGALCommand, IGALCommand
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs
index a06f0b5ad..21e3a0d12 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs
index eb920788b..73acef6b8 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/TryHostConditionalRenderingFlushCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs
index 67ec35213..4034bc3c6 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/Window/WindowPresentCommand.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
using System;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Model/CircularSpanPool.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Model/CircularSpanPool.cs
index 10cab84ce..ec7ab1598 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Model/CircularSpanPool.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Model/CircularSpanPool.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Model/ResultBox.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Model/ResultBox.cs
index 7a0be785e..9e136de9c 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Model/ResultBox.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Model/ResultBox.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Model
+namespace Ryujinx.Graphics.GAL.Multithreading.Model
{
public class ResultBox
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Model/SpanRef.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Model/SpanRef.cs
index 1ed719a08..faa496f1b 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Model/SpanRef.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Model/SpanRef.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.GAL.Multithreading.Model
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Model/TableRef.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Model/TableRef.cs
index e454df214..d3a5a14e8 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Model/TableRef.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Model/TableRef.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Model
+namespace Ryujinx.Graphics.GAL.Multithreading.Model
{
readonly struct TableRef
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ProgramQueue.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ProgramQueue.cs
index 87ab2f1b2..cda3518c7 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ProgramQueue.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ProgramQueue.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Resources.Programs;
+using Ryujinx.Graphics.GAL.Multithreading.Resources.Programs;
using System;
using System.Collections.Generic;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs
index e4df1c1be..6d250682e 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/BinaryProgramRequest.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs
+namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs
{
class BinaryProgramRequest : IProgramRequest
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/IProgramRequest.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/IProgramRequest.cs
index cdbfe03c6..51fef9f55 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/IProgramRequest.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/IProgramRequest.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs
+namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs
{
interface IProgramRequest
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs
index 744b77e1b..9852f5c95 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/Programs/SourceProgramRequest.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs
+namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs
{
class SourceProgramRequest : IProgramRequest
{
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedCounterEvent.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedCounterEvent.cs
index 2992b4a8c..15db2b9fa 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedCounterEvent.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedCounterEvent.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent;
+using Ryujinx.Graphics.GAL.Multithreading.Commands.CounterEvent;
using Ryujinx.Graphics.GAL.Multithreading.Model;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedProgram.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedProgram.cs
index 7cbbce45d..d5a22f669 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedProgram.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedProgram.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Commands.Program;
+using Ryujinx.Graphics.GAL.Multithreading.Commands.Program;
using Ryujinx.Graphics.GAL.Multithreading.Model;
namespace Ryujinx.Graphics.GAL.Multithreading.Resources
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedSampler.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedSampler.cs
index 62e628a76..ae3d993a3 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedSampler.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedSampler.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Commands.Sampler;
+using Ryujinx.Graphics.GAL.Multithreading.Commands.Sampler;
using Ryujinx.Graphics.GAL.Multithreading.Model;
namespace Ryujinx.Graphics.GAL.Multithreading.Resources
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedTexture.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedTexture.cs
index 68f258539..9ad9e6454 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedTexture.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Resources/ThreadedTexture.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.GAL.Multithreading.Commands.Texture;
using Ryujinx.Graphics.GAL.Multithreading.Model;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/SyncMap.cs b/src/Ryujinx.Graphics.GAL/Multithreading/SyncMap.cs
index d6e416ef2..ecdff4922 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/SyncMap.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/SyncMap.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedHelpers.cs b/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedHelpers.cs
index 7ddb19e62..dcd0c5b11 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedHelpers.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedHelpers.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading;
namespace Ryujinx.Graphics.GAL.Multithreading
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedPipeline.cs b/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedPipeline.cs
index 69c67d642..f40d9896c 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedPipeline.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedPipeline.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Commands;
+using Ryujinx.Graphics.GAL.Multithreading.Commands;
using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
using Ryujinx.Graphics.Shader;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedRenderer.cs b/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedRenderer.cs
index b11ccb0a3..830fbf2d9 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedRenderer.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedRenderer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Graphics.GAL.Multithreading.Commands;
using Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer;
@@ -263,10 +263,19 @@ namespace Ryujinx.Graphics.GAL.Multithreading
}
}
- public BufferHandle CreateBuffer(int size, BufferHandle storageHint)
+ public BufferHandle CreateBuffer(int size, BufferAccess access)
{
BufferHandle handle = Buffers.CreateBufferHandle();
- New().Set(handle, size, storageHint);
+ New().Set(handle, size, access);
+ QueueCommand();
+
+ return handle;
+ }
+
+ public BufferHandle CreateBuffer(int size, BufferAccess access, BufferHandle storageHint)
+ {
+ BufferHandle handle = Buffers.CreateBufferHandle();
+ New().Set(handle, size, access, storageHint);
QueueCommand();
return handle;
@@ -281,10 +290,10 @@ namespace Ryujinx.Graphics.GAL.Multithreading
return handle;
}
- public BufferHandle CreateBuffer(int size, BufferAccess access)
+ public BufferHandle CreateBufferSparse(ReadOnlySpan storageBuffers)
{
BufferHandle handle = Buffers.CreateBufferHandle();
- New().Set(handle, size, access);
+ New().Set(handle, CopySpan(storageBuffers));
QueueCommand();
return handle;
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs b/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs
index 4f1b795a4..acda37ef3 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL.Multithreading.Commands.Window;
+using Ryujinx.Graphics.GAL.Multithreading.Commands.Window;
using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
using System;
diff --git a/src/Ryujinx.Graphics.GAL/Origin.cs b/src/Ryujinx.Graphics.GAL/Origin.cs
index bc2a21f1c..9d3363268 100644
--- a/src/Ryujinx.Graphics.GAL/Origin.cs
+++ b/src/Ryujinx.Graphics.GAL/Origin.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL
+namespace Ryujinx.Graphics.GAL
{
public enum Origin
{
diff --git a/src/Ryujinx.Graphics.GAL/PinnedSpan.cs b/src/Ryujinx.Graphics.GAL/PinnedSpan.cs
index d028f07c3..e2b33f444 100644
--- a/src/Ryujinx.Graphics.GAL/PinnedSpan.cs
+++ b/src/Ryujinx.Graphics.GAL/PinnedSpan.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.GAL/ProgramLinkStatus.cs b/src/Ryujinx.Graphics.GAL/ProgramLinkStatus.cs
index 4dd3b4d5d..84f2729ac 100644
--- a/src/Ryujinx.Graphics.GAL/ProgramLinkStatus.cs
+++ b/src/Ryujinx.Graphics.GAL/ProgramLinkStatus.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.GAL
+namespace Ryujinx.Graphics.GAL
{
public enum ProgramLinkStatus
{
diff --git a/src/Ryujinx.Graphics.GAL/ProgramPipelineState.cs b/src/Ryujinx.Graphics.GAL/ProgramPipelineState.cs
index 96fd667ad..c16722af7 100644
--- a/src/Ryujinx.Graphics.GAL/ProgramPipelineState.cs
+++ b/src/Ryujinx.Graphics.GAL/ProgramPipelineState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
namespace Ryujinx.Graphics.GAL
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs b/src/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs
index 67743de37..ccdbe4748 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.Gpu.Engine.InlineToMemory;
using Ryujinx.Graphics.Gpu.Engine.Threed;
using Ryujinx.Graphics.Gpu.Engine.Types;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClassState.cs b/src/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClassState.cs
index 0b192ef6b..18f79cc3a 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClassState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClassState.cs
@@ -1,4 +1,4 @@
-// This file was auto-generated from NVIDIA official Maxwell definitions.
+// This file was auto-generated from NVIDIA official Maxwell definitions.
using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Gpu.Engine.InlineToMemory;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/ConditionalRenderEnabled.cs b/src/Ryujinx.Graphics.Gpu/Engine/ConditionalRenderEnabled.cs
index 52d7f69f2..9edf80684 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/ConditionalRenderEnabled.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/ConditionalRenderEnabled.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Engine
+namespace Ryujinx.Graphics.Gpu.Engine
{
///
/// Conditional rendering enable.
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClass.cs b/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClass.cs
index b1921bd51..6dae829ff 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClass.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClass.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.Gpu.Engine.Threed;
using Ryujinx.Graphics.Gpu.Memory;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClassState.cs b/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClassState.cs
index d85887368..f258c0070 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClassState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClassState.cs
@@ -1,4 +1,4 @@
-// This file was auto-generated from NVIDIA official Maxwell definitions.
+// This file was auto-generated from NVIDIA official Maxwell definitions.
namespace Ryujinx.Graphics.Gpu.Engine.Dma
{
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaTexture.cs b/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaTexture.cs
index 8193c4a2c..368158718 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaTexture.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Dma/DmaTexture.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu.Engine.Types;
+using Ryujinx.Graphics.Gpu.Engine.Types;
namespace Ryujinx.Graphics.Gpu.Engine.Dma
{
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/CompressedMethod.cs b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/CompressedMethod.cs
index afa4db5ec..21eb5bfa9 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/CompressedMethod.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/CompressedMethod.cs
@@ -1,4 +1,4 @@
-// This file was auto-generated from NVIDIA official Maxwell definitions.
+// This file was auto-generated from NVIDIA official Maxwell definitions.
namespace Ryujinx.Graphics.Gpu.Engine.GPFifo
{
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPEntry.cs b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPEntry.cs
index 81e28acf4..d28f2fbb5 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPEntry.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPEntry.cs
@@ -1,4 +1,4 @@
-// This file was auto-generated from NVIDIA official Maxwell definitions.
+// This file was auto-generated from NVIDIA official Maxwell definitions.
namespace Ryujinx.Graphics.Gpu.Engine.GPFifo
{
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoClass.cs b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoClass.cs
index 4bdbd1a03..5bd8ec728 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoClass.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoClass.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.Gpu.Engine.MME;
using Ryujinx.Graphics.Gpu.Synchronization;
using System;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoClassState.cs b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoClassState.cs
index dd6ae1b40..56bebc336 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoClassState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoClassState.cs
@@ -1,4 +1,4 @@
-// This file was auto-generated from NVIDIA official Maxwell definitions.
+// This file was auto-generated from NVIDIA official Maxwell definitions.
using Ryujinx.Common.Memory;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoDevice.cs b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoDevice.cs
index bb5bc21cb..7d0f026ec 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoDevice.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoDevice.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu.Memory;
+using Ryujinx.Graphics.Gpu.Memory;
using System;
using System.Collections.Concurrent;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoProcessor.cs b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoProcessor.cs
index 180e2a6b6..b57109c7d 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoProcessor.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/GPFifo/GPFifoProcessor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.Gpu.Engine.Compute;
using Ryujinx.Graphics.Gpu.Engine.Dma;
using Ryujinx.Graphics.Gpu.Engine.InlineToMemory;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/InlineToMemory/InlineToMemoryClass.cs b/src/Ryujinx.Graphics.Gpu/Engine/InlineToMemory/InlineToMemoryClass.cs
index e417b9a0a..37d74fdd3 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/InlineToMemory/InlineToMemoryClass.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/InlineToMemory/InlineToMemoryClass.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.Texture;
using System;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/InlineToMemory/InlineToMemoryClassState.cs b/src/Ryujinx.Graphics.Gpu/Engine/InlineToMemory/InlineToMemoryClassState.cs
index ec5042fda..1aff0441f 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/InlineToMemory/InlineToMemoryClassState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/InlineToMemory/InlineToMemoryClassState.cs
@@ -1,4 +1,4 @@
-// This file was auto-generated from NVIDIA official Maxwell definitions.
+// This file was auto-generated from NVIDIA official Maxwell definitions.
using Ryujinx.Common.Memory;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/AluOperation.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/AluOperation.cs
index 43faa788b..45b24e4ac 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/AluOperation.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/AluOperation.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Engine.MME
+namespace Ryujinx.Graphics.Gpu.Engine.MME
{
///
/// GPU Macro Arithmetic and Logic unit operation.
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/AluRegOperation.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/AluRegOperation.cs
index c878bd41f..09e5c6f0c 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/AluRegOperation.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/AluRegOperation.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Engine.MME
+namespace Ryujinx.Graphics.Gpu.Engine.MME
{
///
/// GPU Macro Arithmetic and Logic unit binary register-to-register operation.
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/AssignmentOperation.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/AssignmentOperation.cs
index 592aa5a68..3ad3446f7 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/AssignmentOperation.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/AssignmentOperation.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Engine.MME
+namespace Ryujinx.Graphics.Gpu.Engine.MME
{
///
/// GPU Macro assignment operation.
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/IMacroEE.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/IMacroEE.cs
index 117961db2..d7b862521 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/IMacroEE.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/IMacroEE.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/Macro.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/Macro.cs
index 65c6aab4a..0cf1f306d 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/Macro.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/Macro.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.Gpu.Engine.GPFifo;
using System;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLE.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLE.cs
index 7d9e1ec02..7f3772f44 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLE.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLE.cs
@@ -5,6 +5,7 @@ using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.GPFifo;
using Ryujinx.Graphics.Gpu.Engine.Threed;
using Ryujinx.Graphics.Gpu.Engine.Types;
+using Ryujinx.Memory.Range;
using System;
using System.Collections.Generic;
@@ -392,12 +393,12 @@ namespace Ryujinx.Graphics.Gpu.Engine.MME
_processor.ThreedClass.DrawIndirect(
topology,
- indirectBufferAddress,
- 0,
+ new MultiRange(indirectBufferAddress, IndirectIndexedDataEntrySize),
+ default,
1,
IndirectIndexedDataEntrySize,
indexCount,
- Threed.IndirectDrawType.DrawIndexedIndirect);
+ IndirectDrawType.DrawIndexedIndirect);
}
else
{
@@ -494,13 +495,13 @@ namespace Ryujinx.Graphics.Gpu.Engine.MME
ulong indirectBufferSize = (ulong)maxDrawCount * (ulong)stride;
- ulong indirectBufferAddress = bufferCache.TranslateAndCreateBuffer(_processor.MemoryManager, indirectBufferGpuVa, indirectBufferSize);
- ulong parameterBufferAddress = bufferCache.TranslateAndCreateBuffer(_processor.MemoryManager, parameterBufferGpuVa, 4);
+ MultiRange indirectBufferRange = bufferCache.TranslateAndCreateMultiBuffers(_processor.MemoryManager, indirectBufferGpuVa, indirectBufferSize);
+ MultiRange parameterBufferRange = bufferCache.TranslateAndCreateMultiBuffers(_processor.MemoryManager, parameterBufferGpuVa, 4);
_processor.ThreedClass.DrawIndirect(
topology,
- indirectBufferAddress,
- parameterBufferAddress,
+ indirectBufferRange,
+ parameterBufferRange,
maxDrawCount,
stride,
indexCount,
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLEFunctionName.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLEFunctionName.cs
index 8dca52262..55514c73e 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLEFunctionName.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLEFunctionName.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Engine.MME
+namespace Ryujinx.Graphics.Gpu.Engine.MME
{
///
/// Name of the High-level implementation of a Macro function.
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLETable.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLETable.cs
index 9a496164d..43b701293 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLETable.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroHLETable.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.GAL;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJit.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJit.cs
index a23bfef12..0f26490a8 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJit.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJit.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJitCompiler.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJitCompiler.cs
index d9c26c587..d5229970f 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJitCompiler.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJitCompiler.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using System;
using System.Collections.Generic;
using System.Reflection.Emit;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJitContext.cs b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJitContext.cs
index 5a71e3f47..01bff8e89 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJitContext.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MME/MacroJitContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Device;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/MmeShadowScratch.cs b/src/Ryujinx.Graphics.Gpu/Engine/MmeShadowScratch.cs
index 0aa6b82af..b4346add1 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/MmeShadowScratch.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/MmeShadowScratch.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.Graphics.Gpu.Engine
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/ShaderTexture.cs b/src/Ryujinx.Graphics.Gpu/Engine/ShaderTexture.cs
index 40d9a97df..492c6ee60 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/ShaderTexture.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/ShaderTexture.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Shader;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ComputeDraw/VtgAsComputeState.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ComputeDraw/VtgAsComputeState.cs
index d1a333a71..6324e6a15 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ComputeDraw/VtgAsComputeState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ComputeDraw/VtgAsComputeState.cs
@@ -370,8 +370,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed.ComputeDraw
{
var memoryManager = _channel.MemoryManager;
- address = memoryManager.Translate(address);
- BufferRange range = memoryManager.Physical.BufferCache.GetBufferRange(address, size);
+ BufferRange range = memoryManager.Physical.BufferCache.GetBufferRange(memoryManager.GetPhysicalRegions(address, size));
ITexture bufferTexture = _vacContext.EnsureBufferTexture(index + 2, format);
bufferTexture.SetStorage(range);
@@ -412,9 +411,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed.ComputeDraw
var memoryManager = _channel.MemoryManager;
- address = memoryManager.Translate(address + indexOffset);
ulong misalign = address & ((ulong)_context.Capabilities.TextureBufferOffsetAlignment - 1);
- BufferRange range = memoryManager.Physical.BufferCache.GetBufferRange(address - misalign, size + misalign);
+ BufferRange range = memoryManager.Physical.BufferCache.GetBufferRange(memoryManager.GetPhysicalRegions(address + indexOffset - misalign, size + misalign));
misalignedOffset = (int)misalign >> shift;
SetIndexBufferTexture(reservations, range, format);
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ConditionalRendering.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ConditionalRendering.cs
index a6b62a4a8..01ef2f9a0 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ConditionalRendering.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ConditionalRendering.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.Types;
using Ryujinx.Graphics.Gpu.Memory;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ConstantBufferUpdater.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ConstantBufferUpdater.cs
index e30092cee..2095fcd7a 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ConstantBufferUpdater.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ConstantBufferUpdater.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.Graphics.Gpu.Engine.Threed
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs
index 1c31312ce..d8de14de0 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs
@@ -1,8 +1,9 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.Threed.ComputeDraw;
using Ryujinx.Graphics.Gpu.Engine.Types;
using Ryujinx.Graphics.Gpu.Image;
using Ryujinx.Graphics.Gpu.Memory;
+using Ryujinx.Memory.Range;
using System;
namespace Ryujinx.Graphics.Gpu.Engine.Threed
@@ -102,6 +103,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
/// Method call argument
public void DrawEnd(ThreedClass engine, int argument)
{
+ _drawState.DrawUsesEngineState = true;
+
DrawEnd(
engine,
_state.State.IndexBufferState.First,
@@ -204,10 +207,6 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
}
else
{
-#pragma warning disable IDE0059 // Remove unnecessary value assignment
- var drawState = _state.State.VertexBufferDrawState;
-#pragma warning restore IDE0059
-
DrawImpl(engine, drawVertexCount, 1, 0, drawFirstVertex, firstInstance, indexed: false);
}
@@ -378,6 +377,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
bool oldDrawIndexed = _drawState.DrawIndexed;
_drawState.DrawIndexed = true;
+ _drawState.DrawUsesEngineState = false;
engine.ForceStateDirty(IndexBufferCountMethodOffset * 4);
DrawEnd(engine, firstIndex, indexCount, 0, 0);
@@ -423,6 +423,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
bool oldDrawIndexed = _drawState.DrawIndexed;
_drawState.DrawIndexed = false;
+ _drawState.DrawUsesEngineState = false;
engine.ForceStateDirty(VertexBufferFirstMethodOffset * 4);
DrawEnd(engine, 0, 0, firstVertex, vertexCount);
@@ -543,6 +544,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
_state.State.FirstInstance = (uint)firstInstance;
_drawState.DrawIndexed = indexed;
+ _drawState.DrawUsesEngineState = true;
_currentSpecState.SetHasConstantBufferDrawParameters(true);
engine.UpdateState();
@@ -630,8 +632,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
///
/// 3D engine where this method is being called
/// Primitive topology
- /// Address of the buffer with the draw parameters, such as count, first index, etc
- /// Address of the buffer with the draw count
+ /// Memory range of the buffer with the draw parameters, such as count, first index, etc
+ /// Memory range of the buffer with the draw count
/// Maximum number of draws that can be made
/// Distance in bytes between each entry on the data pointed to by
/// Maximum number of indices that the draw can consume
@@ -639,8 +641,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
public void DrawIndirect(
ThreedClass engine,
PrimitiveTopology topology,
- ulong indirectBufferAddress,
- ulong parameterBufferAddress,
+ MultiRange indirectBufferRange,
+ MultiRange parameterBufferRange,
int maxDrawCount,
int stride,
int indexCount,
@@ -675,14 +677,15 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
_drawState.DrawIndexed = indexed;
_drawState.DrawIndirect = true;
+ _drawState.DrawUsesEngineState = true;
_currentSpecState.SetHasConstantBufferDrawParameters(true);
engine.UpdateState();
if (hasCount)
{
- var indirectBuffer = memory.BufferCache.GetBufferRange(indirectBufferAddress, (ulong)maxDrawCount * (ulong)stride);
- var parameterBuffer = memory.BufferCache.GetBufferRange(parameterBufferAddress, 4);
+ var indirectBuffer = memory.BufferCache.GetBufferRange(indirectBufferRange);
+ var parameterBuffer = memory.BufferCache.GetBufferRange(parameterBufferRange);
if (indexed)
{
@@ -695,7 +698,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
}
else
{
- var indirectBuffer = memory.BufferCache.GetBufferRange(indirectBufferAddress, (ulong)stride);
+ var indirectBuffer = memory.BufferCache.GetBufferRange(indirectBufferRange);
if (indexed)
{
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/DrawState.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/DrawState.cs
index cb43b0025..03b5e3f3b 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/DrawState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/DrawState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Shader;
namespace Ryujinx.Graphics.Gpu.Engine.Threed
@@ -38,6 +38,11 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
///
public bool DrawIndirect;
+ ///
+ /// Indicates that the draw is using the draw parameters on the 3D engine state, rather than inline parameters submitted with the draw command.
+ ///
+ public bool DrawUsesEngineState;
+
///
/// Indicates if any of the currently used vertex shaders reads the instance ID.
///
@@ -48,11 +53,6 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
///
public bool IsAnyVbInstanced;
- ///
- /// Indicates that the draw is writing the base vertex, base instance and draw index to Constant Buffer 0.
- ///
- public bool HasConstantBufferDrawParameters;
-
///
/// Primitive topology for the next draw.
///
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/IbStreamer.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/IbStreamer.cs
index 6e15fcfa3..739d32237 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/IbStreamer.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/IbStreamer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.GAL;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/SemaphoreUpdater.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/SemaphoreUpdater.cs
index 247752caf..a9a96d54a 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/SemaphoreUpdater.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/SemaphoreUpdater.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
namespace Ryujinx.Graphics.Gpu.Engine.Threed
{
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs
index 4fbbee3bc..dbd4efc8f 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.Types;
using Ryujinx.Graphics.Gpu.Shader;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdateTracker.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdateTracker.cs
index 7c7309676..e54855a8f 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdateTracker.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdateTracker.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using System;
using System.Collections.Generic;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs
index 1ff821569..2b65b4560 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.Threed.Blender;
using Ryujinx.Graphics.Gpu.Engine.Types;
@@ -47,7 +47,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
private uint _vbEnableMask;
private bool _prevDrawIndexed;
- private readonly bool _prevDrawIndirect;
+ private bool _prevDrawIndirect;
+ private bool _prevDrawUsesEngineState;
private IndexType _prevIndexType;
private uint _prevFirstVertex;
private bool _prevTfEnable;
@@ -236,7 +237,9 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
// method when doing indexed draws, so we need to make sure
// to update the vertex buffers if we are doing a regular
// draw after a indexed one and vice-versa.
- if (_drawState.DrawIndexed != _prevDrawIndexed)
+ // Some draws also do not update the engine state, so it is possible for it
+ // to not be dirty even if the vertex counts or other state changed. We need to force it to be dirty in this case.
+ if (_drawState.DrawIndexed != _prevDrawIndexed || _drawState.DrawUsesEngineState != _prevDrawUsesEngineState)
{
_updateTracker.ForceDirty(VertexBufferStateIndex);
@@ -251,6 +254,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
}
_prevDrawIndexed = _drawState.DrawIndexed;
+ _prevDrawUsesEngineState = _drawState.DrawUsesEngineState;
}
// Some draw parameters are used to restrict the vertex buffer size,
@@ -260,6 +264,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
if (_drawState.DrawIndirect != _prevDrawIndirect)
{
_updateTracker.ForceDirty(VertexBufferStateIndex);
+
+ _prevDrawIndirect = _drawState.DrawIndirect;
}
// In some cases, the index type is also used to guess the
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs
index df9d1f5c9..ab1d27a1c 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.GPFifo;
@@ -6,6 +6,7 @@ using Ryujinx.Graphics.Gpu.Engine.InlineToMemory;
using Ryujinx.Graphics.Gpu.Engine.Threed.Blender;
using Ryujinx.Graphics.Gpu.Engine.Types;
using Ryujinx.Graphics.Gpu.Synchronization;
+using Ryujinx.Memory.Range;
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
@@ -803,22 +804,22 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
/// Performs a indirect draw, with parameters from a GPU buffer.
///
/// Primitive topology
- /// Address of the buffer with the draw parameters, such as count, first index, etc
- /// Address of the buffer with the draw count
+ /// Memory range of the buffer with the draw parameters, such as count, first index, etc
+ /// Memory range of the buffer with the draw count
/// Maximum number of draws that can be made
- /// Distance in bytes between each entry on the data pointed to by
+ /// Distance in bytes between each entry on the data pointed to by
/// Maximum number of indices that the draw can consume
/// Type of the indirect draw, which can be indexed or non-indexed, with or without a draw count
public void DrawIndirect(
PrimitiveTopology topology,
- ulong indirectBufferAddress,
- ulong parameterBufferAddress,
+ MultiRange indirectBufferRange,
+ MultiRange parameterBufferRange,
int maxDrawCount,
int stride,
int indexCount,
IndirectDrawType drawType)
{
- _drawManager.DrawIndirect(this, topology, indirectBufferAddress, parameterBufferAddress, maxDrawCount, stride, indexCount, drawType);
+ _drawManager.DrawIndirect(this, topology, indirectBufferRange, parameterBufferRange, maxDrawCount, stride, indexCount, drawType);
}
///
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs
index 45284525c..dd55e7d1d 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClassState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.InlineToMemory;
using Ryujinx.Graphics.Gpu.Engine.Types;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClass.cs b/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClass.cs
index b33fb7f73..0dd9481df 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClass.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClass.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.Types;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClassState.cs b/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClassState.cs
index edea73273..2ea4709ec 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClassState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodClassState.cs
@@ -1,4 +1,4 @@
-// This file was auto-generated from NVIDIA official Maxwell definitions.
+// This file was auto-generated from NVIDIA official Maxwell definitions.
using Ryujinx.Common.Memory;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodTexture.cs b/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodTexture.cs
index dd6b69000..8e8afb41c 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodTexture.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Twod/TwodTexture.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu.Engine.Types;
+using Ryujinx.Graphics.Gpu.Engine.Types;
namespace Ryujinx.Graphics.Gpu.Engine.Twod
{
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Types/Boolean32.cs b/src/Ryujinx.Graphics.Gpu/Engine/Types/Boolean32.cs
index 7293fab9c..0db83da80 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Types/Boolean32.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Types/Boolean32.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Engine.Types
+namespace Ryujinx.Graphics.Gpu.Engine.Types
{
///
/// Boolean value, stored as a 32-bits integer in memory.
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Types/GpuVa.cs b/src/Ryujinx.Graphics.Gpu/Engine/Types/GpuVa.cs
index b3b0c41ad..404599908 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Types/GpuVa.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Types/GpuVa.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Engine.Types
+namespace Ryujinx.Graphics.Gpu.Engine.Types
{
///
/// Split GPU virtual address.
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Types/MemoryLayout.cs b/src/Ryujinx.Graphics.Gpu/Engine/Types/MemoryLayout.cs
index 5a4253734..9af5e6103 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Types/MemoryLayout.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Types/MemoryLayout.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Engine.Types
+namespace Ryujinx.Graphics.Gpu.Engine.Types
{
///
/// Memory layout parameters, for block linear textures.
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Types/SbDescriptor.cs b/src/Ryujinx.Graphics.Gpu/Engine/Types/SbDescriptor.cs
index e92263df0..e1cc8c01d 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Types/SbDescriptor.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Types/SbDescriptor.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Engine.Types
+namespace Ryujinx.Graphics.Gpu.Engine.Types
{
///
/// Storage buffer address and size information.
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Types/ZetaFormat.cs b/src/Ryujinx.Graphics.Gpu/Engine/Types/ZetaFormat.cs
index 0fa073d7b..e2a044e72 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Types/ZetaFormat.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Types/ZetaFormat.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Image;
namespace Ryujinx.Graphics.Gpu.Engine.Types
diff --git a/src/Ryujinx.Graphics.Gpu/GpuChannel.cs b/src/Ryujinx.Graphics.Gpu/GpuChannel.cs
index d70c9645e..33618a15b 100644
--- a/src/Ryujinx.Graphics.Gpu/GpuChannel.cs
+++ b/src/Ryujinx.Graphics.Gpu/GpuChannel.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.GPFifo;
using Ryujinx.Graphics.Gpu.Image;
using Ryujinx.Graphics.Gpu.Memory;
diff --git a/src/Ryujinx.Graphics.Gpu/GpuContext.cs b/src/Ryujinx.Graphics.Gpu/GpuContext.cs
index a50852b05..aaf03ff79 100644
--- a/src/Ryujinx.Graphics.Gpu/GpuContext.cs
+++ b/src/Ryujinx.Graphics.Gpu/GpuContext.cs
@@ -106,6 +106,8 @@ namespace Ryujinx.Graphics.Gpu
private long _modifiedSequence;
private readonly ulong _firstTimestamp;
+ private readonly ManualResetEvent _gpuReadyEvent;
+
///
/// Creates a new instance of the GPU emulation context.
///
@@ -121,6 +123,7 @@ namespace Ryujinx.Graphics.Gpu
Window = new Window(this);
HostInitalized = new ManualResetEvent(false);
+ _gpuReadyEvent = new ManualResetEvent(false);
SyncActions = new List();
SyncpointActions = new List();
@@ -216,7 +219,7 @@ namespace Ryujinx.Graphics.Gpu
/// Gets a sequence number for resource modification ordering. This increments on each call.
///
/// A sequence number for resource modification ordering
- public long GetModifiedSequence()
+ internal long GetModifiedSequence()
{
return _modifiedSequence++;
}
@@ -225,7 +228,7 @@ namespace Ryujinx.Graphics.Gpu
/// Gets the value of the GPU timer.
///
/// The current GPU timestamp
- public ulong GetTimestamp()
+ internal ulong GetTimestamp()
{
// Guest timestamp will start at 0, instead of host value.
ulong ticks = ConvertNanosecondsToTicks((ulong)PerformanceCounter.ElapsedNanoseconds) - _firstTimestamp;
@@ -262,6 +265,16 @@ namespace Ryujinx.Graphics.Gpu
{
physicalMemory.ShaderCache.Initialize(cancellationToken);
}
+
+ _gpuReadyEvent.Set();
+ }
+
+ ///
+ /// Waits until the GPU is ready to receive commands.
+ ///
+ public void WaitUntilGpuReady()
+ {
+ _gpuReadyEvent.WaitOne();
}
///
@@ -399,6 +412,7 @@ namespace Ryujinx.Graphics.Gpu
{
GPFifo.Dispose();
HostInitalized.Dispose();
+ _gpuReadyEvent.Dispose();
// Has to be disposed before processing deferred actions, as it will produce some.
foreach (var physicalMemory in PhysicalMemoryRegistry.Values)
diff --git a/src/Ryujinx.Graphics.Gpu/Image/ITextureDescriptor.cs b/src/Ryujinx.Graphics.Gpu/Image/ITextureDescriptor.cs
index 378de44b6..d287acc22 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/ITextureDescriptor.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/ITextureDescriptor.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Image
+namespace Ryujinx.Graphics.Gpu.Image
{
interface ITextureDescriptor
{
diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs
index 8eca18b48..963bd947d 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs
@@ -382,7 +382,7 @@ namespace Ryujinx.Graphics.Gpu.Image
{
ref BufferBounds bounds = ref _channel.BufferManager.GetUniformBufferBounds(_isCompute, stageIndex, textureBufferIndex);
- cachedTextureBuffer = MemoryMarshal.Cast(_channel.MemoryManager.Physical.GetSpan(bounds.Address, (int)bounds.Size));
+ cachedTextureBuffer = MemoryMarshal.Cast(_channel.MemoryManager.Physical.GetSpan(bounds.Range));
cachedTextureBufferIndex = textureBufferIndex;
if (samplerBufferIndex == textureBufferIndex)
@@ -396,7 +396,7 @@ namespace Ryujinx.Graphics.Gpu.Image
{
ref BufferBounds bounds = ref _channel.BufferManager.GetUniformBufferBounds(_isCompute, stageIndex, samplerBufferIndex);
- cachedSamplerBuffer = MemoryMarshal.Cast(_channel.MemoryManager.Physical.GetSpan(bounds.Address, (int)bounds.Size));
+ cachedSamplerBuffer = MemoryMarshal.Cast(_channel.MemoryManager.Physical.GetSpan(bounds.Range));
cachedSamplerBufferIndex = samplerBufferIndex;
}
}
@@ -524,7 +524,7 @@ namespace Ryujinx.Graphics.Gpu.Image
// Ensure that the buffer texture is using the correct buffer as storage.
// Buffers are frequently re-created to accommodate larger data, so we need to re-bind
// to ensure we're not using a old buffer that was already deleted.
- _channel.BufferManager.SetBufferTextureStorage(stage, hostTexture, texture.Range.GetSubRange(0).Address, texture.Size, bindingInfo, bindingInfo.Format, false);
+ _channel.BufferManager.SetBufferTextureStorage(stage, hostTexture, texture.Range, bindingInfo, bindingInfo.Format, false);
// Cache is not used for buffer texture, it must always rebind.
state.CachedTexture = null;
@@ -661,7 +661,7 @@ namespace Ryujinx.Graphics.Gpu.Image
format = texture.Format;
}
- _channel.BufferManager.SetBufferTextureStorage(stage, hostTexture, texture.Range.GetSubRange(0).Address, texture.Size, bindingInfo, format, true);
+ _channel.BufferManager.SetBufferTextureStorage(stage, hostTexture, texture.Range, bindingInfo, format, true);
// Cache is not used for buffer texture, it must always rebind.
state.CachedTexture = null;
diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureDependency.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureDependency.cs
index 269ddbd97..45a5a3973 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/TextureDependency.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/TextureDependency.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Image
+namespace Ryujinx.Graphics.Gpu.Image
{
///
/// One side of a two-way dependency between one texture view and another.
diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureGroup.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureGroup.cs
index b93f3832d..0fb4f1be7 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/TextureGroup.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/TextureGroup.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Texture;
diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureGroupHandle.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureGroupHandle.cs
index 72b743906..d345ec2db 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/TextureGroupHandle.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/TextureGroupHandle.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu.Synchronization;
+using Ryujinx.Graphics.Gpu.Synchronization;
using Ryujinx.Memory.Tracking;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureManager.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureManager.cs
index fa278bbd9..3bf0beefd 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/TextureManager.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/TextureManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.Types;
using Ryujinx.Graphics.Gpu.Shader;
using System;
diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureMatchQuality.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureMatchQuality.cs
index 67835e954..b918911bc 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/TextureMatchQuality.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/TextureMatchQuality.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Image
+namespace Ryujinx.Graphics.Gpu.Image
{
enum TextureMatchQuality
{
diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureScaleMode.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureScaleMode.cs
index 5d8e14db3..aa316a9f0 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/TextureScaleMode.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/TextureScaleMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Image
+namespace Ryujinx.Graphics.Gpu.Image
{
///
/// The scale mode for a given texture.
diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureViewCompatibility.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureViewCompatibility.cs
index 3f3bfdfef..22476c397 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/TextureViewCompatibility.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/TextureViewCompatibility.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Image
+namespace Ryujinx.Graphics.Gpu.Image
{
///
/// The level of view compatibility one texture has to another.
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs b/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs
index c9286a619..12461e96e 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs
@@ -43,6 +43,11 @@ namespace Ryujinx.Graphics.Gpu.Memory
///
public int UnmappedSequence { get; private set; }
+ ///
+ /// Indicates if the buffer can be used in a sparse buffer mapping.
+ ///
+ public bool SparseCompatible { get; }
+
///
/// Ranges of the buffer that have been modified on the GPU.
/// Ranges defined here cannot be updated from CPU until a CPU waiting sync point is reached.
@@ -77,15 +82,25 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// Physical memory where the buffer is mapped
/// Start address of the buffer
/// Size of the buffer in bytes
+ /// Indicates if the buffer can be used in a sparse buffer mapping
/// Buffers which this buffer contains, and will inherit tracking handles from
- public Buffer(GpuContext context, PhysicalMemory physicalMemory, ulong address, ulong size, IEnumerable baseBuffers = null)
+ public Buffer(
+ GpuContext context,
+ PhysicalMemory physicalMemory,
+ ulong address,
+ ulong size,
+ bool sparseCompatible,
+ IEnumerable baseBuffers = null)
{
_context = context;
_physicalMemory = physicalMemory;
Address = address;
Size = size;
+ SparseCompatible = sparseCompatible;
- Handle = context.Renderer.CreateBuffer((int)size, baseBuffers?.MaxBy(x => x.Size).Handle ?? BufferHandle.Null);
+ BufferAccess access = sparseCompatible ? BufferAccess.SparseCompatible : BufferAccess.Default;
+
+ Handle = context.Renderer.CreateBuffer((int)size, access, baseBuffers?.MaxBy(x => x.Size).Handle ?? BufferHandle.Null);
_useGranular = size > GranularBufferThreshold;
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs
index a9ea04cef..aed3268ae 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs
@@ -1,4 +1,5 @@
using Ryujinx.Graphics.Shader;
+using Ryujinx.Memory.Range;
namespace Ryujinx.Graphics.Gpu.Memory
{
@@ -8,30 +9,28 @@ namespace Ryujinx.Graphics.Gpu.Memory
readonly struct BufferBounds
{
///
- /// Region virtual address.
+ /// Physical memory ranges where the buffer is mapped.
///
- public ulong Address { get; }
-
- ///
- /// Region size in bytes.
- ///
- public ulong Size { get; }
+ public MultiRange Range { get; }
///
/// Buffer usage flags.
///
public BufferUsageFlags Flags { get; }
+ ///
+ /// Indicates that the backing memory for the buffer does not exist.
+ ///
+ public bool IsUnmapped => Range.IsUnmapped;
+
///
/// Creates a new buffer region.
///
- /// Region address
- /// Region size
+ /// Physical memory ranges where the buffer is mapped
/// Buffer usage flags
- public BufferBounds(ulong address, ulong size, BufferUsageFlags flags = BufferUsageFlags.None)
+ public BufferBounds(MultiRange range, BufferUsageFlags flags = BufferUsageFlags.None)
{
- Address = address;
- Size = size;
+ Range = range;
Flags = flags;
}
}
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferCache.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferCache.cs
index 05cc312c7..bd9aa39c8 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/BufferCache.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferCache.cs
@@ -11,12 +11,24 @@ namespace Ryujinx.Graphics.Gpu.Memory
///
class BufferCache : IDisposable
{
- private const int OverlapsBufferInitialCapacity = 10;
- private const int OverlapsBufferMaxCapacity = 10000;
+ ///
+ /// Initial size for the array holding overlaps.
+ ///
+ public const int OverlapsBufferInitialCapacity = 10;
+
+ ///
+ /// Maximum size that an array holding overlaps may have after trimming.
+ ///
+ public const int OverlapsBufferMaxCapacity = 10000;
private const ulong BufferAlignmentSize = 0x1000;
private const ulong BufferAlignmentMask = BufferAlignmentSize - 1;
+ ///
+ /// Alignment required for sparse buffer mappings.
+ ///
+ public const ulong SparseBufferAlignmentSize = 0x10000;
+
private const ulong MaxDynamicGrowthSize = 0x100000;
private readonly GpuContext _context;
@@ -27,6 +39,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// Must lock for any access from other threads.
///
private readonly RangeList _buffers;
+ private readonly MultiRangeList _multiRangeBuffers;
private Buffer[] _bufferOverlaps;
@@ -47,6 +60,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
_physicalMemory = physicalMemory;
_buffers = new RangeList();
+ _multiRangeBuffers = new MultiRangeList();
_bufferOverlaps = new Buffer[OverlapsBufferInitialCapacity];
@@ -66,45 +80,100 @@ namespace Ryujinx.Graphics.Gpu.Memory
Buffer[] overlaps = new Buffer[10];
int overlapCount;
- ulong address = ((MemoryManager)sender).Translate(e.Address);
- ulong size = e.Size;
+ MultiRange range = ((MemoryManager)sender).GetPhysicalRegions(e.Address, e.Size);
- lock (_buffers)
+ for (int index = 0; index < range.Count; index++)
{
- overlapCount = _buffers.FindOverlaps(address, size, ref overlaps);
- }
+ MemoryRange subRange = range.GetSubRange(index);
- for (int i = 0; i < overlapCount; i++)
- {
- overlaps[i].Unmapped(address, size);
+ lock (_buffers)
+ {
+ overlapCount = _buffers.FindOverlaps(subRange.Address, subRange.Size, ref overlaps);
+ }
+
+ for (int i = 0; i < overlapCount; i++)
+ {
+ overlaps[i].Unmapped(subRange.Address, subRange.Size);
+ }
}
}
///
/// Performs address translation of the GPU virtual address, and creates a
- /// new buffer, if needed, for the specified range.
+ /// new buffer, if needed, for the specified contiguous range.
///
/// GPU memory manager where the buffer is mapped
/// Start GPU virtual address of the buffer
/// Size in bytes of the buffer
- /// CPU virtual address of the buffer, after address translation
- public ulong TranslateAndCreateBuffer(MemoryManager memoryManager, ulong gpuVa, ulong size)
+ /// Contiguous physical range of the buffer, after address translation
+ public MultiRange TranslateAndCreateBuffer(MemoryManager memoryManager, ulong gpuVa, ulong size)
{
if (gpuVa == 0)
{
- return 0;
+ return new MultiRange(MemoryManager.PteUnmapped, size);
}
ulong address = memoryManager.Translate(gpuVa);
- if (address == MemoryManager.PteUnmapped)
+ if (address != MemoryManager.PteUnmapped)
{
- return 0;
+ CreateBuffer(address, size);
}
- CreateBuffer(address, size);
+ return new MultiRange(address, size);
+ }
- return address;
+ ///
+ /// Performs address translation of the GPU virtual address, and creates
+ /// new buffers, if needed, for the specified range.
+ ///
+ /// GPU memory manager where the buffer is mapped
+ /// Start GPU virtual address of the buffer
+ /// Size in bytes of the buffer
+ /// Physical ranges of the buffer, after address translation
+ public MultiRange TranslateAndCreateMultiBuffers(MemoryManager memoryManager, ulong gpuVa, ulong size)
+ {
+ if (gpuVa == 0)
+ {
+ return new MultiRange(MemoryManager.PteUnmapped, size);
+ }
+
+ bool supportsSparse = _context.Capabilities.SupportsSparseBuffer;
+
+ // Fast path not taken for non-contiguous ranges,
+ // since multi-range buffers are not coalesced, so a buffer that covers
+ // the entire cached range might not actually exist.
+ if (memoryManager.VirtualBufferCache.TryGetOrAddRange(gpuVa, size, supportsSparse, out MultiRange range) &&
+ range.Count == 1)
+ {
+ return range;
+ }
+
+ CreateBuffer(range);
+
+ return range;
+ }
+
+ ///
+ /// Creates a new buffer for the specified range, if it does not yet exist.
+ /// This can be used to ensure the existance of a buffer.
+ ///
+ /// Physical ranges of memory where the buffer data is located
+ public void CreateBuffer(MultiRange range)
+ {
+ if (range.Count > 1)
+ {
+ CreateMultiRangeBuffer(range);
+ }
+ else
+ {
+ MemoryRange subRange = range.GetSubRange(0);
+
+ if (subRange.Address != MemoryManager.PteUnmapped)
+ {
+ CreateBuffer(subRange.Address, subRange.Size);
+ }
+ }
}
///
@@ -118,7 +187,6 @@ namespace Ryujinx.Graphics.Gpu.Memory
ulong endAddress = address + size;
ulong alignedAddress = address & ~BufferAlignmentMask;
-
ulong alignedEndAddress = (endAddress + BufferAlignmentMask) & ~BufferAlignmentMask;
// The buffer must have the size of at least one page.
@@ -130,6 +198,108 @@ namespace Ryujinx.Graphics.Gpu.Memory
CreateBufferAligned(alignedAddress, alignedEndAddress - alignedAddress);
}
+ ///
+ /// Creates a new buffer for the specified range, if it does not yet exist.
+ /// This can be used to ensure the existance of a buffer.
+ ///
+ /// Address of the buffer in memory
+ /// Size of the buffer in bytes
+ /// Alignment of the start address of the buffer in bytes
+ public void CreateBuffer(ulong address, ulong size, ulong alignment)
+ {
+ ulong alignmentMask = alignment - 1;
+ ulong pageAlignmentMask = BufferAlignmentMask;
+ ulong endAddress = address + size;
+
+ ulong alignedAddress = address & ~alignmentMask;
+ ulong alignedEndAddress = (endAddress + pageAlignmentMask) & ~pageAlignmentMask;
+
+ // The buffer must have the size of at least one page.
+ if (alignedEndAddress == alignedAddress)
+ {
+ alignedEndAddress += pageAlignmentMask;
+ }
+
+ CreateBufferAligned(alignedAddress, alignedEndAddress - alignedAddress, alignment);
+ }
+
+ ///
+ /// Creates a buffer for a memory region composed of multiple physical ranges,
+ /// if it does not exist yet.
+ ///
+ /// Physical ranges of memory
+ private void CreateMultiRangeBuffer(MultiRange range)
+ {
+ // Ensure all non-contiguous buffer we might use are sparse aligned.
+ for (int i = 0; i < range.Count; i++)
+ {
+ MemoryRange subRange = range.GetSubRange(i);
+
+ if (subRange.Address != MemoryManager.PteUnmapped)
+ {
+ CreateBuffer(subRange.Address, subRange.Size, SparseBufferAlignmentSize);
+ }
+ }
+
+ // Create sparse buffer.
+ MultiRangeBuffer[] overlaps = new MultiRangeBuffer[10];
+
+ int overlapCount = _multiRangeBuffers.FindOverlaps(range, ref overlaps);
+
+ for (int index = 0; index < overlapCount; index++)
+ {
+ if (overlaps[index].Range.Contains(range))
+ {
+ return;
+ }
+ }
+
+ for (int index = 0; index < overlapCount; index++)
+ {
+ if (range.Contains(overlaps[index].Range))
+ {
+ _multiRangeBuffers.Remove(overlaps[index]);
+ overlaps[index].Dispose();
+ }
+ }
+
+ BufferRange[] storages = new BufferRange[range.Count];
+ MemoryRange[] alignedSubRanges = new MemoryRange[range.Count];
+
+ ulong alignmentMask = SparseBufferAlignmentSize - 1;
+
+ for (int i = 0; i < range.Count; i++)
+ {
+ MemoryRange subRange = range.GetSubRange(i);
+
+ if (subRange.Address != MemoryManager.PteUnmapped)
+ {
+ ulong endAddress = subRange.Address + subRange.Size;
+
+ ulong alignedAddress = subRange.Address & ~alignmentMask;
+ ulong alignedEndAddress = (endAddress + alignmentMask) & ~alignmentMask;
+ ulong alignedSize = alignedEndAddress - alignedAddress;
+
+ Buffer buffer = _buffers.FindFirstOverlap(alignedAddress, alignedSize);
+ BufferRange bufferRange = buffer.GetRange(alignedAddress, alignedSize, false);
+
+ storages[i] = bufferRange;
+ alignedSubRanges[i] = new MemoryRange(alignedAddress, alignedSize);
+ }
+ else
+ {
+ ulong alignedSize = (subRange.Size + alignmentMask) & ~alignmentMask;
+
+ storages[i] = new BufferRange(BufferHandle.Null, 0, (int)alignedSize);
+ alignedSubRanges[i] = new MemoryRange(MemoryManager.PteUnmapped, alignedSize);
+ }
+ }
+
+ MultiRangeBuffer multiRangeBuffer = new(_context, new MultiRange(alignedSubRanges), storages);
+
+ _multiRangeBuffers.Add(multiRangeBuffer);
+ }
+
///
/// Performs address translation of the GPU virtual address, and attempts to force
/// the buffer in the region as dirty.
@@ -150,7 +320,8 @@ namespace Ryujinx.Graphics.Gpu.Memory
result.EndGpuAddress < gpuVa + size ||
result.UnmappedSequence != result.Buffer.UnmappedSequence)
{
- ulong address = TranslateAndCreateBuffer(memoryManager, gpuVa, size);
+ MultiRange range = TranslateAndCreateBuffer(memoryManager, gpuVa, size);
+ ulong address = range.GetSubRange(0).Address;
result = new BufferCacheEntry(address, gpuVa, GetBuffer(address, size));
_dirtyCache[gpuVa] = result;
@@ -184,7 +355,8 @@ namespace Ryujinx.Graphics.Gpu.Memory
result.EndGpuAddress < alignedEndGpuVa ||
result.UnmappedSequence != result.Buffer.UnmappedSequence)
{
- ulong address = TranslateAndCreateBuffer(memoryManager, alignedGpuVa, size);
+ MultiRange range = TranslateAndCreateBuffer(memoryManager, alignedGpuVa, size);
+ ulong address = range.GetSubRange(0).Address;
result = new BufferCacheEntry(address, alignedGpuVa, GetBuffer(address, size));
_modifiedCache[alignedGpuVa] = result;
@@ -204,7 +376,8 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// Size in bytes of the buffer
private void CreateBufferAligned(ulong address, ulong size)
{
- int overlapsCount = _buffers.FindOverlapsNonOverlapping(address, size, ref _bufferOverlaps);
+ Buffer[] overlaps = _bufferOverlaps;
+ int overlapsCount = _buffers.FindOverlapsNonOverlapping(address, size, ref overlaps);
if (overlapsCount != 0)
{
@@ -215,9 +388,12 @@ namespace Ryujinx.Graphics.Gpu.Memory
// old buffer(s) to the new buffer.
ulong endAddress = address + size;
+ Buffer overlap0 = overlaps[0];
- if (_bufferOverlaps[0].Address > address || _bufferOverlaps[0].EndAddress < endAddress)
+ if (overlap0.Address > address || overlap0.EndAddress < endAddress)
{
+ bool anySparseCompatible = false;
+
// Check if the following conditions are met:
// - We have a single overlap.
// - The overlap starts at or before the requested range. That is, the overlap happens at the end.
@@ -228,23 +404,25 @@ namespace Ryujinx.Graphics.Gpu.Memory
// Allowing for 2 pages (rather than just one) is necessary to catch cases where the
// range crosses a page, and after alignment, ends having a size of 2 pages.
if (overlapsCount == 1 &&
- address >= _bufferOverlaps[0].Address &&
- endAddress - _bufferOverlaps[0].EndAddress <= BufferAlignmentSize * 2)
+ address >= overlap0.Address &&
+ endAddress - overlap0.EndAddress <= BufferAlignmentSize * 2)
{
// Try to grow the buffer by 1.5x of its current size.
// This improves performance in the cases where the buffer is resized often by small amounts.
- ulong existingSize = _bufferOverlaps[0].Size;
+ ulong existingSize = overlap0.Size;
ulong growthSize = (existingSize + Math.Min(existingSize >> 1, MaxDynamicGrowthSize)) & ~BufferAlignmentMask;
size = Math.Max(size, growthSize);
endAddress = address + size;
- overlapsCount = _buffers.FindOverlapsNonOverlapping(address, size, ref _bufferOverlaps);
+ overlapsCount = _buffers.FindOverlapsNonOverlapping(address, size, ref overlaps);
}
for (int index = 0; index < overlapsCount; index++)
{
- Buffer buffer = _bufferOverlaps[index];
+ Buffer buffer = overlaps[index];
+
+ anySparseCompatible |= buffer.SparseCompatible;
address = Math.Min(address, buffer.Address);
endAddress = Math.Max(endAddress, buffer.EndAddress);
@@ -257,35 +435,13 @@ namespace Ryujinx.Graphics.Gpu.Memory
ulong newSize = endAddress - address;
- Buffer newBuffer = new(_context, _physicalMemory, address, newSize, _bufferOverlaps.Take(overlapsCount));
-
- lock (_buffers)
- {
- _buffers.Add(newBuffer);
- }
-
- for (int index = 0; index < overlapsCount; index++)
- {
- Buffer buffer = _bufferOverlaps[index];
-
- int dstOffset = (int)(buffer.Address - newBuffer.Address);
-
- buffer.CopyTo(newBuffer, dstOffset);
- newBuffer.InheritModifiedRanges(buffer);
-
- buffer.DecrementReferenceCount();
- }
-
- newBuffer.SynchronizeMemory(address, newSize);
-
- // Existing buffers were modified, we need to rebind everything.
- NotifyBuffersModified?.Invoke();
+ CreateBufferAligned(address, newSize, anySparseCompatible, overlaps, overlapsCount);
}
}
else
{
// No overlap, just create a new buffer.
- Buffer buffer = new(_context, _physicalMemory, address, size);
+ Buffer buffer = new(_context, _physicalMemory, address, size, sparseCompatible: false);
lock (_buffers)
{
@@ -296,6 +452,151 @@ namespace Ryujinx.Graphics.Gpu.Memory
ShrinkOverlapsBufferIfNeeded();
}
+ ///
+ /// Creates a new buffer for the specified range, if needed.
+ /// If a buffer where this range can be fully contained already exists,
+ /// then the creation of a new buffer is not necessary.
+ ///
+ /// Address of the buffer in guest memory
+ /// Size in bytes of the buffer
+ /// Alignment of the start address of the buffer
+ private void CreateBufferAligned(ulong address, ulong size, ulong alignment)
+ {
+ Buffer[] overlaps = _bufferOverlaps;
+ int overlapsCount = _buffers.FindOverlapsNonOverlapping(address, size, ref overlaps);
+ bool sparseAligned = alignment >= SparseBufferAlignmentSize;
+
+ if (overlapsCount != 0)
+ {
+ // If the buffer already exists, make sure if covers the entire range,
+ // and make sure it is properly aligned, otherwise sparse mapping may fail.
+
+ ulong endAddress = address + size;
+ Buffer overlap0 = overlaps[0];
+
+ if (overlap0.Address > address ||
+ overlap0.EndAddress < endAddress ||
+ (overlap0.Address & (alignment - 1)) != 0 ||
+ (!overlap0.SparseCompatible && sparseAligned))
+ {
+ // We need to make sure the new buffer is properly aligned.
+ // However, after the range is aligned, it is possible that it
+ // overlaps more buffers, so try again after each extension
+ // and ensure we cover all overlaps.
+
+ int oldOverlapsCount;
+
+ do
+ {
+ for (int index = 0; index < overlapsCount; index++)
+ {
+ Buffer buffer = overlaps[index];
+
+ address = Math.Min(address, buffer.Address);
+ endAddress = Math.Max(endAddress, buffer.EndAddress);
+ }
+
+ address &= ~(alignment - 1);
+
+ oldOverlapsCount = overlapsCount;
+ overlapsCount = _buffers.FindOverlapsNonOverlapping(address, endAddress - address, ref overlaps);
+ }
+ while (oldOverlapsCount != overlapsCount);
+
+ lock (_buffers)
+ {
+ for (int index = 0; index < overlapsCount; index++)
+ {
+ _buffers.Remove(overlaps[index]);
+ }
+ }
+
+ ulong newSize = endAddress - address;
+
+ CreateBufferAligned(address, newSize, sparseAligned, overlaps, overlapsCount);
+ }
+ }
+ else
+ {
+ // No overlap, just create a new buffer.
+ Buffer buffer = new(_context, _physicalMemory, address, size, sparseAligned);
+
+ lock (_buffers)
+ {
+ _buffers.Add(buffer);
+ }
+ }
+
+ ShrinkOverlapsBufferIfNeeded();
+ }
+
+ ///
+ /// Creates a new buffer for the specified range, if needed.
+ /// If a buffer where this range can be fully contained already exists,
+ /// then the creation of a new buffer is not necessary.
+ ///
+ /// Address of the buffer in guest memory
+ /// Size in bytes of the buffer
+ /// Indicates if the buffer can be used in a sparse buffer mapping
+ /// Buffers overlapping the range
+ /// Total of overlaps
+ private void CreateBufferAligned(ulong address, ulong size, bool sparseCompatible, Buffer[] overlaps, int overlapsCount)
+ {
+ Buffer newBuffer = new Buffer(_context, _physicalMemory, address, size, sparseCompatible, overlaps.Take(overlapsCount));
+
+ lock (_buffers)
+ {
+ _buffers.Add(newBuffer);
+ }
+
+ for (int index = 0; index < overlapsCount; index++)
+ {
+ Buffer buffer = overlaps[index];
+
+ int dstOffset = (int)(buffer.Address - newBuffer.Address);
+
+ buffer.CopyTo(newBuffer, dstOffset);
+ newBuffer.InheritModifiedRanges(buffer);
+
+ buffer.DecrementReferenceCount();
+ }
+
+ newBuffer.SynchronizeMemory(address, size);
+
+ // Existing buffers were modified, we need to rebind everything.
+ NotifyBuffersModified?.Invoke();
+
+ RecreateMultiRangeBuffers(address, size);
+ }
+
+ ///
+ /// Recreates all the multi-range buffers that overlaps a given physical memory range.
+ ///
+ /// Start address of the range
+ /// Size of the range in bytes
+ private void RecreateMultiRangeBuffers(ulong address, ulong size)
+ {
+ if ((address & (SparseBufferAlignmentSize - 1)) != 0 || (size & (SparseBufferAlignmentSize - 1)) != 0)
+ {
+ return;
+ }
+
+ MultiRangeBuffer[] overlaps = new MultiRangeBuffer[10];
+
+ int overlapCount = _multiRangeBuffers.FindOverlaps(address, size, ref overlaps);
+
+ for (int index = 0; index < overlapCount; index++)
+ {
+ _multiRangeBuffers.Remove(overlaps[index]);
+ overlaps[index].Dispose();
+ }
+
+ for (int index = 0; index < overlapCount; index++)
+ {
+ CreateMultiRangeBuffer(overlaps[index].Range);
+ }
+ }
+
///
/// Resizes the temporary buffer used for range list intersection results, if it has grown too much.
///
@@ -319,9 +620,63 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// Size in bytes of the copy
public void CopyBuffer(MemoryManager memoryManager, ulong srcVa, ulong dstVa, ulong size)
{
- ulong srcAddress = TranslateAndCreateBuffer(memoryManager, srcVa, size);
- ulong dstAddress = TranslateAndCreateBuffer(memoryManager, dstVa, size);
+ MultiRange srcRange = TranslateAndCreateMultiBuffers(memoryManager, srcVa, size);
+ MultiRange dstRange = TranslateAndCreateMultiBuffers(memoryManager, dstVa, size);
+ if (srcRange.Count == 1 && dstRange.Count == 1)
+ {
+ CopyBufferSingleRange(memoryManager, srcRange.GetSubRange(0).Address, dstRange.GetSubRange(0).Address, size);
+ }
+ else
+ {
+ ulong copiedSize = 0;
+ ulong srcOffset = 0;
+ ulong dstOffset = 0;
+ int srcRangeIndex = 0;
+ int dstRangeIndex = 0;
+
+ while (copiedSize < size)
+ {
+ if (srcRange.GetSubRange(srcRangeIndex).Size == srcOffset)
+ {
+ srcRangeIndex++;
+ srcOffset = 0;
+ }
+
+ if (dstRange.GetSubRange(dstRangeIndex).Size == dstOffset)
+ {
+ dstRangeIndex++;
+ dstOffset = 0;
+ }
+
+ MemoryRange srcSubRange = srcRange.GetSubRange(srcRangeIndex);
+ MemoryRange dstSubRange = dstRange.GetSubRange(dstRangeIndex);
+
+ ulong srcSize = srcSubRange.Size - srcOffset;
+ ulong dstSize = dstSubRange.Size - dstOffset;
+ ulong copySize = Math.Min(srcSize, dstSize);
+
+ CopyBufferSingleRange(memoryManager, srcSubRange.Address + srcOffset, dstSubRange.Address + dstOffset, copySize);
+
+ srcOffset += copySize;
+ dstOffset += copySize;
+ copiedSize += copySize;
+ }
+ }
+ }
+
+ ///
+ /// Copy a buffer data from a given address to another.
+ ///
+ ///
+ /// This does a GPU side copy.
+ ///
+ /// GPU memory manager where the buffer is mapped
+ /// Physical address of the copy source
+ /// Physical address of the copy destination
+ /// Size in bytes of the copy
+ private void CopyBufferSingleRange(MemoryManager memoryManager, ulong srcAddress, ulong dstAddress, ulong size)
+ {
Buffer srcBuffer = GetBuffer(srcAddress, size);
Buffer dstBuffer = GetBuffer(dstAddress, size);
@@ -360,39 +715,98 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// Value to be written into the buffer
public void ClearBuffer(MemoryManager memoryManager, ulong gpuVa, ulong size, uint value)
{
- ulong address = TranslateAndCreateBuffer(memoryManager, gpuVa, size);
+ MultiRange range = TranslateAndCreateMultiBuffers(memoryManager, gpuVa, size);
- Buffer buffer = GetBuffer(address, size);
+ for (int index = 0; index < range.Count; index++)
+ {
+ MemoryRange subRange = range.GetSubRange(index);
+ Buffer buffer = GetBuffer(subRange.Address, subRange.Size);
- int offset = (int)(address - buffer.Address);
+ int offset = (int)(subRange.Address - buffer.Address);
- _context.Renderer.Pipeline.ClearBuffer(buffer.Handle, offset, (int)size, value);
+ _context.Renderer.Pipeline.ClearBuffer(buffer.Handle, offset, (int)subRange.Size, value);
- memoryManager.Physical.FillTrackedResource(address, size, value, ResourceKind.Buffer);
+ memoryManager.Physical.FillTrackedResource(subRange.Address, subRange.Size, value, ResourceKind.Buffer);
+ }
}
///
- /// Gets a buffer sub-range from a start address til a page boundary after the given size.
+ /// Gets a buffer sub-range starting at a given memory address, aligned to the next page boundary.
///
- /// Start address of the memory range
- /// Size in bytes of the memory range
+ /// Physical regions of memory where the buffer is mapped
/// Whether the buffer will be written to by this use
/// The buffer sub-range starting at the given memory address
- public BufferRange GetBufferRangeAligned(ulong address, ulong size, bool write = false)
+ public BufferRange GetBufferRangeAligned(MultiRange range, bool write = false)
{
- return GetBuffer(address, size, write).GetRangeAligned(address, size, write);
+ if (range.Count > 1)
+ {
+ return GetBuffer(range, write).GetRange(range);
+ }
+ else
+ {
+ MemoryRange subRange = range.GetSubRange(0);
+ return GetBuffer(subRange.Address, subRange.Size, write).GetRangeAligned(subRange.Address, subRange.Size, write);
+ }
}
///
/// Gets a buffer sub-range for a given memory range.
///
- /// Start address of the memory range
- /// Size in bytes of the memory range
+ /// Physical regions of memory where the buffer is mapped
/// Whether the buffer will be written to by this use
/// The buffer sub-range for the given range
- public BufferRange GetBufferRange(ulong address, ulong size, bool write = false)
+ public BufferRange GetBufferRange(MultiRange range, bool write = false)
{
- return GetBuffer(address, size, write).GetRange(address, size, write);
+ if (range.Count > 1)
+ {
+ return GetBuffer(range, write).GetRange(range);
+ }
+ else
+ {
+ MemoryRange subRange = range.GetSubRange(0);
+ return GetBuffer(subRange.Address, subRange.Size, write).GetRange(subRange.Address, subRange.Size, write);
+ }
+ }
+
+ ///
+ /// Gets a buffer for a given memory range.
+ /// A buffer overlapping with the specified range is assumed to already exist on the cache.
+ ///
+ /// Physical regions of memory where the buffer is mapped
+ /// Whether the buffer will be written to by this use
+ /// The buffer where the range is fully contained
+ private MultiRangeBuffer GetBuffer(MultiRange range, bool write = false)
+ {
+ for (int i = 0; i < range.Count; i++)
+ {
+ MemoryRange subRange = range.GetSubRange(i);
+
+ Buffer subBuffer = _buffers.FindFirstOverlap(subRange.Address, subRange.Size);
+
+ subBuffer.SynchronizeMemory(subRange.Address, subRange.Size);
+
+ if (write)
+ {
+ subBuffer.SignalModified(subRange.Address, subRange.Size);
+ }
+ }
+
+ MultiRangeBuffer[] overlaps = new MultiRangeBuffer[10];
+
+ int overlapCount = _multiRangeBuffers.FindOverlaps(range, ref overlaps);
+
+ MultiRangeBuffer buffer = null;
+
+ for (int i = 0; i < overlapCount; i++)
+ {
+ if (overlaps[i].Range.Contains(range))
+ {
+ buffer = overlaps[i];
+ break;
+ }
+ }
+
+ return buffer;
}
///
@@ -426,12 +840,33 @@ namespace Ryujinx.Graphics.Gpu.Memory
return buffer;
}
+ ///
+ /// Performs guest to host memory synchronization of a given memory range.
+ ///
+ /// Physical regions of memory where the buffer is mapped
+ public void SynchronizeBufferRange(MultiRange range)
+ {
+ if (range.Count == 1)
+ {
+ MemoryRange subRange = range.GetSubRange(0);
+ SynchronizeBufferRange(subRange.Address, subRange.Size);
+ }
+ else
+ {
+ for (int index = 0; index < range.Count; index++)
+ {
+ MemoryRange subRange = range.GetSubRange(index);
+ SynchronizeBufferRange(subRange.Address, subRange.Size);
+ }
+ }
+ }
+
///
/// Performs guest to host memory synchronization of a given memory range.
///
/// Start address of the memory range
/// Size in bytes of the memory range
- public void SynchronizeBufferRange(ulong address, ulong size)
+ private void SynchronizeBufferRange(ulong address, ulong size)
{
if (size != 0)
{
@@ -491,7 +926,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
///
/// Disposes all buffers in the cache.
- /// It's an error to use the buffer manager after disposal.
+ /// It's an error to use the buffer cache after disposal.
///
public void Dispose()
{
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferCacheEntry.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferCacheEntry.cs
index fa38b54e7..ef919c2b0 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/BufferCacheEntry.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferCacheEntry.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Gpu.Memory
+namespace Ryujinx.Graphics.Gpu.Memory
{
///
/// A cached entry for easily locating a buffer that is used often internally.
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferManager.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferManager.cs
index 8e9b4b858..c65602b5b 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/BufferManager.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferManager.cs
@@ -1,8 +1,9 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Image;
using Ryujinx.Graphics.Gpu.Shader;
using Ryujinx.Graphics.Shader;
+using Ryujinx.Memory.Range;
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
@@ -62,18 +63,19 @@ namespace Ryujinx.Graphics.Gpu.Memory
Bindings = new BufferDescriptor[count];
Buffers = new BufferBounds[count];
Unaligned = new bool[count];
+
+ Buffers.AsSpan().Fill(new BufferBounds(new MultiRange(MemoryManager.PteUnmapped, 0UL)));
}
///
/// Sets the region of a buffer at a given slot.
///
/// Buffer slot
- /// Region virtual address
- /// Region size in bytes
+ /// Physical memory regions where the buffer is mapped
/// Buffer usage flags
- public void SetBounds(int index, ulong address, ulong size, BufferUsageFlags flags = BufferUsageFlags.None)
+ public void SetBounds(int index, MultiRange range, BufferUsageFlags flags = BufferUsageFlags.None)
{
- Buffers[index] = new BufferBounds(address, size, flags);
+ Buffers[index] = new BufferBounds(range, flags);
}
///
@@ -120,6 +122,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
_context = context;
_channel = channel;
+ _indexBuffer.Range = new MultiRange(MemoryManager.PteUnmapped, 0UL);
_vertexBuffers = new VertexBuffer[Constants.TotalVertexBuffers];
_transformFeedbackBuffers = new BufferBounds[Constants.TotalTransformFeedbackBuffers];
@@ -150,10 +153,9 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// Type of each index buffer element
public void SetIndexBuffer(ulong gpuVa, ulong size, IndexType type)
{
- ulong address = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
+ MultiRange range = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
- _indexBuffer.Address = address;
- _indexBuffer.Size = size;
+ _indexBuffer.Range = range;
_indexBuffer.Type = type;
_indexBufferDirty = true;
@@ -181,16 +183,15 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// Vertex divisor of the buffer, for instanced draws
public void SetVertexBuffer(int index, ulong gpuVa, ulong size, int stride, int divisor)
{
- ulong address = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
+ MultiRange range = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
- _vertexBuffers[index].Address = address;
- _vertexBuffers[index].Size = size;
+ _vertexBuffers[index].Range = range;
_vertexBuffers[index].Stride = stride;
_vertexBuffers[index].Divisor = divisor;
_vertexBuffersDirty = true;
- if (address != 0)
+ if (!range.IsUnmapped)
{
_vertexBuffersEnableMask |= 1u << index;
}
@@ -209,9 +210,9 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// Size in bytes of the transform feedback buffer
public void SetTransformFeedbackBuffer(int index, ulong gpuVa, ulong size)
{
- ulong address = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
+ MultiRange range = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateMultiBuffers(_channel.MemoryManager, gpuVa, size);
- _transformFeedbackBuffers[index] = new BufferBounds(address, size);
+ _transformFeedbackBuffers[index] = new BufferBounds(range);
_transformFeedbackBuffersDirty = true;
}
@@ -256,9 +257,9 @@ namespace Ryujinx.Graphics.Gpu.Memory
gpuVa = BitUtils.AlignDown(gpuVa, (ulong)_context.Capabilities.StorageBufferOffsetAlignment);
- ulong address = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
+ MultiRange range = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateMultiBuffers(_channel.MemoryManager, gpuVa, size);
- _cpStorageBuffers.SetBounds(index, address, size, flags);
+ _cpStorageBuffers.SetBounds(index, range, flags);
}
///
@@ -280,15 +281,14 @@ namespace Ryujinx.Graphics.Gpu.Memory
gpuVa = BitUtils.AlignDown(gpuVa, (ulong)_context.Capabilities.StorageBufferOffsetAlignment);
- ulong address = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
+ MultiRange range = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateMultiBuffers(_channel.MemoryManager, gpuVa, size);
- if (buffers.Buffers[index].Address != address ||
- buffers.Buffers[index].Size != size)
+ if (!buffers.Buffers[index].Range.Equals(range))
{
_gpStorageBuffersDirty = true;
}
- buffers.SetBounds(index, address, size, flags);
+ buffers.SetBounds(index, range, flags);
}
///
@@ -300,9 +300,9 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// Size in bytes of the storage buffer
public void SetComputeUniformBuffer(int index, ulong gpuVa, ulong size)
{
- ulong address = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
+ MultiRange range = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
- _cpUniformBuffers.SetBounds(index, address, size);
+ _cpUniformBuffers.SetBounds(index, range);
}
///
@@ -315,9 +315,9 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// Size in bytes of the storage buffer
public void SetGraphicsUniformBuffer(int stage, int index, ulong gpuVa, ulong size)
{
- ulong address = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
+ MultiRange range = _channel.MemoryManager.Physical.BufferCache.TranslateAndCreateBuffer(_channel.MemoryManager, gpuVa, size);
- _gpUniformBuffers[stage].SetBounds(index, address, size);
+ _gpUniformBuffers[stage].SetBounds(index, range);
_gpUniformBuffersDirty = true;
}
@@ -379,7 +379,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
for (int i = 0; i < _cpUniformBuffers.Buffers.Length; i++)
{
- if (_cpUniformBuffers.Buffers[i].Address != 0)
+ if (!_cpUniformBuffers.Buffers[i].IsUnmapped)
{
mask |= 1u << i;
}
@@ -399,7 +399,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
for (int i = 0; i < _gpUniformBuffers[stage].Buffers.Length; i++)
{
- if (_gpUniformBuffers[stage].Buffers[i].Address != 0)
+ if (!_gpUniformBuffers[stage].Buffers[i].IsUnmapped)
{
mask |= 1u << i;
}
@@ -415,7 +415,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// The uniform buffer address, or an undefined value if the buffer is not currently bound
public ulong GetComputeUniformBufferAddress(int index)
{
- return _cpUniformBuffers.Buffers[index].Address;
+ return _cpUniformBuffers.Buffers[index].Range.GetSubRange(0).Address;
}
///
@@ -426,7 +426,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// The uniform buffer address, or an undefined value if the buffer is not currently bound
public ulong GetGraphicsUniformBufferAddress(int stage, int index)
{
- return _gpUniformBuffers[stage].Buffers[index].Address;
+ return _gpUniformBuffers[stage].Buffers[index].Range.GetSubRange(0).Address;
}
///
@@ -477,7 +477,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
foreach (var binding in _bufferTextures)
{
var isStore = binding.BindingInfo.Flags.HasFlag(TextureUsageFlags.ImageStore);
- var range = _channel.MemoryManager.Physical.BufferCache.GetBufferRange(binding.Address, binding.Size, isStore);
+ var range = _channel.MemoryManager.Physical.BufferCache.GetBufferRange(binding.Range, isStore);
binding.Texture.SetStorage(range);
// The texture must be rebound to use the new storage if it was updated.
@@ -511,16 +511,16 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
_indexBufferDirty = false;
- if (_indexBuffer.Address != 0)
+ if (!_indexBuffer.Range.IsUnmapped)
{
- BufferRange buffer = bufferCache.GetBufferRange(_indexBuffer.Address, _indexBuffer.Size);
+ BufferRange buffer = bufferCache.GetBufferRange(_indexBuffer.Range);
_context.Renderer.Pipeline.SetIndexBuffer(buffer, _indexBuffer.Type);
}
}
- else if (_indexBuffer.Address != 0)
+ else if (!_indexBuffer.Range.IsUnmapped)
{
- bufferCache.SynchronizeBufferRange(_indexBuffer.Address, _indexBuffer.Size);
+ bufferCache.SynchronizeBufferRange(_indexBuffer.Range);
}
}
else if (_rebind)
@@ -540,12 +540,12 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
VertexBuffer vb = _vertexBuffers[index];
- if (vb.Address == 0)
+ if (vb.Range.IsUnmapped)
{
continue;
}
- BufferRange buffer = bufferCache.GetBufferRange(vb.Address, vb.Size);
+ BufferRange buffer = bufferCache.GetBufferRange(vb.Range);
vertexBuffers[index] = new VertexBufferDescriptor(buffer, vb.Stride, vb.Divisor);
}
@@ -558,12 +558,12 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
VertexBuffer vb = _vertexBuffers[index];
- if (vb.Address == 0)
+ if (vb.Range.IsUnmapped)
{
continue;
}
- bufferCache.SynchronizeBufferRange(vb.Address, vb.Size);
+ bufferCache.SynchronizeBufferRange(vb.Range);
}
}
@@ -579,13 +579,13 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
BufferBounds tfb = _transformFeedbackBuffers[index];
- if (tfb.Address == 0)
+ if (tfb.IsUnmapped)
{
tfbs[index] = BufferRange.Empty;
continue;
}
- tfbs[index] = bufferCache.GetBufferRange(tfb.Address, tfb.Size, write: true);
+ tfbs[index] = bufferCache.GetBufferRange(tfb.Range, write: true);
}
_context.Renderer.Pipeline.SetTransformFeedbackBuffers(tfbs);
@@ -600,21 +600,39 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
BufferBounds tfb = _transformFeedbackBuffers[index];
- if (tfb.Address == 0)
+ if (tfb.IsUnmapped)
{
buffers[index] = new BufferAssignment(index, BufferRange.Empty);
}
else
{
- ulong endAddress = tfb.Address + tfb.Size;
- ulong address = BitUtils.AlignDown(tfb.Address, (ulong)alignment);
- ulong size = endAddress - address;
+ MultiRange range = tfb.Range;
+ ulong address0 = range.GetSubRange(0).Address;
+ ulong address = BitUtils.AlignDown(address0, (ulong)alignment);
- int tfeOffset = ((int)tfb.Address & (alignment - 1)) / 4;
+ if (range.Count == 1)
+ {
+ range = new MultiRange(address, range.GetSubRange(0).Size + (address0 - address));
+ }
+ else
+ {
+ MemoryRange[] subRanges = new MemoryRange[range.Count];
+
+ subRanges[0] = new MemoryRange(address, range.GetSubRange(0).Size + (address0 - address));
+
+ for (int i = 1; i < range.Count; i++)
+ {
+ subRanges[i] = range.GetSubRange(i);
+ }
+
+ range = new MultiRange(subRanges);
+ }
+
+ int tfeOffset = ((int)address0 & (alignment - 1)) / 4;
_context.SupportBufferUpdater.SetTfeOffset(index, tfeOffset);
- buffers[index] = new BufferAssignment(index, bufferCache.GetBufferRange(address, size, write: true));
+ buffers[index] = new BufferAssignment(index, bufferCache.GetBufferRange(range, write: true));
}
}
@@ -627,12 +645,12 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
BufferBounds tfb = _transformFeedbackBuffers[index];
- if (tfb.Address == 0)
+ if (tfb.IsUnmapped)
{
continue;
}
- bufferCache.SynchronizeBufferRange(tfb.Address, tfb.Size);
+ bufferCache.SynchronizeBufferRange(tfb.Range);
}
}
@@ -688,12 +706,12 @@ namespace Ryujinx.Graphics.Gpu.Memory
BufferBounds bounds = buffers.Buffers[bindingInfo.Slot];
- if (bounds.Address != 0)
+ if (!bounds.IsUnmapped)
{
var isWrite = bounds.Flags.HasFlag(BufferUsageFlags.Write);
var range = isStorage
- ? bufferCache.GetBufferRangeAligned(bounds.Address, bounds.Size, isWrite)
- : bufferCache.GetBufferRange(bounds.Address, bounds.Size);
+ ? bufferCache.GetBufferRangeAligned(bounds.Range, isWrite)
+ : bufferCache.GetBufferRange(bounds.Range);
ranges[rangesCount++] = new BufferAssignment(bindingInfo.Binding, range);
}
@@ -725,12 +743,12 @@ namespace Ryujinx.Graphics.Gpu.Memory
BufferBounds bounds = buffers.Buffers[bindingInfo.Slot];
- if (bounds.Address != 0)
+ if (!bounds.IsUnmapped)
{
var isWrite = bounds.Flags.HasFlag(BufferUsageFlags.Write);
var range = isStorage
- ? bufferCache.GetBufferRangeAligned(bounds.Address, bounds.Size, isWrite)
- : bufferCache.GetBufferRange(bounds.Address, bounds.Size);
+ ? bufferCache.GetBufferRangeAligned(bounds.Range, isWrite)
+ : bufferCache.GetBufferRange(bounds.Range);
ranges[rangesCount++] = new BufferAssignment(bindingInfo.Binding, range);
}
@@ -778,12 +796,12 @@ namespace Ryujinx.Graphics.Gpu.Memory
BufferBounds bounds = buffers.Buffers[binding.Slot];
- if (bounds.Address == 0)
+ if (bounds.IsUnmapped)
{
continue;
}
- _channel.MemoryManager.Physical.BufferCache.SynchronizeBufferRange(bounds.Address, bounds.Size);
+ _channel.MemoryManager.Physical.BufferCache.SynchronizeBufferRange(bounds.Range);
}
}
}
@@ -793,23 +811,21 @@ namespace Ryujinx.Graphics.Gpu.Memory
///
/// Shader stage accessing the texture
/// Buffer texture
- /// Address of the buffer in memory
- /// Size of the buffer in bytes
+ /// Physical ranges of memory where the buffer texture data is located
/// Binding info for the buffer texture
/// Format of the buffer texture
/// Whether the binding is for an image or a sampler
public void SetBufferTextureStorage(
ShaderStage stage,
ITexture texture,
- ulong address,
- ulong size,
+ MultiRange range,
TextureBindingInfo bindingInfo,
Format format,
bool isImage)
{
- _channel.MemoryManager.Physical.BufferCache.CreateBuffer(address, size);
+ _channel.MemoryManager.Physical.BufferCache.CreateBuffer(range);
- _bufferTextures.Add(new BufferTextureBinding(stage, texture, address, size, bindingInfo, format, isImage));
+ _bufferTextures.Add(new BufferTextureBinding(stage, texture, range, bindingInfo, format, isImage));
}
///
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferMigration.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferMigration.cs
index e020c0c39..0a5268031 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/BufferMigration.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferMigration.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Gpu.Memory
{
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs
index 160a9aff7..6ada8a4b2 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Pools;
+using Ryujinx.Common.Pools;
using Ryujinx.Memory.Range;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferTextureBinding.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferTextureBinding.cs
index b7a0e7264..bf0beffa2 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/BufferTextureBinding.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferTextureBinding.cs
@@ -1,6 +1,7 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Image;
using Ryujinx.Graphics.Shader;
+using Ryujinx.Memory.Range;
namespace Ryujinx.Graphics.Gpu.Memory
{
@@ -20,14 +21,9 @@ namespace Ryujinx.Graphics.Gpu.Memory
public ITexture Texture { get; }
///
- /// The base address of the buffer binding.
+ /// Physical ranges of memory where the buffer texture data is located.
///
- public ulong Address { get; }
-
- ///
- /// The size of the buffer binding in bytes.
- ///
- public ulong Size { get; }
+ public MultiRange Range { get; }
///
/// The image or sampler binding info for the buffer texture.
@@ -49,24 +45,21 @@ namespace Ryujinx.Graphics.Gpu.Memory
///
/// Shader stage accessing the texture
/// Buffer texture
- /// Base address
- /// Size in bytes
+ /// Physical ranges of memory where the buffer texture data is located
/// Binding info
/// Binding format
/// Whether the binding is for an image or a sampler
public BufferTextureBinding(
ShaderStage stage,
ITexture texture,
- ulong address,
- ulong size,
+ MultiRange range,
TextureBindingInfo bindingInfo,
Format format,
bool isImage)
{
Stage = stage;
Texture = texture;
- Address = address;
- Size = size;
+ Range = range;
BindingInfo = bindingInfo;
Format = format;
IsImage = isImage;
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/CounterCache.cs b/src/Ryujinx.Graphics.Gpu/Memory/CounterCache.cs
index 6dcc52cb6..24966df41 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/CounterCache.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/CounterCache.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using System.Collections.Generic;
namespace Ryujinx.Graphics.Gpu.Memory
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/GpuRegionHandle.cs b/src/Ryujinx.Graphics.Gpu/Memory/GpuRegionHandle.cs
index 9f73de4e2..bdb7cf2c2 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/GpuRegionHandle.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/GpuRegionHandle.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory.Tracking;
+using Ryujinx.Memory.Tracking;
using System;
namespace Ryujinx.Graphics.Gpu.Memory
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/IndexBuffer.cs b/src/Ryujinx.Graphics.Gpu/Memory/IndexBuffer.cs
index c72fa50e5..04114a955 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/IndexBuffer.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/IndexBuffer.cs
@@ -1,4 +1,5 @@
using Ryujinx.Graphics.GAL;
+using Ryujinx.Memory.Range;
namespace Ryujinx.Graphics.Gpu.Memory
{
@@ -7,9 +8,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
///
struct IndexBuffer
{
- public ulong Address;
- public ulong Size;
-
+ public MultiRange Range;
public IndexType Type;
}
}
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs b/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs
index 6af12de11..5e19bddc3 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs
@@ -39,6 +39,11 @@ namespace Ryujinx.Graphics.Gpu.Memory
///
internal PhysicalMemory Physical { get; }
+ ///
+ /// Virtual buffer cache.
+ ///
+ internal VirtualBufferCache VirtualBufferCache { get; }
+
///
/// Cache of GPU counters.
///
@@ -51,10 +56,12 @@ namespace Ryujinx.Graphics.Gpu.Memory
internal MemoryManager(PhysicalMemory physicalMemory)
{
Physical = physicalMemory;
+ VirtualBufferCache = new VirtualBufferCache(this);
CounterCache = new CounterCache();
_pageTable = new ulong[PtLvl0Size][];
MemoryUnmapped += Physical.TextureCache.MemoryUnmappedHandler;
MemoryUnmapped += Physical.BufferCache.MemoryUnmappedHandler;
+ MemoryUnmapped += VirtualBufferCache.MemoryUnmappedHandler;
MemoryUnmapped += CounterCache.MemoryUnmappedHandler;
}
@@ -508,6 +515,11 @@ namespace Ryujinx.Graphics.Gpu.Memory
regionSize += Math.Min(endVa - va, PageSize);
}
+ if (regions.Count == 0)
+ {
+ return new MultiRange(regionStart, regionSize);
+ }
+
regions.Add(new MemoryRange(regionStart, regionSize));
return new MultiRange(regions.ToArray());
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/MultiRangeBuffer.cs b/src/Ryujinx.Graphics.Gpu/Memory/MultiRangeBuffer.cs
new file mode 100644
index 000000000..e039a7a43
--- /dev/null
+++ b/src/Ryujinx.Graphics.Gpu/Memory/MultiRangeBuffer.cs
@@ -0,0 +1,60 @@
+using Ryujinx.Graphics.GAL;
+using Ryujinx.Memory.Range;
+using System;
+
+namespace Ryujinx.Graphics.Gpu.Memory
+{
+ ///
+ /// Buffer, used to store vertex and index data, uniform and storage buffers, and others.
+ ///
+ class MultiRangeBuffer : IMultiRangeItem, IDisposable
+ {
+ private readonly GpuContext _context;
+
+ ///
+ /// Host buffer handle.
+ ///
+ public BufferHandle Handle { get; }
+
+ ///
+ /// Range of memory where the data is located.
+ ///
+ public MultiRange Range { get; }
+
+ ///
+ /// Creates a new instance of the buffer.
+ ///
+ /// GPU context that the buffer belongs to
+ /// Range of memory where the data is mapped
+ /// Backing memory for the buffers
+ public MultiRangeBuffer(GpuContext context, MultiRange range, ReadOnlySpan storages)
+ {
+ _context = context;
+ Range = range;
+ Handle = context.Renderer.CreateBufferSparse(storages);
+ }
+
+ ///
+ /// Gets a sub-range from the buffer.
+ ///
+ ///
+ /// This can be used to bind and use sub-ranges of the buffer on the host API.
+ ///
+ /// Range of memory where the data is mapped
+ /// The buffer sub-range
+ public BufferRange GetRange(MultiRange range)
+ {
+ int offset = Range.FindOffset(range);
+
+ return new BufferRange(Handle, offset, (int)range.GetSize());
+ }
+
+ ///
+ /// Disposes the host buffer.
+ ///
+ public void Dispose()
+ {
+ _context.Renderer.DeleteBuffer(Handle);
+ }
+ }
+}
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/MultiRangeWritableBlock.cs b/src/Ryujinx.Graphics.Gpu/Memory/MultiRangeWritableBlock.cs
index 155dda7bd..9236886d8 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/MultiRangeWritableBlock.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/MultiRangeWritableBlock.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory;
+using Ryujinx.Memory;
using Ryujinx.Memory.Range;
using System;
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/SupportBufferUpdater.cs b/src/Ryujinx.Graphics.Gpu/Memory/SupportBufferUpdater.cs
index fb141db42..fc444f49c 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/SupportBufferUpdater.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/SupportBufferUpdater.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Shader;
using System;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/UnmapEventArgs.cs b/src/Ryujinx.Graphics.Gpu/Memory/UnmapEventArgs.cs
index 837b5aab4..83fb1fcee 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/UnmapEventArgs.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/UnmapEventArgs.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
namespace Ryujinx.Graphics.Gpu.Memory
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/VertexBuffer.cs b/src/Ryujinx.Graphics.Gpu/Memory/VertexBuffer.cs
index ac334881d..206e1b48c 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/VertexBuffer.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/VertexBuffer.cs
@@ -1,3 +1,5 @@
+using Ryujinx.Memory.Range;
+
namespace Ryujinx.Graphics.Gpu.Memory
{
///
@@ -5,8 +7,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
///
struct VertexBuffer
{
- public ulong Address;
- public ulong Size;
+ public MultiRange Range;
public int Stride;
public int Divisor;
}
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/VirtualBufferCache.cs b/src/Ryujinx.Graphics.Gpu/Memory/VirtualBufferCache.cs
new file mode 100644
index 000000000..858c5e3b0
--- /dev/null
+++ b/src/Ryujinx.Graphics.Gpu/Memory/VirtualBufferCache.cs
@@ -0,0 +1,238 @@
+using Ryujinx.Memory.Range;
+using System;
+using System.Collections.Concurrent;
+using System.Threading;
+
+namespace Ryujinx.Graphics.Gpu.Memory
+{
+ ///
+ /// Virtual buffer cache.
+ ///
+ class VirtualBufferCache
+ {
+ private readonly MemoryManager _memoryManager;
+
+ ///
+ /// Represents a GPU virtual memory range.
+ ///
+ private readonly struct VirtualRange : IRange
+ {
+ ///
+ /// GPU virtual address where the range starts.
+ ///
+ public ulong Address { get; }
+
+ ///
+ /// Size of the range in bytes.
+ ///
+ public ulong Size { get; }
+
+ ///
+ /// GPU virtual address where the range ends.
+ ///
+ public ulong EndAddress => Address + Size;
+
+ ///
+ /// Physical regions where the GPU virtual region is mapped.
+ ///
+ public MultiRange Range { get; }
+
+ ///
+ /// Creates a new virtual memory range.
+ ///
+ /// GPU virtual address where the range starts
+ /// Size of the range in bytes
+ /// Physical regions where the GPU virtual region is mapped
+ public VirtualRange(ulong address, ulong size, MultiRange range)
+ {
+ Address = address;
+ Size = size;
+ Range = range;
+ }
+
+ ///
+ /// Checks if a given range overlaps with the buffer.
+ ///
+ /// Start address of the range
+ /// Size in bytes of the range
+ /// True if the range overlaps, false otherwise
+ public bool OverlapsWith(ulong address, ulong size)
+ {
+ return Address < address + size && address < EndAddress;
+ }
+ }
+
+ private readonly RangeList _virtualRanges;
+ private VirtualRange[] _virtualRangeOverlaps;
+ private readonly ConcurrentQueue _deferredUnmaps;
+ private int _hasDeferredUnmaps;
+
+ ///
+ /// Creates a new instance of the virtual buffer cache.
+ ///
+ /// Memory manager that the virtual buffer cache belongs to
+ public VirtualBufferCache(MemoryManager memoryManager)
+ {
+ _memoryManager = memoryManager;
+ _virtualRanges = new RangeList();
+ _virtualRangeOverlaps = new VirtualRange[BufferCache.OverlapsBufferInitialCapacity];
+ _deferredUnmaps = new ConcurrentQueue();
+ }
+
+ ///
+ /// Handles removal of buffers written to a memory region being unmapped.
+ ///
+ /// Sender object
+ /// Event arguments
+ public void MemoryUnmappedHandler(object sender, UnmapEventArgs e)
+ {
+ void EnqueueUnmap()
+ {
+ _deferredUnmaps.Enqueue(new VirtualRange(e.Address, e.Size, default));
+
+ Interlocked.Exchange(ref _hasDeferredUnmaps, 1);
+ }
+
+ e.AddRemapAction(EnqueueUnmap);
+ }
+
+ ///
+ /// Tries to get a existing, cached physical range for the specified virtual region.
+ /// If no cached range is found, a new one is created and added.
+ ///
+ /// GPU virtual address to get the physical range from
+ /// Size in bytes of the region
+ /// Indicates host support for sparse buffer mapping of non-contiguous ranges
+ /// Physical range for the specified GPU virtual region
+ /// True if the range already existed, false if a new one was created and added
+ public bool TryGetOrAddRange(ulong gpuVa, ulong size, bool supportsSparse, out MultiRange range)
+ {
+ VirtualRange[] overlaps = _virtualRangeOverlaps;
+ int overlapsCount;
+
+ if (Interlocked.Exchange(ref _hasDeferredUnmaps, 0) != 0)
+ {
+ while (_deferredUnmaps.TryDequeue(out VirtualRange unmappedRange))
+ {
+ overlapsCount = _virtualRanges.FindOverlapsNonOverlapping(unmappedRange.Address, unmappedRange.Size, ref overlaps);
+
+ for (int index = 0; index < overlapsCount; index++)
+ {
+ _virtualRanges.Remove(overlaps[index]);
+ }
+ }
+ }
+
+ bool found = false;
+
+ ulong originalVa = gpuVa;
+
+ overlapsCount = _virtualRanges.FindOverlapsNonOverlapping(gpuVa, size, ref overlaps);
+
+ if (overlapsCount != 0)
+ {
+ // The virtual range already exists. We just need to check if our range fits inside
+ // the existing one, and if not, we must extend the existing one.
+
+ ulong endAddress = gpuVa + size;
+ VirtualRange overlap0 = overlaps[0];
+
+ if (overlap0.Address > gpuVa || overlap0.EndAddress < endAddress)
+ {
+ for (int index = 0; index < overlapsCount; index++)
+ {
+ VirtualRange virtualRange = overlaps[index];
+
+ gpuVa = Math.Min(gpuVa, virtualRange.Address);
+ endAddress = Math.Max(endAddress, virtualRange.EndAddress);
+
+ _virtualRanges.Remove(virtualRange);
+ }
+
+ ulong newSize = endAddress - gpuVa;
+ MultiRange newRange = _memoryManager.GetPhysicalRegions(gpuVa, newSize);
+
+ _virtualRanges.Add(new(gpuVa, newSize, newRange));
+
+ range = newRange.Slice(originalVa - gpuVa, size);
+ }
+ else
+ {
+ found = true;
+ range = overlap0.Range.Slice(gpuVa - overlap0.Address, size);
+ }
+ }
+ else
+ {
+ // No overlap, just create a new virtual range.
+ range = _memoryManager.GetPhysicalRegions(gpuVa, size);
+
+ VirtualRange virtualRange = new(gpuVa, size, range);
+
+ _virtualRanges.Add(virtualRange);
+ }
+
+ ShrinkOverlapsBufferIfNeeded();
+
+ // If the the range is not properly aligned for sparse mapping,
+ // or if the host does not support sparse mapping, let's just
+ // force it to a single range.
+ // This might cause issues in some applications that uses sparse
+ // mappings.
+ if (!IsSparseAligned(range) || !supportsSparse)
+ {
+ range = new MultiRange(range.GetSubRange(0).Address, size);
+ }
+
+ return found;
+ }
+
+ ///
+ /// Checks if the physical memory ranges are valid for sparse mapping,
+ /// which requires all sub-ranges to be 64KB aligned.
+ ///
+ /// Range to check
+ /// True if the range is valid for sparse mapping, false otherwise
+ private static bool IsSparseAligned(MultiRange range)
+ {
+ if (range.Count == 1)
+ {
+ return (range.GetSubRange(0).Address & (BufferCache.SparseBufferAlignmentSize - 1)) == 0;
+ }
+
+ for (int i = 0; i < range.Count; i++)
+ {
+ MemoryRange subRange = range.GetSubRange(i);
+
+ // Check if address is aligned. The address of the first sub-range can
+ // be misaligned as it is at the start.
+ if (i > 0 &&
+ subRange.Address != MemoryManager.PteUnmapped &&
+ (subRange.Address & (BufferCache.SparseBufferAlignmentSize - 1)) != 0)
+ {
+ return false;
+ }
+
+ // Check if the size is aligned. The size of the last sub-range can
+ // be misaligned as it is at the end.
+ if (i < range.Count - 1 && (subRange.Size & (BufferCache.SparseBufferAlignmentSize - 1)) != 0)
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ ///
+ /// Resizes the temporary buffer used for range list intersection results, if it has grown too much.
+ ///
+ private void ShrinkOverlapsBufferIfNeeded()
+ {
+ if (_virtualRangeOverlaps.Length > BufferCache.OverlapsBufferMaxCapacity)
+ {
+ Array.Resize(ref _virtualRangeOverlaps, BufferCache.OverlapsBufferMaxCapacity);
+ }
+ }
+ }
+}
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderBindings.cs b/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderBindings.cs
index 1734f08a2..4e1cb4e12 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderBindings.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderBindings.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine;
using Ryujinx.Graphics.Gpu.Image;
using Ryujinx.Graphics.Shader;
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs b/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs
index 600c8a985..4f56dcac2 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using System;
namespace Ryujinx.Graphics.Gpu.Shader
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs b/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs
index 403e039a4..125ab8993 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs
@@ -22,7 +22,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache
private const ushort FileFormatVersionMajor = 1;
private const ushort FileFormatVersionMinor = 2;
private const uint FileFormatVersionPacked = ((uint)FileFormatVersionMajor << 16) | FileFormatVersionMinor;
- private const uint CodeGenVersion = 5957;
+ private const uint CodeGenVersion = 5958;
private const string SharedTocFileName = "shared.toc";
private const string SharedDataFileName = "shared.data";
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheOutputStreams.cs b/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheOutputStreams.cs
index 1e0df2647..a7ad53574 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheOutputStreams.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheOutputStreams.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
namespace Ryujinx.Graphics.Gpu.Shader.DiskCache
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessor.cs b/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessor.cs
index 1d84d0e46..95763f31d 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessor.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Gpu.Image;
using Ryujinx.Graphics.Shader;
using Ryujinx.Graphics.Shader.Translation;
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/HashTable/HashState.cs b/src/Ryujinx.Graphics.Gpu/Shader/HashTable/HashState.cs
index 836b8663a..cb1cf5bbb 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/HashTable/HashState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/HashTable/HashState.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.Graphics.Gpu.Shader.HashTable
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/HashTable/IDataAccessor.cs b/src/Ryujinx.Graphics.Gpu/Shader/HashTable/IDataAccessor.cs
index c982cd9f6..5aecd155c 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/HashTable/IDataAccessor.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/HashTable/IDataAccessor.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Gpu.Shader.HashTable
{
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/HashTable/PartitionHashTable.cs b/src/Ryujinx.Graphics.Gpu/Shader/HashTable/PartitionHashTable.cs
index c8c8dfcb3..3971526e5 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/HashTable/PartitionHashTable.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/HashTable/PartitionHashTable.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Numerics;
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/HashTable/PartitionedHashTable.cs b/src/Ryujinx.Graphics.Gpu/Shader/HashTable/PartitionedHashTable.cs
index 341d3114f..b4c18058c 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/HashTable/PartitionedHashTable.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/HashTable/PartitionedHashTable.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/HashTable/SmartDataAccessor.cs b/src/Ryujinx.Graphics.Gpu/Shader/HashTable/SmartDataAccessor.cs
index 17853e90a..d0eabba28 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/HashTable/SmartDataAccessor.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/HashTable/SmartDataAccessor.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
namespace Ryujinx.Graphics.Gpu.Shader.HashTable
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs b/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs
index 38be262a7..0b17af8b2 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs
@@ -161,7 +161,8 @@ namespace Ryujinx.Graphics.Gpu.Shader
_graphicsShaderCache,
_computeShaderCache,
_diskCacheHostStorage,
- ShaderCacheStateUpdate, cancellationToken);
+ ShaderCacheStateUpdate,
+ cancellationToken);
loader.LoadShaders();
@@ -730,8 +731,8 @@ namespace Ryujinx.Graphics.Gpu.Shader
codeA ??= memoryManager.GetSpan(vertexA.Address, vertexA.Size).ToArray();
codeB ??= memoryManager.GetSpan(currentStage.Address, currentStage.Size).ToArray();
- byte[] cb1DataA = memoryManager.Physical.GetSpan(cb1DataAddress, vertexA.Cb1DataSize).ToArray();
- byte[] cb1DataB = memoryManager.Physical.GetSpan(cb1DataAddress, currentStage.Cb1DataSize).ToArray();
+ byte[] cb1DataA = ReadArray(memoryManager, cb1DataAddress, vertexA.Cb1DataSize);
+ byte[] cb1DataB = ReadArray(memoryManager, cb1DataAddress, currentStage.Cb1DataSize);
ShaderDumpPaths pathsA = default;
ShaderDumpPaths pathsB = default;
@@ -770,7 +771,7 @@ namespace Ryujinx.Graphics.Gpu.Shader
? channel.BufferManager.GetComputeUniformBufferAddress(1)
: channel.BufferManager.GetGraphicsUniformBufferAddress(StageToStageIndex(context.Stage), 1);
- byte[] cb1Data = memoryManager.Physical.GetSpan(cb1DataAddress, context.Cb1DataSize).ToArray();
+ byte[] cb1Data = ReadArray(memoryManager, cb1DataAddress, context.Cb1DataSize);
code ??= memoryManager.GetSpan(context.Address, context.Size).ToArray();
ShaderDumpPaths paths = dumper?.Dump(code, context.Stage == ShaderStage.Compute) ?? default;
@@ -781,6 +782,23 @@ namespace Ryujinx.Graphics.Gpu.Shader
return new TranslatedShader(new CachedShaderStage(program.Info, code, cb1Data), program);
}
+ ///
+ /// Reads data from physical memory, returns an empty array if the memory is unmapped or size is 0.
+ ///
+ /// Memory manager with the physical memory to read from
+ /// Physical address of the region to read
+ /// Size in bytes of the data
+ /// An array with the data at the specified memory location
+ private static byte[] ReadArray(MemoryManager memoryManager, ulong address, int size)
+ {
+ if (address == MemoryManager.PteUnmapped || size == 0)
+ {
+ return Array.Empty();
+ }
+
+ return memoryManager.Physical.GetSpan(address, size).ToArray();
+ }
+
///
/// Gets the index of a stage from a .
///
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/ShaderSpecializationState.cs b/src/Ryujinx.Graphics.Gpu/Shader/ShaderSpecializationState.cs
index a41f761bd..1477b7382 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/ShaderSpecializationState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/ShaderSpecializationState.cs
@@ -611,7 +611,7 @@ namespace Ryujinx.Graphics.Gpu.Shader
{
ref BufferBounds bounds = ref channel.BufferManager.GetUniformBufferBounds(isCompute, stageIndex, textureBufferIndex);
- cachedTextureBuffer = MemoryMarshal.Cast(channel.MemoryManager.Physical.GetSpan(bounds.Address, (int)bounds.Size));
+ cachedTextureBuffer = MemoryMarshal.Cast(channel.MemoryManager.Physical.GetSpan(bounds.Range));
cachedTextureBufferIndex = textureBufferIndex;
if (samplerBufferIndex == textureBufferIndex)
@@ -625,7 +625,7 @@ namespace Ryujinx.Graphics.Gpu.Shader
{
ref BufferBounds bounds = ref channel.BufferManager.GetUniformBufferBounds(isCompute, stageIndex, samplerBufferIndex);
- cachedSamplerBuffer = MemoryMarshal.Cast(channel.MemoryManager.Physical.GetSpan(bounds.Address, (int)bounds.Size));
+ cachedSamplerBuffer = MemoryMarshal.Cast(channel.MemoryManager.Physical.GetSpan(bounds.Range));
cachedSamplerBufferIndex = samplerBufferIndex;
}
diff --git a/src/Ryujinx.Graphics.Gpu/Synchronization/HostSyncFlags.cs b/src/Ryujinx.Graphics.Gpu/Synchronization/HostSyncFlags.cs
index 1b4df37e2..810c2b4a8 100644
--- a/src/Ryujinx.Graphics.Gpu/Synchronization/HostSyncFlags.cs
+++ b/src/Ryujinx.Graphics.Gpu/Synchronization/HostSyncFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Gpu.Synchronization
{
diff --git a/src/Ryujinx.Graphics.Gpu/Synchronization/SynchronizationManager.cs b/src/Ryujinx.Graphics.Gpu/Synchronization/SynchronizationManager.cs
index 2d5eede58..c2fa4c248 100644
--- a/src/Ryujinx.Graphics.Gpu/Synchronization/SynchronizationManager.cs
+++ b/src/Ryujinx.Graphics.Gpu/Synchronization/SynchronizationManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using System;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.Gpu/Synchronization/Syncpoint.cs b/src/Ryujinx.Graphics.Gpu/Synchronization/Syncpoint.cs
index 16f4d971b..a1626c853 100644
--- a/src/Ryujinx.Graphics.Gpu/Synchronization/Syncpoint.cs
+++ b/src/Ryujinx.Graphics.Gpu/Synchronization/Syncpoint.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.Gpu/Synchronization/SyncpointWaiterHandle.cs b/src/Ryujinx.Graphics.Gpu/Synchronization/SyncpointWaiterHandle.cs
index dd2a5812f..e75b1e895 100644
--- a/src/Ryujinx.Graphics.Gpu/Synchronization/SyncpointWaiterHandle.cs
+++ b/src/Ryujinx.Graphics.Gpu/Synchronization/SyncpointWaiterHandle.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Gpu.Synchronization
{
diff --git a/src/Ryujinx.Graphics.Host1x/ClassId.cs b/src/Ryujinx.Graphics.Host1x/ClassId.cs
index 6da461ef8..8cba6b88c 100644
--- a/src/Ryujinx.Graphics.Host1x/ClassId.cs
+++ b/src/Ryujinx.Graphics.Host1x/ClassId.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Host1x
+namespace Ryujinx.Graphics.Host1x
{
public enum ClassId
{
diff --git a/src/Ryujinx.Graphics.Host1x/Devices.cs b/src/Ryujinx.Graphics.Host1x/Devices.cs
index 95c67c9c4..9de2b81a9 100644
--- a/src/Ryujinx.Graphics.Host1x/Devices.cs
+++ b/src/Ryujinx.Graphics.Host1x/Devices.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.Host1x/Host1xClass.cs b/src/Ryujinx.Graphics.Host1x/Host1xClass.cs
index 6f5ba3256..4327b93c2 100644
--- a/src/Ryujinx.Graphics.Host1x/Host1xClass.cs
+++ b/src/Ryujinx.Graphics.Host1x/Host1xClass.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.Gpu.Synchronization;
using System.Collections.Generic;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.Host1x/Host1xClassRegisters.cs b/src/Ryujinx.Graphics.Host1x/Host1xClassRegisters.cs
index 9eeb18d10..28f5d24b0 100644
--- a/src/Ryujinx.Graphics.Host1x/Host1xClassRegisters.cs
+++ b/src/Ryujinx.Graphics.Host1x/Host1xClassRegisters.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Host1x
{
diff --git a/src/Ryujinx.Graphics.Host1x/Host1xDevice.cs b/src/Ryujinx.Graphics.Host1x/Host1xDevice.cs
index 73dabaf42..6733b32aa 100644
--- a/src/Ryujinx.Graphics.Host1x/Host1xDevice.cs
+++ b/src/Ryujinx.Graphics.Host1x/Host1xDevice.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.Gpu.Synchronization;
diff --git a/src/Ryujinx.Graphics.Host1x/OpCode.cs b/src/Ryujinx.Graphics.Host1x/OpCode.cs
index 39b19b1d1..c2d2b59e4 100644
--- a/src/Ryujinx.Graphics.Host1x/OpCode.cs
+++ b/src/Ryujinx.Graphics.Host1x/OpCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Host1x
+namespace Ryujinx.Graphics.Host1x
{
enum OpCode
{
diff --git a/src/Ryujinx.Graphics.Host1x/SyncptIncrManager.cs b/src/Ryujinx.Graphics.Host1x/SyncptIncrManager.cs
index fe8c87395..164d15ec2 100644
--- a/src/Ryujinx.Graphics.Host1x/SyncptIncrManager.cs
+++ b/src/Ryujinx.Graphics.Host1x/SyncptIncrManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu.Synchronization;
+using Ryujinx.Graphics.Gpu.Synchronization;
using System.Collections.Generic;
namespace Ryujinx.Graphics.Host1x
diff --git a/src/Ryujinx.Graphics.Host1x/ThiDevice.cs b/src/Ryujinx.Graphics.Host1x/ThiDevice.cs
index ecdf0f75c..02871efbd 100644
--- a/src/Ryujinx.Graphics.Host1x/ThiDevice.cs
+++ b/src/Ryujinx.Graphics.Host1x/ThiDevice.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.Device;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.Host1x/ThiRegisters.cs b/src/Ryujinx.Graphics.Host1x/ThiRegisters.cs
index 74e646952..bb7534d8a 100644
--- a/src/Ryujinx.Graphics.Host1x/ThiRegisters.cs
+++ b/src/Ryujinx.Graphics.Host1x/ThiRegisters.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Host1x
{
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/FFmpegContext.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/FFmpegContext.cs
index 284a35a24..0767cc9d6 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/FFmpegContext.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/FFmpegContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Nvdec.FFmpeg.Native;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/H264/Decoder.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/H264/Decoder.cs
index 7dd643ce3..14877dd55 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/H264/Decoder.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/H264/Decoder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.FFmpeg.Native;
+using Ryujinx.Graphics.Nvdec.FFmpeg.Native;
using Ryujinx.Graphics.Video;
using System;
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/H264/SpsAndPpsReconstruction.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/H264/SpsAndPpsReconstruction.cs
index 82c5932b7..6d012f89a 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/H264/SpsAndPpsReconstruction.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/H264/SpsAndPpsReconstruction.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Video;
using System;
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodec.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodec.cs
index 434b9b29b..0267000c8 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodec.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodec.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
{
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodec501.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodec501.cs
index 7b82b5ddf..9084f4024 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodec501.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodec501.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
{
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodecContext.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodecContext.cs
index a9605c63f..c743ab33e 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodecContext.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodecContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodecID.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodecID.cs
index b371de9e8..0af076413 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodecID.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVCodecID.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
+namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
{
enum AVCodecID
{
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVFrame.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVFrame.cs
index cdc9ebfdc..a1eb7a090 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVFrame.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVFrame.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVLog.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVLog.cs
index fda014a88..642e48972 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVLog.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVLog.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
+namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
{
enum AVLog
{
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVPacket.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVPacket.cs
index 47b9bef98..8df4e26a7 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVPacket.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVPacket.cs
@@ -1,4 +1,4 @@
-using AVBufferRef = System.IntPtr;
+using AVBufferRef = System.IntPtr;
namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
{
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVRational.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVRational.cs
index cad5fde0b..15ed3278f 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVRational.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/AVRational.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
+namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
{
public struct AVRational
{
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFCodec.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFCodec.cs
index 89a33697c..ceb8a3b01 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFCodec.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFCodec.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
{
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFCodecLegacy.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFCodecLegacy.cs
index 630e2c179..03eba311c 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFCodecLegacy.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFCodecLegacy.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native
{
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs
index e04b1fc49..5167ff9fe 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Surface.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Surface.cs
index 959791b6e..65fb7b4ad 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Surface.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Surface.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.FFmpeg.Native;
+using Ryujinx.Graphics.Nvdec.FFmpeg.Native;
using Ryujinx.Graphics.Video;
using System;
diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Vp8/Decoder.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Vp8/Decoder.cs
index 5e38c8c8e..0733e385b 100644
--- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Vp8/Decoder.cs
+++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Vp8/Decoder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.FFmpeg.Native;
+using Ryujinx.Graphics.Nvdec.FFmpeg.Native;
using Ryujinx.Graphics.Video;
using System;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/BitDepth.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/BitDepth.cs
index b7b709536..a43c83580 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/BitDepth.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/BitDepth.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9
+namespace Ryujinx.Graphics.Nvdec.Vp9
{
internal enum BitDepth
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/CodecErr.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/CodecErr.cs
index 39a26f66f..3bd149df4 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/CodecErr.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/CodecErr.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9
+namespace Ryujinx.Graphics.Nvdec.Vp9
{
internal enum CodecErr
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Common/BitUtils.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Common/BitUtils.cs
index 86981930e..807f1293e 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Common/BitUtils.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Common/BitUtils.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics;
using System.Numerics;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Common/MemoryUtil.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Common/MemoryUtil.cs
index 909a94832..afdc6b0b2 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Common/MemoryUtil.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Common/MemoryUtil.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.Graphics.Nvdec.Vp9.Common
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Constants.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Constants.cs
index 0ce44b294..17efb203b 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Constants.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Constants.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9
+namespace Ryujinx.Graphics.Nvdec.Vp9
{
internal static class Constants
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/DecodeFrame.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/DecodeFrame.cs
index 6940d187f..5f03e1afc 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/DecodeFrame.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/DecodeFrame.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Nvdec.Vp9.Common;
using Ryujinx.Graphics.Nvdec.Vp9.Dsp;
using Ryujinx.Graphics.Nvdec.Vp9.Types;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/DecodeMv.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/DecodeMv.cs
index 8c25c700b..091490bfa 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/DecodeMv.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/DecodeMv.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Nvdec.Vp9.Dsp;
using Ryujinx.Graphics.Nvdec.Vp9.Types;
using Ryujinx.Graphics.Video;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Decoder.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Decoder.cs
index fea184f15..57057d5f9 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Decoder.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Decoder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Nvdec.Vp9.Common;
using Ryujinx.Graphics.Nvdec.Vp9.Types;
using Ryujinx.Graphics.Video;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Detokenize.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Detokenize.cs
index 8e5f124b6..c255f7486 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Detokenize.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Detokenize.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Nvdec.Vp9.Dsp;
using Ryujinx.Graphics.Nvdec.Vp9.Types;
using Ryujinx.Graphics.Video;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Convolve.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Convolve.cs
index 5d4c4b840..9e279dd21 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Convolve.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Convolve.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Nvdec.Vp9.Common;
using System.Diagnostics;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Filter.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Filter.cs
index 169628977..a32221e09 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Filter.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Filter.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Dsp
+namespace Ryujinx.Graphics.Nvdec.Vp9.Dsp
{
internal static class Filter
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/IntraPred.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/IntraPred.cs
index 8db78ab03..8a570ed59 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/IntraPred.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/IntraPred.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.Vp9.Common;
+using Ryujinx.Graphics.Nvdec.Vp9.Common;
namespace Ryujinx.Graphics.Nvdec.Vp9.Dsp
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/InvTxfm.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/InvTxfm.cs
index 68da7c496..c4f45bfda 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/InvTxfm.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/InvTxfm.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.Vp9.Common;
+using Ryujinx.Graphics.Nvdec.Vp9.Common;
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Prob.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Prob.cs
index 83b427907..4d75b35df 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Prob.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Prob.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.Vp9.Common;
+using Ryujinx.Graphics.Nvdec.Vp9.Common;
using System;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Reader.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Reader.cs
index 090426e7c..60a20b43f 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Reader.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/Reader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
using System.Buffers.Binary;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/TxfmCommon.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/TxfmCommon.cs
index e041f2e0b..209f19510 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/TxfmCommon.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Dsp/TxfmCommon.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Dsp
+namespace Ryujinx.Graphics.Nvdec.Vp9.Dsp
{
internal static class TxfmCommon
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Idct.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Idct.cs
index 1ee7f68bc..ebebf0ef9 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Idct.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Idct.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.Vp9.Common;
+using Ryujinx.Graphics.Nvdec.Vp9.Common;
using Ryujinx.Graphics.Nvdec.Vp9.Types;
using System;
using static Ryujinx.Graphics.Nvdec.Vp9.Dsp.InvTxfm;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/InternalErrorException.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/InternalErrorException.cs
index baa0ab998..d4ba0d88b 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/InternalErrorException.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/InternalErrorException.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Nvdec.Vp9
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/InternalErrorInfo.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/InternalErrorInfo.cs
index 68e9cb4bb..cfec81ed1 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/InternalErrorInfo.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/InternalErrorInfo.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9
+namespace Ryujinx.Graphics.Nvdec.Vp9
{
internal struct InternalErrorInfo
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/LoopFilter.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/LoopFilter.cs
index 1c9f83b49..9b2564d70 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/LoopFilter.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/LoopFilter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Nvdec.Vp9.Common;
using Ryujinx.Graphics.Nvdec.Vp9.Types;
using System;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Luts.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Luts.cs
index 7320c0943..5245b3f32 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Luts.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Luts.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Nvdec.Vp9.Types;
using System;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/PredCommon.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/PredCommon.cs
index 9b0c44b76..1f391f6eb 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/PredCommon.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/PredCommon.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.Vp9.Types;
+using Ryujinx.Graphics.Nvdec.Vp9.Types;
using System.Diagnostics;
namespace Ryujinx.Graphics.Nvdec.Vp9
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/QuantCommon.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/QuantCommon.cs
index ea858222e..8e8fafdb1 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/QuantCommon.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/QuantCommon.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.Vp9.Types;
+using Ryujinx.Graphics.Nvdec.Vp9.Types;
using System;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/ReconInter.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/ReconInter.cs
index a357cd15b..fdb68291a 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/ReconInter.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/ReconInter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Nvdec.Vp9.Types;
using System;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/ReconIntra.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/ReconIntra.cs
index 270ff8b7e..768c9acf4 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/ReconIntra.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/ReconIntra.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.Vp9.Common;
+using Ryujinx.Graphics.Nvdec.Vp9.Common;
using Ryujinx.Graphics.Nvdec.Vp9.Types;
using System;
using static Ryujinx.Graphics.Nvdec.Vp9.Dsp.IntraPred;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/TileBuffer.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/TileBuffer.cs
index c5a25e6bc..b6adb95ff 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/TileBuffer.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/TileBuffer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Vp9
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/TileWorkerData.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/TileWorkerData.cs
index 333a077a0..a9a7d566e 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/TileWorkerData.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/TileWorkerData.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Nvdec.Vp9.Dsp;
using Ryujinx.Graphics.Nvdec.Vp9.Types;
using Ryujinx.Graphics.Video;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/BModeInfo.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/BModeInfo.cs
index 4c8e33c30..4ff82820e 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/BModeInfo.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/BModeInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/BlockSize.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/BlockSize.cs
index 34fa9487e..c7d4f7cc4 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/BlockSize.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/BlockSize.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum BlockSize
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Buf2D.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Buf2D.cs
index 180d5e341..1313a2e1f 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Buf2D.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Buf2D.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/FrameType.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/FrameType.cs
index 3d2093030..21f021c5b 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/FrameType.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/FrameType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum FrameType
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilter.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilter.cs
index 8dc33bda8..d2b295476 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilter.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterInfoN.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterInfoN.cs
index 0ac38a7b9..be6243071 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterInfoN.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterInfoN.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterMask.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterMask.cs
index 4aff843a1..879cbe15b 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterMask.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterMask.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterThresh.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterThresh.cs
index c0af5495e..546213215 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterThresh.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/LoopFilterThresh.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MacroBlockD.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MacroBlockD.cs
index 5cdc0d2df..6305664df 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MacroBlockD.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MacroBlockD.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Video;
namespace Ryujinx.Graphics.Nvdec.Vp9.Types
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MacroBlockDPlane.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MacroBlockDPlane.cs
index ae4ec6f41..df21a8d49 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MacroBlockDPlane.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MacroBlockDPlane.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ModeInfo.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ModeInfo.cs
index 8af7b6f90..e97ed424c 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ModeInfo.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ModeInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Diagnostics;
namespace Ryujinx.Graphics.Nvdec.Vp9.Types
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MotionVectorContext.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MotionVectorContext.cs
index a9a603bf0..bad5af280 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MotionVectorContext.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MotionVectorContext.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum MotionVectorContext
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Mv.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Mv.cs
index c78a80d0d..9ccb51503 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Mv.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Mv.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Video;
using System;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Mv32.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Mv32.cs
index fb25d18e9..5231ca6a6 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Mv32.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Mv32.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal struct Mv32
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvClassType.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvClassType.cs
index 68a0b59af..188eee0b0 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvClassType.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvClassType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum MvClassType
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvJointType.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvJointType.cs
index a20cb6d0b..8cccf90cd 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvJointType.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvJointType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum MvJointType
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvRef.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvRef.cs
index 71949a09b..1d32a0927 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvRef.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/MvRef.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PartitionType.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PartitionType.cs
index 78f4fb260..c47557abf 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PartitionType.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PartitionType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum PartitionType
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PlaneType.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PlaneType.cs
index d62594567..8b01cf3a1 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PlaneType.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PlaneType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum PlaneType
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Position.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Position.cs
index 0d3b56f67..cee2fbe83 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Position.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Position.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal struct Position
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PredictionMode.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PredictionMode.cs
index fbf542043..2d81b547e 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PredictionMode.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/PredictionMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum PredictionMode
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/RefBuffer.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/RefBuffer.cs
index 9942dd053..0fbb84514 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/RefBuffer.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/RefBuffer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal struct RefBuffer
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ReferenceMode.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ReferenceMode.cs
index 5d9f189d2..aff3cbb07 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ReferenceMode.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ReferenceMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum ReferenceMode
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ScaleFactors.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ScaleFactors.cs
index ba89d6e39..8e2ec4249 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ScaleFactors.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/ScaleFactors.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.CompilerServices;
using static Ryujinx.Graphics.Nvdec.Vp9.Dsp.Convolve;
using static Ryujinx.Graphics.Nvdec.Vp9.Dsp.Filter;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/SegLvlFeatures.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/SegLvlFeatures.cs
index 8d04d18b8..eb47abdfd 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/SegLvlFeatures.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/SegLvlFeatures.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum SegLvlFeatures
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Segmentation.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Segmentation.cs
index c0fbdc51e..f2415fc09 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Segmentation.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Segmentation.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Diagnostics;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Surface.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Surface.cs
index 7f34faa5b..372b1d2b4 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Surface.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Surface.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Video;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TileInfo.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TileInfo.cs
index 232d4ccb2..a3eea81a2 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TileInfo.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TileInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.Vp9.Common;
+using Ryujinx.Graphics.Nvdec.Vp9.Common;
using System;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxMode.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxMode.cs
index 80c963fe0..b3a05ed9a 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxMode.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
public enum TxMode
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxSize.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxSize.cs
index bcc70ebab..0342087b8 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxSize.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxSize.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
public enum TxSize
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxType.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxType.cs
index 1ae436e96..e7b37c925 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxType.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/TxType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Vp9.Types
+namespace Ryujinx.Graphics.Nvdec.Vp9.Types
{
internal enum TxType
{
diff --git a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Vp9Common.cs b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Vp9Common.cs
index 8dd0879eb..2456e9068 100644
--- a/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Vp9Common.cs
+++ b/src/Ryujinx.Graphics.Nvdec.Vp9/Types/Vp9Common.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Nvdec.Vp9.Common;
using Ryujinx.Graphics.Video;
diff --git a/src/Ryujinx.Graphics.Nvdec/ApplicationId.cs b/src/Ryujinx.Graphics.Nvdec/ApplicationId.cs
index ada12f8d3..5914e73c6 100644
--- a/src/Ryujinx.Graphics.Nvdec/ApplicationId.cs
+++ b/src/Ryujinx.Graphics.Nvdec/ApplicationId.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec
+namespace Ryujinx.Graphics.Nvdec
{
public enum ApplicationId
{
diff --git a/src/Ryujinx.Graphics.Nvdec/H264Decoder.cs b/src/Ryujinx.Graphics.Nvdec/H264Decoder.cs
index c99d4a176..ef8ab9086 100644
--- a/src/Ryujinx.Graphics.Nvdec/H264Decoder.cs
+++ b/src/Ryujinx.Graphics.Nvdec/H264Decoder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.FFmpeg.H264;
+using Ryujinx.Graphics.Nvdec.FFmpeg.H264;
using Ryujinx.Graphics.Nvdec.Image;
using Ryujinx.Graphics.Nvdec.Types.H264;
using Ryujinx.Graphics.Video;
diff --git a/src/Ryujinx.Graphics.Nvdec/Image/SurfaceCache.cs b/src/Ryujinx.Graphics.Nvdec/Image/SurfaceCache.cs
index dc1196732..4a4e1a3f6 100644
--- a/src/Ryujinx.Graphics.Nvdec/Image/SurfaceCache.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Image/SurfaceCache.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu.Memory;
+using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Video;
using System;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Nvdec/Image/SurfaceCommon.cs b/src/Ryujinx.Graphics.Nvdec/Image/SurfaceCommon.cs
index 6087f5b10..14bc113f5 100644
--- a/src/Ryujinx.Graphics.Nvdec/Image/SurfaceCommon.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Image/SurfaceCommon.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Texture;
+using Ryujinx.Graphics.Texture;
using Ryujinx.Graphics.Video;
using System;
diff --git a/src/Ryujinx.Graphics.Nvdec/Image/SurfaceReader.cs b/src/Ryujinx.Graphics.Nvdec/Image/SurfaceReader.cs
index 598b71992..e87956852 100644
--- a/src/Ryujinx.Graphics.Nvdec/Image/SurfaceReader.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Image/SurfaceReader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Texture;
using Ryujinx.Graphics.Video;
diff --git a/src/Ryujinx.Graphics.Nvdec/Image/SurfaceWriter.cs b/src/Ryujinx.Graphics.Nvdec/Image/SurfaceWriter.cs
index dd67252af..b4f028998 100644
--- a/src/Ryujinx.Graphics.Nvdec/Image/SurfaceWriter.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Image/SurfaceWriter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Texture;
using Ryujinx.Graphics.Video;
diff --git a/src/Ryujinx.Graphics.Nvdec/MemoryExtensions.cs b/src/Ryujinx.Graphics.Nvdec/MemoryExtensions.cs
index 2855a8c7f..28d42a8b4 100644
--- a/src/Ryujinx.Graphics.Nvdec/MemoryExtensions.cs
+++ b/src/Ryujinx.Graphics.Nvdec/MemoryExtensions.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu.Memory;
+using Ryujinx.Graphics.Gpu.Memory;
using System;
namespace Ryujinx.Graphics.Nvdec
diff --git a/src/Ryujinx.Graphics.Nvdec/NvdecDevice.cs b/src/Ryujinx.Graphics.Nvdec/NvdecDevice.cs
index 833ee2d42..77e295544 100644
--- a/src/Ryujinx.Graphics.Nvdec/NvdecDevice.cs
+++ b/src/Ryujinx.Graphics.Nvdec/NvdecDevice.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Nvdec.Image;
diff --git a/src/Ryujinx.Graphics.Nvdec/NvdecRegisters.cs b/src/Ryujinx.Graphics.Nvdec/NvdecRegisters.cs
index 5effcb498..bc325715a 100644
--- a/src/Ryujinx.Graphics.Nvdec/NvdecRegisters.cs
+++ b/src/Ryujinx.Graphics.Nvdec/NvdecRegisters.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec
{
diff --git a/src/Ryujinx.Graphics.Nvdec/ResourceManager.cs b/src/Ryujinx.Graphics.Nvdec/ResourceManager.cs
index 08d242586..200d3a1bd 100644
--- a/src/Ryujinx.Graphics.Nvdec/ResourceManager.cs
+++ b/src/Ryujinx.Graphics.Nvdec/ResourceManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu.Memory;
+using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Nvdec.Image;
namespace Ryujinx.Graphics.Nvdec
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/H264/PictureInfo.cs b/src/Ryujinx.Graphics.Nvdec/Types/H264/PictureInfo.cs
index aff88a965..26ba2ea69 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/H264/PictureInfo.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/H264/PictureInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Video;
namespace Ryujinx.Graphics.Nvdec.Types.H264
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/H264/ReferenceFrame.cs b/src/Ryujinx.Graphics.Nvdec/Types/H264/ReferenceFrame.cs
index 9ab9d1320..c310abd67 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/H264/ReferenceFrame.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/H264/ReferenceFrame.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Types.H264
{
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/Vp8/PictureInfo.cs b/src/Ryujinx.Graphics.Nvdec/Types/Vp8/PictureInfo.cs
index 1c4e36c90..a495cfc89 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/Vp8/PictureInfo.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/Vp8/PictureInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Video;
namespace Ryujinx.Graphics.Nvdec.Types.Vp8
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/BackwardUpdates.cs b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/BackwardUpdates.cs
index 661e6cdd7..20e815132 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/BackwardUpdates.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/BackwardUpdates.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Video;
namespace Ryujinx.Graphics.Nvdec.Types.Vp9
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/EntropyProbs.cs b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/EntropyProbs.cs
index dd5221b18..82a09866a 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/EntropyProbs.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/EntropyProbs.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Video;
namespace Ryujinx.Graphics.Nvdec.Types.Vp9
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameFlags.cs b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameFlags.cs
index 966620811..ac4cc486a 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameFlags.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameFlags.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Types.Vp9
+namespace Ryujinx.Graphics.Nvdec.Types.Vp9
{
enum FrameFlags : uint
{
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameSize.cs b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameSize.cs
index 31c08a529..d41c7da13 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameSize.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameSize.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Types.Vp9
+namespace Ryujinx.Graphics.Nvdec.Types.Vp9
{
struct FrameSize
{
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameStats.cs b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameStats.cs
index 9b0325cf0..47f17e4ed 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameStats.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/FrameStats.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Nvdec.Types.Vp9
+namespace Ryujinx.Graphics.Nvdec.Types.Vp9
{
struct FrameStats
{
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/LoopFilter.cs b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/LoopFilter.cs
index ebef7f677..139bd87b4 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/LoopFilter.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/LoopFilter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Types.Vp9
{
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/PictureInfo.cs b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/PictureInfo.cs
index 371680dee..24c18b94c 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/PictureInfo.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/PictureInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Video;
namespace Ryujinx.Graphics.Nvdec.Types.Vp9
diff --git a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/Segmentation.cs b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/Segmentation.cs
index ab9954c68..098becc28 100644
--- a/src/Ryujinx.Graphics.Nvdec/Types/Vp9/Segmentation.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Types/Vp9/Segmentation.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Nvdec.Types.Vp9
{
diff --git a/src/Ryujinx.Graphics.Nvdec/Vp8Decoder.cs b/src/Ryujinx.Graphics.Nvdec/Vp8Decoder.cs
index e56b23d73..0a7d5840e 100644
--- a/src/Ryujinx.Graphics.Nvdec/Vp8Decoder.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Vp8Decoder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Nvdec.FFmpeg.Vp8;
+using Ryujinx.Graphics.Nvdec.FFmpeg.Vp8;
using Ryujinx.Graphics.Nvdec.Image;
using Ryujinx.Graphics.Nvdec.Types.Vp8;
using Ryujinx.Graphics.Video;
diff --git a/src/Ryujinx.Graphics.Nvdec/Vp9Decoder.cs b/src/Ryujinx.Graphics.Nvdec/Vp9Decoder.cs
index f78bb7028..037950562 100644
--- a/src/Ryujinx.Graphics.Nvdec/Vp9Decoder.cs
+++ b/src/Ryujinx.Graphics.Nvdec/Vp9Decoder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Nvdec.Image;
using Ryujinx.Graphics.Nvdec.Types.Vp9;
diff --git a/src/Ryujinx.Graphics.OpenGL/Constants.cs b/src/Ryujinx.Graphics.OpenGL/Constants.cs
index 38fedea0d..e38808b74 100644
--- a/src/Ryujinx.Graphics.OpenGL/Constants.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Constants.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.OpenGL
+namespace Ryujinx.Graphics.OpenGL
{
static class Constants
{
diff --git a/src/Ryujinx.Graphics.OpenGL/Effects/FxaaPostProcessingEffect.cs b/src/Ryujinx.Graphics.OpenGL/Effects/FxaaPostProcessingEffect.cs
index 93654ac70..4e92efe6d 100644
--- a/src/Ryujinx.Graphics.OpenGL/Effects/FxaaPostProcessingEffect.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Effects/FxaaPostProcessingEffect.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Common;
using Ryujinx.Graphics.OpenGL.Image;
diff --git a/src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs b/src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs
index 976b3410b..c25fe5b25 100644
--- a/src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
namespace Ryujinx.Graphics.OpenGL.Effects
{
diff --git a/src/Ryujinx.Graphics.OpenGL/Effects/SmaaPostProcessingEffect.cs b/src/Ryujinx.Graphics.OpenGL/Effects/SmaaPostProcessingEffect.cs
index b3f6cb1e5..46dda13f2 100644
--- a/src/Ryujinx.Graphics.OpenGL/Effects/SmaaPostProcessingEffect.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Effects/SmaaPostProcessingEffect.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Common;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.OpenGL.Image;
diff --git a/src/Ryujinx.Graphics.OpenGL/EnumConversion.cs b/src/Ryujinx.Graphics.OpenGL/EnumConversion.cs
index 417dc3f60..a92c1ce89 100644
--- a/src/Ryujinx.Graphics.OpenGL/EnumConversion.cs
+++ b/src/Ryujinx.Graphics.OpenGL/EnumConversion.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Shader;
diff --git a/src/Ryujinx.Graphics.OpenGL/Handle.cs b/src/Ryujinx.Graphics.OpenGL/Handle.cs
index 4b2f05e67..b63e8f946 100644
--- a/src/Ryujinx.Graphics.OpenGL/Handle.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Handle.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using System.Diagnostics;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Graphics.OpenGL/Helper/GLXHelper.cs b/src/Ryujinx.Graphics.OpenGL/Helper/GLXHelper.cs
index 963549463..ce2b20f7d 100644
--- a/src/Ryujinx.Graphics.OpenGL/Helper/GLXHelper.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Helper/GLXHelper.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx.Graphics.OpenGL/Helper/WGLHelper.cs b/src/Ryujinx.Graphics.OpenGL/Helper/WGLHelper.cs
index df497ae24..be12ff999 100644
--- a/src/Ryujinx.Graphics.OpenGL/Helper/WGLHelper.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Helper/WGLHelper.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx.Graphics.OpenGL/IOpenGLContext.cs b/src/Ryujinx.Graphics.OpenGL/IOpenGLContext.cs
index b1f6d72d2..a11b9cb29 100644
--- a/src/Ryujinx.Graphics.OpenGL/IOpenGLContext.cs
+++ b/src/Ryujinx.Graphics.OpenGL/IOpenGLContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.OpenGL.Helper;
+using Ryujinx.Graphics.OpenGL.Helper;
using System;
namespace Ryujinx.Graphics.OpenGL
diff --git a/src/Ryujinx.Graphics.OpenGL/Image/ITextureInfo.cs b/src/Ryujinx.Graphics.OpenGL/Image/ITextureInfo.cs
index 4c8d7fefc..fecde6dd0 100644
--- a/src/Ryujinx.Graphics.OpenGL/Image/ITextureInfo.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Image/ITextureInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
namespace Ryujinx.Graphics.OpenGL.Image
{
diff --git a/src/Ryujinx.Graphics.OpenGL/Image/TextureBase.cs b/src/Ryujinx.Graphics.OpenGL/Image/TextureBase.cs
index 070a36b5e..df8453830 100644
--- a/src/Ryujinx.Graphics.OpenGL/Image/TextureBase.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Image/TextureBase.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Graphics.GAL;
namespace Ryujinx.Graphics.OpenGL.Image
diff --git a/src/Ryujinx.Graphics.OpenGL/Image/TextureBuffer.cs b/src/Ryujinx.Graphics.OpenGL/Image/TextureBuffer.cs
index c177ae9c6..f140b276a 100644
--- a/src/Ryujinx.Graphics.OpenGL/Image/TextureBuffer.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Image/TextureBuffer.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Common.Memory;
using Ryujinx.Graphics.GAL;
using System;
diff --git a/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs b/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs
index 667ea7825..64ba4e3ee 100644
--- a/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs
+++ b/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
@@ -57,16 +57,11 @@ namespace Ryujinx.Graphics.OpenGL
ResourcePool = new ResourcePool();
}
- public BufferHandle CreateBuffer(int size, BufferHandle storageHint)
- {
- return CreateBuffer(size, GAL.BufferAccess.Default);
- }
-
public BufferHandle CreateBuffer(int size, GAL.BufferAccess access)
{
BufferCount++;
- if (access == GAL.BufferAccess.FlushPersistent)
+ if (access.HasFlag(GAL.BufferAccess.FlushPersistent))
{
BufferHandle handle = Buffer.CreatePersistent(size);
@@ -80,11 +75,21 @@ namespace Ryujinx.Graphics.OpenGL
}
}
+ public BufferHandle CreateBuffer(int size, GAL.BufferAccess access, BufferHandle storageHint)
+ {
+ return CreateBuffer(size, access);
+ }
+
public BufferHandle CreateBuffer(nint pointer, int size)
{
throw new NotSupportedException();
}
+ public BufferHandle CreateBufferSparse(ReadOnlySpan storageBuffers)
+ {
+ throw new NotSupportedException();
+ }
+
public IProgram CreateProgram(ShaderSource[] shaders, ShaderInfo info)
{
return new Program(shaders, info.FragmentOutputMap);
@@ -148,6 +153,7 @@ namespace Ryujinx.Graphics.OpenGL
supportsR4G4B4A4Format: true,
supportsSnormBufferTextureFormat: false,
supports5BitComponentFormat: true,
+ supportsSparseBuffer: false,
supportsBlendEquationAdvanced: HwCapabilities.SupportsBlendEquationAdvanced,
supportsFragmentShaderInterlock: HwCapabilities.SupportsFragmentShaderInterlock,
supportsFragmentShaderOrderingIntel: HwCapabilities.SupportsFragmentShaderOrdering,
diff --git a/src/Ryujinx.Graphics.OpenGL/Queries/BufferedQuery.cs b/src/Ryujinx.Graphics.OpenGL/Queries/BufferedQuery.cs
index 1470f5aaa..0a85970d7 100644
--- a/src/Ryujinx.Graphics.OpenGL/Queries/BufferedQuery.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Queries/BufferedQuery.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Common.Logging;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.OpenGL/Queries/CounterQueue.cs b/src/Ryujinx.Graphics.OpenGL/Queries/CounterQueue.cs
index c430ffc34..345a99ffa 100644
--- a/src/Ryujinx.Graphics.OpenGL/Queries/CounterQueue.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Queries/CounterQueue.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Graphics.GAL;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.OpenGL/Queries/CounterQueueEvent.cs b/src/Ryujinx.Graphics.OpenGL/Queries/CounterQueueEvent.cs
index 7d2249068..32b75c615 100644
--- a/src/Ryujinx.Graphics.OpenGL/Queries/CounterQueueEvent.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Queries/CounterQueueEvent.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Graphics.GAL;
using System;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.OpenGL/ResourcePool.cs b/src/Ryujinx.Graphics.OpenGL/ResourcePool.cs
index 20ef9e87a..6385f57b5 100644
--- a/src/Ryujinx.Graphics.OpenGL/ResourcePool.cs
+++ b/src/Ryujinx.Graphics.OpenGL/ResourcePool.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.OpenGL.Image;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.OpenGL/Sync.cs b/src/Ryujinx.Graphics.OpenGL/Sync.cs
index b7ee3d3c1..eba1638a3 100644
--- a/src/Ryujinx.Graphics.OpenGL/Sync.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Sync.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Common.Logging;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.Shader/BufferUsageFlags.cs b/src/Ryujinx.Graphics.Shader/BufferUsageFlags.cs
index a69fa46a4..10b984831 100644
--- a/src/Ryujinx.Graphics.Shader/BufferUsageFlags.cs
+++ b/src/Ryujinx.Graphics.Shader/BufferUsageFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Shader
{
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/CodeGenContext.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/CodeGenContext.cs
index 53267c60b..17c3eefe3 100644
--- a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/CodeGenContext.cs
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/CodeGenContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Shader.IntermediateRepresentation;
+using Ryujinx.Graphics.Shader.IntermediateRepresentation;
using Ryujinx.Graphics.Shader.StructuredIr;
using Ryujinx.Graphics.Shader.Translation;
using Spv.Generator;
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Declarations.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Declarations.cs
index 45933a21b..4ff61d9f2 100644
--- a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Declarations.cs
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Declarations.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Shader.IntermediateRepresentation;
+using Ryujinx.Graphics.Shader.IntermediateRepresentation;
using Ryujinx.Graphics.Shader.StructuredIr;
using Ryujinx.Graphics.Shader.Translation;
using Spv.Generator;
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/EnumConversion.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/EnumConversion.cs
index 2bb7e8369..d444588e8 100644
--- a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/EnumConversion.cs
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/EnumConversion.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using static Spv.Specification;
namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Instructions.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Instructions.cs
index 50a73ab83..601753cb0 100644
--- a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Instructions.cs
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/Instructions.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Shader.IntermediateRepresentation;
+using Ryujinx.Graphics.Shader.IntermediateRepresentation;
using Ryujinx.Graphics.Shader.StructuredIr;
using Ryujinx.Graphics.Shader.Translation;
using System;
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/OperationResult.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/OperationResult.cs
index a6e8e91f6..5be634c74 100644
--- a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/OperationResult.cs
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/OperationResult.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Shader.Translation;
+using Ryujinx.Graphics.Shader.Translation;
using Spv.Generator;
namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvDelegates.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvDelegates.cs
index 0fa954e15..3716d76d9 100644
--- a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvDelegates.cs
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvDelegates.cs
@@ -1,4 +1,4 @@
-using FuncBinaryInstruction = System.Func;
+using FuncBinaryInstruction = System.Func;
using FuncQuaternaryInstruction = System.Func;
using FuncTernaryInstruction = System.Func;
using FuncUnaryInstruction = System.Func;
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs
index a1e9054f6..ccfdc46d0 100644
--- a/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvGenerator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.Shader.IntermediateRepresentation;
using Ryujinx.Graphics.Shader.StructuredIr;
using Ryujinx.Graphics.Shader.Translation;
diff --git a/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs b/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs
index 29a5435e3..df6d29dc5 100644
--- a/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs
+++ b/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Shader.CodeGen;
+using Ryujinx.Graphics.Shader.CodeGen;
using System;
namespace Ryujinx.Graphics.Shader
diff --git a/src/Ryujinx.Graphics.Shader/TextureFormat.cs b/src/Ryujinx.Graphics.Shader/TextureFormat.cs
index f6e57fe8f..619598c7f 100644
--- a/src/Ryujinx.Graphics.Shader/TextureFormat.cs
+++ b/src/Ryujinx.Graphics.Shader/TextureFormat.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Shader.Translation;
+using Ryujinx.Graphics.Shader.Translation;
namespace Ryujinx.Graphics.Shader
{
diff --git a/src/Ryujinx.Graphics.Shader/TextureUsageFlags.cs b/src/Ryujinx.Graphics.Shader/TextureUsageFlags.cs
index 3ad1685b6..306435fd6 100644
--- a/src/Ryujinx.Graphics.Shader/TextureUsageFlags.cs
+++ b/src/Ryujinx.Graphics.Shader/TextureUsageFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Shader
{
diff --git a/src/Ryujinx.Graphics.Shader/Translation/AggregateType.cs b/src/Ryujinx.Graphics.Shader/Translation/AggregateType.cs
index def8f1a9d..108fcb94f 100644
--- a/src/Ryujinx.Graphics.Shader/Translation/AggregateType.cs
+++ b/src/Ryujinx.Graphics.Shader/Translation/AggregateType.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.Graphics.Shader.Translation
diff --git a/src/Ryujinx.Graphics.Shader/Translation/FeatureFlags.cs b/src/Ryujinx.Graphics.Shader/Translation/FeatureFlags.cs
index 88525462d..82a54db83 100644
--- a/src/Ryujinx.Graphics.Shader/Translation/FeatureFlags.cs
+++ b/src/Ryujinx.Graphics.Shader/Translation/FeatureFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Shader.Translation
{
diff --git a/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs b/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs
index c955f5b5f..a88903274 100644
--- a/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs
+++ b/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Shader.Instructions;
+using Ryujinx.Graphics.Shader.Instructions;
using Ryujinx.Graphics.Shader.IntermediateRepresentation;
using Ryujinx.Graphics.Shader.StructuredIr;
using System.Collections.Generic;
@@ -29,7 +29,16 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations
if (texOp.Inst == Instruction.TextureSample || texOp.Inst.IsTextureQuery())
{
- Operand bindlessHandle = Utils.FindLastOperation(texOp.GetSource(0), block);
+ Operand bindlessHandle = texOp.GetSource(0);
+
+ // In some cases the compiler uses a shuffle operation to get the handle,
+ // for some textureGrad implementations. In those cases, we can skip the shuffle.
+ if (bindlessHandle.AsgOp is Operation shuffleOp && shuffleOp.Inst == Instruction.Shuffle)
+ {
+ bindlessHandle = shuffleOp.GetSource(0);
+ }
+
+ bindlessHandle = Utils.FindLastOperation(bindlessHandle, block);
// Some instructions do not encode an accurate sampler type:
// - Most instructions uses the same type for 1D and Buffer.
diff --git a/src/Ryujinx.Graphics.Shader/Translation/Optimizations/Utils.cs b/src/Ryujinx.Graphics.Shader/Translation/Optimizations/Utils.cs
index baf8e66e7..74a6d5a1e 100644
--- a/src/Ryujinx.Graphics.Shader/Translation/Optimizations/Utils.cs
+++ b/src/Ryujinx.Graphics.Shader/Translation/Optimizations/Utils.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Shader.IntermediateRepresentation;
+using Ryujinx.Graphics.Shader.IntermediateRepresentation;
using System.Collections.Generic;
namespace Ryujinx.Graphics.Shader.Translation.Optimizations
diff --git a/src/Ryujinx.Graphics.Shader/Translation/TranslatorContext.cs b/src/Ryujinx.Graphics.Shader/Translation/TranslatorContext.cs
index a112991e9..a193ab3c4 100644
--- a/src/Ryujinx.Graphics.Shader/Translation/TranslatorContext.cs
+++ b/src/Ryujinx.Graphics.Shader/Translation/TranslatorContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Shader.CodeGen;
+using Ryujinx.Graphics.Shader.CodeGen;
using Ryujinx.Graphics.Shader.CodeGen.Glsl;
using Ryujinx.Graphics.Shader.CodeGen.Spirv;
using Ryujinx.Graphics.Shader.Decoders;
diff --git a/src/Ryujinx.Graphics.Texture/Astc/AstcDecoder.cs b/src/Ryujinx.Graphics.Texture/Astc/AstcDecoder.cs
index 1f781d2f8..edf699dc3 100644
--- a/src/Ryujinx.Graphics.Texture/Astc/AstcDecoder.cs
+++ b/src/Ryujinx.Graphics.Texture/Astc/AstcDecoder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System;
using System.Diagnostics;
using System.Linq;
diff --git a/src/Ryujinx.Graphics.Texture/Astc/AstcPixel.cs b/src/Ryujinx.Graphics.Texture/Astc/AstcPixel.cs
index e6ca1035c..b16cb0026 100644
--- a/src/Ryujinx.Graphics.Texture/Astc/AstcPixel.cs
+++ b/src/Ryujinx.Graphics.Texture/Astc/AstcPixel.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Texture/Astc/BitStream128.cs b/src/Ryujinx.Graphics.Texture/Astc/BitStream128.cs
index f98a714d1..4402df7e5 100644
--- a/src/Ryujinx.Graphics.Texture/Astc/BitStream128.cs
+++ b/src/Ryujinx.Graphics.Texture/Astc/BitStream128.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Texture/Astc/Bits.cs b/src/Ryujinx.Graphics.Texture/Astc/Bits.cs
index 91652bf14..bedc14f78 100644
--- a/src/Ryujinx.Graphics.Texture/Astc/Bits.cs
+++ b/src/Ryujinx.Graphics.Texture/Astc/Bits.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Texture.Astc
+namespace Ryujinx.Graphics.Texture.Astc
{
internal static class Bits
{
diff --git a/src/Ryujinx.Graphics.Texture/Astc/EndPointSet.cs b/src/Ryujinx.Graphics.Texture/Astc/EndPointSet.cs
index 45e61ca2c..2cfb22018 100644
--- a/src/Ryujinx.Graphics.Texture/Astc/EndPointSet.cs
+++ b/src/Ryujinx.Graphics.Texture/Astc/EndPointSet.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Texture/Astc/IntegerEncoded.cs b/src/Ryujinx.Graphics.Texture/Astc/IntegerEncoded.cs
index 361140ddd..fedd90ee2 100644
--- a/src/Ryujinx.Graphics.Texture/Astc/IntegerEncoded.cs
+++ b/src/Ryujinx.Graphics.Texture/Astc/IntegerEncoded.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Numerics;
namespace Ryujinx.Graphics.Texture.Astc
diff --git a/src/Ryujinx.Graphics.Texture/Astc/IntegerSequence.cs b/src/Ryujinx.Graphics.Texture/Astc/IntegerSequence.cs
index 367b68095..9cdffd58f 100644
--- a/src/Ryujinx.Graphics.Texture/Astc/IntegerSequence.cs
+++ b/src/Ryujinx.Graphics.Texture/Astc/IntegerSequence.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Texture/BC6Decoder.cs b/src/Ryujinx.Graphics.Texture/BC6Decoder.cs
index f761a4222..ae33e9cf9 100644
--- a/src/Ryujinx.Graphics.Texture/BC6Decoder.cs
+++ b/src/Ryujinx.Graphics.Texture/BC6Decoder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Texture.Utils;
+using Ryujinx.Graphics.Texture.Utils;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Texture/BC7Decoder.cs b/src/Ryujinx.Graphics.Texture/BC7Decoder.cs
index c1c704291..d8c6c1edc 100644
--- a/src/Ryujinx.Graphics.Texture/BC7Decoder.cs
+++ b/src/Ryujinx.Graphics.Texture/BC7Decoder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Texture.Utils;
+using Ryujinx.Graphics.Texture.Utils;
using System;
using System.Diagnostics;
using System.Numerics;
diff --git a/src/Ryujinx.Graphics.Texture/BlockLinearLayout.cs b/src/Ryujinx.Graphics.Texture/BlockLinearLayout.cs
index 06d984ace..809a32cc6 100644
--- a/src/Ryujinx.Graphics.Texture/BlockLinearLayout.cs
+++ b/src/Ryujinx.Graphics.Texture/BlockLinearLayout.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using System.Numerics;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Graphics.Texture/Bpp12Pixel.cs b/src/Ryujinx.Graphics.Texture/Bpp12Pixel.cs
index 6e2cb8a79..bde96f0f0 100644
--- a/src/Ryujinx.Graphics.Texture/Bpp12Pixel.cs
+++ b/src/Ryujinx.Graphics.Texture/Bpp12Pixel.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.Graphics.Texture
{
diff --git a/src/Ryujinx.Graphics.Texture/Encoders/BC7Encoder.cs b/src/Ryujinx.Graphics.Texture/Encoders/BC7Encoder.cs
index 21aa225a7..5fdc9e917 100644
--- a/src/Ryujinx.Graphics.Texture/Encoders/BC7Encoder.cs
+++ b/src/Ryujinx.Graphics.Texture/Encoders/BC7Encoder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Texture.Utils;
+using Ryujinx.Graphics.Texture.Utils;
using System;
using System.Diagnostics;
using System.Numerics;
diff --git a/src/Ryujinx.Graphics.Texture/Encoders/EncodeMode.cs b/src/Ryujinx.Graphics.Texture/Encoders/EncodeMode.cs
index 8db3b3c0d..af2317e72 100644
--- a/src/Ryujinx.Graphics.Texture/Encoders/EncodeMode.cs
+++ b/src/Ryujinx.Graphics.Texture/Encoders/EncodeMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Texture.Encoders
+namespace Ryujinx.Graphics.Texture.Encoders
{
enum EncodeMode
{
diff --git a/src/Ryujinx.Graphics.Texture/Region.cs b/src/Ryujinx.Graphics.Texture/Region.cs
index e59888a0e..aeb7f9184 100644
--- a/src/Ryujinx.Graphics.Texture/Region.cs
+++ b/src/Ryujinx.Graphics.Texture/Region.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Texture
+namespace Ryujinx.Graphics.Texture
{
public readonly struct Region
{
diff --git a/src/Ryujinx.Graphics.Texture/Utils/BC67Tables.cs b/src/Ryujinx.Graphics.Texture/Utils/BC67Tables.cs
index f1745d235..522538559 100644
--- a/src/Ryujinx.Graphics.Texture/Utils/BC67Tables.cs
+++ b/src/Ryujinx.Graphics.Texture/Utils/BC67Tables.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Texture.Utils
+namespace Ryujinx.Graphics.Texture.Utils
{
static class BC67Tables
{
diff --git a/src/Ryujinx.Graphics.Texture/Utils/BC67Utils.cs b/src/Ryujinx.Graphics.Texture/Utils/BC67Utils.cs
index 0916cc2ca..f548684a4 100644
--- a/src/Ryujinx.Graphics.Texture/Utils/BC67Utils.cs
+++ b/src/Ryujinx.Graphics.Texture/Utils/BC67Utils.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
diff --git a/src/Ryujinx.Graphics.Texture/Utils/RgbaColor32.cs b/src/Ryujinx.Graphics.Texture/Utils/RgbaColor32.cs
index 8ca3f89bc..7d46ad6eb 100644
--- a/src/Ryujinx.Graphics.Texture/Utils/RgbaColor32.cs
+++ b/src/Ryujinx.Graphics.Texture/Utils/RgbaColor32.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
diff --git a/src/Ryujinx.Graphics.Texture/Utils/RgbaColor8.cs b/src/Ryujinx.Graphics.Texture/Utils/RgbaColor8.cs
index eced3d75f..91535c1ae 100644
--- a/src/Ryujinx.Graphics.Texture/Utils/RgbaColor8.cs
+++ b/src/Ryujinx.Graphics.Texture/Utils/RgbaColor8.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;
diff --git a/src/Ryujinx.Graphics.Vic/Blender.cs b/src/Ryujinx.Graphics.Vic/Blender.cs
index e49b59032..3218604db 100644
--- a/src/Ryujinx.Graphics.Vic/Blender.cs
+++ b/src/Ryujinx.Graphics.Vic/Blender.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Vic.Image;
+using Ryujinx.Graphics.Vic.Image;
using Ryujinx.Graphics.Vic.Types;
using System;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Vic/Image/BufferPool.cs b/src/Ryujinx.Graphics.Vic/Image/BufferPool.cs
index 1f7dc08a1..6e3963054 100644
--- a/src/Ryujinx.Graphics.Vic/Image/BufferPool.cs
+++ b/src/Ryujinx.Graphics.Vic/Image/BufferPool.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Vic.Image
{
diff --git a/src/Ryujinx.Graphics.Vic/Image/InputSurface.cs b/src/Ryujinx.Graphics.Vic/Image/InputSurface.cs
index 04994468c..de770c943 100644
--- a/src/Ryujinx.Graphics.Vic/Image/InputSurface.cs
+++ b/src/Ryujinx.Graphics.Vic/Image/InputSurface.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Vic.Image
{
diff --git a/src/Ryujinx.Graphics.Vic/Image/Pixel.cs b/src/Ryujinx.Graphics.Vic/Image/Pixel.cs
index 35f25d163..41308af7f 100644
--- a/src/Ryujinx.Graphics.Vic/Image/Pixel.cs
+++ b/src/Ryujinx.Graphics.Vic/Image/Pixel.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Vic.Image
+namespace Ryujinx.Graphics.Vic.Image
{
struct Pixel
{
diff --git a/src/Ryujinx.Graphics.Vic/Image/Surface.cs b/src/Ryujinx.Graphics.Vic/Image/Surface.cs
index f393eb15c..af87d9670 100644
--- a/src/Ryujinx.Graphics.Vic/Image/Surface.cs
+++ b/src/Ryujinx.Graphics.Vic/Image/Surface.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
namespace Ryujinx.Graphics.Vic.Image
diff --git a/src/Ryujinx.Graphics.Vic/Image/SurfaceCommon.cs b/src/Ryujinx.Graphics.Vic/Image/SurfaceCommon.cs
index 10cdefe28..635f083bd 100644
--- a/src/Ryujinx.Graphics.Vic/Image/SurfaceCommon.cs
+++ b/src/Ryujinx.Graphics.Vic/Image/SurfaceCommon.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.Texture;
namespace Ryujinx.Graphics.Vic.Image
diff --git a/src/Ryujinx.Graphics.Vic/Image/SurfaceReader.cs b/src/Ryujinx.Graphics.Vic/Image/SurfaceReader.cs
index 5175d911a..8a9acd912 100644
--- a/src/Ryujinx.Graphics.Vic/Image/SurfaceReader.cs
+++ b/src/Ryujinx.Graphics.Vic/Image/SurfaceReader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Texture;
using Ryujinx.Graphics.Vic.Types;
diff --git a/src/Ryujinx.Graphics.Vic/Image/SurfaceWriter.cs b/src/Ryujinx.Graphics.Vic/Image/SurfaceWriter.cs
index 37d261f9e..b06640499 100644
--- a/src/Ryujinx.Graphics.Vic/Image/SurfaceWriter.cs
+++ b/src/Ryujinx.Graphics.Vic/Image/SurfaceWriter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Texture;
using Ryujinx.Graphics.Vic.Types;
using System;
diff --git a/src/Ryujinx.Graphics.Vic/ResourceManager.cs b/src/Ryujinx.Graphics.Vic/ResourceManager.cs
index 7c3f507ed..b0ff8e10e 100644
--- a/src/Ryujinx.Graphics.Vic/ResourceManager.cs
+++ b/src/Ryujinx.Graphics.Vic/ResourceManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu.Memory;
+using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Vic.Image;
namespace Ryujinx.Graphics.Vic
diff --git a/src/Ryujinx.Graphics.Vic/Types/BlendingSlotStruct.cs b/src/Ryujinx.Graphics.Vic/Types/BlendingSlotStruct.cs
index 2cc6b1e28..0037befea 100644
--- a/src/Ryujinx.Graphics.Vic/Types/BlendingSlotStruct.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/BlendingSlotStruct.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Graphics.Vic.Types
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/ClearRectStruct.cs b/src/Ryujinx.Graphics.Vic/Types/ClearRectStruct.cs
index da9888f78..2e78f5d4d 100644
--- a/src/Ryujinx.Graphics.Vic/Types/ClearRectStruct.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/ClearRectStruct.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Graphics.Vic.Types
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/ConfigStruct.cs b/src/Ryujinx.Graphics.Vic/Types/ConfigStruct.cs
index bf94606c0..2496a62e9 100644
--- a/src/Ryujinx.Graphics.Vic/Types/ConfigStruct.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/ConfigStruct.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Vic.Types
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/LumaKeyStruct.cs b/src/Ryujinx.Graphics.Vic/Types/LumaKeyStruct.cs
index 0cb5e6d9d..87deb4e44 100644
--- a/src/Ryujinx.Graphics.Vic/Types/LumaKeyStruct.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/LumaKeyStruct.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Graphics.Vic.Types
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/MatrixStruct.cs b/src/Ryujinx.Graphics.Vic/Types/MatrixStruct.cs
index f89a142f8..b634e3f45 100644
--- a/src/Ryujinx.Graphics.Vic/Types/MatrixStruct.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/MatrixStruct.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Graphics.Vic.Types
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/OutputConfig.cs b/src/Ryujinx.Graphics.Vic/Types/OutputConfig.cs
index 10ceb240f..3ce6c93c5 100644
--- a/src/Ryujinx.Graphics.Vic/Types/OutputConfig.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/OutputConfig.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Graphics.Vic.Types
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/OutputSurfaceConfig.cs b/src/Ryujinx.Graphics.Vic/Types/OutputSurfaceConfig.cs
index ad236882d..e72a6a125 100644
--- a/src/Ryujinx.Graphics.Vic/Types/OutputSurfaceConfig.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/OutputSurfaceConfig.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Graphics.Vic.Types
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/PipeConfig.cs b/src/Ryujinx.Graphics.Vic/Types/PipeConfig.cs
index 408bd83ea..1e0a7e641 100644
--- a/src/Ryujinx.Graphics.Vic/Types/PipeConfig.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/PipeConfig.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Graphics.Vic.Types
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/PixelFormat.cs b/src/Ryujinx.Graphics.Vic/Types/PixelFormat.cs
index 8f5eda8b6..58df3f307 100644
--- a/src/Ryujinx.Graphics.Vic/Types/PixelFormat.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/PixelFormat.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Vic.Types
+namespace Ryujinx.Graphics.Vic.Types
{
enum PixelFormat
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/SlotConfig.cs b/src/Ryujinx.Graphics.Vic/Types/SlotConfig.cs
index 4031bf995..148d06815 100644
--- a/src/Ryujinx.Graphics.Vic/Types/SlotConfig.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/SlotConfig.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Graphics.Vic.Types
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/SlotStruct.cs b/src/Ryujinx.Graphics.Vic/Types/SlotStruct.cs
index 96c6cce56..b7726683e 100644
--- a/src/Ryujinx.Graphics.Vic/Types/SlotStruct.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/SlotStruct.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Vic.Types
+namespace Ryujinx.Graphics.Vic.Types
{
struct SlotStruct
{
diff --git a/src/Ryujinx.Graphics.Vic/Types/SlotSurfaceConfig.cs b/src/Ryujinx.Graphics.Vic/Types/SlotSurfaceConfig.cs
index 0be0d4f43..3acab4de9 100644
--- a/src/Ryujinx.Graphics.Vic/Types/SlotSurfaceConfig.cs
+++ b/src/Ryujinx.Graphics.Vic/Types/SlotSurfaceConfig.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Graphics.Vic.Types
{
diff --git a/src/Ryujinx.Graphics.Vic/VicDevice.cs b/src/Ryujinx.Graphics.Vic/VicDevice.cs
index 5053c0cc5..2ddb94a4e 100644
--- a/src/Ryujinx.Graphics.Vic/VicDevice.cs
+++ b/src/Ryujinx.Graphics.Vic/VicDevice.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Device;
+using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Vic.Image;
using Ryujinx.Graphics.Vic.Types;
diff --git a/src/Ryujinx.Graphics.Vic/VicRegisters.cs b/src/Ryujinx.Graphics.Vic/VicRegisters.cs
index 1e002839c..7ebc10d9a 100644
--- a/src/Ryujinx.Graphics.Vic/VicRegisters.cs
+++ b/src/Ryujinx.Graphics.Vic/VicRegisters.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Vic
{
diff --git a/src/Ryujinx.Graphics.Video/H264PictureInfo.cs b/src/Ryujinx.Graphics.Video/H264PictureInfo.cs
index 3b2c2fff7..294de0556 100644
--- a/src/Ryujinx.Graphics.Video/H264PictureInfo.cs
+++ b/src/Ryujinx.Graphics.Video/H264PictureInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Video
{
diff --git a/src/Ryujinx.Graphics.Video/IDecoder.cs b/src/Ryujinx.Graphics.Video/IDecoder.cs
index 5957af085..44c3375c0 100644
--- a/src/Ryujinx.Graphics.Video/IDecoder.cs
+++ b/src/Ryujinx.Graphics.Video/IDecoder.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Video
{
diff --git a/src/Ryujinx.Graphics.Video/IH264Decoder.cs b/src/Ryujinx.Graphics.Video/IH264Decoder.cs
index 127b9412c..f204436d8 100644
--- a/src/Ryujinx.Graphics.Video/IH264Decoder.cs
+++ b/src/Ryujinx.Graphics.Video/IH264Decoder.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Video
{
diff --git a/src/Ryujinx.Graphics.Video/ISurface.cs b/src/Ryujinx.Graphics.Video/ISurface.cs
index 7c1661f1f..6176b6a4e 100644
--- a/src/Ryujinx.Graphics.Video/ISurface.cs
+++ b/src/Ryujinx.Graphics.Video/ISurface.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Video
{
diff --git a/src/Ryujinx.Graphics.Video/IVp9Decoder.cs b/src/Ryujinx.Graphics.Video/IVp9Decoder.cs
index ac79bc421..78ed90a4e 100644
--- a/src/Ryujinx.Graphics.Video/IVp9Decoder.cs
+++ b/src/Ryujinx.Graphics.Video/IVp9Decoder.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Video
{
diff --git a/src/Ryujinx.Graphics.Video/Plane.cs b/src/Ryujinx.Graphics.Video/Plane.cs
index 1a2ad251b..b895cad90 100644
--- a/src/Ryujinx.Graphics.Video/Plane.cs
+++ b/src/Ryujinx.Graphics.Video/Plane.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Video
{
diff --git a/src/Ryujinx.Graphics.Video/Vp8PictureInfo.cs b/src/Ryujinx.Graphics.Video/Vp8PictureInfo.cs
index df398d843..6aa7fb7fd 100644
--- a/src/Ryujinx.Graphics.Video/Vp8PictureInfo.cs
+++ b/src/Ryujinx.Graphics.Video/Vp8PictureInfo.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Video
+namespace Ryujinx.Graphics.Video
{
public ref struct Vp8PictureInfo
{
diff --git a/src/Ryujinx.Graphics.Video/Vp9BackwardUpdates.cs b/src/Ryujinx.Graphics.Video/Vp9BackwardUpdates.cs
index a3aa4de73..0fb543669 100644
--- a/src/Ryujinx.Graphics.Video/Vp9BackwardUpdates.cs
+++ b/src/Ryujinx.Graphics.Video/Vp9BackwardUpdates.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Video
{
diff --git a/src/Ryujinx.Graphics.Video/Vp9EntropyProbs.cs b/src/Ryujinx.Graphics.Video/Vp9EntropyProbs.cs
index 10b997a5f..a5fc25a48 100644
--- a/src/Ryujinx.Graphics.Video/Vp9EntropyProbs.cs
+++ b/src/Ryujinx.Graphics.Video/Vp9EntropyProbs.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Video
{
diff --git a/src/Ryujinx.Graphics.Video/Vp9Mv.cs b/src/Ryujinx.Graphics.Video/Vp9Mv.cs
index 9de410589..ce842a1d3 100644
--- a/src/Ryujinx.Graphics.Video/Vp9Mv.cs
+++ b/src/Ryujinx.Graphics.Video/Vp9Mv.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Video
+namespace Ryujinx.Graphics.Video
{
public struct Vp9Mv
{
diff --git a/src/Ryujinx.Graphics.Video/Vp9MvRef.cs b/src/Ryujinx.Graphics.Video/Vp9MvRef.cs
index 6f2d8e815..7962544d0 100644
--- a/src/Ryujinx.Graphics.Video/Vp9MvRef.cs
+++ b/src/Ryujinx.Graphics.Video/Vp9MvRef.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Video
{
diff --git a/src/Ryujinx.Graphics.Video/Vp9PictureInfo.cs b/src/Ryujinx.Graphics.Video/Vp9PictureInfo.cs
index a5cc2b450..bcdaf0dfc 100644
--- a/src/Ryujinx.Graphics.Video/Vp9PictureInfo.cs
+++ b/src/Ryujinx.Graphics.Video/Vp9PictureInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.Graphics.Video
{
diff --git a/src/Ryujinx.Graphics.Vulkan/Auto.cs b/src/Ryujinx.Graphics.Vulkan/Auto.cs
index 026dd2b60..606c088e9 100644
--- a/src/Ryujinx.Graphics.Vulkan/Auto.cs
+++ b/src/Ryujinx.Graphics.Vulkan/Auto.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.Vulkan/AutoFlushCounter.cs b/src/Ryujinx.Graphics.Vulkan/AutoFlushCounter.cs
index 8ac412fe5..266893a6e 100644
--- a/src/Ryujinx.Graphics.Vulkan/AutoFlushCounter.cs
+++ b/src/Ryujinx.Graphics.Vulkan/AutoFlushCounter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using System;
using System.Diagnostics;
using System.Linq;
diff --git a/src/Ryujinx.Graphics.Vulkan/BackgroundResources.cs b/src/Ryujinx.Graphics.Vulkan/BackgroundResources.cs
index e9478b438..24e600a26 100644
--- a/src/Ryujinx.Graphics.Vulkan/BackgroundResources.cs
+++ b/src/Ryujinx.Graphics.Vulkan/BackgroundResources.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
using System.Collections.Generic;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.Vulkan/BitMap.cs b/src/Ryujinx.Graphics.Vulkan/BitMap.cs
index 5619fcdf7..22abe719b 100644
--- a/src/Ryujinx.Graphics.Vulkan/BitMap.cs
+++ b/src/Ryujinx.Graphics.Vulkan/BitMap.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Vulkan
+namespace Ryujinx.Graphics.Vulkan
{
readonly struct BitMap
{
diff --git a/src/Ryujinx.Graphics.Vulkan/BitMapStruct.cs b/src/Ryujinx.Graphics.Vulkan/BitMapStruct.cs
index 15672e9cb..43107427c 100644
--- a/src/Ryujinx.Graphics.Vulkan/BitMapStruct.cs
+++ b/src/Ryujinx.Graphics.Vulkan/BitMapStruct.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
using System.Numerics;
diff --git a/src/Ryujinx.Graphics.Vulkan/BufferAllocationType.cs b/src/Ryujinx.Graphics.Vulkan/BufferAllocationType.cs
index 00b65714b..345191f16 100644
--- a/src/Ryujinx.Graphics.Vulkan/BufferAllocationType.cs
+++ b/src/Ryujinx.Graphics.Vulkan/BufferAllocationType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Vulkan
+namespace Ryujinx.Graphics.Vulkan
{
internal enum BufferAllocationType
{
@@ -8,5 +8,6 @@
HostMapped,
DeviceLocal,
DeviceLocalMapped,
+ Sparse,
}
}
diff --git a/src/Ryujinx.Graphics.Vulkan/BufferHolder.cs b/src/Ryujinx.Graphics.Vulkan/BufferHolder.cs
index d3a3cae11..bdd5d3856 100644
--- a/src/Ryujinx.Graphics.Vulkan/BufferHolder.cs
+++ b/src/Ryujinx.Graphics.Vulkan/BufferHolder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
@@ -46,7 +46,7 @@ namespace Ryujinx.Graphics.Vulkan
private bool _lastAccessIsWrite;
- private readonly BufferAllocationType _baseType;
+ private BufferAllocationType _baseType;
private BufferAllocationType _currentType;
private bool _swapQueued;
@@ -109,6 +109,22 @@ namespace Ryujinx.Graphics.Vulkan
_flushLock = new ReaderWriterLockSlim();
}
+ public BufferHolder(VulkanRenderer gd, Device device, VkBuffer buffer, int size, Auto[] storageAllocations)
+ {
+ _gd = gd;
+ _device = device;
+ _waitable = new MultiFenceHolder(size);
+ _buffer = new Auto(new DisposableBuffer(gd.Api, device, buffer), _waitable, storageAllocations);
+ _bufferHandle = buffer.Handle;
+ Size = size;
+
+ _baseType = BufferAllocationType.Sparse;
+ _currentType = BufferAllocationType.Sparse;
+ DesiredType = BufferAllocationType.Sparse;
+
+ _flushLock = new ReaderWriterLockSlim();
+ }
+
public bool TryBackingSwap(ref CommandBufferScoped? cbs)
{
if (_swapQueued && DesiredType != _currentType)
@@ -122,7 +138,7 @@ namespace Ryujinx.Graphics.Vulkan
var currentBuffer = _buffer;
IntPtr currentMap = _map;
- (VkBuffer buffer, MemoryAllocation allocation, BufferAllocationType resultType) = _gd.BufferManager.CreateBacking(_gd, Size, DesiredType, false, _currentType);
+ (VkBuffer buffer, MemoryAllocation allocation, BufferAllocationType resultType) = _gd.BufferManager.CreateBacking(_gd, Size, DesiredType, false, false, _currentType);
if (buffer.Handle != 0)
{
@@ -253,6 +269,14 @@ namespace Ryujinx.Graphics.Vulkan
}
}
+ public void Pin()
+ {
+ if (_baseType == BufferAllocationType.Auto)
+ {
+ _baseType = _currentType;
+ }
+ }
+
public unsafe Auto CreateView(VkFormat format, int offset, int size, Action invalidateView)
{
var bufferViewCreateInfo = new BufferViewCreateInfo
@@ -496,7 +520,7 @@ namespace Ryujinx.Graphics.Vulkan
if (_gd.PipelineInternal.CurrentCommandBuffer.CommandBuffer.Handle == cbs.CommandBuffer.Handle)
{
- SetData(rangeOffset, _pendingData.AsSpan(rangeOffset, rangeSize), cbs, _gd.PipelineInternal.EndRenderPass, false);
+ SetData(rangeOffset, _pendingData.AsSpan(rangeOffset, rangeSize), cbs, _gd.PipelineInternal.EndRenderPassDelegate, false);
}
else
{
@@ -506,6 +530,16 @@ namespace Ryujinx.Graphics.Vulkan
}
}
+ public Auto GetAllocation()
+ {
+ return _allocationAuto;
+ }
+
+ public (DeviceMemory, ulong) GetDeviceMemoryAndOffset()
+ {
+ return (_allocation.Memory, _allocation.Offset);
+ }
+
public void SignalWrite(int offset, int size)
{
ConsiderBackingSwap();
@@ -1072,7 +1106,7 @@ namespace Ryujinx.Graphics.Vulkan
}
else
{
- _allocationAuto.Dispose();
+ _allocationAuto?.Dispose();
}
_flushLock.EnterWriteLock();
diff --git a/src/Ryujinx.Graphics.Vulkan/BufferManager.cs b/src/Ryujinx.Graphics.Vulkan/BufferManager.cs
index 380967022..e9ac98847 100644
--- a/src/Ryujinx.Graphics.Vulkan/BufferManager.cs
+++ b/src/Ryujinx.Graphics.Vulkan/BufferManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
@@ -96,25 +96,131 @@ namespace Ryujinx.Graphics.Vulkan
return Unsafe.As(ref handle64);
}
+ public unsafe BufferHandle CreateSparse(VulkanRenderer gd, ReadOnlySpan storageBuffers)
+ {
+ var usage = DefaultBufferUsageFlags;
+
+ if (gd.Capabilities.SupportsIndirectParameters)
+ {
+ usage |= BufferUsageFlags.IndirectBufferBit;
+ }
+
+ ulong size = 0;
+
+ foreach (BufferRange range in storageBuffers)
+ {
+ size += (ulong)range.Size;
+ }
+
+ var bufferCreateInfo = new BufferCreateInfo()
+ {
+ SType = StructureType.BufferCreateInfo,
+ Size = size,
+ Usage = usage,
+ SharingMode = SharingMode.Exclusive,
+ Flags = BufferCreateFlags.SparseBindingBit | BufferCreateFlags.SparseAliasedBit
+ };
+
+ gd.Api.CreateBuffer(_device, in bufferCreateInfo, null, out var buffer).ThrowOnError();
+
+ var memoryBinds = new SparseMemoryBind[storageBuffers.Length];
+ var storageAllocations = new Auto[storageBuffers.Length];
+ int storageAllocationsCount = 0;
+
+ ulong dstOffset = 0;
+
+ for (int index = 0; index < storageBuffers.Length; index++)
+ {
+ BufferRange range = storageBuffers[index];
+
+ if (TryGetBuffer(range.Handle, out var existingHolder))
+ {
+ // Since this buffer now also owns the memory from the referenced buffer,
+ // we pin it to ensure the memory location will not change.
+ existingHolder.Pin();
+
+ (var memory, var offset) = existingHolder.GetDeviceMemoryAndOffset();
+
+ memoryBinds[index] = new SparseMemoryBind()
+ {
+ ResourceOffset = dstOffset,
+ Size = (ulong)range.Size,
+ Memory = memory,
+ MemoryOffset = offset + (ulong)range.Offset,
+ Flags = SparseMemoryBindFlags.None
+ };
+
+ storageAllocations[storageAllocationsCount++] = existingHolder.GetAllocation();
+ }
+ else
+ {
+ memoryBinds[index] = new SparseMemoryBind()
+ {
+ ResourceOffset = dstOffset,
+ Size = (ulong)range.Size,
+ Memory = default,
+ MemoryOffset = 0UL,
+ Flags = SparseMemoryBindFlags.None
+ };
+ }
+
+ dstOffset += (ulong)range.Size;
+ }
+
+ if (storageAllocations.Length != storageAllocationsCount)
+ {
+ Array.Resize(ref storageAllocations, storageAllocationsCount);
+ }
+
+ fixed (SparseMemoryBind* pMemoryBinds = memoryBinds)
+ {
+ SparseBufferMemoryBindInfo bufferBind = new SparseBufferMemoryBindInfo()
+ {
+ Buffer = buffer,
+ BindCount = (uint)memoryBinds.Length,
+ PBinds = pMemoryBinds
+ };
+
+ BindSparseInfo bindSparseInfo = new BindSparseInfo()
+ {
+ SType = StructureType.BindSparseInfo,
+ BufferBindCount = 1,
+ PBufferBinds = &bufferBind
+ };
+
+ gd.Api.QueueBindSparse(gd.Queue, 1, bindSparseInfo, default).ThrowOnError();
+ }
+
+ var holder = new BufferHolder(gd, _device, buffer, (int)size, storageAllocations);
+
+ BufferCount++;
+
+ ulong handle64 = (uint)_buffers.Add(holder);
+
+ return Unsafe.As(ref handle64);
+ }
+
public BufferHandle CreateWithHandle(
VulkanRenderer gd,
int size,
+ bool sparseCompatible = false,
BufferAllocationType baseType = BufferAllocationType.HostMapped,
BufferHandle storageHint = default,
bool forceMirrors = false)
{
- return CreateWithHandle(gd, size, out _, baseType, storageHint, forceMirrors);
+ return CreateWithHandle(gd, size, out _, sparseCompatible, baseType, storageHint, forceMirrors);
}
public BufferHandle CreateWithHandle(
VulkanRenderer gd,
int size,
out BufferHolder holder,
+ bool sparseCompatible = false,
BufferAllocationType baseType = BufferAllocationType.HostMapped,
BufferHandle storageHint = default,
bool forceMirrors = false)
{
- holder = Create(gd, size, baseType: baseType, storageHint: storageHint);
+ holder = Create(gd, size, forConditionalRendering: false, sparseCompatible, baseType, storageHint);
if (holder == null)
{
return BufferHandle.Null;
@@ -163,6 +269,7 @@ namespace Ryujinx.Graphics.Vulkan
int size,
BufferAllocationType type,
bool forConditionalRendering = false,
+ bool sparseCompatible = false,
BufferAllocationType fallbackType = BufferAllocationType.Auto)
{
var usage = DefaultBufferUsageFlags;
@@ -187,6 +294,11 @@ namespace Ryujinx.Graphics.Vulkan
gd.Api.CreateBuffer(_device, in bufferCreateInfo, null, out var buffer).ThrowOnError();
gd.Api.GetBufferMemoryRequirements(_device, buffer, out var requirements);
+ if (sparseCompatible)
+ {
+ requirements.Alignment = Math.Max(requirements.Alignment, Constants.SparseBufferAlignment);
+ }
+
MemoryAllocation allocation;
do
@@ -227,6 +339,7 @@ namespace Ryujinx.Graphics.Vulkan
VulkanRenderer gd,
int size,
bool forConditionalRendering = false,
+ bool sparseCompatible = false,
BufferAllocationType baseType = BufferAllocationType.HostMapped,
BufferHandle storageHint = default)
{
@@ -255,7 +368,7 @@ namespace Ryujinx.Graphics.Vulkan
}
(VkBuffer buffer, MemoryAllocation allocation, BufferAllocationType resultType) =
- CreateBacking(gd, size, type, forConditionalRendering);
+ CreateBacking(gd, size, type, forConditionalRendering, sparseCompatible);
if (buffer.Handle != 0)
{
diff --git a/src/Ryujinx.Graphics.Vulkan/BufferMirrorRangeList.cs b/src/Ryujinx.Graphics.Vulkan/BufferMirrorRangeList.cs
index 9e0b7244a..5722ca1ac 100644
--- a/src/Ryujinx.Graphics.Vulkan/BufferMirrorRangeList.cs
+++ b/src/Ryujinx.Graphics.Vulkan/BufferMirrorRangeList.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/BufferState.cs b/src/Ryujinx.Graphics.Vulkan/BufferState.cs
index 198ee54d4..d585dd53c 100644
--- a/src/Ryujinx.Graphics.Vulkan/BufferState.cs
+++ b/src/Ryujinx.Graphics.Vulkan/BufferState.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Graphics.Vulkan
{
diff --git a/src/Ryujinx.Graphics.Vulkan/BufferUsageBitmap.cs b/src/Ryujinx.Graphics.Vulkan/BufferUsageBitmap.cs
index 19dcaccd9..8cf6a7eaa 100644
--- a/src/Ryujinx.Graphics.Vulkan/BufferUsageBitmap.cs
+++ b/src/Ryujinx.Graphics.Vulkan/BufferUsageBitmap.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Vulkan
+namespace Ryujinx.Graphics.Vulkan
{
internal class BufferUsageBitmap
{
diff --git a/src/Ryujinx.Graphics.Vulkan/CommandBufferPool.cs b/src/Ryujinx.Graphics.Vulkan/CommandBufferPool.cs
index 4d3b8640f..61cfbb6ec 100644
--- a/src/Ryujinx.Graphics.Vulkan/CommandBufferPool.cs
+++ b/src/Ryujinx.Graphics.Vulkan/CommandBufferPool.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
using System.Collections.Generic;
using System.Diagnostics;
diff --git a/src/Ryujinx.Graphics.Vulkan/CommandBufferScoped.cs b/src/Ryujinx.Graphics.Vulkan/CommandBufferScoped.cs
index 1d9e14bb2..270cdc6e6 100644
--- a/src/Ryujinx.Graphics.Vulkan/CommandBufferScoped.cs
+++ b/src/Ryujinx.Graphics.Vulkan/CommandBufferScoped.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/Constants.cs b/src/Ryujinx.Graphics.Vulkan/Constants.cs
index f43d815ab..cd6122112 100644
--- a/src/Ryujinx.Graphics.Vulkan/Constants.cs
+++ b/src/Ryujinx.Graphics.Vulkan/Constants.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Vulkan
+namespace Ryujinx.Graphics.Vulkan
{
static class Constants
{
@@ -16,5 +16,7 @@
public const int MaxStorageBufferBindings = MaxStorageBuffersPerStage * MaxShaderStages;
public const int MaxTextureBindings = MaxTexturesPerStage * MaxShaderStages;
public const int MaxImageBindings = MaxImagesPerStage * MaxShaderStages;
+
+ public const ulong SparseBufferAlignment = 0x10000;
}
}
diff --git a/src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs b/src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs
index a9a92df1d..e0fe5d89a 100644
--- a/src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Shader;
using Silk.NET.Vulkan;
diff --git a/src/Ryujinx.Graphics.Vulkan/DisposableBuffer.cs b/src/Ryujinx.Graphics.Vulkan/DisposableBuffer.cs
index ba52c2575..98e0e9dd2 100644
--- a/src/Ryujinx.Graphics.Vulkan/DisposableBuffer.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DisposableBuffer.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
using Buffer = Silk.NET.Vulkan.Buffer;
diff --git a/src/Ryujinx.Graphics.Vulkan/DisposableBufferView.cs b/src/Ryujinx.Graphics.Vulkan/DisposableBufferView.cs
index e81ca412e..dc9efc8ae 100644
--- a/src/Ryujinx.Graphics.Vulkan/DisposableBufferView.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DisposableBufferView.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/DisposableFramebuffer.cs b/src/Ryujinx.Graphics.Vulkan/DisposableFramebuffer.cs
index 5b1953547..e0e536470 100644
--- a/src/Ryujinx.Graphics.Vulkan/DisposableFramebuffer.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DisposableFramebuffer.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/DisposableImage.cs b/src/Ryujinx.Graphics.Vulkan/DisposableImage.cs
index c76091b73..98860cc0a 100644
--- a/src/Ryujinx.Graphics.Vulkan/DisposableImage.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DisposableImage.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/DisposableImageView.cs b/src/Ryujinx.Graphics.Vulkan/DisposableImageView.cs
index 3b3bf6adf..d3b6224c1 100644
--- a/src/Ryujinx.Graphics.Vulkan/DisposableImageView.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DisposableImageView.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/DisposableMemory.cs b/src/Ryujinx.Graphics.Vulkan/DisposableMemory.cs
index 638989acd..c8d135b27 100644
--- a/src/Ryujinx.Graphics.Vulkan/DisposableMemory.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DisposableMemory.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/DisposablePipeline.cs b/src/Ryujinx.Graphics.Vulkan/DisposablePipeline.cs
index 6e5cf4dbc..10e88a041 100644
--- a/src/Ryujinx.Graphics.Vulkan/DisposablePipeline.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DisposablePipeline.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/DisposableRenderPass.cs b/src/Ryujinx.Graphics.Vulkan/DisposableRenderPass.cs
index 65652f413..f42dbeff5 100644
--- a/src/Ryujinx.Graphics.Vulkan/DisposableRenderPass.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DisposableRenderPass.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/DisposableSampler.cs b/src/Ryujinx.Graphics.Vulkan/DisposableSampler.cs
index 4788b192a..7e04c47aa 100644
--- a/src/Ryujinx.Graphics.Vulkan/DisposableSampler.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DisposableSampler.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs b/src/Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs
index 7729934f2..67e461e51 100644
--- a/src/Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs
+++ b/src/Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Shader;
using Ryujinx.Graphics.Shader.Translation;
diff --git a/src/Ryujinx.Graphics.Vulkan/EnumConversion.cs b/src/Ryujinx.Graphics.Vulkan/EnumConversion.cs
index f478c58e2..e10027057 100644
--- a/src/Ryujinx.Graphics.Vulkan/EnumConversion.cs
+++ b/src/Ryujinx.Graphics.Vulkan/EnumConversion.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Shader;
using Silk.NET.Vulkan;
@@ -424,12 +424,12 @@ namespace Ryujinx.Graphics.Vulkan
public static BufferAllocationType Convert(this BufferAccess access)
{
- return access switch
+ if (access.HasFlag(BufferAccess.FlushPersistent) || access.HasFlag(BufferAccess.Stream))
{
- BufferAccess.FlushPersistent => BufferAllocationType.HostMapped,
- BufferAccess.Stream => BufferAllocationType.HostMapped,
- _ => BufferAllocationType.Auto,
- };
+ return BufferAllocationType.HostMapped;
+ }
+
+ return BufferAllocationType.Auto;
}
private static T2 LogInvalidAndReturn(T1 value, string name, T2 defaultValue = default)
diff --git a/src/Ryujinx.Graphics.Vulkan/FenceHelper.cs b/src/Ryujinx.Graphics.Vulkan/FenceHelper.cs
index d6731c0eb..6649af7f5 100644
--- a/src/Ryujinx.Graphics.Vulkan/FenceHelper.cs
+++ b/src/Ryujinx.Graphics.Vulkan/FenceHelper.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/FenceHolder.cs b/src/Ryujinx.Graphics.Vulkan/FenceHolder.cs
index d57d95ec1..4f0a87160 100644
--- a/src/Ryujinx.Graphics.Vulkan/FenceHolder.cs
+++ b/src/Ryujinx.Graphics.Vulkan/FenceHolder.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.Vulkan/FormatTable.cs b/src/Ryujinx.Graphics.Vulkan/FormatTable.cs
index eacfa0dbf..5f767df16 100644
--- a/src/Ryujinx.Graphics.Vulkan/FormatTable.cs
+++ b/src/Ryujinx.Graphics.Vulkan/FormatTable.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using System;
using VkFormat = Silk.NET.Vulkan.Format;
diff --git a/src/Ryujinx.Graphics.Vulkan/FramebufferParams.cs b/src/Ryujinx.Graphics.Vulkan/FramebufferParams.cs
index 662bb80f8..458a16464 100644
--- a/src/Ryujinx.Graphics.Vulkan/FramebufferParams.cs
+++ b/src/Ryujinx.Graphics.Vulkan/FramebufferParams.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
using System.Linq;
diff --git a/src/Ryujinx.Graphics.Vulkan/HardwareCapabilities.cs b/src/Ryujinx.Graphics.Vulkan/HardwareCapabilities.cs
index 32e941dba..98c777eed 100644
--- a/src/Ryujinx.Graphics.Vulkan/HardwareCapabilities.cs
+++ b/src/Ryujinx.Graphics.Vulkan/HardwareCapabilities.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/HashTableSlim.cs b/src/Ryujinx.Graphics.Vulkan/HashTableSlim.cs
index 2efe81a60..ff4eb7890 100644
--- a/src/Ryujinx.Graphics.Vulkan/HashTableSlim.cs
+++ b/src/Ryujinx.Graphics.Vulkan/HashTableSlim.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/HelperShader.cs b/src/Ryujinx.Graphics.Vulkan/HelperShader.cs
index 5be4a9329..deaf81625 100644
--- a/src/Ryujinx.Graphics.Vulkan/HelperShader.cs
+++ b/src/Ryujinx.Graphics.Vulkan/HelperShader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Shader;
using Ryujinx.Graphics.Shader.Translation;
diff --git a/src/Ryujinx.Graphics.Vulkan/HostMemoryAllocator.cs b/src/Ryujinx.Graphics.Vulkan/HostMemoryAllocator.cs
index 726cafc51..baccc698f 100644
--- a/src/Ryujinx.Graphics.Vulkan/HostMemoryAllocator.cs
+++ b/src/Ryujinx.Graphics.Vulkan/HostMemoryAllocator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Collections;
using Ryujinx.Common.Logging;
using Silk.NET.Vulkan;
diff --git a/src/Ryujinx.Graphics.Vulkan/IndexBufferPattern.cs b/src/Ryujinx.Graphics.Vulkan/IndexBufferPattern.cs
index 9d34c8116..7b01dd4ca 100644
--- a/src/Ryujinx.Graphics.Vulkan/IndexBufferPattern.cs
+++ b/src/Ryujinx.Graphics.Vulkan/IndexBufferPattern.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Vulkan/IndexBufferState.cs b/src/Ryujinx.Graphics.Vulkan/IndexBufferState.cs
index b85f0c7f0..d26fea307 100644
--- a/src/Ryujinx.Graphics.Vulkan/IndexBufferState.cs
+++ b/src/Ryujinx.Graphics.Vulkan/IndexBufferState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using IndexType = Silk.NET.Vulkan.IndexType;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/MemoryAllocation.cs b/src/Ryujinx.Graphics.Vulkan/MemoryAllocation.cs
index e2b6028ab..3f134e289 100644
--- a/src/Ryujinx.Graphics.Vulkan/MemoryAllocation.cs
+++ b/src/Ryujinx.Graphics.Vulkan/MemoryAllocation.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/MemoryAllocator.cs b/src/Ryujinx.Graphics.Vulkan/MemoryAllocator.cs
index aa0b410c4..339754db1 100644
--- a/src/Ryujinx.Graphics.Vulkan/MemoryAllocator.cs
+++ b/src/Ryujinx.Graphics.Vulkan/MemoryAllocator.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
using System.Collections.Generic;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.Vulkan/MemoryAllocatorBlockList.cs b/src/Ryujinx.Graphics.Vulkan/MemoryAllocatorBlockList.cs
index 6a40b16e3..a1acc90f9 100644
--- a/src/Ryujinx.Graphics.Vulkan/MemoryAllocatorBlockList.cs
+++ b/src/Ryujinx.Graphics.Vulkan/MemoryAllocatorBlockList.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Silk.NET.Vulkan;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.Vulkan/MultiFenceHolder.cs b/src/Ryujinx.Graphics.Vulkan/MultiFenceHolder.cs
index 4d2d312fe..0bce3b72d 100644
--- a/src/Ryujinx.Graphics.Vulkan/MultiFenceHolder.cs
+++ b/src/Ryujinx.Graphics.Vulkan/MultiFenceHolder.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/NativeArray.cs b/src/Ryujinx.Graphics.Vulkan/NativeArray.cs
index 3a8512874..7678b63c8 100644
--- a/src/Ryujinx.Graphics.Vulkan/NativeArray.cs
+++ b/src/Ryujinx.Graphics.Vulkan/NativeArray.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Graphics.Vulkan/PersistentFlushBuffer.cs b/src/Ryujinx.Graphics.Vulkan/PersistentFlushBuffer.cs
index 80a24682b..5e0ed077b 100644
--- a/src/Ryujinx.Graphics.Vulkan/PersistentFlushBuffer.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PersistentFlushBuffer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs b/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs
index 7346d7891..b05dd1a69 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Shader;
using Silk.NET.Vulkan;
using System;
@@ -30,6 +30,7 @@ namespace Ryujinx.Graphics.Vulkan
public readonly PipelineCache PipelineCache;
public readonly AutoFlushCounter AutoFlush;
+ public readonly Action EndRenderPassDelegate;
protected PipelineDynamicState DynamicState;
private PipelineState _newState;
@@ -92,6 +93,7 @@ namespace Ryujinx.Graphics.Vulkan
Device = device;
AutoFlush = new AutoFlushCounter(gd);
+ EndRenderPassDelegate = EndRenderPass;
var pipelineCacheCreateInfo = new PipelineCacheCreateInfo
{
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs b/src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs
index b2da61031..95b480a5e 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineDynamicState.cs b/src/Ryujinx.Graphics.Vulkan/PipelineDynamicState.cs
index a5c218ac2..1cc33f728 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineDynamicState.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineDynamicState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Silk.NET.Vulkan;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineFull.cs b/src/Ryujinx.Graphics.Vulkan/PipelineFull.cs
index c3e6f37c3..24ca715fe 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineFull.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineFull.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Vulkan.Queries;
using Silk.NET.Vulkan;
using System;
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineHelperShader.cs b/src/Ryujinx.Graphics.Vulkan/PipelineHelperShader.cs
index b31b72a1a..0a871a5c8 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineHelperShader.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineHelperShader.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using VkFormat = Silk.NET.Vulkan.Format;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineLayoutFactory.cs b/src/Ryujinx.Graphics.Vulkan/PipelineLayoutFactory.cs
index ba93dfadb..8bf286c65 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineLayoutFactory.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineLayoutFactory.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System.Collections.ObjectModel;
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineState.cs b/src/Ryujinx.Graphics.Vulkan/PipelineState.cs
index 5a30cff8e..11f532510 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineState.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Silk.NET.Vulkan;
using System;
using System.Numerics;
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineUid.cs b/src/Ryujinx.Graphics.Vulkan/PipelineUid.cs
index 460c27d8b..3448d9743 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineUid.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineUid.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Silk.NET.Vulkan;
using System;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Graphics.Vulkan/Queries/BufferedQuery.cs b/src/Ryujinx.Graphics.Vulkan/Queries/BufferedQuery.cs
index 2a85429fb..3fdc5afa5 100644
--- a/src/Ryujinx.Graphics.Vulkan/Queries/BufferedQuery.cs
+++ b/src/Ryujinx.Graphics.Vulkan/Queries/BufferedQuery.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
diff --git a/src/Ryujinx.Graphics.Vulkan/Queries/CounterQueue.cs b/src/Ryujinx.Graphics.Vulkan/Queries/CounterQueue.cs
index 9c450cb78..3984e2826 100644
--- a/src/Ryujinx.Graphics.Vulkan/Queries/CounterQueue.cs
+++ b/src/Ryujinx.Graphics.Vulkan/Queries/CounterQueue.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Graphics.Vulkan/Queries/CounterQueueEvent.cs b/src/Ryujinx.Graphics.Vulkan/Queries/CounterQueueEvent.cs
index 77d9a3557..14d3050bf 100644
--- a/src/Ryujinx.Graphics.Vulkan/Queries/CounterQueueEvent.cs
+++ b/src/Ryujinx.Graphics.Vulkan/Queries/CounterQueueEvent.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using System;
using System.Threading;
diff --git a/src/Ryujinx.Graphics.Vulkan/SamplerHolder.cs b/src/Ryujinx.Graphics.Vulkan/SamplerHolder.cs
index 6e9f408f3..f67daeecc 100644
--- a/src/Ryujinx.Graphics.Vulkan/SamplerHolder.cs
+++ b/src/Ryujinx.Graphics.Vulkan/SamplerHolder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using SamplerCreateInfo = Ryujinx.Graphics.GAL.SamplerCreateInfo;
diff --git a/src/Ryujinx.Graphics.Vulkan/SemaphoreHolder.cs b/src/Ryujinx.Graphics.Vulkan/SemaphoreHolder.cs
index 2dd17c51c..618a7d488 100644
--- a/src/Ryujinx.Graphics.Vulkan/SemaphoreHolder.cs
+++ b/src/Ryujinx.Graphics.Vulkan/SemaphoreHolder.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
using System.Threading;
using VkSemaphore = Silk.NET.Vulkan.Semaphore;
diff --git a/src/Ryujinx.Graphics.Vulkan/Shader.cs b/src/Ryujinx.Graphics.Vulkan/Shader.cs
index 2229785d8..06f3499db 100644
--- a/src/Ryujinx.Graphics.Vulkan/Shader.cs
+++ b/src/Ryujinx.Graphics.Vulkan/Shader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Shader;
using shaderc;
diff --git a/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs b/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs
index 0cb80ac71..d01eebf3a 100644
--- a/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs
+++ b/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
diff --git a/src/Ryujinx.Graphics.Vulkan/TextureBuffer.cs b/src/Ryujinx.Graphics.Vulkan/TextureBuffer.cs
index 285a56498..81e478814 100644
--- a/src/Ryujinx.Graphics.Vulkan/TextureBuffer.cs
+++ b/src/Ryujinx.Graphics.Vulkan/TextureBuffer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
diff --git a/src/Ryujinx.Graphics.Vulkan/TextureCopy.cs b/src/Ryujinx.Graphics.Vulkan/TextureCopy.cs
index 717935fb4..7c06a5df6 100644
--- a/src/Ryujinx.Graphics.Vulkan/TextureCopy.cs
+++ b/src/Ryujinx.Graphics.Vulkan/TextureCopy.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
diff --git a/src/Ryujinx.Graphics.Vulkan/TextureStorage.cs b/src/Ryujinx.Graphics.Vulkan/TextureStorage.cs
index 5a6216c22..b763fa987 100644
--- a/src/Ryujinx.Graphics.Vulkan/TextureStorage.cs
+++ b/src/Ryujinx.Graphics.Vulkan/TextureStorage.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
diff --git a/src/Ryujinx.Graphics.Vulkan/TextureView.cs b/src/Ryujinx.Graphics.Vulkan/TextureView.cs
index 05dbd15ce..f5b80f948 100644
--- a/src/Ryujinx.Graphics.Vulkan/TextureView.cs
+++ b/src/Ryujinx.Graphics.Vulkan/TextureView.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System;
diff --git a/src/Ryujinx.Graphics.Vulkan/VertexBufferState.cs b/src/Ryujinx.Graphics.Vulkan/VertexBufferState.cs
index 9a943bf98..6f27bb68b 100644
--- a/src/Ryujinx.Graphics.Vulkan/VertexBufferState.cs
+++ b/src/Ryujinx.Graphics.Vulkan/VertexBufferState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
namespace Ryujinx.Graphics.Vulkan
{
diff --git a/src/Ryujinx.Graphics.Vulkan/VertexBufferUpdater.cs b/src/Ryujinx.Graphics.Vulkan/VertexBufferUpdater.cs
index 8d6b0a055..94269dd76 100644
--- a/src/Ryujinx.Graphics.Vulkan/VertexBufferUpdater.cs
+++ b/src/Ryujinx.Graphics.Vulkan/VertexBufferUpdater.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using VkBuffer = Silk.NET.Vulkan.Buffer;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanConfiguration.cs b/src/Ryujinx.Graphics.Vulkan/VulkanConfiguration.cs
index 5080ebf68..a1fdc4aed 100644
--- a/src/Ryujinx.Graphics.Vulkan/VulkanConfiguration.cs
+++ b/src/Ryujinx.Graphics.Vulkan/VulkanConfiguration.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Graphics.Vulkan
+namespace Ryujinx.Graphics.Vulkan
{
static class VulkanConfiguration
{
diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanException.cs b/src/Ryujinx.Graphics.Vulkan/VulkanException.cs
index 2d9dbc348..0d4036802 100644
--- a/src/Ryujinx.Graphics.Vulkan/VulkanException.cs
+++ b/src/Ryujinx.Graphics.Vulkan/VulkanException.cs
@@ -1,4 +1,4 @@
-using Silk.NET.Vulkan;
+using Silk.NET.Vulkan;
using System;
using System.Runtime.Serialization;
diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs b/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs
index 973c6d396..dd7bcf10f 100644
--- a/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs
+++ b/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration;
+using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs
index ab8e61371..641ac844f 100644
--- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs
+++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration;
+using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Shader;
@@ -392,6 +392,8 @@ namespace Ryujinx.Graphics.Vulkan
LoadFeatures(maxQueueCount, queueFamilyIndex);
+ QueueFamilyIndex = queueFamilyIndex;
+
_window = new Window(this, _surface, _physicalDevice.PhysicalDevice, _device);
_initialized = true;
@@ -399,12 +401,12 @@ namespace Ryujinx.Graphics.Vulkan
public BufferHandle CreateBuffer(int size, BufferAccess access)
{
- return BufferManager.CreateWithHandle(this, size, access.Convert(), default, access == BufferAccess.Stream);
+ return BufferManager.CreateWithHandle(this, size, access.HasFlag(BufferAccess.SparseCompatible), access.Convert(), default, access == BufferAccess.Stream);
}
- public BufferHandle CreateBuffer(int size, BufferHandle storageHint)
+ public BufferHandle CreateBuffer(int size, BufferAccess access, BufferHandle storageHint)
{
- return BufferManager.CreateWithHandle(this, size, BufferAllocationType.Auto, storageHint);
+ return BufferManager.CreateWithHandle(this, size, access.HasFlag(BufferAccess.SparseCompatible), access.Convert(), storageHint);
}
public BufferHandle CreateBuffer(nint pointer, int size)
@@ -412,6 +414,11 @@ namespace Ryujinx.Graphics.Vulkan
return BufferManager.CreateHostImported(this, pointer, size);
}
+ public BufferHandle CreateBufferSparse(ReadOnlySpan storageBuffers)
+ {
+ return BufferManager.CreateSparse(this, storageBuffers);
+ }
+
public IProgram CreateProgram(ShaderSource[] sources, ShaderInfo info)
{
bool isCompute = sources.Length == 1 && sources[0].Stage == ShaderStage.Compute;
@@ -571,6 +578,7 @@ namespace Ryujinx.Graphics.Vulkan
Api.GetPhysicalDeviceFeatures2(_physicalDevice.PhysicalDevice, &features2);
var limits = _physicalDevice.PhysicalDeviceProperties.Limits;
+ var mainQueueProperties = _physicalDevice.QueueFamilyProperties[QueueFamilyIndex];
return new Capabilities(
api: TargetApi.Vulkan,
@@ -590,6 +598,7 @@ namespace Ryujinx.Graphics.Vulkan
supportsR4G4B4A4Format: supportsR4G4B4A4Format,
supportsSnormBufferTextureFormat: true,
supports5BitComponentFormat: supports5BitComponentFormat,
+ supportsSparseBuffer: features2.Features.SparseBinding && mainQueueProperties.QueueFlags.HasFlag(QueueFlags.SparseBindingBit),
supportsBlendEquationAdvanced: Capabilities.SupportsBlendEquationAdvanced,
supportsFragmentShaderInterlock: Capabilities.SupportsFragmentShaderInterlock,
supportsFragmentShaderOrderingIntel: false,
@@ -775,7 +784,7 @@ namespace Ryujinx.Graphics.Vulkan
public void SetBufferData(BufferHandle buffer, int offset, ReadOnlySpan data)
{
- BufferManager.SetData(buffer, offset, data, _pipeline.CurrentCommandBuffer, _pipeline.EndRenderPass);
+ BufferManager.SetData(buffer, offset, data, _pipeline.CurrentCommandBuffer, _pipeline.EndRenderPassDelegate);
}
public void UpdateCounters()
diff --git a/src/Ryujinx.Graphics.Vulkan/Window.cs b/src/Ryujinx.Graphics.Vulkan/Window.cs
index afaa7defe..2c5764a99 100644
--- a/src/Ryujinx.Graphics.Vulkan/Window.cs
+++ b/src/Ryujinx.Graphics.Vulkan/Window.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Vulkan.Effects;
using Silk.NET.Vulkan;
using Silk.NET.Vulkan.Extensions.KHR;
diff --git a/src/Ryujinx.Graphics.Vulkan/WindowBase.cs b/src/Ryujinx.Graphics.Vulkan/WindowBase.cs
index da1613f41..edb9c688c 100644
--- a/src/Ryujinx.Graphics.Vulkan/WindowBase.cs
+++ b/src/Ryujinx.Graphics.Vulkan/WindowBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.GAL;
using System;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.HLE/AssemblyInfo.cs b/src/Ryujinx.HLE/AssemblyInfo.cs
index 82519d542..a3b3e594b 100644
--- a/src/Ryujinx.HLE/AssemblyInfo.cs
+++ b/src/Ryujinx.HLE/AssemblyInfo.cs
@@ -1,3 +1,3 @@
-using System.Runtime.CompilerServices;
+using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Ryujinx.Tests")]
diff --git a/src/Ryujinx.HLE/Exceptions/InternalServiceException.cs b/src/Ryujinx.HLE/Exceptions/InternalServiceException.cs
index e0ee5eb91..ad764889e 100644
--- a/src/Ryujinx.HLE/Exceptions/InternalServiceException.cs
+++ b/src/Ryujinx.HLE/Exceptions/InternalServiceException.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.Exceptions
{
diff --git a/src/Ryujinx.HLE/Exceptions/InvalidFirmwarePackageException.cs b/src/Ryujinx.HLE/Exceptions/InvalidFirmwarePackageException.cs
index bddd827a0..fd9110327 100644
--- a/src/Ryujinx.HLE/Exceptions/InvalidFirmwarePackageException.cs
+++ b/src/Ryujinx.HLE/Exceptions/InvalidFirmwarePackageException.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.Exceptions
{
diff --git a/src/Ryujinx.HLE/Exceptions/InvalidNpdmException.cs b/src/Ryujinx.HLE/Exceptions/InvalidNpdmException.cs
index c4036ea0d..78d75680a 100644
--- a/src/Ryujinx.HLE/Exceptions/InvalidNpdmException.cs
+++ b/src/Ryujinx.HLE/Exceptions/InvalidNpdmException.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.Exceptions
{
diff --git a/src/Ryujinx.HLE/Exceptions/InvalidSystemResourceException.cs b/src/Ryujinx.HLE/Exceptions/InvalidSystemResourceException.cs
index d9afff111..9e95c0cf0 100644
--- a/src/Ryujinx.HLE/Exceptions/InvalidSystemResourceException.cs
+++ b/src/Ryujinx.HLE/Exceptions/InvalidSystemResourceException.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.Exceptions
{
diff --git a/src/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs b/src/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs
index 9cb1cf2c7..408b5baa4 100644
--- a/src/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs
+++ b/src/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.HLE.HOS;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Services;
diff --git a/src/Ryujinx.HLE/FileSystem/ContentPath.cs b/src/Ryujinx.HLE/FileSystem/ContentPath.cs
index 6d2f3f6ab..02539c5c6 100644
--- a/src/Ryujinx.HLE/FileSystem/ContentPath.cs
+++ b/src/Ryujinx.HLE/FileSystem/ContentPath.cs
@@ -1,4 +1,4 @@
-using LibHac.Fs;
+using LibHac.Fs;
using LibHac.Ncm;
using Ryujinx.Common.Configuration;
using System;
diff --git a/src/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs b/src/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs
index d50b80ffb..64b02a282 100644
--- a/src/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs
+++ b/src/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
diff --git a/src/Ryujinx.HLE/FileSystem/LocationEntry.cs b/src/Ryujinx.HLE/FileSystem/LocationEntry.cs
index dd4068aab..fb717665a 100644
--- a/src/Ryujinx.HLE/FileSystem/LocationEntry.cs
+++ b/src/Ryujinx.HLE/FileSystem/LocationEntry.cs
@@ -1,4 +1,4 @@
-using LibHac.Tools.FsSystem.NcaUtils;
+using LibHac.Tools.FsSystem.NcaUtils;
namespace Ryujinx.HLE.FileSystem
{
diff --git a/src/Ryujinx.HLE/HLEConfiguration.cs b/src/Ryujinx.HLE/HLEConfiguration.cs
index d52f1815a..f589bfdda 100644
--- a/src/Ryujinx.HLE/HLEConfiguration.cs
+++ b/src/Ryujinx.HLE/HLEConfiguration.cs
@@ -1,4 +1,4 @@
-using LibHac.Tools.FsSystem;
+using LibHac.Tools.FsSystem;
using Ryujinx.Audio.Integration;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Multiplayer;
diff --git a/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs b/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs
index 93d49cd24..30300f1b6 100644
--- a/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Applets.Browser;
+using Ryujinx.HLE.HOS.Applets.Browser;
using Ryujinx.HLE.HOS.Applets.Error;
using Ryujinx.HLE.HOS.Services.Am.AppletAE;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/BootDisplayKind.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/BootDisplayKind.cs
index 11c1cb912..3c5b1f1c4 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/BootDisplayKind.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/BootDisplayKind.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.Browser
+namespace Ryujinx.HLE.HOS.Applets.Browser
{
enum BootDisplayKind
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserApplet.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserApplet.cs
index f50e6448f..6afbe4a72 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserApplet.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserApplet.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Services.Am.AppletAE;
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserArgument.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserArgument.cs
index 708781bf3..d2e1d55ca 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserArgument.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserArgument.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Account.Acc;
+using Ryujinx.HLE.HOS.Services.Account.Acc;
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserOutput.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserOutput.cs
index 443886fde..b0e2d0e1c 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserOutput.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserOutput.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using System;
using System.IO;
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserOutputType.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserOutputType.cs
index 7f85bc81c..b6908c474 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserOutputType.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/BrowserOutputType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.Browser
+namespace Ryujinx.HLE.HOS.Applets.Browser
{
enum BrowserOutputType : ushort
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/DocumentKind.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/DocumentKind.cs
index 9d355cd75..9e089a205 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/DocumentKind.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/DocumentKind.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.Browser
+namespace Ryujinx.HLE.HOS.Applets.Browser
{
enum DocumentKind
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/LeftStickMode.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/LeftStickMode.cs
index 50ad7b8bb..7c2f31a25 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/LeftStickMode.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/LeftStickMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.Browser
+namespace Ryujinx.HLE.HOS.Applets.Browser
{
enum LeftStickMode
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/ShimKind.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/ShimKind.cs
index f097d1f4a..60de546d3 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/ShimKind.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/ShimKind.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.Browser
+namespace Ryujinx.HLE.HOS.Applets.Browser
{
public enum ShimKind : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgHeader.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgHeader.cs
index c3cc711e4..e67d70917 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgHeader.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgHeader.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.Browser
+namespace Ryujinx.HLE.HOS.Applets.Browser
{
public struct WebArgHeader
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgTLV.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgTLV.cs
index 1b5510a5d..a331e82fe 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgTLV.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgTLV.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.Browser
+namespace Ryujinx.HLE.HOS.Applets.Browser
{
public struct WebArgTLV
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgTLVType.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgTLVType.cs
index 575138330..2f2450dcb 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgTLVType.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/WebArgTLVType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.Browser
+namespace Ryujinx.HLE.HOS.Applets.Browser
{
enum WebArgTLVType : ushort
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/WebCommonReturnValue.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/WebCommonReturnValue.cs
index a1bdf0c76..cc1f3706c 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/WebCommonReturnValue.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/WebCommonReturnValue.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.HLE.HOS.Applets.Browser
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Browser/WebExitReason.cs b/src/Ryujinx.HLE/HOS/Applets/Browser/WebExitReason.cs
index 1959fc0b4..ebb705acb 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Browser/WebExitReason.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Browser/WebExitReason.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.Browser
+namespace Ryujinx.HLE.HOS.Applets.Browser
{
public enum WebExitReason : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/CommonArguments.cs b/src/Ryujinx.HLE/HOS/Applets/CommonArguments.cs
index 857798987..0360aff80 100644
--- a/src/Ryujinx.HLE/HOS/Applets/CommonArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/CommonArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Error/ApplicationErrorArg.cs b/src/Ryujinx.HLE/HOS/Applets/Error/ApplicationErrorArg.cs
index 4263c84b8..0a20bee46 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Error/ApplicationErrorArg.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Error/ApplicationErrorArg.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.Error
diff --git a/src/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs b/src/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs
index fa415b396..5c474f229 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
using LibHac.FsSystem;
diff --git a/src/Ryujinx.HLE/HOS/Applets/Error/ErrorCommonArg.cs b/src/Ryujinx.HLE/HOS/Applets/Error/ErrorCommonArg.cs
index a042739cb..73e03a1b2 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Error/ErrorCommonArg.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Error/ErrorCommonArg.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.Error
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Error/ErrorCommonHeader.cs b/src/Ryujinx.HLE/HOS/Applets/Error/ErrorCommonHeader.cs
index ca8e9220f..d4f77d6ef 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Error/ErrorCommonHeader.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Error/ErrorCommonHeader.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.Error
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/Error/ErrorType.cs b/src/Ryujinx.HLE/HOS/Applets/Error/ErrorType.cs
index c5f7e4eb0..548176980 100644
--- a/src/Ryujinx.HLE/HOS/Applets/Error/ErrorType.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/Error/ErrorType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.Error
+namespace Ryujinx.HLE.HOS.Applets.Error
{
enum ErrorType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/IApplet.cs b/src/Ryujinx.HLE/HOS/Applets/IApplet.cs
index 224d67874..5ccf3994f 100644
--- a/src/Ryujinx.HLE/HOS/Applets/IApplet.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/IApplet.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Am.AppletAE;
+using Ryujinx.HLE.HOS.Services.Am.AppletAE;
using Ryujinx.HLE.Ui;
using Ryujinx.Memory;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Applets/PlayerSelect/PlayerSelectApplet.cs b/src/Ryujinx.HLE/HOS/Applets/PlayerSelect/PlayerSelectApplet.cs
index 8db23d30b..ccc761ba1 100644
--- a/src/Ryujinx.HLE/HOS/Applets/PlayerSelect/PlayerSelectApplet.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/PlayerSelect/PlayerSelectApplet.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Services.Account.Acc;
using Ryujinx.HLE.HOS.Services.Am.AppletAE;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Applets/PlayerSelect/PlayerSelectResult.cs b/src/Ryujinx.HLE/HOS/Applets/PlayerSelect/PlayerSelectResult.cs
index d07aadf4b..c0475b75a 100644
--- a/src/Ryujinx.HLE/HOS/Applets/PlayerSelect/PlayerSelectResult.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/PlayerSelect/PlayerSelectResult.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets
+namespace Ryujinx.HLE.HOS.Applets
{
enum PlayerSelectResult : ulong
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/CJKCharacterValidation.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/CJKCharacterValidation.cs
index 722fe60af..6134a3cdd 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/CJKCharacterValidation.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/CJKCharacterValidation.cs
@@ -1,4 +1,4 @@
-using System.Text.RegularExpressions;
+using System.Text.RegularExpressions;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InitialCursorPosition.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InitialCursorPosition.cs
index be94ee482..a95af67a8 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InitialCursorPosition.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InitialCursorPosition.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// Identifies the initial position of the cursor displayed in the area.
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardRequest.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardRequest.cs
index cc2938e04..f95a3627d 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardRequest.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardRequest.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// Possible requests to the software keyboard when running in inline mode.
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardResponse.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardResponse.cs
index 2179752e1..ed4b78c8e 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardResponse.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardResponse.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// Possible responses from the software keyboard when running in inline mode.
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardState.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardState.cs
index da802fbc1..91d0164e3 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardState.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineKeyboardState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// Possible states for the software keyboard when running in inline mode.
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineResponses.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineResponses.cs
index e8e57a48d..46e541a9e 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineResponses.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InlineResponses.cs
@@ -1,4 +1,4 @@
-using System.IO;
+using System.IO;
using System.Text;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InputFormMode.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InputFormMode.cs
index 9b7ef9c61..780c82b53 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InputFormMode.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InputFormMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// Identifies the text entry mode.
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InvalidButtonFlags.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InvalidButtonFlags.cs
index 4928c1943..8d81d4a11 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InvalidButtonFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InvalidButtonFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InvalidCharFlags.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InvalidCharFlags.cs
index f2dcc5823..aa703f5d6 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InvalidCharFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/InvalidCharFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardCalcFlags.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardCalcFlags.cs
index e1402b1b2..6f7f6d2a9 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardCalcFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardCalcFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardInputMode.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardInputMode.cs
index 925d52f6f..a75ef8cc6 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardInputMode.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardInputMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// Active input options set by the keyboard applet. These options allow keyboard
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardMiniaturizationMode.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardMiniaturizationMode.cs
index b5ebabebb..3c96a61ab 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardMiniaturizationMode.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardMiniaturizationMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// The miniaturization mode used by the keyboard in inline mode.
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardMode.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardMode.cs
index c2dfc31a3..aa79dd426 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardMode.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// Identifies the variant of keyboard displayed on screen.
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardResult.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardResult.cs
index dc39feb87..7c6d5c70b 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardResult.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/KeyboardResult.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// The intention of the user when they finish the interaction with the keyboard.
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/PasswordMode.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/PasswordMode.cs
index b5ea7faa2..040eee3e4 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/PasswordMode.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/PasswordMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// Identifies the display mode of text in a password field.
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardAppear.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardAppear.cs
index fb6aad649..49c8160d1 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardAppear.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardAppear.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardAppearEx.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardAppearEx.cs
index 29cd0a73c..31cb27e22 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardAppearEx.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardAppearEx.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardApplet.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardApplet.cs
index e0f6e3f0c..432bf6a8a 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardApplet.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardApplet.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Applets.SoftwareKeyboard;
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs
index 2941e15d1..cb02f8b46 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalcEx.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalcEx.cs
index 2d3d5dbe9..abc3950cc 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalcEx.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalcEx.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs
index 58c389e1a..5261bc8f4 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCustomizeDic.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCustomizeDic.cs
index 53c8c8950..4d08dda17 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCustomizeDic.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCustomizeDic.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardDictSet.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardDictSet.cs
index 385548816..0d757c442 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardDictSet.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardDictSet.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardInitialize.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardInitialize.cs
index 764d0e38f..743d40a2e 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardInitialize.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardInitialize.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRenderer.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRenderer.cs
index 2331e36ab..f76cce295 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRenderer.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRenderer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Ui;
+using Ryujinx.HLE.Ui;
using Ryujinx.Memory;
using System;
using System.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRendererBase.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRendererBase.cs
index 2f4fd2a89..3971a33be 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRendererBase.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRendererBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Ui;
+using Ryujinx.HLE.Ui;
using Ryujinx.Memory;
using SixLabors.Fonts;
using SixLabors.ImageSharp;
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardState.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardState.cs
index 92a943f27..86302e492 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardState.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// Identifies the software keyboard state.
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUiState.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUiState.cs
index aed53d40d..608d51f32 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUiState.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUiState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Ui;
+using Ryujinx.HLE.Ui;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUserWord.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUserWord.cs
index f1bfec2b3..84836884d 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUserWord.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUserWord.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/TRef.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/TRef.cs
index 53746e745..32d9e68da 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/TRef.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/TRef.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
+namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
///
/// Wraps a type in a class so it gets stored in the GC managed heap. This is used as communication mechanism
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/TimedAction.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/TimedAction.cs
index f44dc5da0..3eaf64596 100644
--- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/TimedAction.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/TimedAction.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading;
namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
diff --git a/src/Ryujinx.HLE/HOS/ArmProcessContext.cs b/src/Ryujinx.HLE/HOS/ArmProcessContext.cs
index 99b355286..4de00978c 100644
--- a/src/Ryujinx.HLE/HOS/ArmProcessContext.cs
+++ b/src/Ryujinx.HLE/HOS/ArmProcessContext.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Memory;
+using ARMeilleure.Memory;
using Ryujinx.Cpu;
using Ryujinx.Graphics.Gpu;
using Ryujinx.HLE.HOS.Kernel.Process;
@@ -57,6 +57,8 @@ namespace Ryujinx.HLE.HOS
public void Execute(IExecutionContext context, ulong codeAddress)
{
+ // We must wait until shader cache is loaded, among other things, before executing CPU code.
+ _gpuContext.WaitUntilGpuReady();
_cpuContext.Execute(context, codeAddress);
}
diff --git a/src/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs b/src/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs
index 7ff055a69..bec2722ef 100644
--- a/src/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs
+++ b/src/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration;
+using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
using Ryujinx.Cpu.AppleHv;
diff --git a/src/Ryujinx.HLE/HOS/Diagnostics/Demangler/Demangler.cs b/src/Ryujinx.HLE/HOS/Diagnostics/Demangler/Demangler.cs
index 311488bcb..171a083f3 100644
--- a/src/Ryujinx.HLE/HOS/Diagnostics/Demangler/Demangler.cs
+++ b/src/Ryujinx.HLE/HOS/Diagnostics/Demangler/Demangler.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Diagnostics.Demangler.Ast;
+using Ryujinx.HLE.HOS.Diagnostics.Demangler.Ast;
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Ryujinx.HLE/HOS/HomebrewRomFsStream.cs b/src/Ryujinx.HLE/HOS/HomebrewRomFsStream.cs
index 2cba640b8..02b39da37 100644
--- a/src/Ryujinx.HLE/HOS/HomebrewRomFsStream.cs
+++ b/src/Ryujinx.HLE/HOS/HomebrewRomFsStream.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
namespace Ryujinx.HLE.HOS
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Common/KTimeManager.cs b/src/Ryujinx.HLE/HOS/Kernel/Common/KTimeManager.cs
index 499bc2c61..3c5fa067f 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Common/KTimeManager.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Common/KTimeManager.cs
@@ -1,4 +1,5 @@
using Ryujinx.Common;
+using Ryujinx.Common.PreciseSleep;
using System;
using System.Collections.Generic;
using System.Threading;
@@ -23,7 +24,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
private readonly KernelContext _context;
private readonly List _waitingObjects;
- private AutoResetEvent _waitEvent;
+ private IPreciseSleepEvent _waitEvent;
private bool _keepRunning;
private long _enforceWakeupFromSpinWait;
@@ -54,6 +55,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
timePoint = long.MaxValue;
}
+ timePoint = _waitEvent.AdjustTimePoint(timePoint, timeout);
+
lock (_context.CriticalSection.Lock)
{
_waitingObjects.Add(new WaitingObject(schedulerObj, timePoint));
@@ -64,7 +67,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
}
}
- _waitEvent.Set();
+ _waitEvent.Signal();
}
public void UnscheduleFutureInvocation(IKFutureSchedulerObject schedulerObj)
@@ -83,10 +86,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
private void WaitAndCheckScheduledObjects()
{
- SpinWait spinWait = new();
WaitingObject next;
- using (_waitEvent = new AutoResetEvent(false))
+ using (_waitEvent = PreciseSleepHelper.CreateEvent())
{
while (_keepRunning)
{
@@ -103,30 +105,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
if (next.TimePoint > timePoint)
{
- long ms = Math.Min((next.TimePoint - timePoint) / PerformanceCounter.TicksPerMillisecond, int.MaxValue);
-
- if (ms > 0)
+ if (!_waitEvent.SleepUntil(next.TimePoint))
{
- _waitEvent.WaitOne((int)ms);
- }
- else
- {
- while (Interlocked.Read(ref _enforceWakeupFromSpinWait) != 1 && PerformanceCounter.ElapsedTicks < next.TimePoint)
- {
- // Our time is close - don't let SpinWait go off and potentially Thread.Sleep().
- if (spinWait.NextSpinWillYield)
- {
- Thread.Yield();
-
- spinWait.Reset();
- }
- else
- {
- spinWait.SpinOnce();
- }
- }
-
- spinWait.Reset();
+ PreciseSleepHelper.SpinWaitUntilTimePoint(next.TimePoint, ref _enforceWakeupFromSpinWait);
}
}
@@ -145,7 +126,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
}
else
{
- _waitEvent.WaitOne();
+ _waitEvent.Sleep();
}
}
}
@@ -212,7 +193,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
public void Dispose()
{
_keepRunning = false;
- _waitEvent?.Set();
+ _waitEvent?.Signal();
}
}
}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/KernelConstants.cs b/src/Ryujinx.HLE/HOS/Kernel/KernelConstants.cs
index 3dbaec187..2c01efecc 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/KernelConstants.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/KernelConstants.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Memory;
+using Ryujinx.HLE.HOS.Kernel.Memory;
namespace Ryujinx.HLE.HOS.Kernel
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/KernelContext.cs b/src/Ryujinx.HLE/HOS/Kernel/KernelContext.cs
index ccc5c0f0b..89d788c54 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/KernelContext.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/KernelContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Kernel.Common;
using Ryujinx.HLE.HOS.Kernel.Memory;
using Ryujinx.HLE.HOS.Kernel.Process;
diff --git a/src/Ryujinx.HLE/HOS/Kernel/KernelStatic.cs b/src/Ryujinx.HLE/HOS/Kernel/KernelStatic.cs
index 2234a8c42..f5ecba752 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/KernelStatic.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/KernelStatic.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Memory;
+using Ryujinx.HLE.HOS.Kernel.Memory;
using Ryujinx.HLE.HOS.Kernel.Process;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.Horizon.Common;
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlockManager.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlockManager.cs
index e9146aeb8..f13a3554a 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlockManager.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlockManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Collections;
+using Ryujinx.Common.Collections;
using Ryujinx.Horizon.Common;
using System.Diagnostics;
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryManager.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryManager.cs
index 6d0a16581..e56304d9d 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryManager.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Common;
+using Ryujinx.HLE.HOS.Kernel.Common;
using System;
namespace Ryujinx.HLE.HOS.Kernel.Memory
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageBitmap.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageBitmap.cs
index e0f9df484..947983d61 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageBitmap.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageBitmap.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using System;
using System.Numerics;
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageHeap.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageHeap.cs
index 635dcced8..ee5d6e2b6 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageHeap.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageHeap.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using System;
namespace Ryujinx.HLE.HOS.Kernel.Memory
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTable.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTable.cs
index 4cd3e6fdd..543acb7a0 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTable.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTable.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Memory;
using Ryujinx.Memory.Range;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
index 2b6d4e4e9..b065e9c58 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
@@ -675,7 +675,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
KMemoryPermission.None,
MemoryAttribute.Mask,
MemoryAttribute.None,
- MemoryAttribute.IpcAndDeviceMapped,
+ MemoryAttribute.IpcAndDeviceMapped | MemoryAttribute.PermissionLocked,
out MemoryState state,
out _,
out _);
@@ -687,7 +687,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
state,
KMemoryPermission.None,
KMemoryPermission.None,
- MemoryAttribute.Mask,
+ MemoryAttribute.Mask & ~MemoryAttribute.PermissionLocked,
MemoryAttribute.None);
if (success)
@@ -913,19 +913,27 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return Result.Success;
}
- public Result SetMemoryAttribute(
- ulong address,
- ulong size,
- MemoryAttribute attributeMask,
- MemoryAttribute attributeValue)
+ public Result SetMemoryAttribute(ulong address, ulong size, MemoryAttribute attributeMask, MemoryAttribute attributeValue)
{
lock (_blockManager)
{
+ MemoryState stateCheckMask = 0;
+
+ if (attributeMask.HasFlag(MemoryAttribute.Uncached))
+ {
+ stateCheckMask = MemoryState.AttributeChangeAllowed;
+ }
+
+ if (attributeMask.HasFlag(MemoryAttribute.PermissionLocked))
+ {
+ stateCheckMask |= MemoryState.PermissionLockAllowed;
+ }
+
if (CheckRange(
address,
size,
- MemoryState.AttributeChangeAllowed,
- MemoryState.AttributeChangeAllowed,
+ stateCheckMask,
+ stateCheckMask,
KMemoryPermission.None,
KMemoryPermission.None,
MemoryAttribute.BorrowedAndIpcMapped,
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/KScopedPageList.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/KScopedPageList.cs
index 498e6f8c8..d9370165b 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/KScopedPageList.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/KScopedPageList.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Kernel.Memory
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryAttribute.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryAttribute.cs
index 36b1ec8c3..e0fa60fab 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryAttribute.cs
@@ -12,11 +12,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
IpcMapped = 1 << 1,
DeviceMapped = 1 << 2,
Uncached = 1 << 3,
+ PermissionLocked = 1 << 4,
IpcAndDeviceMapped = IpcMapped | DeviceMapped,
-
BorrowedAndIpcMapped = Borrowed | IpcMapped,
-
DeviceMappedAndUncached = DeviceMapped | Uncached,
}
}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryFillValue.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryFillValue.cs
index cdc892fc5..74a88b48f 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryFillValue.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryFillValue.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Kernel.Memory
+namespace Ryujinx.HLE.HOS.Kernel.Memory
{
enum MemoryFillValue : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs
index 273b58e5e..da6fac639 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs
@@ -5,35 +5,155 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
[Flags]
enum MemoryState : uint
{
- Unmapped = 0x00000000,
- Io = 0x00002001,
- Normal = 0x00042002,
- CodeStatic = 0x00DC7E03,
- CodeMutable = 0x03FEBD04,
- Heap = 0x037EBD05,
- SharedMemory = 0x00402006,
- ModCodeStatic = 0x00DD7E08,
- ModCodeMutable = 0x03FFBD09,
- IpcBuffer0 = 0x005C3C0A,
- Stack = 0x005C3C0B,
- ThreadLocal = 0x0040200C,
- TransferMemoryIsolated = 0x015C3C0D,
- TransferMemory = 0x005C380E,
- ProcessMemory = 0x0040380F,
- Reserved = 0x00000010,
- IpcBuffer1 = 0x005C3811,
- IpcBuffer3 = 0x004C2812,
- KernelStack = 0x00002013,
- CodeReadOnly = 0x00402214,
- CodeWritable = 0x00402015,
- UserMask = 0xff,
- Mask = 0xffffffff,
+ Unmapped = 0x0,
+ Io = Mapped | 0x1,
+ Normal = Mapped | QueryPhysicalAddressAllowed | 0x2,
+ CodeStatic = ForceReadWritableByDebugSyscalls |
+ IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ ProcessPermissionChangeAllowed |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ MapProcessAllowed |
+ LinearMapped |
+ 0x3,
+ CodeMutable = PermissionChangeAllowed |
+ IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ MapAllowed |
+ TransferMemoryAllowed |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IpcBufferAllowed |
+ IsPoolAllocated |
+ MapProcessAllowed |
+ AttributeChangeAllowed |
+ CodeMemoryAllowed |
+ LinearMapped |
+ PermissionLockAllowed |
+ 0x4,
+ Heap = PermissionChangeAllowed |
+ IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ MapAllowed |
+ TransferMemoryAllowed |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IpcBufferAllowed |
+ IsPoolAllocated |
+ AttributeChangeAllowed |
+ CodeMemoryAllowed |
+ LinearMapped |
+ 0x5,
+ SharedMemory = Mapped | IsPoolAllocated | LinearMapped | 0x6,
+ ModCodeStatic = ForceReadWritableByDebugSyscalls |
+ IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ ProcessPermissionChangeAllowed |
+ UnmapProcessCodeMemoryAllowed |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ MapProcessAllowed |
+ LinearMapped |
+ 0x8,
+ ModCodeMutable = PermissionChangeAllowed |
+ IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ MapAllowed |
+ UnmapProcessCodeMemoryAllowed |
+ TransferMemoryAllowed |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IpcBufferAllowed |
+ IsPoolAllocated |
+ MapProcessAllowed |
+ AttributeChangeAllowed |
+ CodeMemoryAllowed |
+ LinearMapped |
+ PermissionLockAllowed |
+ 0x9,
+ IpcBuffer0 = IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ LinearMapped |
+ 0xA,
+ Stack = IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ LinearMapped |
+ 0xB,
+ ThreadLocal = Mapped | IsPoolAllocated | LinearMapped | 0xC,
+ TransferMemoryIsolated = IpcSendAllowedType0 |
+ IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ AttributeChangeAllowed |
+ LinearMapped |
+ 0xD,
+ TransferMemory = IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ LinearMapped |
+ 0xE,
+ ProcessMemory = IpcSendAllowedType3 | IpcSendAllowedType1 | Mapped | IsPoolAllocated | LinearMapped | 0xF,
+ Reserved = 0x10,
+ IpcBuffer1 = IpcSendAllowedType3 |
+ IpcSendAllowedType1 |
+ Mapped |
+ QueryPhysicalAddressAllowed |
+ MapDeviceAllowed |
+ MapDeviceAlignedAllowed |
+ IsPoolAllocated |
+ LinearMapped |
+ 0x11,
+ IpcBuffer3 = IpcSendAllowedType3 | Mapped | QueryPhysicalAddressAllowed | MapDeviceAllowed | IsPoolAllocated | LinearMapped | 0x12,
+ KernelStack = Mapped | 0x13,
+ CodeReadOnly = ForceReadWritableByDebugSyscalls | Mapped | IsPoolAllocated | LinearMapped | 0x14,
+ CodeWritable = Mapped | IsPoolAllocated | LinearMapped | 0x15,
+ UserMask = 0xFF,
+ Mask = 0xFFFFFFFF,
PermissionChangeAllowed = 1 << 8,
ForceReadWritableByDebugSyscalls = 1 << 9,
IpcSendAllowedType0 = 1 << 10,
IpcSendAllowedType3 = 1 << 11,
IpcSendAllowedType1 = 1 << 12,
+ Mapped = 1 << 13,
ProcessPermissionChangeAllowed = 1 << 14,
MapAllowed = 1 << 15,
UnmapProcessCodeMemoryAllowed = 1 << 16,
@@ -46,5 +166,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
MapProcessAllowed = 1 << 23,
AttributeChangeAllowed = 1 << 24,
CodeMemoryAllowed = 1 << 25,
+ LinearMapped = 1 << 26,
+ PermissionLockAllowed = 1 << 27,
}
}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/SharedMemoryStorage.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/SharedMemoryStorage.cs
index c68b73695..54ccad0ab 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/SharedMemoryStorage.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/SharedMemoryStorage.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Kernel.Memory
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Process/IProcessContext.cs b/src/Ryujinx.HLE/HOS/Kernel/Process/IProcessContext.cs
index bdfef9d7a..ac36b781b 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Process/IProcessContext.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Process/IProcessContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
using Ryujinx.Memory;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Process/IProcessContextFactory.cs b/src/Ryujinx.HLE/HOS/Kernel/Process/IProcessContextFactory.cs
index 0a24a5240..93af78c1a 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Process/IProcessContextFactory.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Process/IProcessContextFactory.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory;
+using Ryujinx.Memory;
namespace Ryujinx.HLE.HOS.Kernel.Process
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessContext.cs b/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessContext.cs
index cab5c6082..b4ae6ec4e 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessContext.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
using Ryujinx.Memory;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessContextFactory.cs b/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessContextFactory.cs
index 60dd5abf1..d2722b730 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessContextFactory.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessContextFactory.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory;
+using Ryujinx.Memory;
namespace Ryujinx.HLE.HOS.Kernel.Process
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessCreationFlags.cs b/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessCreationFlags.cs
index c68190d69..f0e43e023 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessCreationFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Process/ProcessCreationFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.HLE.HOS.Kernel.Process
diff --git a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/InfoType.cs b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/InfoType.cs
index 2ca0d03a4..c0db82105 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/InfoType.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/InfoType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
+namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
{
enum InfoType : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/MemoryInfo.cs b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/MemoryInfo.cs
index c900781e9..beec621bf 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/MemoryInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/MemoryInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Memory;
+using Ryujinx.HLE.HOS.Kernel.Memory;
namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/PointerSizedAttribute.cs b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/PointerSizedAttribute.cs
index 154164fb5..3d50e8962 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/PointerSizedAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/PointerSizedAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcAttribute.cs b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcAttribute.cs
index b8839d1d3..24b51fb79 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcImplAttribute.cs b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcImplAttribute.cs
index a32d851f6..8fe74e6b3 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcImplAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcImplAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
{
diff --git a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs
index 82632f44c..b07f5194e 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
using Ryujinx.HLE.Exceptions;
@@ -949,8 +949,16 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
MemoryAttribute attributes = attributeMask | attributeValue;
+ const MemoryAttribute SupportedAttributes = MemoryAttribute.Uncached | MemoryAttribute.PermissionLocked;
+
if (attributes != attributeMask ||
- (attributes | MemoryAttribute.Uncached) != MemoryAttribute.Uncached)
+ (attributes | SupportedAttributes) != SupportedAttributes)
+ {
+ return KernelResult.InvalidCombination;
+ }
+
+ // The permission locked attribute can't be unset.
+ if ((attributeMask & MemoryAttribute.PermissionLocked) != (attributeValue & MemoryAttribute.PermissionLocked))
{
return KernelResult.InvalidCombination;
}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/ThreadContext.cs b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/ThreadContext.cs
index fd1b41e32..cca6dda0f 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/ThreadContext.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/SupervisorCall/ThreadContext.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.State;
+using ARMeilleure.State;
using Ryujinx.Common.Memory;
namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Threading/KThreadContext.cs b/src/Ryujinx.HLE/HOS/Kernel/Threading/KThreadContext.cs
index e8ad53c28..9a616a135 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Threading/KThreadContext.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Threading/KThreadContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
using Ryujinx.Horizon.Common;
using System.Threading;
diff --git a/src/Ryujinx.HLE/HOS/LibHacHorizonManager.cs b/src/Ryujinx.HLE/HOS/LibHacHorizonManager.cs
index 01d4b2450..e8ef15dce 100644
--- a/src/Ryujinx.HLE/HOS/LibHacHorizonManager.cs
+++ b/src/Ryujinx.HLE/HOS/LibHacHorizonManager.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Bcat;
using LibHac.Common;
using LibHac.FsSrv.Impl;
diff --git a/src/Ryujinx.HLE/HOS/ResultCode.cs b/src/Ryujinx.HLE/HOS/ResultCode.cs
index 3fec365cd..f13094600 100644
--- a/src/Ryujinx.HLE/HOS/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS
+namespace Ryujinx.HLE.HOS
{
public enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs
index a6dde3c53..924ac3fb9 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Shim;
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountSaveDataManager.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountSaveDataManager.cs
index c2ae0119c..b1ef0761c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountSaveDataManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountSaveDataManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration;
+using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
using Ryujinx.HLE.HOS.Services.Account.Acc.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountService/ManagerServer.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountService/ManagerServer.cs
index c43186de1..ec7fa5c4f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountService/ManagerServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountService/ManagerServer.cs
@@ -1,10 +1,12 @@
-using Microsoft.IdentityModel.Tokens;
+using Microsoft.IdentityModel.JsonWebTokens;
+using Microsoft.IdentityModel.Tokens;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.HLE.HOS.Services.Account.Acc.AsyncContext;
using System;
-using System.IdentityModel.Tokens.Jwt;
+using System.Collections.Generic;
using System.Security.Cryptography;
+using System.Security.Principal;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -37,11 +39,6 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc.AccountService
credentials.Key.KeyId = parameters.ToString();
- var header = new JwtHeader(credentials)
- {
- { "jku", "https://e0d67c509fb203858ebcb2fe3f88c2aa.baas.nintendo.com/1.0.0/certificates" },
- };
-
byte[] rawUserId = new byte[0x10];
RandomNumberGenerator.Fill(rawUserId);
@@ -51,23 +48,25 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc.AccountService
byte[] deviceAccountId = new byte[0x10];
RandomNumberGenerator.Fill(deviceId);
- var payload = new JwtPayload
+ var descriptor = new SecurityTokenDescriptor
{
- { "sub", Convert.ToHexString(rawUserId).ToLower() },
- { "aud", "ed9e2f05d286f7b8" },
- { "di", Convert.ToHexString(deviceId).ToLower() },
- { "sn", "XAW10000000000" },
- { "bs:did", Convert.ToHexString(deviceAccountId).ToLower() },
- { "iss", "https://e0d67c509fb203858ebcb2fe3f88c2aa.baas.nintendo.com" },
- { "typ", "id_token" },
- { "iat", DateTimeOffset.UtcNow.ToUnixTimeSeconds() },
- { "jti", Guid.NewGuid().ToString() },
- { "exp", (DateTimeOffset.UtcNow + TimeSpan.FromHours(3)).ToUnixTimeSeconds() },
+ Subject = new GenericIdentity(Convert.ToHexString(rawUserId).ToLower()),
+ SigningCredentials = credentials,
+ Audience = "ed9e2f05d286f7b8",
+ Issuer = "https://e0d67c509fb203858ebcb2fe3f88c2aa.baas.nintendo.com",
+ TokenType = "id_token",
+ IssuedAt = DateTime.UtcNow,
+ Expires = DateTime.UtcNow + TimeSpan.FromHours(3),
+ Claims = new Dictionary
+ {
+ { "jku", "https://e0d67c509fb203858ebcb2fe3f88c2aa.baas.nintendo.com/1.0.0/certificates" },
+ { "di", Convert.ToHexString(deviceId).ToLower() },
+ { "sn", "XAW10000000000" },
+ { "bs:did", Convert.ToHexString(deviceAccountId).ToLower() }
+ }
};
- JwtSecurityToken securityToken = new(header, payload);
-
- return new JwtSecurityTokenHandler().WriteToken(securityToken);
+ return new JsonWebTokenHandler().CreateToken(descriptor);
}
public ResultCode CheckAvailability(ServiceCtx context)
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountService/ProfileServer.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountService/ProfileServer.cs
index 08400baf2..72560618c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountService/ProfileServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountService/ProfileServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
using Ryujinx.HLE.Utilities;
using System.Text;
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/ApplicationServiceServer.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/ApplicationServiceServer.cs
index b30a81e94..da3555c83 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/ApplicationServiceServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/ApplicationServiceServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Kernel.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AsyncContext/AsyncExecution.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AsyncContext/AsyncExecution.cs
index c5f3d91ec..9e329b8db 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AsyncContext/AsyncExecution.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AsyncContext/AsyncExecution.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
using System.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAccountServiceForAdministrator.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAccountServiceForAdministrator.cs
index 121b79373..74c135aed 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAccountServiceForAdministrator.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAccountServiceForAdministrator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Account.Acc.AccountService;
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAccountServiceForSystemService.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAccountServiceForSystemService.cs
index a586d21cc..682b5327f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAccountServiceForSystemService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAccountServiceForSystemService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.HLE.HOS.Services.Account.Acc.AccountService;
namespace Ryujinx.HLE.HOS.Services.Account.Acc
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAsyncContext.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAsyncContext.cs
index 2fa354b19..91daba5f0 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAsyncContext.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAsyncContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Ipc;
+using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Services.Account.Acc.AsyncContext;
using Ryujinx.Horizon.Common;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAsyncNetworkServiceLicenseKindContext.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAsyncNetworkServiceLicenseKindContext.cs
index a7b0c0638..175838506 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAsyncNetworkServiceLicenseKindContext.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/IAsyncNetworkServiceLicenseKindContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Account.Acc.AsyncContext;
+using Ryujinx.HLE.HOS.Services.Account.Acc.AsyncContext;
namespace Ryujinx.HLE.HOS.Services.Account.Acc
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/IBaasAccessTokenAccessor.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/IBaasAccessTokenAccessor.cs
index f86e30746..b88815778 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/IBaasAccessTokenAccessor.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/IBaasAccessTokenAccessor.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Account.Acc
+namespace Ryujinx.HLE.HOS.Services.Account.Acc
{
[Service("acc:aa", AccountServiceFlag.BaasAccessTokenAccessor)] // Max Sessions: 4
class IBaasAccessTokenAccessor : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/ProfilesJsonSerializerContext.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/ProfilesJsonSerializerContext.cs
index d6446e735..7b5be9534 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/ProfilesJsonSerializerContext.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/ProfilesJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Account.Acc.Types;
+using Ryujinx.HLE.HOS.Services.Account.Acc.Types;
using System.Text.Json.Serialization;
namespace Ryujinx.HLE.HOS.Services.Account.Acc
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountServiceFlag.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountServiceFlag.cs
index 5dbf9a673..44478e932 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountServiceFlag.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/AccountServiceFlag.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Account.Acc
+namespace Ryujinx.HLE.HOS.Services.Account.Acc
{
enum AccountServiceFlag
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/NetworkServiceLicenseKind.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/NetworkServiceLicenseKind.cs
index a766edeff..5fe0e8664 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/NetworkServiceLicenseKind.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/NetworkServiceLicenseKind.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Account.Acc
+namespace Ryujinx.HLE.HOS.Services.Account.Acc
{
enum NetworkServiceLicenseKind : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/ProfilesJson.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/ProfilesJson.cs
index 4e22f434e..01c1482c3 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/ProfilesJson.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/ProfilesJson.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Ryujinx.HLE.HOS.Services.Account.Acc.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserId.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserId.cs
index ed7bf4e56..c9c78af9a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserId.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserId.cs
@@ -1,4 +1,4 @@
-using LibHac.Account;
+using LibHac.Account;
using System;
using System.Globalization;
using System.IO;
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfile.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfile.cs
index 4482de2dd..e6484822e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfile.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Account.Acc
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfileJson.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfileJson.cs
index e51aa8d1b..2e0e88230 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfileJson.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/Types/UserProfileJson.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Account.Acc.Types
+namespace Ryujinx.HLE.HOS.Services.Account.Acc.Types
{
internal struct UserProfileJson
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Dauth/IService.cs b/src/Ryujinx.HLE/HOS/Services/Account/Dauth/IService.cs
index 698c01a4a..24fc7aad8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Account/Dauth/IService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Account/Dauth/IService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Account.Dauth
+namespace Ryujinx.HLE.HOS.Services.Account.Dauth
{
[Service("dauth:0")] // 5.0.0+
class IService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/ILibraryAppletProxy.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/ILibraryAppletProxy.cs
index 6821c7111..7700cac09 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/ILibraryAppletProxy.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/ILibraryAppletProxy.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.LibraryAppletProxy;
+using Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.LibraryAppletProxy;
using Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.SystemAppletProxy;
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletCreator/ILibraryAppletAccessor.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletCreator/ILibraryAppletAccessor.cs
index d35cfdbe2..148628136 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletCreator/ILibraryAppletAccessor.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletCreator/ILibraryAppletAccessor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Applets;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel;
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/AppletStandalone.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/AppletStandalone.cs
index b523f02f1..c996ed3b7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/AppletStandalone.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/AppletStandalone.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.LibraryAppletProxy
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/ILibraryAppletSelfAccessor.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/ILibraryAppletSelfAccessor.cs
index 85bdd985c..fc02ea172 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/ILibraryAppletSelfAccessor.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/ILibraryAppletSelfAccessor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using System;
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.LibraryAppletProxy
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/IProcessWindingController.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/IProcessWindingController.cs
index e1857fb3e..d86a896d6 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/IProcessWindingController.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletProxy/IProcessWindingController.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.LibraryAppletProxy
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/IAppletCommonFunctions.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/IAppletCommonFunctions.cs
index fbcc33204..13cdd8f11 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/IAppletCommonFunctions.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/IAppletCommonFunctions.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.SystemAppletProxy
+namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.SystemAppletProxy
{
class IAppletCommonFunctions : IpcService
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/Types/AlbumReportOption.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/Types/AlbumReportOption.cs
index e4b434956..b0b582324 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/Types/AlbumReportOption.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/Types/AlbumReportOption.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.SystemAppletProxy.Types
+namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.SystemAppletProxy.Types
{
enum AlbumReportOption
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/Types/WirelessPriorityMode.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/Types/WirelessPriorityMode.cs
index 3ea923f55..b06057b5f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/Types/WirelessPriorityMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/Types/WirelessPriorityMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.SystemAppletProxy.Types
+namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.SystemAppletProxy.Types
{
enum WirelessPriorityMode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AppletFifo.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AppletFifo.cs
index e7482b789..926632531 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AppletFifo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AppletFifo.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AppletSession.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AppletSession.cs
index 63eb2ca54..a3f44a45d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AppletSession.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AppletSession.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/IAppletFifo.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/IAppletFifo.cs
index ca79bac7a..24f183d23 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/IAppletFifo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/IAppletFifo.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Concurrent;
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Storage/StorageHelper.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Storage/StorageHelper.cs
index ef5951d70..6c23720ee 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Storage/StorageHelper.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Storage/StorageHelper.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Services.Account.Acc;
using System.IO;
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletId.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletId.cs
index 503de4d2e..d9970341f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletId.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletId.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.AppletAE
+namespace Ryujinx.HLE.HOS.Services.Am.AppletAE
{
enum AppletId
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletIdentityInfo.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletIdentityInfo.cs
index 84fd1b4ca..1f04c7ebb 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletIdentityInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletIdentityInfo.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletProcessLaunchReason.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletProcessLaunchReason.cs
index b6c32da5d..461c84eaa 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletProcessLaunchReason.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/AppletProcessLaunchReason.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/LibraryAppletInfo.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/LibraryAppletInfo.cs
index 1205a7dcf..f8a911d42 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/LibraryAppletInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/LibraryAppletInfo.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/LibraryAppletMode.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/LibraryAppletMode.cs
index 044a3168c..629aee07d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/LibraryAppletMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/Types/LibraryAppletMode.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Am.AppletAE
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/Types/LaunchParameterKind.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/Types/LaunchParameterKind.cs
index 7d82dcf5f..e3c90dc58 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/Types/LaunchParameterKind.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/Types/LaunchParameterKind.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy.Types
+namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy.Types
{
public enum LaunchParameterKind : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/Types/ProgramSpecifyKind.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/Types/ProgramSpecifyKind.cs
index 29ecf4217..47a755f93 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/Types/ProgramSpecifyKind.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/Types/ProgramSpecifyKind.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy.Types
+namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy.Types
{
public enum ProgramSpecifyKind : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/Idle/IPolicyManagerSystem.cs b/src/Ryujinx.HLE/HOS/Services/Am/Idle/IPolicyManagerSystem.cs
index 824d4c22f..1ff0e6d21 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/Idle/IPolicyManagerSystem.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/Idle/IPolicyManagerSystem.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.Idle
+namespace Ryujinx.HLE.HOS.Services.Am.Idle
{
[Service("idle:sys")]
class IPolicyManagerSystem : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/Omm/IOperationModeManager.cs b/src/Ryujinx.HLE/HOS/Services/Am/Omm/IOperationModeManager.cs
index 44c4dafce..c9a402e70 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/Omm/IOperationModeManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/Omm/IOperationModeManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.Omm
+namespace Ryujinx.HLE.HOS.Services.Am.Omm
{
[Service("omm")]
class IOperationModeManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/Spsm/IPowerStateInterface.cs b/src/Ryujinx.HLE/HOS/Services/Am/Spsm/IPowerStateInterface.cs
index 40a1300c1..b24acb247 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/Spsm/IPowerStateInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/Spsm/IPowerStateInterface.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.Spsm
+namespace Ryujinx.HLE.HOS.Services.Am.Spsm
{
[Service("spsm")]
class IPowerStateInterface : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Am/Tcap/IManager.cs b/src/Ryujinx.HLE/HOS/Services/Am/Tcap/IManager.cs
index edb9618c6..6c6af3db0 100644
--- a/src/Ryujinx.HLE/HOS/Services/Am/Tcap/IManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Am/Tcap/IManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.Tcap
+namespace Ryujinx.HLE.HOS.Services.Am.Tcap
{
[Service("tcap")]
class IManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Apm/ManagerServer.cs b/src/Ryujinx.HLE/HOS/Services/Apm/ManagerServer.cs
index 9a3a0462f..16bc4407b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Apm/ManagerServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Apm/ManagerServer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Apm
+namespace Ryujinx.HLE.HOS.Services.Apm
{
[Service("apm")]
[Service("apm:am")] // 8.0.0+
diff --git a/src/Ryujinx.HLE/HOS/Services/Apm/PerformanceState.cs b/src/Ryujinx.HLE/HOS/Services/Apm/PerformanceState.cs
index 0fb6c28a6..86a1491de 100644
--- a/src/Ryujinx.HLE/HOS/Services/Apm/PerformanceState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Apm/PerformanceState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Apm
+namespace Ryujinx.HLE.HOS.Services.Apm
{
class PerformanceState
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Apm/SessionServer.cs b/src/Ryujinx.HLE/HOS/Services/Apm/SessionServer.cs
index 260992be7..d238e422a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Apm/SessionServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Apm/SessionServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
namespace Ryujinx.HLE.HOS.Services.Apm
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Apm/SystemManagerServer.cs b/src/Ryujinx.HLE/HOS/Services/Apm/SystemManagerServer.cs
index 3fe5b3834..e8b7d12aa 100644
--- a/src/Ryujinx.HLE/HOS/Services/Apm/SystemManagerServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Apm/SystemManagerServer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Apm
+namespace Ryujinx.HLE.HOS.Services.Apm
{
[Service("apm:sys")]
class SystemManagerServer : ISystemManager
diff --git a/src/Ryujinx.HLE/HOS/Services/Apm/Types/CpuBoostMode.cs b/src/Ryujinx.HLE/HOS/Services/Apm/Types/CpuBoostMode.cs
index c84d32baf..263501571 100644
--- a/src/Ryujinx.HLE/HOS/Services/Apm/Types/CpuBoostMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Apm/Types/CpuBoostMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Apm
+namespace Ryujinx.HLE.HOS.Services.Apm
{
enum CpuBoostMode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Apm/Types/PerformanceConfiguration.cs b/src/Ryujinx.HLE/HOS/Services/Apm/Types/PerformanceConfiguration.cs
index 6dd193f9b..650e4f4cb 100644
--- a/src/Ryujinx.HLE/HOS/Services/Apm/Types/PerformanceConfiguration.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Apm/Types/PerformanceConfiguration.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Apm
+namespace Ryujinx.HLE.HOS.Services.Apm
{
enum PerformanceConfiguration : uint // Clocks are all in MHz.
{ // CPU | GPU | RAM | NOTE
diff --git a/src/Ryujinx.HLE/HOS/Services/Apm/Types/PerformanceMode.cs b/src/Ryujinx.HLE/HOS/Services/Apm/Types/PerformanceMode.cs
index 0a7719657..74f54c445 100644
--- a/src/Ryujinx.HLE/HOS/Services/Apm/Types/PerformanceMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Apm/Types/PerformanceMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Apm
+namespace Ryujinx.HLE.HOS.Services.Apm
{
enum PerformanceMode : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Arp/ApplicationLaunchProperty.cs b/src/Ryujinx.HLE/HOS/Services/Arp/ApplicationLaunchProperty.cs
index 9c2b9d19a..26089bddb 100644
--- a/src/Ryujinx.HLE/HOS/Services/Arp/ApplicationLaunchProperty.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Arp/ApplicationLaunchProperty.cs
@@ -1,4 +1,4 @@
-using LibHac.Ncm;
+using LibHac.Ncm;
namespace Ryujinx.HLE.HOS.Services.Arp
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Arp/IReader.cs b/src/Ryujinx.HLE/HOS/Services/Arp/IReader.cs
index 90cba861a..611310421 100644
--- a/src/Ryujinx.HLE/HOS/Services/Arp/IReader.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Arp/IReader.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Arp
+namespace Ryujinx.HLE.HOS.Services.Arp
{
[Service("arp:r")]
class IReader : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Arp/IWriter.cs b/src/Ryujinx.HLE/HOS/Services/Arp/IWriter.cs
index 7c3992c73..22d081b9b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Arp/IWriter.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Arp/IWriter.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Arp
+namespace Ryujinx.HLE.HOS.Services.Arp
{
[Service("arp:w")]
class IWriter : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Arp/LibHacIReader.cs b/src/Ryujinx.HLE/HOS/Services/Arp/LibHacIReader.cs
index fdddb79e5..f69d85003 100644
--- a/src/Ryujinx.HLE/HOS/Services/Arp/LibHacIReader.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Arp/LibHacIReader.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using LibHac.Ncm;
using LibHac.Ns;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/AudioIn.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/AudioIn.cs
index ee8e46436..acf83f488 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/AudioIn.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/AudioIn.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.Audio.Input;
using Ryujinx.Audio.Integration;
using Ryujinx.HLE.HOS.Kernel;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/AudioInServer.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/AudioInServer.cs
index 81b76e7a8..3f138021c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/AudioInServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/AudioInServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/IAudioIn.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/IAudioIn.cs
index b5073fcee..4e67303df 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/IAudioIn.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioIn/IAudioIn.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioInManager.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioInManager.cs
index ba7462d36..1e759e0ca 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioInManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioInManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.Audio.Input;
using Ryujinx.HLE.HOS.Services.Audio.AudioIn;
using AudioInManagerImpl = Ryujinx.Audio.Input.AudioInputManager;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioInManagerServer.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioInManagerServer.cs
index ac1863abe..1b35a62d8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioInManagerServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioInManagerServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/AudioOut.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/AudioOut.cs
index 8624ab9bc..2ccf0657f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/AudioOut.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/AudioOut.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.Audio.Integration;
using Ryujinx.Audio.Output;
using Ryujinx.HLE.HOS.Kernel;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/AudioOutServer.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/AudioOutServer.cs
index 3b6834f7c..e1b252631 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/AudioOutServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/AudioOutServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/IAudioOut.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/IAudioOut.cs
index 8533d3c51..8c8c68629 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/IAudioOut.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioOut/IAudioOut.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioOutManager.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioOutManager.cs
index fbbb3e1df..c45a485bc 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioOutManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioOutManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.Audio.Output;
using Ryujinx.HLE.HOS.Services.Audio.AudioOut;
using AudioOutManagerImpl = Ryujinx.Audio.Output.AudioOutputManager;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioOutManagerServer.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioOutManagerServer.cs
index ca4d61630..79ae6a141 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioOutManagerServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioOutManagerServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioDevice.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioDevice.cs
index 9a08f1ba9..6497a3b84 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioDevice.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioDevice.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Renderer.Device;
+using Ryujinx.Audio.Renderer.Device;
using Ryujinx.Audio.Renderer.Server;
using Ryujinx.HLE.HOS.Kernel;
using Ryujinx.HLE.HOS.Kernel.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioDeviceServer.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioDeviceServer.cs
index 9694406d6..6206215d5 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioDeviceServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioDeviceServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioKernelEvent.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioKernelEvent.cs
index 55bf29ae1..414c70a43 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioKernelEvent.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioKernelEvent.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Integration;
+using Ryujinx.Audio.Integration;
using Ryujinx.HLE.HOS.Kernel.Threading;
namespace Ryujinx.HLE.HOS.Services.Audio.AudioRenderer
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioRenderer.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioRenderer.cs
index 8b8e55fb2..88456be3e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioRenderer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioRenderer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Integration;
+using Ryujinx.Audio.Integration;
using Ryujinx.Audio.Renderer.Server;
using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioRendererServer.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioRendererServer.cs
index af8d20ba7..baea01072 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioRendererServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/AudioRendererServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/IAudioDevice.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/IAudioDevice.cs
index 4a1b5ffb1..0f181a477 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/IAudioDevice.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/IAudioDevice.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Threading;
+using Ryujinx.HLE.HOS.Kernel.Threading;
namespace Ryujinx.HLE.HOS.Services.Audio.AudioRenderer
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/IAudioRenderer.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/IAudioRenderer.cs
index 404bf4c10..6bb4a5dec 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/IAudioRenderer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRenderer/IAudioRenderer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Threading;
+using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
namespace Ryujinx.HLE.HOS.Services.Audio.AudioRenderer
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager.cs
index b40c32a12..87d0001e3 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Renderer.Device;
+using Ryujinx.Audio.Renderer.Device;
using Ryujinx.Audio.Renderer.Parameter;
using Ryujinx.Audio.Renderer.Server;
using Ryujinx.HLE.HOS.Kernel.Memory;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManagerServer.cs b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManagerServer.cs
index 58a1daf10..38a841d82 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManagerServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManagerServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Renderer.Parameter;
+using Ryujinx.Audio.Renderer.Parameter;
using Ryujinx.Audio.Renderer.Server;
using Ryujinx.Common;
using Ryujinx.Common.Logging;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioController.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioController.cs
index 223675808..a250ec799 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioController.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioController.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("audctl")]
class IAudioController : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManager.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManager.cs
index 709320c82..861e9f2dc 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.HLE.HOS.Services.Audio.AudioIn;
namespace Ryujinx.HLE.HOS.Services.Audio
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManagerForApplet.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManagerForApplet.cs
index 1735768c0..d0c385b56 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManagerForApplet.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManagerForApplet.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("audin:a")]
class IAudioInManagerForApplet : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManagerForDebugger.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManagerForDebugger.cs
index ebdcfd8c2..120136158 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManagerForDebugger.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioInManagerForDebugger.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("audin:d")]
class IAudioInManagerForDebugger : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManager.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManager.cs
index 70e60d2ed..cd7cbe41c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Common;
+using Ryujinx.Audio.Common;
using Ryujinx.HLE.HOS.Services.Audio.AudioOut;
namespace Ryujinx.HLE.HOS.Services.Audio
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManagerForApplet.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManagerForApplet.cs
index 1c3502d6c..9925777e2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManagerForApplet.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManagerForApplet.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("audout:a")]
class IAudioOutManagerForApplet : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManagerForDebugger.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManagerForDebugger.cs
index 1da017cbe..c41767a01 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManagerForDebugger.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioOutManagerForDebugger.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("audout:d")]
class IAudioOutManagerForDebugger : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManager.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManager.cs
index 642e25255..112e246c0 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Audio.Renderer.Parameter;
+using Ryujinx.Audio.Renderer.Parameter;
using Ryujinx.HLE.HOS.Kernel.Memory;
using Ryujinx.HLE.HOS.Services.Audio.AudioRenderer;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManagerForApplet.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManagerForApplet.cs
index 28aa6d8c9..dd767993d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManagerForApplet.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManagerForApplet.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("audren:a")]
class IAudioRendererManagerForApplet : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManagerForDebugger.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManagerForDebugger.cs
index 50754f8a8..cd2af09b2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManagerForDebugger.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioRendererManagerForDebugger.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("audren:d")]
class IAudioRendererManagerForDebugger : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioSnoopManager.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioSnoopManager.cs
index 73bc629fe..aa9789ac5 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IAudioSnoopManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IAudioSnoopManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("auddev")] // 6.0.0+
class IAudioSnoopManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManager.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManager.cs
index 56647d04f..9b58213e9 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("audrec:u")]
class IFinalOutputRecorderManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManagerForApplet.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManagerForApplet.cs
index 6dfd5f968..e2d62eee3 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManagerForApplet.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManagerForApplet.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("audrec:a")]
class IFinalOutputRecorderManagerForApplet : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManagerForDebugger.cs b/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManagerForDebugger.cs
index 653ab598c..7ded79435 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManagerForDebugger.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/IFinalOutputRecorderManagerForDebugger.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Audio
+namespace Ryujinx.HLE.HOS.Services.Audio
{
[Service("audrec:d")]
class IFinalOutputRecorderManagerForDebugger : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusDecoderFlags.cs b/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusDecoderFlags.cs
index e49c294c0..572535a92 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusDecoderFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusDecoderFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Audio.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusPacketHeader.cs b/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusPacketHeader.cs
index 2c5478276..099769b3a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusPacketHeader.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusPacketHeader.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Buffers.Binary;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusParametersEx.cs b/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusParametersEx.cs
index f088ed012..4d1e0c824 100644
--- a/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusParametersEx.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Audio/Types/OpusParametersEx.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Audio.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Bgtc/IStateControlService.cs b/src/Ryujinx.HLE/HOS/Services/Bgtc/IStateControlService.cs
index 97d0cf946..3045712e8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Bgtc/IStateControlService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Bgtc/IStateControlService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Bgct
+namespace Ryujinx.HLE.HOS.Services.Bgct
{
[Service("bgtc:sc")]
class IStateControlService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Bgtc/ITaskService.cs b/src/Ryujinx.HLE/HOS/Services/Bgtc/ITaskService.cs
index 1b4b45f61..138c10afe 100644
--- a/src/Ryujinx.HLE/HOS/Services/Bgtc/ITaskService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Bgtc/ITaskService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Bgct
+namespace Ryujinx.HLE.HOS.Services.Bgct
{
[Service("bgtc:t")]
class ITaskService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Bluetooth/BluetoothDriver/BluetoothEventManager.cs b/src/Ryujinx.HLE/HOS/Services/Bluetooth/BluetoothDriver/BluetoothEventManager.cs
index 5b8624001..2c7275276 100644
--- a/src/Ryujinx.HLE/HOS/Services/Bluetooth/BluetoothDriver/BluetoothEventManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Bluetooth/BluetoothDriver/BluetoothEventManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Threading;
+using Ryujinx.HLE.HOS.Kernel.Threading;
namespace Ryujinx.HLE.HOS.Services.Bluetooth.BluetoothDriver
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Bluetooth/IBluetoothDriver.cs b/src/Ryujinx.HLE/HOS/Services/Bluetooth/IBluetoothDriver.cs
index ace2c86a4..8f2642695 100644
--- a/src/Ryujinx.HLE/HOS/Services/Bluetooth/IBluetoothDriver.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Bluetooth/IBluetoothDriver.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Ipc;
+using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.HLE.HOS.Services.Bluetooth.BluetoothDriver;
using Ryujinx.HLE.HOS.Services.Settings;
diff --git a/src/Ryujinx.HLE/HOS/Services/Bluetooth/IBluetoothUser.cs b/src/Ryujinx.HLE/HOS/Services/Bluetooth/IBluetoothUser.cs
index 04782d08e..ea4a46f92 100644
--- a/src/Ryujinx.HLE/HOS/Services/Bluetooth/IBluetoothUser.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Bluetooth/IBluetoothUser.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Ipc;
+using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Services.Bluetooth.BluetoothDriver;
using Ryujinx.HLE.HOS.Services.Settings;
diff --git a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/BtmUser/IBtmUserCore.cs b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/BtmUser/IBtmUserCore.cs
index da45dc776..d4e23b93d 100644
--- a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/BtmUser/IBtmUserCore.cs
+++ b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/BtmUser/IBtmUserCore.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.Horizon.Common;
diff --git a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtm.cs b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtm.cs
index 13d14151a..87f4706a2 100644
--- a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtm.cs
+++ b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtm.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.BluetoothManager
+namespace Ryujinx.HLE.HOS.Services.BluetoothManager
{
[Service("btm")]
class IBtm : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmDebug.cs b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmDebug.cs
index 43a6ccc6c..20e2b04e4 100644
--- a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmDebug.cs
+++ b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmDebug.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.BluetoothManager
+namespace Ryujinx.HLE.HOS.Services.BluetoothManager
{
[Service("btm:dbg")]
class IBtmDebug : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmSystem.cs b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmSystem.cs
index 67d851b49..0efab8763 100644
--- a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmSystem.cs
+++ b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmSystem.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.BluetoothManager
+namespace Ryujinx.HLE.HOS.Services.BluetoothManager
{
[Service("btm:sys")]
class IBtmSystem : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmUser.cs b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmUser.cs
index 225a71e33..78f8fd8f5 100644
--- a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmUser.cs
+++ b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/IBtmUser.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.BluetoothManager.BtmUser;
+using Ryujinx.HLE.HOS.Services.BluetoothManager.BtmUser;
namespace Ryujinx.HLE.HOS.Services.BluetoothManager
{
diff --git a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/ResultCode.cs
index 01e62d2af..f729a688d 100644
--- a/src/Ryujinx.HLE/HOS/Services/BluetoothManager/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/BluetoothManager/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.BluetoothManager
+namespace Ryujinx.HLE.HOS.Services.BluetoothManager
{
enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/CaptureManager.cs b/src/Ryujinx.HLE/HOS/Services/Caps/CaptureManager.cs
index 349dd34f9..91a8958e6 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/CaptureManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/CaptureManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Services.Caps.Types;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotApplicationService.cs b/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotApplicationService.cs
index fb62b710d..0dad46c14 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotApplicationService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotApplicationService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.HLE.HOS.Services.Caps.Types;
namespace Ryujinx.HLE.HOS.Services.Caps
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotControlService.cs b/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotControlService.cs
index c3e2036bb..77876b496 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotControlService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/IScreenShotControlService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Caps
+namespace Ryujinx.HLE.HOS.Services.Caps
{
[Service("caps:sc")]
class IScreenShotControlService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Caps/ResultCode.cs
index 51a6fd8ac..7617ae9d3 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Caps
+namespace Ryujinx.HLE.HOS.Services.Caps
{
enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumFileDateTime.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumFileDateTime.cs
index 09c9b1760..00c514525 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumFileDateTime.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumFileDateTime.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Caps.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumImageOrientation.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumImageOrientation.cs
index 2a1fbcac6..26afbd387 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumImageOrientation.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumImageOrientation.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Caps.Types
+namespace Ryujinx.HLE.HOS.Services.Caps.Types
{
enum AlbumImageOrientation : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumStorage.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumStorage.cs
index 2fe99d455..9ae9767fd 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumStorage.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/AlbumStorage.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Caps.Types
+namespace Ryujinx.HLE.HOS.Services.Caps.Types
{
enum AlbumStorage : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ApplicationAlbumEntry.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ApplicationAlbumEntry.cs
index 701fa63d9..fac5e58ff 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ApplicationAlbumEntry.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ApplicationAlbumEntry.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Caps.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ContentType.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ContentType.cs
index 56023d2ea..7b1d4062f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ContentType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ContentType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Caps.Types
+namespace Ryujinx.HLE.HOS.Services.Caps.Types
{
enum ContentType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ScreenShotAttribute.cs b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ScreenShotAttribute.cs
index e7d8d0afd..d932f1b87 100644
--- a/src/Ryujinx.HLE/HOS/Services/Caps/Types/ScreenShotAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Caps/Types/ScreenShotAttribute.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Caps.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/CommandCmifAttribute.cs b/src/Ryujinx.HLE/HOS/Services/CommandCmifAttribute.cs
index 5b4f30da9..17a5960ec 100644
--- a/src/Ryujinx.HLE/HOS/Services/CommandCmifAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/CommandCmifAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services
{
diff --git a/src/Ryujinx.HLE/HOS/Services/CommandTIpcAttribute.cs b/src/Ryujinx.HLE/HOS/Services/CommandTIpcAttribute.cs
index 0d29f92ca..b9c603546 100644
--- a/src/Ryujinx.HLE/HOS/Services/CommandTIpcAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/CommandTIpcAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services
{
diff --git a/src/Ryujinx.HLE/HOS/Services/DisposableIpcService.cs b/src/Ryujinx.HLE/HOS/Services/DisposableIpcService.cs
index 2d0802a7c..b06158a86 100644
--- a/src/Ryujinx.HLE/HOS/Services/DisposableIpcService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/DisposableIpcService.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading;
namespace Ryujinx.HLE.HOS.Services
diff --git a/src/Ryujinx.HLE/HOS/Services/DummyService.cs b/src/Ryujinx.HLE/HOS/Services/DummyService.cs
index 838a9018e..d890f5742 100644
--- a/src/Ryujinx.HLE/HOS/Services/DummyService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/DummyService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services
+namespace Ryujinx.HLE.HOS.Services
{
class DummyService : IpcService
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ectx/IReaderForSystem.cs b/src/Ryujinx.HLE/HOS/Services/Ectx/IReaderForSystem.cs
index 09f02fc4b..fc2b35aaa 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ectx/IReaderForSystem.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ectx/IReaderForSystem.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ectx
+namespace Ryujinx.HLE.HOS.Services.Ectx
{
[Service("ectx:r")] // 11.0.0+
class IReaderForSystem : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ectx/IWriterForApplication.cs b/src/Ryujinx.HLE/HOS/Services/Ectx/IWriterForApplication.cs
index a61fca553..cf2cdddc2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ectx/IWriterForApplication.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ectx/IWriterForApplication.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ectx
+namespace Ryujinx.HLE.HOS.Services.Ectx
{
[Service("ectx:aw")] // 11.0.0+
class IWriterForApplication : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ectx/IWriterForSystem.cs b/src/Ryujinx.HLE/HOS/Services/Ectx/IWriterForSystem.cs
index 30c22d1fc..468a5a5b3 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ectx/IWriterForSystem.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ectx/IWriterForSystem.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ectx
+namespace Ryujinx.HLE.HOS.Services.Ectx
{
[Service("ectx:w")] // 11.0.0+
class IWriterForSystem : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Erpt/IContext.cs b/src/Ryujinx.HLE/HOS/Services/Erpt/IContext.cs
index eadd3ea8b..bd0880db7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Erpt/IContext.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Erpt/IContext.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Erpt
+namespace Ryujinx.HLE.HOS.Services.Erpt
{
[Service("erpt:c")]
class IContext : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Erpt/ISession.cs b/src/Ryujinx.HLE/HOS/Services/Erpt/ISession.cs
index b43cb30a2..cd9006a23 100644
--- a/src/Ryujinx.HLE/HOS/Services/Erpt/ISession.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Erpt/ISession.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Erpt
+namespace Ryujinx.HLE.HOS.Services.Erpt
{
[Service("erpt:r")]
class ISession : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Es/IETicketService.cs b/src/Ryujinx.HLE/HOS/Services/Es/IETicketService.cs
index ced213f02..486565522 100644
--- a/src/Ryujinx.HLE/HOS/Services/Es/IETicketService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Es/IETicketService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Es
+namespace Ryujinx.HLE.HOS.Services.Es
{
[Service("es")]
class IETicketService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Eupld/IControl.cs b/src/Ryujinx.HLE/HOS/Services/Eupld/IControl.cs
index 4b069c60a..db79d4714 100644
--- a/src/Ryujinx.HLE/HOS/Services/Eupld/IControl.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Eupld/IControl.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Eupld
+namespace Ryujinx.HLE.HOS.Services.Eupld
{
[Service("eupld:c")]
class IControl : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Eupld/IRequest.cs b/src/Ryujinx.HLE/HOS/Services/Eupld/IRequest.cs
index e14e4df4d..7c6f9c814 100644
--- a/src/Ryujinx.HLE/HOS/Services/Eupld/IRequest.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Eupld/IRequest.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Eupld
+namespace Ryujinx.HLE.HOS.Services.Eupld
{
[Service("eupld:r")]
class IRequest : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Fatal/IPrivateService.cs b/src/Ryujinx.HLE/HOS/Services/Fatal/IPrivateService.cs
index 4cb3a2c18..3c48f519a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fatal/IPrivateService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fatal/IPrivateService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Fatal
+namespace Ryujinx.HLE.HOS.Services.Fatal
{
[Service("fatal:p")]
class IPrivateService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Fatal/IService.cs b/src/Ryujinx.HLE/HOS/Services/Fatal/IService.cs
index a62d633e2..21daf8758 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fatal/IService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fatal/IService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Fatal.Types;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Fatal/Types/CpuContext32.cs b/src/Ryujinx.HLE/HOS/Services/Fatal/Types/CpuContext32.cs
index 5eb1406a1..8429774e8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fatal/Types/CpuContext32.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fatal/Types/CpuContext32.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.HLE.HOS.Services.Fatal.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Fatal/Types/CpuContext64.cs b/src/Ryujinx.HLE/HOS/Services/Fatal/Types/CpuContext64.cs
index 58fd3c4ac..17b5036d2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fatal/Types/CpuContext64.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fatal/Types/CpuContext64.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.HLE.HOS.Services.Fatal.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Fatal/Types/FatalPolicy.cs b/src/Ryujinx.HLE/HOS/Services/Fatal/Types/FatalPolicy.cs
index f536d17d3..b0da0e375 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fatal/Types/FatalPolicy.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fatal/Types/FatalPolicy.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Fatal.Types
+namespace Ryujinx.HLE.HOS.Services.Fatal.Types
{
enum FatalPolicy
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ResultCode.cs
index 82462b4ed..9f612059c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Friend
+namespace Ryujinx.HLE.HOS.Services.Friend
{
enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/Friend.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/Friend.cs
index e727cafbb..28745c3f2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/Friend.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/Friend.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Account.Acc;
+using Ryujinx.HLE.HOS.Services.Account.Acc;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.FriendService
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/FriendFilter.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/FriendFilter.cs
index 6f10a7579..5f13f3136 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/FriendFilter.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/FriendFilter.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.FriendService
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/PresenceStatus.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/PresenceStatus.cs
index 0271e61a4..7930aff0b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/PresenceStatus.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/PresenceStatus.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.FriendService
+namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.FriendService
{
enum PresenceStatus : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/PresenceStatusFilter.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/PresenceStatusFilter.cs
index 5949b8f64..c9a54250f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/PresenceStatusFilter.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/PresenceStatusFilter.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.FriendService
+namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.FriendService
{
enum PresenceStatusFilter : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/UserPresence.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/UserPresence.cs
index 9769e1609..80d142059 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/UserPresence.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/FriendService/Types/UserPresence.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Services.Account.Acc;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/NotificationEventHandler.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/NotificationEventHandler.cs
index f0970d166..88627fd78 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/NotificationEventHandler.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/NotificationEventHandler.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Account.Acc;
+using Ryujinx.HLE.HOS.Services.Account.Acc;
namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.NotificationService
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/Types/NotificationEventType.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/Types/NotificationEventType.cs
index d7f3f55d2..363e03eaf 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/Types/NotificationEventType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/Types/NotificationEventType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.NotificationService
+namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.NotificationService
{
enum NotificationEventType : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/Types/NotificationInfo.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/Types/NotificationInfo.cs
index 1073c47d3..aa58433d8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/Types/NotificationInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/NotificationService/Types/NotificationInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator.NotificationService
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/Types/FriendServicePermissionLevel.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/Types/FriendServicePermissionLevel.cs
index bf7d1bd32..7902d9c53 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/Types/FriendServicePermissionLevel.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/Types/FriendServicePermissionLevel.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/Types/PlayHistoryRegistrationKey.cs b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/Types/PlayHistoryRegistrationKey.cs
index aaeef0593..9687c5478 100644
--- a/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/Types/PlayHistoryRegistrationKey.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Friend/ServiceCreator/Types/PlayHistoryRegistrationKey.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs
index 1ef52a00d..20ffb996d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using LibHac.Common.Keys;
using LibHac.Fs;
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/IDeviceOperator.cs b/src/Ryujinx.HLE/HOS/Services/Fs/IDeviceOperator.cs
index 2a40aea4f..49453e83a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fs/IDeviceOperator.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fs/IDeviceOperator.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using GameCardHandle = System.UInt32;
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxyForLoader.cs b/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxyForLoader.cs
index c3e228758..82c593848 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxyForLoader.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxyForLoader.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Fs
+namespace Ryujinx.HLE.HOS.Services.Fs
{
[Service("fsp-ldr")]
class IFileSystemProxyForLoader : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/IMultiCommitManager.cs b/src/Ryujinx.HLE/HOS/Services/Fs/IMultiCommitManager.cs
index aa04a7e64..134e2ed8c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fs/IMultiCommitManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fs/IMultiCommitManager.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy;
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/IProgramRegistry.cs b/src/Ryujinx.HLE/HOS/Services/Fs/IProgramRegistry.cs
index 4554a053a..9383a1d37 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fs/IProgramRegistry.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fs/IProgramRegistry.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Fs
+namespace Ryujinx.HLE.HOS.Services.Fs
{
[Service("fsp-pr")]
class IProgramRegistry : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/ISaveDataInfoReader.cs b/src/Ryujinx.HLE/HOS/Services/Fs/ISaveDataInfoReader.cs
index 022d7b819..7ed6dadc2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fs/ISaveDataInfoReader.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fs/ISaveDataInfoReader.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using LibHac.Sf;
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/Types/FileSystemType.cs b/src/Ryujinx.HLE/HOS/Services/Fs/Types/FileSystemType.cs
index 369df9b68..17756e124 100644
--- a/src/Ryujinx.HLE/HOS/Services/Fs/Types/FileSystemType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Fs/Types/FileSystemType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Fs
+namespace Ryujinx.HLE.HOS.Services.Fs
{
enum FileSystemType
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Grc/IGrcService.cs b/src/Ryujinx.HLE/HOS/Services/Grc/IGrcService.cs
index 131ba541c..da01f64be 100644
--- a/src/Ryujinx.HLE/HOS/Services/Grc/IGrcService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Grc/IGrcService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Grc
+namespace Ryujinx.HLE.HOS.Services.Grc
{
[Service("grc:c")] // 4.0.0+
class IGrcService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Grc/IRemoteVideoTransfer.cs b/src/Ryujinx.HLE/HOS/Services/Grc/IRemoteVideoTransfer.cs
index 1d200ac3c..08e7365c1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Grc/IRemoteVideoTransfer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Grc/IRemoteVideoTransfer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Grc
+namespace Ryujinx.HLE.HOS.Services.Grc
{
[Service("grc:d")] // 6.0.0+
class IRemoteVideoTransfer : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/HidUtils.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/HidUtils.cs
index d76704b3e..8e2e854fb 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/HidUtils.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/HidUtils.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.HidServer
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Npad/NpadHandheldActivationMode.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Npad/NpadHandheldActivationMode.cs
index 02e3d803f..ba56e93cb 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Npad/NpadHandheldActivationMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Npad/NpadHandheldActivationMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public enum NpadHandheldActivationMode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Npad/NpadJoyDeviceType.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Npad/NpadJoyDeviceType.cs
index f52e18f28..ac0bb3575 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Npad/NpadJoyDeviceType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Npad/NpadJoyDeviceType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public enum NpadJoyDeviceType
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/AccelerometerParameters.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/AccelerometerParameters.cs
index 8e4d80e24..baabffa05 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/AccelerometerParameters.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/AccelerometerParameters.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public struct AccelerometerParameters
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/GyroscopeZeroDriftMode.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/GyroscopeZeroDriftMode.cs
index 659afa0df..d73c60251 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/GyroscopeZeroDriftMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/GyroscopeZeroDriftMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public enum GyroscopeZeroDriftMode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/SensorFusionParameters.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/SensorFusionParameters.cs
index 37cef783a..c74214565 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/SensorFusionParameters.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/SixAxis/SensorFusionParameters.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public struct SensorFusionParameters
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceHandle.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceHandle.cs
index d59afe513..02f4b6840 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceHandle.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceHandle.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public struct VibrationDeviceHandle
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDevicePosition.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDevicePosition.cs
index 19d52f9fd..90f4abcc3 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDevicePosition.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDevicePosition.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public enum VibrationDevicePosition
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceType.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceType.cs
index 4849c3426..db586bb34 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public enum VibrationDeviceType
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceValue.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceValue.cs
index 8ac06cb79..feed8764d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceValue.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationDeviceValue.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public struct VibrationDeviceValue
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationValue.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationValue.cs
index c6143a013..490d1e6ab 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationValue.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidServer/Types/Vibration/VibrationValue.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/IHidDebugServer.cs b/src/Ryujinx.HLE/HOS/Services/Hid/IHidDebugServer.cs
index 0d1867db5..2444c4436 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/IHidDebugServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/IHidDebugServer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
[Service("hid:dbg")]
class IHidDebugServer : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/IHidSystemServer.cs b/src/Ryujinx.HLE/HOS/Services/Hid/IHidSystemServer.cs
index 685f6841d..0b4eba948 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/IHidSystemServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/IHidSystemServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Hid.HidServer;
using Ryujinx.HLE.HOS.Services.Hid.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/IHidbusServer.cs b/src/Ryujinx.HLE/HOS/Services/Hid/IHidbusServer.cs
index 7c624dfc3..d6531cc18 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/IHidbusServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/IHidbusServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
namespace Ryujinx.HLE.HOS.Services.Hid
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/ISystemServer.cs b/src/Ryujinx.HLE/HOS/Services/Hid/ISystemServer.cs
index daff6fda9..c00b083a3 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/ISystemServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/ISystemServer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
[Service("xcd:sys")]
class ISystemServer : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/IIrSensorSystemServer.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/IIrSensorSystemServer.cs
index ad78d4f1e..5046268cb 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/IIrSensorSystemServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/IIrSensorSystemServer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Irs
+namespace Ryujinx.HLE.HOS.Services.Hid.Irs
{
[Service("irs:sys")]
class IIrSensorSystemServer : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/ResultCode.cs
index 322f9349b..8cee32cdf 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Irs
+namespace Ryujinx.HLE.HOS.Services.Hid.Irs
{
public enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/ImageTransferProcessorState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/ImageTransferProcessorState.cs
index 7f28667ce..76a07f797 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/ImageTransferProcessorState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/ImageTransferProcessorState.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Irs.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/IrCameraHandle.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/IrCameraHandle.cs
index 282f92796..a15e445c7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/IrCameraHandle.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/IrCameraHandle.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Irs.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedClusteringProcessorConfig.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedClusteringProcessorConfig.cs
index a65a1ba61..d12513fab 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedClusteringProcessorConfig.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedClusteringProcessorConfig.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Irs.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedImageTransferProcessorConfig.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedImageTransferProcessorConfig.cs
index c97de27a8..0bc709f20 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedImageTransferProcessorConfig.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedImageTransferProcessorConfig.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Irs.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedMomentProcessorConfig.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedMomentProcessorConfig.cs
index bbee28156..f1905ee3a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedMomentProcessorConfig.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedMomentProcessorConfig.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Irs.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedTeraPluginProcessorConfig.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedTeraPluginProcessorConfig.cs
index 4fada04af..1cc2533a2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedTeraPluginProcessorConfig.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Irs/Types/PackedTeraPluginProcessorConfig.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Irs.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Hid/ResultCode.cs
index 993ff7076..488356d44 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/AppletFooterUiType.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/AppletFooterUiType.cs
index 1eccd856e..b9b0c5f99 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/AppletFooterUiType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/AppletFooterUiType.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/BusHandle.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/BusHandle.cs
index 033eb3069..8e061351e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/BusHandle.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/BusHandle.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/BusType.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/BusType.cs
index 25b36ca45..6c70ac25c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/BusType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/BusType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public enum BusType : long
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/NpadIdType.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/NpadIdType.cs
index 5a9247d92..8f08481cd 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/NpadIdType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/NpadIdType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public enum NpadIdType
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/NpadStyleIndex.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/NpadStyleIndex.cs
index 04550b6fe..c42a5bc56 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/NpadStyleIndex.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/Npad/NpadStyleIndex.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid
+namespace Ryujinx.HLE.HOS.Services.Hid
{
public enum NpadStyleIndex : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/NpadJoyHoldType.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/NpadJoyHoldType.cs
index 19297de4c..cd61dc92c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/NpadJoyHoldType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/NpadJoyHoldType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types
+namespace Ryujinx.HLE.HOS.Services.Hid.Types
{
enum NpadJoyHoldType
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/AnalogStickState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/AnalogStickState.cs
index bf4b58885..b9af211c1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/AnalogStickState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/AnalogStickState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common
+namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common
{
struct AnalogStickState
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/AtomicStorage.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/AtomicStorage.cs
index b6bc288e6..c9f59ce0f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/AtomicStorage.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/AtomicStorage.cs
@@ -1,4 +1,4 @@
-using System.Threading;
+using System.Threading;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/ISampledDataStruct.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/ISampledDataStruct.cs
index ae1997d4e..312075bc4 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/ISampledDataStruct.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/ISampledDataStruct.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Buffers.Binary;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/RingLifo.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/RingLifo.cs
index 26ea1cff1..99f2f59e4 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/RingLifo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Common/RingLifo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
using System.Runtime.CompilerServices;
using System.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadAttribute.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadAttribute.cs
index abc6990b8..dadaf6b29 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugPad
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadButton.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadButton.cs
index dc713a038..b0bb9b959 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadButton.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadButton.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugPad
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadState.cs
index 0846cfc73..f26440c4b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugPad/DebugPadState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
+using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugPad
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardKey.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardKey.cs
index 336037ab1..7f75bc3f9 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardKey.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardKey.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Keyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardKeyShift.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardKeyShift.cs
index 46461ad84..c19b5e614 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardKeyShift.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardKeyShift.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Keyboard
+namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Keyboard
{
enum KeyboardKeyShift
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardModifier.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardModifier.cs
index ad94619ed..890daa0d0 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardModifier.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardModifier.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Keyboard
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardState.cs
index 4de92813b..3f7d9409d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Keyboard/KeyboardState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
+using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Keyboard
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseAttribute.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseAttribute.cs
index ce3dd9462..048dd357c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Mouse
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseButton.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseButton.cs
index 3e0259938..4a6f73b8b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseButton.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseButton.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Mouse
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseState.cs
index c953c7945..41fe68b8b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Mouse/MouseState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
+using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Mouse
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/DeviceType.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/DeviceType.cs
index 259c712b8..d56f849a6 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/DeviceType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/DeviceType.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadAttribute.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadAttribute.cs
index 6ad2531f4..6d7719e82 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadBatteryLevel.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadBatteryLevel.cs
index a84e0259d..7f5b17ff5 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadBatteryLevel.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadBatteryLevel.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
+namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
enum NpadBatteryLevel
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadButton.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadButton.cs
index 442d4089b..c20db8e0b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadButton.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadButton.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadColorAttribute.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadColorAttribute.cs
index 1a7846dbc..e8140459c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadColorAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadColorAttribute.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
+namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
enum NpadColorAttribute : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadCommonState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadCommonState.cs
index e1d70a8a2..d3caf7170 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadCommonState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadCommonState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
+using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadFullKeyColorState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadFullKeyColorState.cs
index 92d4a2ae0..77127c2c2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadFullKeyColorState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadFullKeyColorState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
+namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
struct NpadFullKeyColorState
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadGcTriggerState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadGcTriggerState.cs
index 39453984f..41e841342 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadGcTriggerState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadGcTriggerState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
+using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadInternalState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadInternalState.cs
index 60d16fd83..f79a2657e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadInternalState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadInternalState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
+using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadJoyAssignmentMode.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadJoyAssignmentMode.cs
index c50abe16e..b8a4623f4 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadJoyAssignmentMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadJoyAssignmentMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
+namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
enum NpadJoyAssignmentMode : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadJoyColorState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadJoyColorState.cs
index 6fec613b6..4e00b5aea 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadJoyColorState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadJoyColorState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
+namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
struct NpadJoyColorState
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadLarkType.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadLarkType.cs
index a487a911a..013c5fee5 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadLarkType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadLarkType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
+namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
enum NpadLarkType : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadLuciaType.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadLuciaType.cs
index e12e84e4f..18756bc34 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadLuciaType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadLuciaType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
+namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
enum NpadLuciaType
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadState.cs
index 643234fc2..fb32e716d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadState.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadStyleTag.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadStyleTag.cs
index d9ecdcd1a..bf4d91879 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadStyleTag.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadStyleTag.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadSystemButtonProperties.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadSystemButtonProperties.cs
index 56a4a80f7..6f820ef69 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadSystemButtonProperties.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadSystemButtonProperties.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadSystemProperties.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadSystemProperties.cs
index 817c6c143..79110fe44 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadSystemProperties.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/NpadSystemProperties.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/SixAxisSensorAttribute.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/SixAxisSensorAttribute.cs
index 0190f09d7..b6e57496c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/SixAxisSensorAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/SixAxisSensorAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/SixAxisSensorState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/SixAxisSensorState.cs
index 25f65a0ef..f3c2b208f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/SixAxisSensorState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/Npad/SixAxisSensorState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/SharedMemory.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/SharedMemory.cs
index 640076b34..d6283eb57 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/SharedMemory.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/SharedMemory.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugPad;
using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Keyboard;
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchAttribute.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchAttribute.cs
index 7c43e6cd4..44d7c22aa 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.TouchScreen
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchScreenState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchScreenState.cs
index 5ce51ee3c..d256da0de 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchScreenState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchScreenState.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchState.cs
index 908f9ed5e..06be9b24c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/TouchScreen/TouchState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.TouchScreen
+namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.TouchScreen
{
struct TouchState
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/IMonitorServiceCreator.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/IMonitorServiceCreator.cs
index a7e99241c..4bea3945a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/IMonitorServiceCreator.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/IMonitorServiceCreator.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ldn
+namespace Ryujinx.HLE.HOS.Services.Ldn
{
[Service("ldn:m")]
class IMonitorServiceCreator : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/ISystemServiceCreator.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/ISystemServiceCreator.cs
index 9acfef5c9..535013b0b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/ISystemServiceCreator.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/ISystemServiceCreator.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ldn
+namespace Ryujinx.HLE.HOS.Services.Ldn
{
[Service("ldn:s")]
class ISystemServiceCreator : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/IUserServiceCreator.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/IUserServiceCreator.cs
index 7bcb7785f..633d5f739 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/IUserServiceCreator.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/IUserServiceCreator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator;
+using Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator;
namespace Ryujinx.HLE.HOS.Services.Ldn
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Lp2p/IServiceCreator.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Lp2p/IServiceCreator.cs
index f2fd482dd..797a7a9bd 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Lp2p/IServiceCreator.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Lp2p/IServiceCreator.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ldn.Lp2p
+namespace Ryujinx.HLE.HOS.Services.Ldn.Lp2p
{
[Service("lp2p:app")] // 9.0.0+
[Service("lp2p:sys")] // 9.0.0+
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/NetworkInterface.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/NetworkInterface.cs
index 26696cbeb..e4a16dbb1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/NetworkInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/NetworkInterface.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.HLE.HOS.Services.Ldn.Types;
using System.Net;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/AcceptPolicy.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/AcceptPolicy.cs
index 272a2fd8b..f49b7bddb 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/AcceptPolicy.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/AcceptPolicy.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ldn.Types
+namespace Ryujinx.HLE.HOS.Services.Ldn.Types
{
enum AcceptPolicy : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/CommonNetworkInfo.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/CommonNetworkInfo.cs
index cd3a5716c..217bca4fb 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/CommonNetworkInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/CommonNetworkInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/DisconnectReason.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/DisconnectReason.cs
index e3fd0ed43..00a70f228 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/DisconnectReason.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/DisconnectReason.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ldn.Types
+namespace Ryujinx.HLE.HOS.Services.Ldn.Types
{
enum DisconnectReason : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/IntentId.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/IntentId.cs
index e1ffec5e4..2c5cdd95b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/IntentId.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/IntentId.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkConfig.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkConfig.cs
index aea9a4a7e..4da5fe42b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkConfig.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkConfig.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkId.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkId.cs
index 9579647b3..7039256fa 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkId.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkId.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkInfo.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkInfo.cs
index c1fb87d4a..98434b690 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkInfo.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkState.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkState.cs
index 61fd831df..5b613552b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ldn.Types
+namespace Ryujinx.HLE.HOS.Services.Ldn.Types
{
enum NetworkState
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkType.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkType.cs
index a9ca153fb..5db23efbe 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NetworkType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ldn.Types
+namespace Ryujinx.HLE.HOS.Services.Ldn.Types
{
enum NetworkType : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NodeLatestUpdateFlags.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NodeLatestUpdateFlags.cs
index 3b69b2798..66442f13e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NodeLatestUpdateFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/NodeLatestUpdateFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Ldn.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/ScanFilter.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/ScanFilter.cs
index a5991074a..449c923cc 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/ScanFilter.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/ScanFilter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/ScanFilterFlag.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/ScanFilterFlag.cs
index f27b52c35..c59224cbc 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/ScanFilterFlag.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/ScanFilterFlag.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Ldn.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/SecurityMode.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/SecurityMode.cs
index a621d20fc..1cdb7957f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/SecurityMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/SecurityMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ldn.Types
+namespace Ryujinx.HLE.HOS.Services.Ldn.Types
{
enum SecurityMode : ushort
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/SecurityParameter.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/SecurityParameter.cs
index 534dbc7ae..dbcaa9eeb 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/Types/SecurityParameter.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/Types/SecurityParameter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/INetworkClient.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/INetworkClient.cs
index 81825e977..7ad6de51d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/INetworkClient.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/INetworkClient.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Ldn.Types;
+using Ryujinx.HLE.HOS.Services.Ldn.Types;
using Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.Types;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/IUserLocalCommunicationService.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/IUserLocalCommunicationService.cs
index 8c6ea66f7..1d4b5485e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/IUserLocalCommunicationService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/IUserLocalCommunicationService.cs
@@ -1,4 +1,4 @@
-using LibHac.Ns;
+using LibHac.Ns;
using Ryujinx.Common;
using Ryujinx.Common.Configuration.Multiplayer;
using Ryujinx.Common.Logging;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnDisabledClient.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnDisabledClient.cs
index e5340b4e9..e3385a1ed 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnDisabledClient.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnDisabledClient.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Ldn.Types;
+using Ryujinx.HLE.HOS.Services.Ldn.Types;
using Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.Types;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanDiscovery.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanDiscovery.cs
index 8cfd77acb..b5f643d23 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanDiscovery.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanDiscovery.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Common.Memory;
using Ryujinx.Common.Utilities;
using Ryujinx.HLE.HOS.Services.Ldn.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanProtocol.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanProtocol.cs
index f22e430bd..4b01bfe31 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanProtocol.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanProtocol.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Common.Memory;
using Ryujinx.Common.Utilities;
using Ryujinx.HLE.HOS.Services.Ldn.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LdnMitmClient.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LdnMitmClient.cs
index 068013053..273acdd5e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LdnMitmClient.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LdnMitmClient.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
using Ryujinx.HLE.HOS.Services.Ldn.Types;
using Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/ILdnSocket.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/ILdnSocket.cs
index b6e6cea9e..9427cc944 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/ILdnSocket.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/ILdnSocket.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Net;
namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnMitm.Proxy
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/ILdnTcpSocket.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/ILdnTcpSocket.cs
index 97e3bd627..dfdd5fe7d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/ILdnTcpSocket.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/ILdnTcpSocket.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnMitm.Proxy
+namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnMitm.Proxy
{
internal interface ILdnTcpSocket : ILdnSocket
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpClient.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpClient.cs
index cfe9a8aae..7f755b409 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpClient.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpClient.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using System;
using System.Net;
using System.Net.Sockets;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpServer.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpServer.cs
index 0ca12b9f6..d15e2b55d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpServer.cs
@@ -1,4 +1,4 @@
-using NetCoreServer;
+using NetCoreServer;
using Ryujinx.Common.Logging;
using System;
using System.Net;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpSession.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpSession.cs
index f30c4b011..667230b81 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpSession.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyTcpSession.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Ldn.Types;
using System.Net;
using System.Net.Sockets;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyUdpServer.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyUdpServer.cs
index b1519d1ff..0f5875a1d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyUdpServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Proxy/LdnProxyUdpServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Ldn.Types;
using Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnMitm.Types;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Types/LanPacketHeader.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Types/LanPacketHeader.cs
index 4cebe414d..1eca1bb84 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Types/LanPacketHeader.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Types/LanPacketHeader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnMitm.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Types/LanPacketType.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Types/LanPacketType.cs
index 901f00b00..826ea7232 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Types/LanPacketType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/Types/LanPacketType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnMitm.Types
+namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnMitm.Types
{
internal enum LanPacketType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/NetworkChangeEventArgs.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/NetworkChangeEventArgs.cs
index b379d2680..a23e110f0 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/NetworkChangeEventArgs.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/NetworkChangeEventArgs.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Ldn.Types;
+using Ryujinx.HLE.HOS.Services.Ldn.Types;
using System;
namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/ConnectPrivateRequest.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/ConnectPrivateRequest.cs
index 058ce62d0..a402f653c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/ConnectPrivateRequest.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/ConnectPrivateRequest.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Ldn.Types;
+using Ryujinx.HLE.HOS.Services.Ldn.Types;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/ConnectRequest.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/ConnectRequest.cs
index 136589b2a..4ea2fceb1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/ConnectRequest.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/ConnectRequest.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Ldn.Types;
+using Ryujinx.HLE.HOS.Services.Ldn.Types;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/CreateAccessPointPrivateRequest.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/CreateAccessPointPrivateRequest.cs
index ec0668884..ac0ff7d94 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/CreateAccessPointPrivateRequest.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/CreateAccessPointPrivateRequest.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Ldn.Types;
+using Ryujinx.HLE.HOS.Services.Ldn.Types;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/CreateAccessPointRequest.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/CreateAccessPointRequest.cs
index eecea5eb0..f67f0aac9 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/CreateAccessPointRequest.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/Types/CreateAccessPointRequest.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Ldn.Types;
+using Ryujinx.HLE.HOS.Services.Ldn.Types;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Loader/IDebugMonitorInterface.cs b/src/Ryujinx.HLE/HOS/Services/Loader/IDebugMonitorInterface.cs
index 78c405b4e..5e4e59755 100644
--- a/src/Ryujinx.HLE/HOS/Services/Loader/IDebugMonitorInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Loader/IDebugMonitorInterface.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Loader
+namespace Ryujinx.HLE.HOS.Services.Loader
{
[Service("ldr:dmnt")]
class IDebugMonitorInterface : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Loader/IProcessManagerInterface.cs b/src/Ryujinx.HLE/HOS/Services/Loader/IProcessManagerInterface.cs
index 693d68dac..cb5a26d17 100644
--- a/src/Ryujinx.HLE/HOS/Services/Loader/IProcessManagerInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Loader/IProcessManagerInterface.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Loader
+namespace Ryujinx.HLE.HOS.Services.Loader
{
[Service("ldr:pm")]
class IProcessManagerInterface : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Loader/IShellInterface.cs b/src/Ryujinx.HLE/HOS/Services/Loader/IShellInterface.cs
index d2dc57bdb..f9cf44d9d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Loader/IShellInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Loader/IShellInterface.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Loader
+namespace Ryujinx.HLE.HOS.Services.Loader
{
[Service("ldr:shel")]
class IShellInterface : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Loader/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Loader/ResultCode.cs
index ec1166480..6744563d9 100644
--- a/src/Ryujinx.HLE/HOS/Services/Loader/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Loader/ResultCode.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.HLE.HOS.Services.Loader
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mig/IService.cs b/src/Ryujinx.HLE/HOS/Services/Mig/IService.cs
index 81f858f8f..a4d432849 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mig/IService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mig/IService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mig
+namespace Ryujinx.HLE.HOS.Services.Mig
{
[Service("mig:usr")] // 4.0.0+
class IService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/DatabaseImpl.cs b/src/Ryujinx.HLE/HOS/Services/Mii/DatabaseImpl.cs
index 5041dc882..4bb736992 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/DatabaseImpl.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/DatabaseImpl.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Services.Mii.Types;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/DatabaseSessionMetadata.cs b/src/Ryujinx.HLE/HOS/Services/Mii/DatabaseSessionMetadata.cs
index 56486c434..b01295d80 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/DatabaseSessionMetadata.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/DatabaseSessionMetadata.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Mii.Types;
+using Ryujinx.HLE.HOS.Services.Mii.Types;
namespace Ryujinx.HLE.HOS.Services.Mii
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Helper.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Helper.cs
index 71b9ab43f..f4d288e9c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Helper.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Helper.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System;
using System.Buffers.Binary;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/IImageDatabaseService.cs b/src/Ryujinx.HLE/HOS/Services/Mii/IImageDatabaseService.cs
index 0a763da1c..88d7d7b3c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/IImageDatabaseService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/IImageDatabaseService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
namespace Ryujinx.HLE.HOS.Services.Mii
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/IStaticService.cs b/src/Ryujinx.HLE/HOS/Services/Mii/IStaticService.cs
index acf358eea..8a6800024 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/IStaticService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/IStaticService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.HLE.HOS.Services.Mii.StaticService;
using Ryujinx.HLE.HOS.Services.Mii.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/MiiDatabaseManager.cs b/src/Ryujinx.HLE/HOS/Services/Mii/MiiDatabaseManager.cs
index cb43ed2ad..23a52d908 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/MiiDatabaseManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/MiiDatabaseManager.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Mii/ResultCode.cs
index 8611d5af1..cccc519ec 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii
+namespace Ryujinx.HLE.HOS.Services.Mii
{
public enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/StaticService/DatabaseServiceImpl.cs b/src/Ryujinx.HLE/HOS/Services/Mii/StaticService/DatabaseServiceImpl.cs
index 0d286e1cc..fc12e2533 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/StaticService/DatabaseServiceImpl.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/StaticService/DatabaseServiceImpl.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Mii.Types;
+using Ryujinx.HLE.HOS.Services.Mii.Types;
using Ryujinx.HLE.HOS.Services.Settings;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/StaticService/IDatabaseService.cs b/src/Ryujinx.HLE/HOS/Services/Mii/StaticService/IDatabaseService.cs
index 051921f50..1a1c20d6e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/StaticService/IDatabaseService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/StaticService/IDatabaseService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Services.Mii.Types;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Age.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Age.cs
index a443ad09a..9c89ffd31 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Age.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Age.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum Age : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/BeardType.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/BeardType.cs
index 85fda6713..8f362c154 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/BeardType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/BeardType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum BeardType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/CharInfo.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/CharInfo.cs
index 14b616870..63f44694f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/CharInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/CharInfo.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Mii.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/CharInfoElement.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/CharInfoElement.cs
index fead4861a..974fc239e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/CharInfoElement.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/CharInfoElement.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/CommonColor.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/CommonColor.cs
index 3f61232ce..a21eb8227 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/CommonColor.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/CommonColor.cs
@@ -1,4 +1,4 @@
-
+
namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum CommonColor : byte
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/CoreData.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/CoreData.cs
index 4f6e289e2..aaeb8aa10 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/CoreData.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/CoreData.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/CreateId.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/CreateId.cs
index f61e83d73..96533a04d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/CreateId.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/CreateId.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Mii.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/DefaultMii.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/DefaultMii.cs
index e3c6a42e6..b7a63d16b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/DefaultMii.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/DefaultMii.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Mii.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/EyeType.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/EyeType.cs
index 70b6e31c5..0d385c451 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/EyeType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/EyeType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum EyeType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/EyebrowType.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/EyebrowType.cs
index 3790128a8..1c9f3436f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/EyebrowType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/EyebrowType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum EyebrowType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineColor.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineColor.cs
index 4571168f1..dc432eacf 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineColor.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineColor.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum FacelineColor : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineMake.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineMake.cs
index acd94ca2e..fdd7160e8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineMake.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineMake.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum FacelineMake : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineType.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineType.cs
index 29d14a126..82d87dd40 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum FacelineType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineWrinkle.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineWrinkle.cs
index 1a144748b..6b45e27ac 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineWrinkle.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/FacelineWrinkle.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum FacelineWrinkle : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/FontRegion.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/FontRegion.cs
index c981a5ede..b10a5d736 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/FontRegion.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/FontRegion.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum FontRegion : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Gender.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Gender.cs
index c120c7581..b7833cb52 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Gender.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Gender.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum Gender : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/GlassType.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/GlassType.cs
index e2b6e6f5b..3bf28dc51 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/GlassType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/GlassType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum GlassType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/HairFlip.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/HairFlip.cs
index dee42e0d1..4e719e15c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/HairFlip.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/HairFlip.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum HairFlip : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/HairType.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/HairType.cs
index a3e183961..37b7f6bc9 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/HairType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/HairType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum HairType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/IElement.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/IElement.cs
index 94c65b23b..0f604e89d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/IElement.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/IElement.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
interface IElement
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/IStoredData.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/IStoredData.cs
index a6552a57c..804e0343d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/IStoredData.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/IStoredData.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/MoleType.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/MoleType.cs
index 7ed274d2a..6aa9517c2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/MoleType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/MoleType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum MoleType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/MouthType.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/MouthType.cs
index 69236bd42..89447b081 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/MouthType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/MouthType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum MouthType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/MustacheType.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/MustacheType.cs
index 7b0255f20..6f13c1a69 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/MustacheType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/MustacheType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum MustacheType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Nickname.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Nickname.cs
index 6665ca6d4..4cebfe55d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Nickname.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Nickname.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
using System.Runtime.InteropServices;
using System.Text;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/NintendoFigurineDatabase.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/NintendoFigurineDatabase.cs
index 1e36788e7..5865fb11a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/NintendoFigurineDatabase.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/NintendoFigurineDatabase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/NoseType.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/NoseType.cs
index 3144b132a..00f0ed12b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/NoseType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/NoseType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum NoseType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Race.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Race.cs
index 5f304a4e8..953858b30 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Race.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Race.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum Race : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/RandomMiiConstants.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/RandomMiiConstants.cs
index ab08247b4..092733f7e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/RandomMiiConstants.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/RandomMiiConstants.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Source.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Source.cs
index f4d2b8cb9..0980564fa 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Source.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Source.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Mii.Types
+namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
enum Source
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/SourceFlag.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/SourceFlag.cs
index c04eb0437..7f6ddf471 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/SourceFlag.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/SourceFlag.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/SpecialMiiKeyCode.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/SpecialMiiKeyCode.cs
index be2433ddf..efa83605d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/SpecialMiiKeyCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/SpecialMiiKeyCode.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/StoreData.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/StoreData.cs
index 178b48318..44054e6b8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/StoreData.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/StoreData.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/StoreDataElement.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/StoreDataElement.cs
index 2008c1ffa..629c76f59 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/StoreDataElement.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/StoreDataElement.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Mii.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Ver3StoreData.cs b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Ver3StoreData.cs
index 1c7db8e66..3930b3312 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/Types/Ver3StoreData.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/Types/Ver3StoreData.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Common.Utilities;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mii/UtilityImpl.cs b/src/Ryujinx.HLE/HOS/Services/Mii/UtilityImpl.cs
index 30b201f65..32dbb4946 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mii/UtilityImpl.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mii/UtilityImpl.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Services.Mii.Types;
using Ryujinx.HLE.HOS.Services.Time;
diff --git a/src/Ryujinx.HLE/HOS/Services/Mnpp/IServiceForApplication.cs b/src/Ryujinx.HLE/HOS/Services/Mnpp/IServiceForApplication.cs
index 7c20579be..8cdab6419 100644
--- a/src/Ryujinx.HLE/HOS/Services/Mnpp/IServiceForApplication.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Mnpp/IServiceForApplication.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Services.Account.Acc;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ncm/IContentManager.cs b/src/Ryujinx.HLE/HOS/Services/Ncm/IContentManager.cs
index cf0d41494..7c3cc4cbb 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ncm/IContentManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ncm/IContentManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ncm
+namespace Ryujinx.HLE.HOS.Services.Ncm
{
[Service("ncm")]
class IContentManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/ILocationResolverManager.cs b/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/ILocationResolverManager.cs
index f59216786..35e311c4d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/ILocationResolverManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/ILocationResolverManager.cs
@@ -1,4 +1,4 @@
-using LibHac.Ncm;
+using LibHac.Ncm;
using Ryujinx.HLE.HOS.Services.Ncm.Lr.LocationResolverManager;
namespace Ryujinx.HLE.HOS.Services.Ncm.Lr
diff --git a/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/LocationResolverManager/ILocationResolver.cs b/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/LocationResolverManager/ILocationResolver.cs
index f5a0c665c..71ed56385 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/LocationResolverManager/ILocationResolver.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/LocationResolverManager/ILocationResolver.cs
@@ -1,4 +1,4 @@
-using LibHac.Ncm;
+using LibHac.Ncm;
using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.HLE.FileSystem;
using System.Text;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/ResultCode.cs
index 3a027fd04..66b9217e3 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ncm/Lr/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ncm.Lr
+namespace Ryujinx.HLE.HOS.Services.Ncm.Lr
{
enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/News/IServiceCreator.cs b/src/Ryujinx.HLE/HOS/Services/News/IServiceCreator.cs
index 5d33e1a2b..3d14629ca 100644
--- a/src/Ryujinx.HLE/HOS/Services/News/IServiceCreator.cs
+++ b/src/Ryujinx.HLE/HOS/Services/News/IServiceCreator.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.News
+namespace Ryujinx.HLE.HOS.Services.News
{
[Service("news:a")]
[Service("news:c")]
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/IAmManager.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/IAmManager.cs
index 142c4da48..770d423fd 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/IAmManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/IAmManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nfc
+namespace Ryujinx.HLE.HOS.Services.Nfc
{
[Service("nfc:am")]
class IAmManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/ISystemManager.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/ISystemManager.cs
index 50453117d..be23d2cdc 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/ISystemManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/ISystemManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nfc.NfcManager;
+using Ryujinx.HLE.HOS.Services.Nfc.NfcManager;
namespace Ryujinx.HLE.HOS.Services.Nfc
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/IUserManager.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/IUserManager.cs
index 69c3bd191..5b8afce79 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/IUserManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/IUserManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nfc.NfcManager;
+using Ryujinx.HLE.HOS.Services.Nfc.NfcManager;
namespace Ryujinx.HLE.HOS.Services.Nfc
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Mifare/IUserManager.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Mifare/IUserManager.cs
index 2c5aaa2e9..295c7e71a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Mifare/IUserManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Mifare/IUserManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nfc.Mifare
+namespace Ryujinx.HLE.HOS.Services.Nfc.Mifare
{
[Service("nfc:mf:u")]
class IUserManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/NfcManager/INfc.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/NfcManager/INfc.cs
index dac0c4c33..72027cf48 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/NfcManager/INfc.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/NfcManager/INfc.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
namespace Ryujinx.HLE.HOS.Services.Nfc.NfcManager
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/NfcManager/Types/NfcPermissionLevel.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/NfcManager/Types/NfcPermissionLevel.cs
index 37a78dfd3..11ed5678f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/NfcManager/Types/NfcPermissionLevel.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/NfcManager/Types/NfcPermissionLevel.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nfc.NfcManager
+namespace Ryujinx.HLE.HOS.Services.Nfc.NfcManager
{
enum NfcPermissionLevel
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/AmiiboJsonSerializerContext.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/AmiiboJsonSerializerContext.cs
index d48671126..94dde5b88 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/AmiiboJsonSerializerContext.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/AmiiboJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager;
+using Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager;
using System.Text.Json.Serialization;
namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/IDebugManager.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/IDebugManager.cs
index 8196f42d1..b3eff0c2d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/IDebugManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/IDebugManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager;
+using Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager;
namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/ISystemManager.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/ISystemManager.cs
index d5933a4ce..4cb541a6c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/ISystemManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/ISystemManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager;
+using Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager;
namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/IUserManager.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/IUserManager.cs
index fa80e9b86..229386c01 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/IUserManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/IUserManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager;
+using Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager;
namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs
index 9dc75cd2c..20f67a4ef 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/INfp.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Cpu;
using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Ipc;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/AmiiboConstants.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/AmiiboConstants.cs
index a5d420cb1..9139ab0b2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/AmiiboConstants.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/AmiiboConstants.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
+namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
{
static class AmiiboConstants
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/CommonInfo.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/CommonInfo.cs
index ba953125e..80bf4077c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/CommonInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/CommonInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/DeviceType.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/DeviceType.cs
index 17b09eb78..f75c2f168 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/DeviceType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/DeviceType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
+namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
{
enum DeviceType : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/ModelInfo.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/ModelInfo.cs
index 48aba269d..cddd87070 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/ModelInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/ModelInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/MountTarget.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/MountTarget.cs
index d71d7eea8..8e5da97b4 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/MountTarget.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/MountTarget.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
+namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
{
enum MountTarget : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpDevice.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpDevice.cs
index 82602837a..3320238a8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpDevice.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpDevice.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Threading;
+using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.HLE.HOS.Services.Hid;
namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpDeviceState.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpDeviceState.cs
index d0e0c8baa..9e92e8484 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpDeviceState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpDeviceState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
+namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
{
enum NfpDeviceState
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpPermissionLevel.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpPermissionLevel.cs
index 972f0af34..9c440c45b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpPermissionLevel.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/NfpPermissionLevel.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
+namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
{
enum NfpPermissionLevel
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/RegisterInfo.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/RegisterInfo.cs
index 28d8fae20..424b0193e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/RegisterInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/RegisterInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Services.Mii.Types;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/State.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/State.cs
index ca7faf042..71a85b44d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/State.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/State.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
+namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
{
enum State
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/TagInfo.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/TagInfo.cs
index 903743f13..d6d206005 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/TagInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/TagInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/VirtualAmiiboFile.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/VirtualAmiiboFile.cs
index 51e04dcac..65d380979 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/VirtualAmiiboFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/NfpManager/Types/VirtualAmiiboFile.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/ResultCode.cs
index 233877073..92184fb40 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
+namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
{
public enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/VirtualAmiibo.cs b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/VirtualAmiibo.cs
index 3d1426530..ba4a81e0e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/VirtualAmiibo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nfc/Nfp/VirtualAmiibo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration;
+using Ryujinx.Common.Configuration;
using Ryujinx.Common.Memory;
using Ryujinx.Common.Utilities;
using Ryujinx.Cpu;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ngct/IService.cs b/src/Ryujinx.HLE/HOS/Services/Ngct/IService.cs
index 802be7514..d9ca70047 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ngct/IService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ngct/IService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ngct
+namespace Ryujinx.HLE.HOS.Services.Ngct
{
[Service("ngct:u")] // 9.0.0+
class IService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ngct/IServiceWithManagementApi.cs b/src/Ryujinx.HLE/HOS/Services/Ngct/IServiceWithManagementApi.cs
index 7ef998359..88995335c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ngct/IServiceWithManagementApi.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ngct/IServiceWithManagementApi.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ngct
+namespace Ryujinx.HLE.HOS.Services.Ngct
{
[Service("ngct:s")] // 9.0.0+
class IServiceWithManagementApi : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ngct/NgctServer.cs b/src/Ryujinx.HLE/HOS/Services/Ngct/NgctServer.cs
index ae00842d7..f652ecda8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ngct/NgctServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ngct/NgctServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using System.Text;
namespace Ryujinx.HLE.HOS.Services.Ngct
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/GeneralService/GeneralServiceManager.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/GeneralService/GeneralServiceManager.cs
index 5f26f2114..16eefc87d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/GeneralService/GeneralServiceManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/GeneralService/GeneralServiceManager.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.GeneralService
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/GeneralService/Types/GeneralServiceDetail.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/GeneralService/Types/GeneralServiceDetail.cs
index fab158515..73853a830 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/GeneralService/Types/GeneralServiceDetail.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/GeneralService/Types/GeneralServiceDetail.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.GeneralService
+namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.GeneralService
{
class GeneralServiceDetail
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/DnsSetting.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/DnsSetting.cs
index 4a9d782db..af80db480 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/DnsSetting.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/DnsSetting.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionState.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionState.cs
index 8c9efa61e..ba8efd198 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.Types
+namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.Types
{
enum InternetConnectionState : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionStatus.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionStatus.cs
index 1bf41fc6b..fa780fd2e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionStatus.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionStatus.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionType.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionType.cs
index ab03382d4..4917b8f8b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/InternetConnectionType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.Types
+namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.Types
{
enum InternetConnectionType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpAddressSetting.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpAddressSetting.cs
index 5ea9d849c..4fa674de9 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpAddressSetting.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpAddressSetting.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpSettingData.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpSettingData.cs
index 328dc7da6..c966999b5 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpSettingData.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpSettingData.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpV4Address.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpV4Address.cs
index e5c2f39ac..9d902a1ad 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpV4Address.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpV4Address.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Net;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/NetworkProfileData.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/NetworkProfileData.cs
index 12a1c30fa..fe69fef1b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/NetworkProfileData.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/NetworkProfileData.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/ProxySetting.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/ProxySetting.cs
index 909138e80..4d872d343 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/ProxySetting.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/ProxySetting.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Common.Utilities;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/WirelessSettingData.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/WirelessSettingData.cs
index 53855a4ef..4bbc69ec7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/WirelessSettingData.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/WirelessSettingData.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Nim/INetworkInstallManager.cs b/src/Ryujinx.HLE/HOS/Services/Nim/INetworkInstallManager.cs
index 7ed1ffa62..4e62b97bd 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nim/INetworkInstallManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nim/INetworkInstallManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nim
+namespace Ryujinx.HLE.HOS.Services.Nim
{
[Service("nim")]
class INetworkInstallManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessServer.cs b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessServer.cs
index 29a47baf6..4deecc531 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Nim.ShopServiceAccessServerInterface.ShopServiceAccessServer;
namespace Ryujinx.HLE.HOS.Services.Nim.ShopServiceAccessServerInterface
diff --git a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessServerInterface.cs b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessServerInterface.cs
index 847a432e9..52412489a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessServerInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessServerInterface.cs
@@ -1,4 +1,4 @@
-using LibHac.Ncm;
+using LibHac.Ncm;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Arp;
using Ryujinx.HLE.HOS.Services.Nim.ShopServiceAccessServerInterface;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessSystemInterface.cs b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessSystemInterface.cs
index a57677aed..dfec2efd2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessSystemInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessSystemInterface.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nim
+namespace Ryujinx.HLE.HOS.Services.Nim
{
[Service("nim:ecas")] // 7.0.0+
class IShopServiceAccessSystemInterface : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessor.cs b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessor.cs
index 4d3002cc1..c1f58a076 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessor.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.HLE.HOS.Services.Nim.ShopServiceAccessServerInterface.ShopServiceAccessServer.ShopServiceAccessor;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAsync.cs b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAsync.cs
index 150d48d4d..225b9a704 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAsync.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAsync.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nim.ShopServiceAccessServerInterface.ShopServiceAccessServer.ShopServiceAccessor
+namespace Ryujinx.HLE.HOS.Services.Nim.ShopServiceAccessServerInterface.ShopServiceAccessServer.ShopServiceAccessor
{
class IShopServiceAsync : IpcService
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceManager.cs b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceManager.cs
index b5a2f6b55..8f2e0703a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nim
+namespace Ryujinx.HLE.HOS.Services.Nim
{
[Service("nim:shp")]
class IShopServiceManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Nim/Ntc/IStaticService.cs b/src/Ryujinx.HLE/HOS/Services/Nim/Ntc/IStaticService.cs
index 2b078be7d..ed6e4472e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nim/Ntc/IStaticService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nim/Ntc/IStaticService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Nim.Ntc.StaticService;
namespace Ryujinx.HLE.HOS.Services.Nim.Ntc
diff --git a/src/Ryujinx.HLE/HOS/Services/Nim/Ntc/StaticService/IEnsureNetworkClockAvailabilityService.cs b/src/Ryujinx.HLE/HOS/Services/Nim/Ntc/StaticService/IEnsureNetworkClockAvailabilityService.cs
index 9fee7b1ac..2bd6f4f0d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nim/Ntc/StaticService/IEnsureNetworkClockAvailabilityService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nim/Ntc/StaticService/IEnsureNetworkClockAvailabilityService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.Horizon.Common;
diff --git a/src/Ryujinx.HLE/HOS/Services/Notification/INotificationServicesForApplication.cs b/src/Ryujinx.HLE/HOS/Services/Notification/INotificationServicesForApplication.cs
index 0d77dd6e6..29f8bfa85 100644
--- a/src/Ryujinx.HLE/HOS/Services/Notification/INotificationServicesForApplication.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Notification/INotificationServicesForApplication.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Notification
+namespace Ryujinx.HLE.HOS.Services.Notification
{
[Service("notif:a")] // 9.0.0+
class INotificationServicesForApplication : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Notification/INotificationServicesForSystem.cs b/src/Ryujinx.HLE/HOS/Services/Notification/INotificationServicesForSystem.cs
index 8dc1dac3b..c5946be84 100644
--- a/src/Ryujinx.HLE/HOS/Services/Notification/INotificationServicesForSystem.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Notification/INotificationServicesForSystem.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Notification
+namespace Ryujinx.HLE.HOS.Services.Notification
{
[Service("notif:s")] // 9.0.0+
class INotificationServicesForSystem : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Npns/INpnsSystem.cs b/src/Ryujinx.HLE/HOS/Services/Npns/INpnsSystem.cs
index 53c5b5392..dc707e6f7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Npns/INpnsSystem.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Npns/INpnsSystem.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Npns
+namespace Ryujinx.HLE.HOS.Services.Npns
{
[Service("npns:s")]
class INpnsSystem : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Npns/INpnsUser.cs b/src/Ryujinx.HLE/HOS/Services/Npns/INpnsUser.cs
index cfa25255a..9a794709e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Npns/INpnsUser.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Npns/INpnsUser.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Npns
+namespace Ryujinx.HLE.HOS.Services.Npns
{
[Service("npns:u")]
class INpnsUser : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ns/IApplicationManagerInterface.cs b/src/Ryujinx.HLE/HOS/Services/Ns/IApplicationManagerInterface.cs
index a8a2a8e0c..f510da594 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ns/IApplicationManagerInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ns/IApplicationManagerInterface.cs
@@ -1,4 +1,4 @@
-using LibHac.Ns;
+using LibHac.Ns;
using Ryujinx.Common.Utilities;
namespace Ryujinx.HLE.HOS.Services.Ns
diff --git a/src/Ryujinx.HLE/HOS/Services/Ns/IReadOnlyApplicationControlDataInterface.cs b/src/Ryujinx.HLE/HOS/Services/Ns/IReadOnlyApplicationControlDataInterface.cs
index 8327d6195..ca7d42b48 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ns/IReadOnlyApplicationControlDataInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ns/IReadOnlyApplicationControlDataInterface.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using LibHac.Ns;
namespace Ryujinx.HLE.HOS.Services.Ns
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/INvDrvDebugFSServices.cs b/src/Ryujinx.HLE/HOS/Services/Nv/INvDrvDebugFSServices.cs
index 22d0aacc5..a00de31ed 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/INvDrvDebugFSServices.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/INvDrvDebugFSServices.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nv
+namespace Ryujinx.HLE.HOS.Services.Nv
{
[Service("nvdrvdbg")]
class INvDrvDebugFSServices : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/INvGemControl.cs b/src/Ryujinx.HLE/HOS/Services/Nv/INvGemControl.cs
index 2134c026e..9cb2c7e3e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/INvGemControl.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/INvGemControl.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nv
+namespace Ryujinx.HLE.HOS.Services.Nv
{
[Service("nvgem:c")]
class INvGemControl : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/INvGemCoreDump.cs b/src/Ryujinx.HLE/HOS/Services/Nv/INvGemCoreDump.cs
index ecbbe2226..e79e59008 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/INvGemCoreDump.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/INvGemCoreDump.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nv
+namespace Ryujinx.HLE.HOS.Services.Nv
{
[Service("nvgem:cd")]
class INvGemCoreDump : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvDeviceFile.cs
index 3eaf8a91b..ef0bac452 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvDeviceFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvDeviceFile.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using System;
using System.Diagnostics;
using System.Reflection;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs
index db460429d..03c4ed860 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types;
using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AddressSpaceContext.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AddressSpaceContext.cs
index 36aa10f34..9dd52e6da 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AddressSpaceContext.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AddressSpaceContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu.Memory;
+using Ryujinx.Graphics.Gpu.Memory;
using System.Collections.Generic;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AddressSpaceFlags.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AddressSpaceFlags.cs
index 0627d56f5..0d0ae4ca2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AddressSpaceFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AddressSpaceFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AllocSpaceArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AllocSpaceArguments.cs
index c9d7724e8..231fa7c13 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AllocSpaceArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/AllocSpaceArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/BindChannelArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/BindChannelArguments.cs
index 9c6568a3f..51fac8d8f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/BindChannelArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/BindChannelArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/FreeSpaceArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/FreeSpaceArguments.cs
index 56e9028e5..f14b751d4 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/FreeSpaceArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/FreeSpaceArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/GetVaRegionsArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/GetVaRegionsArguments.cs
index dcb5b49ef..447477823 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/GetVaRegionsArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/GetVaRegionsArguments.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/InitializeExArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/InitializeExArguments.cs
index 34b80bd31..e86932bb0 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/InitializeExArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/InitializeExArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/MapBufferExArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/MapBufferExArguments.cs
index fdeff9f8b..c0f6d40ee 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/MapBufferExArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/MapBufferExArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/RemapArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/RemapArguments.cs
index 1fb224ff0..99afa4bad 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/RemapArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/RemapArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/UnmapBufferArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/UnmapBufferArguments.cs
index 46a9659d5..d6bc1bc52 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/UnmapBufferArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/Types/UnmapBufferArguments.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
+namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu.Types
{
struct UnmapBufferArguments
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostChannelDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostChannelDeviceFile.cs
index bd2c5e4d0..53db5eca4 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostChannelDeviceFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostChannelDeviceFile.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Gpu;
using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostGpuDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostGpuDeviceFile.cs
index 5a1d1a68d..34663e9d7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostGpuDeviceFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostGpuDeviceFile.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Threading;
+using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types;
using Ryujinx.Horizon.Common;
using Ryujinx.Memory;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/AllocGpfifoExArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/AllocGpfifoExArguments.cs
index 37577a5f3..9a06fbebd 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/AllocGpfifoExArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/AllocGpfifoExArguments.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nv.Types;
+using Ryujinx.HLE.HOS.Services.Nv.Types;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/AllocObjCtxArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/AllocObjCtxArguments.cs
index 1ffbb68fc..4578ec6a9 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/AllocObjCtxArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/AllocObjCtxArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/GetParameterArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/GetParameterArguments.cs
index 425e665f4..5e74f6f2c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/GetParameterArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/GetParameterArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/MapCommandBufferArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/MapCommandBufferArguments.cs
index 0777e6461..88cd6bd94 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/MapCommandBufferArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/MapCommandBufferArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/NvChannelPriority.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/NvChannelPriority.cs
index c267e2df9..ca9a791b4 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/NvChannelPriority.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/NvChannelPriority.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel
+namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel
{
enum NvChannelPriority : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SetErrorNotifierArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SetErrorNotifierArguments.cs
index 7e5a5e961..f285123a7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SetErrorNotifierArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SetErrorNotifierArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitArguments.cs
index 05c4280c2..0c4ea7625 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitGpfifoArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitGpfifoArguments.cs
index 1bb08da1b..b6bd1e4e8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitGpfifoArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitGpfifoArguments.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nv.Types;
+using Ryujinx.HLE.HOS.Services.Nv.Types;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitGpfifoFlags.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitGpfifoFlags.cs
index 1f0609804..23ead4739 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitGpfifoFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/SubmitGpfifoFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/ZcullBindArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/ZcullBindArguments.cs
index 71b124667..fe4c74d66 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/ZcullBindArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/Types/ZcullBindArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/NvHostCtrlDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/NvHostCtrlDeviceFile.cs
index 6142611e5..471bca73c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/NvHostCtrlDeviceFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/NvHostCtrlDeviceFile.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Gpu.Synchronization;
using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrl.Types;
using Ryujinx.HLE.HOS.Services.Nv.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/EventWaitArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/EventWaitArguments.cs
index 84f678bab..0b2133a78 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/EventWaitArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/EventWaitArguments.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nv.Types;
+using Ryujinx.HLE.HOS.Services.Nv.Types;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrl.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/GetConfigurationArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/GetConfigurationArguments.cs
index a1400f8ef..c94bb4ff1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/GetConfigurationArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/GetConfigurationArguments.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Text;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrl.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/SyncptWaitArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/SyncptWaitArguments.cs
index b0efb7eda..5138db9ea 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/SyncptWaitArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/SyncptWaitArguments.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nv.Types;
+using Ryujinx.HLE.HOS.Services.Nv.Types;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrl.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/SyncptWaitExArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/SyncptWaitExArguments.cs
index 7471274ba..7bcd38c75 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/SyncptWaitExArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrl/Types/SyncptWaitExArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrl.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/NvHostCtrlGpuDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/NvHostCtrlGpuDeviceFile.cs
index 23cf1f002..d287c6d9e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/NvHostCtrlGpuDeviceFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/NvHostCtrlGpuDeviceFile.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types;
using Ryujinx.Horizon.Common;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetActiveSlotMaskArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetActiveSlotMaskArguments.cs
index fd73be9e7..4f447f486 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetActiveSlotMaskArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetActiveSlotMaskArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetCharacteristicsArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetCharacteristicsArguments.cs
index 64bfbe88d..556786de0 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetCharacteristicsArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetCharacteristicsArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetGpuTimeArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetGpuTimeArguments.cs
index 084ef71fb..c1c1a6f91 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetGpuTimeArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetGpuTimeArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetTpcMasksArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetTpcMasksArguments.cs
index dafde6e55..83ff4f090 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetTpcMasksArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/GetTpcMasksArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZbcSetTableArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZbcSetTableArguments.cs
index 93c264332..cee339bac 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZbcSetTableArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZbcSetTableArguments.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZcullGetCtxSizeArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZcullGetCtxSizeArguments.cs
index 1e668f867..16ffacdac 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZcullGetCtxSizeArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZcullGetCtxSizeArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZcullGetInfoArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZcullGetInfoArguments.cs
index d0d152a3d..343643abf 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZcullGetInfoArguments.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/ZcullGetInfoArguments.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostDbgGpu/NvHostDbgGpuDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostDbgGpu/NvHostDbgGpuDeviceFile.cs
index 667915787..44f01f8ad 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostDbgGpu/NvHostDbgGpuDeviceFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostDbgGpu/NvHostDbgGpuDeviceFile.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory;
+using Ryujinx.Memory;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostDbgGpu
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostProfGpu/NvHostProfGpuDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostProfGpu/NvHostProfGpuDeviceFile.cs
index 0a2087edc..db4112af2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostProfGpu/NvHostProfGpuDeviceFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostProfGpu/NvHostProfGpuDeviceFile.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory;
+using Ryujinx.Memory;
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostProfGpu
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvInternalResult.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvInternalResult.cs
index c7746a556..c100c817b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvInternalResult.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvInternalResult.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices
+namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices
{
enum NvInternalResult
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvMap/NvMapDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvMap/NvMapDeviceFile.cs
index 06df5f93c..abe0a4de8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvMap/NvMapDeviceFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvMap/NvMapDeviceFile.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Memory;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvIoctl.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvIoctl.cs
index c9218e677..40e35fa7a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvIoctl.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvIoctl.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvMemoryAllocator.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvMemoryAllocator.cs
index 66c953a2d..4e8193302 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvMemoryAllocator.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvMemoryAllocator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Collections;
+using Ryujinx.Common.Collections;
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Gpu.Memory;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvFence.cs b/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvFence.cs
index 5af613cd6..214987e96 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvFence.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvFence.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu;
+using Ryujinx.Graphics.Gpu;
using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrl;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvIoctlNotImplementedException.cs b/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvIoctlNotImplementedException.cs
index 7af7e5337..e05e32aad 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvIoctlNotImplementedException.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvIoctlNotImplementedException.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices;
+using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices;
using System;
using System.Text;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvQueryEventNotImplementedException.cs b/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvQueryEventNotImplementedException.cs
index 844bce135..f9e826fc7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvQueryEventNotImplementedException.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvQueryEventNotImplementedException.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices;
+using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices;
using System;
using System.Text;
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvStatus.cs b/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvStatus.cs
index ad4f70354..645a8433a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvStatus.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/Types/NvStatus.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Nv.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs b/src/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs
index 073e9b1b9..1513d6fed 100644
--- a/src/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForApplication.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Account.Acc;
using System.Collections.Generic;
diff --git a/src/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForSystemService.cs b/src/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForSystemService.cs
index 27ac6b9cf..c6e372052 100644
--- a/src/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForSystemService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Olsc/IOlscServiceForSystemService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Olsc
+namespace Ryujinx.HLE.HOS.Services.Olsc
{
[Service("olsc:s")] // 4.0.0+
class IOlscServiceForSystemService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcie/ILogManager.cs b/src/Ryujinx.HLE/HOS/Services/Pcie/ILogManager.cs
index 78f927aa4..4812727b1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcie/ILogManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcie/ILogManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pcie
+namespace Ryujinx.HLE.HOS.Services.Pcie
{
[Service("pcie:log")]
class ILogManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcie/IManager.cs b/src/Ryujinx.HLE/HOS/Services/Pcie/IManager.cs
index 0450a1ca4..42e480355 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcie/IManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcie/IManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pcie
+namespace Ryujinx.HLE.HOS.Services.Pcie
{
[Service("pcie")]
class IManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Pctl/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Pctl/ResultCode.cs
index 86ff88142..c3d157ed4 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pctl/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pctl/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pctl
+namespace Ryujinx.HLE.HOS.Services.Pctl
{
enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcv/Bpc/IBoardPowerControlManager.cs b/src/Ryujinx.HLE/HOS/Services/Pcv/Bpc/IBoardPowerControlManager.cs
index e078de39a..26fd86908 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcv/Bpc/IBoardPowerControlManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcv/Bpc/IBoardPowerControlManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pcv.Bpc
+namespace Ryujinx.HLE.HOS.Services.Pcv.Bpc
{
[Service("bpc")]
class IBoardPowerControlManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcv/Bpc/IRtcManager.cs b/src/Ryujinx.HLE/HOS/Services/Pcv/Bpc/IRtcManager.cs
index e185c4787..c37176845 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcv/Bpc/IRtcManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcv/Bpc/IRtcManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Pcv.Bpc
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/ClkrstManager/IClkrstSession.cs b/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/ClkrstManager/IClkrstSession.cs
index a3ca56bf2..ddc4e5c7d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/ClkrstManager/IClkrstSession.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/ClkrstManager/IClkrstSession.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Pcv.Types;
using System.Linq;
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/IArbitrationManager.cs b/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/IArbitrationManager.cs
index 492ffa57a..4c7e33003 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/IArbitrationManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/IArbitrationManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pcv.Clkrst
+namespace Ryujinx.HLE.HOS.Services.Pcv.Clkrst
{
[Service("clkrst:a")] // 8.0.0+
class IArbitrationManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/IClkrstManager.cs b/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/IClkrstManager.cs
index 2e18dba74..c7c459196 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/IClkrstManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcv/Clkrst/IClkrstManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Ipc;
+using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Services.Pcv.Clkrst.ClkrstManager;
using Ryujinx.HLE.HOS.Services.Pcv.Types;
using Ryujinx.Horizon.Common;
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcv/IPcvService.cs b/src/Ryujinx.HLE/HOS/Services/Pcv/IPcvService.cs
index 5fd8493c9..d25a71b86 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcv/IPcvService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcv/IPcvService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pcv
+namespace Ryujinx.HLE.HOS.Services.Pcv
{
[Service("pcv")]
class IPcvService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcv/Rgltr/IRegulatorManager.cs b/src/Ryujinx.HLE/HOS/Services/Pcv/Rgltr/IRegulatorManager.cs
index 9a7d8a098..5a290e42c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcv/Rgltr/IRegulatorManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcv/Rgltr/IRegulatorManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pcv.Rgltr
+namespace Ryujinx.HLE.HOS.Services.Pcv.Rgltr
{
[Service("rgltr")] // 8.0.0+
class IRegulatorManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcv/Rtc/IRtcManager.cs b/src/Ryujinx.HLE/HOS/Services/Pcv/Rtc/IRtcManager.cs
index 6e255a1dd..460a7cc76 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcv/Rtc/IRtcManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcv/Rtc/IRtcManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pcv.Rtc
+namespace Ryujinx.HLE.HOS.Services.Pcv.Rtc
{
[Service("rtc")] // 8.0.0+
class IRtcManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Pcv/Types/DeviceCode.cs b/src/Ryujinx.HLE/HOS/Services/Pcv/Types/DeviceCode.cs
index 79f13dbdf..7aa95b21d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pcv/Types/DeviceCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pcv/Types/DeviceCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pcv.Types
+namespace Ryujinx.HLE.HOS.Services.Pcv.Types
{
enum DeviceCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Pm/IBootModeInterface.cs b/src/Ryujinx.HLE/HOS/Services/Pm/IBootModeInterface.cs
index 473f74135..1f1aafc16 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pm/IBootModeInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pm/IBootModeInterface.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pm
+namespace Ryujinx.HLE.HOS.Services.Pm
{
[Service("pm:bm")]
class IBootModeInterface : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Pm/IDebugMonitorInterface.cs b/src/Ryujinx.HLE/HOS/Services/Pm/IDebugMonitorInterface.cs
index 82190b047..9becc6e46 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pm/IDebugMonitorInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pm/IDebugMonitorInterface.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Ipc;
+using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel;
using Ryujinx.HLE.HOS.Kernel.Process;
using Ryujinx.Horizon.Common;
diff --git a/src/Ryujinx.HLE/HOS/Services/Pm/IInformationInterface.cs b/src/Ryujinx.HLE/HOS/Services/Pm/IInformationInterface.cs
index 500d121ea..d6440a4d1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pm/IInformationInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pm/IInformationInterface.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Process;
+using Ryujinx.HLE.HOS.Kernel.Process;
namespace Ryujinx.HLE.HOS.Services.Pm
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Pm/IShellInterface.cs b/src/Ryujinx.HLE/HOS/Services/Pm/IShellInterface.cs
index 962023264..1ee2c377f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Pm/IShellInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Pm/IShellInterface.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Pm
+namespace Ryujinx.HLE.HOS.Services.Pm
{
[Service("pm:shell")]
class IShellInterface : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ptm/Fan/IManager.cs b/src/Ryujinx.HLE/HOS/Services/Ptm/Fan/IManager.cs
index 8011f9193..4498fe0d7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ptm/Fan/IManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ptm/Fan/IManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ptm.Fan
+namespace Ryujinx.HLE.HOS.Services.Ptm.Fan
{
[Service("fan")]
class IManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ptm/Fgm/IDebugger.cs b/src/Ryujinx.HLE/HOS/Services/Ptm/Fgm/IDebugger.cs
index 8cb671bc3..a9ce42e74 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ptm/Fgm/IDebugger.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ptm/Fgm/IDebugger.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ptm.Fgm
+namespace Ryujinx.HLE.HOS.Services.Ptm.Fgm
{
[Service("fgm:dbg")] // 9.0.0+
class IDebugger : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ptm/Fgm/ISession.cs b/src/Ryujinx.HLE/HOS/Services/Ptm/Fgm/ISession.cs
index 1488c2886..6373ab2d2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ptm/Fgm/ISession.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ptm/Fgm/ISession.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ptm.Fgm
+namespace Ryujinx.HLE.HOS.Services.Ptm.Fgm
{
[Service("fgm")] // 9.0.0+
[Service("fgm:0")] // 9.0.0+
diff --git a/src/Ryujinx.HLE/HOS/Services/Ptm/Pcm/IManager.cs b/src/Ryujinx.HLE/HOS/Services/Ptm/Pcm/IManager.cs
index 53f3bc391..e05035ac2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ptm/Pcm/IManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ptm/Pcm/IManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ptm.Pcm
+namespace Ryujinx.HLE.HOS.Services.Ptm.Pcm
{
[Service("pcm")]
class IManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/IPsmServer.cs b/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/IPsmServer.cs
index 0c475150b..3ce502974 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/IPsmServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/IPsmServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
namespace Ryujinx.HLE.HOS.Services.Ptm.Psm
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/IPsmSession.cs b/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/IPsmSession.cs
index a603b7e41..edfa60afd 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/IPsmSession.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/IPsmSession.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.Horizon.Common;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/Types/ChargerType.cs b/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/Types/ChargerType.cs
index a0b0c3dd4..5b6ee42d2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/Types/ChargerType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ptm/Psm/Types/ChargerType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ptm.Psm
+namespace Ryujinx.HLE.HOS.Services.Ptm.Psm
{
enum ChargerType
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ptm/Tc/IManager.cs b/src/Ryujinx.HLE/HOS/Services/Ptm/Tc/IManager.cs
index 0317e532b..0342a15b5 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ptm/Tc/IManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ptm/Tc/IManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ptm.Tc
+namespace Ryujinx.HLE.HOS.Services.Ptm.Tc
{
[Service("tc")]
class IManager : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ptm/Ts/IMeasurementServer.cs b/src/Ryujinx.HLE/HOS/Services/Ptm/Ts/IMeasurementServer.cs
index 07a067688..66ffd0a49 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ptm/Ts/IMeasurementServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ptm/Ts/IMeasurementServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Ptm.Ts.Types;
namespace Ryujinx.HLE.HOS.Services.Ptm.Ts
diff --git a/src/Ryujinx.HLE/HOS/Services/Ptm/Ts/Types/Location.cs b/src/Ryujinx.HLE/HOS/Services/Ptm/Ts/Types/Location.cs
index c04db09ce..409188a97 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ptm/Ts/Types/Location.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ptm/Ts/Types/Location.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ptm.Ts.Types
+namespace Ryujinx.HLE.HOS.Services.Ptm.Ts.Types
{
enum Location : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ro/IRoInterface.cs b/src/Ryujinx.HLE/HOS/Services/Ro/IRoInterface.cs
index 3f31fe9f8..5b5b3bf84 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ro/IRoInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ro/IRoInterface.cs
@@ -1,4 +1,4 @@
-using LibHac.Tools.FsSystem;
+using LibHac.Tools.FsSystem;
using Ryujinx.Common;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Kernel.Memory;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ro/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Ro/ResultCode.cs
index 1e31e5760..911140342 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ro/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ro/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ro
+namespace Ryujinx.HLE.HOS.Services.Ro
{
enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ro/Types/NroInfo.cs b/src/Ryujinx.HLE/HOS/Services/Ro/Types/NroInfo.cs
index fd4947c6f..4df2793f1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ro/Types/NroInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ro/Types/NroInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Loaders.Executables;
+using Ryujinx.HLE.Loaders.Executables;
namespace Ryujinx.HLE.HOS.Services.Ro
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ro/Types/NrrInfo.cs b/src/Ryujinx.HLE/HOS/Services/Ro/Types/NrrInfo.cs
index b322c06ed..1f394d921 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ro/Types/NrrInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ro/Types/NrrInfo.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Ryujinx.HLE.HOS.Services.Ro
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sdb/Avm/IAvmService.cs b/src/Ryujinx.HLE/HOS/Services/Sdb/Avm/IAvmService.cs
index ec312108b..9c6ed5c37 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sdb/Avm/IAvmService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sdb/Avm/IAvmService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.Tcap
+namespace Ryujinx.HLE.HOS.Services.Am.Tcap
{
[Service("avm")] // 6.0.0+
class IAvmService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/INotifyService.cs b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/INotifyService.cs
index c2e042901..208847cc7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/INotifyService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/INotifyService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sdb.Pdm
+namespace Ryujinx.HLE.HOS.Services.Sdb.Pdm
{
[Service("pdm:ntfy")]
class INotifyService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/IQueryService.cs b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/IQueryService.cs
index c46050b85..6508794ab 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/IQueryService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/IQueryService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Sdb.Pdm.QueryService;
+using Ryujinx.HLE.HOS.Services.Sdb.Pdm.QueryService;
namespace Ryujinx.HLE.HOS.Services.Sdb.Pdm
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/QueryPlayStatisticsManager.cs b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/QueryPlayStatisticsManager.cs
index 7017cc50c..56d389cd2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/QueryPlayStatisticsManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/QueryPlayStatisticsManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Services.Account.Acc;
using Ryujinx.HLE.HOS.Services.Sdb.Pdm.QueryService.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/Types/ApplicationPlayStatistics.cs b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/Types/ApplicationPlayStatistics.cs
index b58fd2191..8bfb75c74 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/Types/ApplicationPlayStatistics.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/Types/ApplicationPlayStatistics.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Sdb.Pdm.QueryService.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/Types/PlayLogQueryCapability.cs b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/Types/PlayLogQueryCapability.cs
index c1e77ed3b..a4fd3ca92 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/Types/PlayLogQueryCapability.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/QueryService/Types/PlayLogQueryCapability.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sdb.Pdm.QueryService.Types
+namespace Ryujinx.HLE.HOS.Services.Sdb.Pdm.QueryService.Types
{
enum PlayLogQueryCapability
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/ResultCode.cs
index dd20220f2..85167227a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sdb/Pdm/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sdb.Pdm
+namespace Ryujinx.HLE.HOS.Services.Sdb.Pdm
{
enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/ServiceAttributes.cs b/src/Ryujinx.HLE/HOS/Services/ServiceAttributes.cs
index c625af487..112563eb8 100644
--- a/src/Ryujinx.HLE/HOS/Services/ServiceAttributes.cs
+++ b/src/Ryujinx.HLE/HOS/Services/ServiceAttributes.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Settings/IFactorySettingsServer.cs b/src/Ryujinx.HLE/HOS/Services/Settings/IFactorySettingsServer.cs
index 174a1c981..aceb28c1f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Settings/IFactorySettingsServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Settings/IFactorySettingsServer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Am.Tcap
+namespace Ryujinx.HLE.HOS.Services.Am.Tcap
{
[Service("set:cal")]
class IFactorySettingsServer : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Settings/IFirmwareDebugSettingsServer.cs b/src/Ryujinx.HLE/HOS/Services/Settings/IFirmwareDebugSettingsServer.cs
index 7368cf441..61e366dae 100644
--- a/src/Ryujinx.HLE/HOS/Services/Settings/IFirmwareDebugSettingsServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Settings/IFirmwareDebugSettingsServer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Settings
+namespace Ryujinx.HLE.HOS.Services.Settings
{
[Service("set:fd")]
class IFirmwareDebugSettingsServer : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Settings/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Settings/ResultCode.cs
index 9d4678091..e925361e9 100644
--- a/src/Ryujinx.HLE/HOS/Services/Settings/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Settings/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Settings
+namespace Ryujinx.HLE.HOS.Services.Settings
{
enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Settings/Types/PlatformRegion.cs b/src/Ryujinx.HLE/HOS/Services/Settings/Types/PlatformRegion.cs
index 3953c050c..9bddc4847 100644
--- a/src/Ryujinx.HLE/HOS/Services/Settings/Types/PlatformRegion.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Settings/Types/PlatformRegion.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Settings.Types
+namespace Ryujinx.HLE.HOS.Services.Settings.Types
{
enum PlatformRegion
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sm/IManagerInterface.cs b/src/Ryujinx.HLE/HOS/Services/Sm/IManagerInterface.cs
index 412a33246..5733a49b6 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sm/IManagerInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sm/IManagerInterface.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sm
+namespace Ryujinx.HLE.HOS.Services.Sm
{
[Service("sm:m")]
class IManagerInterface : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/BsdContext.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/BsdContext.cs
index 254ad6675..7ecd6835d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/BsdContext.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/BsdContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
+using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/IClient.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/IClient.cs
index d16e7536e..870a6b36c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/IClient.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/IClient.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl;
using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/IFileDescriptor.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/IFileDescriptor.cs
index dbeb90222..6c00d5e11 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/IFileDescriptor.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/IFileDescriptor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
+using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
using System;
namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/ISocket.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/ISocket.cs
index e04a35954..fe2f8477f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/ISocket.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/ISocket.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
+using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
using System;
using System.Net;
using System.Net.Sockets;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptor.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptor.cs
index 937d2fd70..5b9e6811d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptor.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
+using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
using System;
using System.Runtime.InteropServices;
using System.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptorPollManager.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptorPollManager.cs
index 9039d49a7..a29554c35 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptorPollManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptorPollManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
using System.Collections.Generic;
using System.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocket.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocket.cs
index 2d8fce1df..c42b7201b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocket.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocket.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocketPollManager.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocketPollManager.cs
index 10d9882c1..d0db44086 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocketPollManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocketPollManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
using System.Collections.Generic;
using System.Net.Sockets;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/WSAError.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/WSAError.cs
index 5f3495df5..cd8e530c7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/WSAError.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/WSAError.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/ServerInterface.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/ServerInterface.cs
index 9afdf2503..edf9d351b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/ServerInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/ServerInterface.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd
+namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd
{
[Service("bsdcfg")]
class ServerInterface : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdAddressFamily.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdAddressFamily.cs
index 747946386..6bc27ffbd 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdAddressFamily.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdAddressFamily.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
+namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
enum BsdAddressFamily : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdIoctl.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdIoctl.cs
index 9c330e35d..d38bd02b8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdIoctl.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdIoctl.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
+namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
enum BsdIoctl
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdMMsgHdr.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdMMsgHdr.cs
index f97b8f5be..75f869b6b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdMMsgHdr.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdMMsgHdr.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdMsgHdr.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdMsgHdr.cs
index 62a7ccb59..6b6617e21 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdMsgHdr.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdMsgHdr.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSockAddr.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSockAddr.cs
index af3a44e88..0dc76fc7e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSockAddr.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSockAddr.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
using System.Net;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketCreationFlags.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketCreationFlags.cs
index ac79deb31..0abd424ee 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketCreationFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketCreationFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketShutdownFlags.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketShutdownFlags.cs
index 883e3c31f..4a0478974 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketShutdownFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketShutdownFlags.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
+namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
enum BsdSocketShutdownFlags
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketType.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketType.cs
index b54c78863..2938ebe7e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/BsdSocketType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
+namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
enum BsdSocketType
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/EventFdFlags.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/EventFdFlags.cs
index 996facd35..c21a997bf 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/EventFdFlags.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/EventFdFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/IPollManager.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/IPollManager.cs
index 66b1bcf1b..f6f47dafa 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/IPollManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/IPollManager.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEvent.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEvent.cs
index 27a96bd81..b6fd3e324 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEvent.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEvent.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
+namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
class PollEvent
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEventData.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEventData.cs
index 16d01055c..3babb0018 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEventData.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEventData.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
+namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
struct PollEventData
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEventTypeMask.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEventTypeMask.cs
index d4c96c81f..da47d60a2 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEventTypeMask.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/PollEventTypeMask.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/TimeVal.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/TimeVal.cs
index 690a63aeb..bff30b049 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/TimeVal.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Types/TimeVal.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
+namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types
{
public struct TimeVal
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Ethc/IEthInterface.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Ethc/IEthInterface.cs
index 1c216ea58..f57662644 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Ethc/IEthInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Ethc/IEthInterface.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Ethc
+namespace Ryujinx.HLE.HOS.Services.Sockets.Ethc
{
[Service("ethc:c")]
class IEthInterface : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Ethc/IEthInterfaceGroup.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Ethc/IEthInterfaceGroup.cs
index 3147a8928..527b6dd04 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Ethc/IEthInterfaceGroup.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Ethc/IEthInterfaceGroup.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Ethc
+namespace Ryujinx.HLE.HOS.Services.Sockets.Ethc
{
[Service("ethc:i")]
class IEthInterfaceGroup : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/IManager.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/IManager.cs
index c991db3fb..0c1fa3a9f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/IManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/IManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Services.Settings;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Manager/FqdnResolver.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Manager/FqdnResolver.cs
index a8fbcf092..2ec0f744e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Manager/FqdnResolver.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Manager/FqdnResolver.cs
@@ -1,4 +1,4 @@
-using System.Text;
+using System.Text;
namespace Ryujinx.HLE.HOS.Services.Sockets.Nsd.Manager
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Types/ApplicationServerEnvironmentType.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Types/ApplicationServerEnvironmentType.cs
index 1acb69fce..bc10499ce 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Types/ApplicationServerEnvironmentType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Types/ApplicationServerEnvironmentType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Nsd.Types
+namespace Ryujinx.HLE.HOS.Services.Sockets.Nsd.Types
{
enum ApplicationServerEnvironmentType : byte
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Types/NsdSettings.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Types/NsdSettings.cs
index 08fb15e0a..8b37c9fc8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Types/NsdSettings.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Types/NsdSettings.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Nsd
+namespace Ryujinx.HLE.HOS.Services.Sockets.Nsd
{
class NsdSettings
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Proxy/DnsBlacklist.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Proxy/DnsBlacklist.cs
index a2ccd190e..608ea2f51 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Proxy/DnsBlacklist.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Proxy/DnsBlacklist.cs
@@ -1,4 +1,4 @@
-using System.Text.RegularExpressions;
+using System.Text.RegularExpressions;
namespace Ryujinx.HLE.HOS.Services.Sockets.Sfdnsres.Proxy
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfo4.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfo4.cs
index 68250022e..de839e3a0 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfo4.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfo4.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System;
using System.Net;
using System.Net.Sockets;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfoSerialized.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfoSerialized.cs
index b57b0d5ca..471c274ca 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfoSerialized.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfoSerialized.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.Utilities;
using System;
using System.Diagnostics;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfoSerializedHeader.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfoSerializedHeader.cs
index 9c50b1b86..8415382ae 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfoSerializedHeader.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/AddrInfoSerializedHeader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Net;
using System.Net.Sockets;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/GaiError.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/GaiError.cs
index 46682b3c8..81326c7f8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/GaiError.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/GaiError.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Sfdnsres
+namespace Ryujinx.HLE.HOS.Services.Sockets.Sfdnsres
{
enum GaiError
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/NetDBError.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/NetDBError.cs
index 0ded59603..8fc30261c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/NetDBError.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/NetDBError.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Sfdnsres
+namespace Ryujinx.HLE.HOS.Services.Sockets.Sfdnsres
{
enum NetDbError
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/SfdnsresContants.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/SfdnsresContants.cs
index 7c51413cf..8af70224f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/SfdnsresContants.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Types/SfdnsresContants.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Sockets.Sfdnsres.Types
+namespace Ryujinx.HLE.HOS.Services.Sockets.Sfdnsres.Types
{
class SfdnsresContants
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Spl/IGeneralInterface.cs b/src/Ryujinx.HLE/HOS/Services/Spl/IGeneralInterface.cs
index 951ed5301..4a2a910f8 100644
--- a/src/Ryujinx.HLE/HOS/Services/Spl/IGeneralInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Spl/IGeneralInterface.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.FileSystem;
+using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS.Kernel.Common;
using Ryujinx.HLE.HOS.Services.Spl.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Spl/IRandomInterface.cs b/src/Ryujinx.HLE/HOS/Services/Spl/IRandomInterface.cs
index 922fd34a6..fc58613f5 100644
--- a/src/Ryujinx.HLE/HOS/Services/Spl/IRandomInterface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Spl/IRandomInterface.cs
@@ -1,4 +1,4 @@
-using System.Security.Cryptography;
+using System.Security.Cryptography;
namespace Ryujinx.HLE.HOS.Services.Spl
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Spl/Types/ConfigItem.cs b/src/Ryujinx.HLE/HOS/Services/Spl/Types/ConfigItem.cs
index 6822ad134..ec5da24a5 100644
--- a/src/Ryujinx.HLE/HOS/Services/Spl/Types/ConfigItem.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Spl/Types/ConfigItem.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Spl.Types
+namespace Ryujinx.HLE.HOS.Services.Spl.Types
{
enum ConfigItem
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Spl/Types/DramId.cs b/src/Ryujinx.HLE/HOS/Services/Spl/Types/DramId.cs
index 05a465571..7a53ee112 100644
--- a/src/Ryujinx.HLE/HOS/Services/Spl/Types/DramId.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Spl/Types/DramId.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Spl.Types
+namespace Ryujinx.HLE.HOS.Services.Spl.Types
{
enum DramId
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Spl/Types/HardwareState.cs b/src/Ryujinx.HLE/HOS/Services/Spl/Types/HardwareState.cs
index 8ab0ba9b0..de37f591e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Spl/Types/HardwareState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Spl/Types/HardwareState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Spl.Types
+namespace Ryujinx.HLE.HOS.Services.Spl.Types
{
enum HardwareState
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Spl/Types/HardwareType.cs b/src/Ryujinx.HLE/HOS/Services/Spl/Types/HardwareType.cs
index 82d733308..2a1e0d8c5 100644
--- a/src/Ryujinx.HLE/HOS/Services/Spl/Types/HardwareType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Spl/Types/HardwareType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Spl.Types
+namespace Ryujinx.HLE.HOS.Services.Spl.Types
{
enum HardwareType
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Spl/Types/SmcResult.cs b/src/Ryujinx.HLE/HOS/Services/Spl/Types/SmcResult.cs
index ade0378c5..13bdeccc7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Spl/Types/SmcResult.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Spl/Types/SmcResult.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Spl.Types
+namespace Ryujinx.HLE.HOS.Services.Spl.Types
{
enum SmcResult
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs
index e31092fda..5d2e06a4f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/ResultCode.cs
index 6aae11feb..e23621d0a 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/ResultCode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ssl
+namespace Ryujinx.HLE.HOS.Services.Ssl
{
public enum ResultCode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/SslService/ISslConnectionBase.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/SslService/ISslConnectionBase.cs
index 500e2b896..93d85a262 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/SslService/ISslConnectionBase.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/SslService/ISslConnectionBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Sockets.Bsd;
+using Ryujinx.HLE.HOS.Services.Sockets.Bsd;
using System;
namespace Ryujinx.HLE.HOS.Services.Ssl.SslService
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/SslService/SslManagedSocketConnection.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/SslService/SslManagedSocketConnection.cs
index e3c05df51..4dd6367ed 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/SslService/SslManagedSocketConnection.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/SslService/SslManagedSocketConnection.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Sockets.Bsd;
+using Ryujinx.HLE.HOS.Services.Sockets.Bsd;
using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl;
using Ryujinx.HLE.HOS.Services.Ssl.Types;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/BuiltInCertificateInfo.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/BuiltInCertificateInfo.cs
index 313220e17..1d7029f7c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/BuiltInCertificateInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/BuiltInCertificateInfo.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ssl.Types
+namespace Ryujinx.HLE.HOS.Services.Ssl.Types
{
struct BuiltInCertificateInfo
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/CaCertificateId.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/CaCertificateId.cs
index a351ce545..2bf061717 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/CaCertificateId.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/CaCertificateId.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ssl.Types
+namespace Ryujinx.HLE.HOS.Services.Ssl.Types
{
enum CaCertificateId : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/CertificateFormat.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/CertificateFormat.cs
index 35842e85b..0b3d4c3bc 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/CertificateFormat.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/CertificateFormat.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ssl.Types
+namespace Ryujinx.HLE.HOS.Services.Ssl.Types
{
enum CertificateFormat : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/IoMode.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/IoMode.cs
index c8b3889c5..b42bccaa1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/IoMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/IoMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ssl.Types
+namespace Ryujinx.HLE.HOS.Services.Ssl.Types
{
enum IoMode : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/OptionType.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/OptionType.cs
index 85a813dca..8d0e0b573 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/OptionType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/OptionType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ssl.Types
+namespace Ryujinx.HLE.HOS.Services.Ssl.Types
{
enum OptionType : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/SessionCacheMode.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/SessionCacheMode.cs
index b9c739376..d2f236b00 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/SessionCacheMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/SessionCacheMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ssl.Types
+namespace Ryujinx.HLE.HOS.Services.Ssl.Types
{
enum SessionCacheMode : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/SslVersion.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/SslVersion.cs
index 7026596e5..2cbb0089f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/SslVersion.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/SslVersion.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Ssl.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/TrustedCertStatus.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/TrustedCertStatus.cs
index e9d348c12..b6f855f27 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/TrustedCertStatus.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/TrustedCertStatus.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Ssl.Types
+namespace Ryujinx.HLE.HOS.Services.Ssl.Types
{
enum TrustedCertStatus : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/VerifyOption.cs b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/VerifyOption.cs
index 1c13e80f3..215e72b0f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Ssl/Types/VerifyOption.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Ssl/Types/VerifyOption.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Ssl.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferItemConsumer.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferItemConsumer.cs
index 265962106..17045e4e9 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferItemConsumer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferItemConsumer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Graphics.Gpu;
+using Ryujinx.Graphics.Gpu;
using System;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueue.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueue.cs
index 347eb8fba..e95dcc69f 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueue.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueue.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
static class BufferQueue
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueConsumer.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueConsumer.cs
index 4cd45d691..74afa989d 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueConsumer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueConsumer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types;
using Ryujinx.HLE.HOS.Services.Time.Clock;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueCore.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueCore.cs
index f1d2f84b5..5dc02a07e 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueCore.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueCore.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueProducer.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueProducer.cs
index 55bfac84d..ae61d0bf7 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueProducer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferQueueProducer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.HLE.HOS.Services.Settings;
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferSlot.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferSlot.cs
index 4632053df..07d6ab7c6 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferSlot.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferSlot.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types;
+using Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types;
using Ryujinx.HLE.HOS.Services.Time.Clock;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferSlotArray.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferSlotArray.cs
index 5a6604f14..19c1bb4e4 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferSlotArray.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/BufferSlotArray.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
class BufferSlotArray
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/ConsumerBase.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/ConsumerBase.cs
index d63019972..f8ee84842 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/ConsumerBase.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/ConsumerBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types;
+using Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types;
using System;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/HOSBinderDriverServer.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/HOSBinderDriverServer.cs
index f89eaeeb6..bc7bffcb6 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/HOSBinderDriverServer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/HOSBinderDriverServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IBinder.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IBinder.cs
index 9690cd4a1..0fb2dfd2e 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IBinder.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IBinder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IConsumerListener.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IConsumerListener.cs
index 78f9c2e7e..34a02ca95 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IConsumerListener.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IConsumerListener.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
interface IConsumerListener
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IFlattenable.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IFlattenable.cs
index bfb76952b..7d7e7257c 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IFlattenable.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IFlattenable.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
interface IFlattenable
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IGraphicBufferProducer.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IGraphicBufferProducer.cs
index a70f7fe39..3c01b92fb 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IGraphicBufferProducer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IGraphicBufferProducer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IHOSBinderDriver.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IHOSBinderDriver.cs
index 3d44e23dc..7cb6763b8 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IHOSBinderDriver.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IHOSBinderDriver.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Threading;
using Ryujinx.Horizon.Common;
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IProducerListener.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IProducerListener.cs
index 43d2101ef..945d9d829 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IProducerListener.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/IProducerListener.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
interface IProducerListener
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowApi.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowApi.cs
index b565f3f60..45c352ab3 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowApi.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowApi.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
enum NativeWindowApi
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowAttribute.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowAttribute.cs
index 075f81369..d49942260 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowAttribute.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowAttribute.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
enum NativeWindowAttribute : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowScalingMode.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowScalingMode.cs
index 9b07e43bd..9f521ca2a 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowScalingMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowScalingMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
enum NativeWindowScalingMode : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowTransform.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowTransform.cs
index 1a0c7d13b..d568b7438 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowTransform.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/NativeWindowTransform.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs
index 431c2cadc..4ac0525ba 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Utilities;
using Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/ParcelHeader.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/ParcelHeader.cs
index 27068af27..1937204a6 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/ParcelHeader.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/ParcelHeader.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
struct ParcelHeader
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/PixelFormat.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/PixelFormat.cs
index c0ddea10b..8febb7fbe 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/PixelFormat.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/PixelFormat.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
enum PixelFormat : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Status.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Status.cs
index d328aee9b..14f80fa90 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Status.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Status.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/SurfaceFlinger.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/SurfaceFlinger.cs
index d3d9dc030..fd517b1ae 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/SurfaceFlinger.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/SurfaceFlinger.cs
@@ -1,5 +1,7 @@
-using Ryujinx.Common.Configuration;
+using Ryujinx.Common;
+using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
+using Ryujinx.Common.PreciseSleep;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu;
using Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvMap;
@@ -23,9 +25,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
private readonly Thread _composerThread;
- private readonly Stopwatch _chrono;
-
- private readonly ManualResetEvent _event = new(false);
+ private readonly AutoResetEvent _event = new(false);
private readonly AutoResetEvent _nextFrameEvent = new(true);
private long _ticks;
private long _ticksPerFrame;
@@ -64,11 +64,9 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
_composerThread = new Thread(HandleComposition)
{
Name = "SurfaceFlinger.Composer",
+ Priority = ThreadPriority.AboveNormal
};
- _chrono = new Stopwatch();
- _chrono.Start();
-
_ticks = 0;
_spinTicks = Stopwatch.Frequency / 500;
_1msTicks = Stopwatch.Frequency / 1000;
@@ -299,11 +297,11 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
_isRunning = true;
- long lastTicks = _chrono.ElapsedTicks;
+ long lastTicks = PerformanceCounter.ElapsedTicks;
while (_isRunning)
{
- long ticks = _chrono.ElapsedTicks;
+ long ticks = PerformanceCounter.ElapsedTicks;
if (_swapInterval == 0)
{
@@ -336,21 +334,16 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
}
// Sleep if possible. If the time til the next frame is too low, spin wait instead.
- long diff = _ticksPerFrame - (_ticks + _chrono.ElapsedTicks - ticks);
+ long diff = _ticksPerFrame - (_ticks + PerformanceCounter.ElapsedTicks - ticks);
if (diff > 0)
{
+ PreciseSleepHelper.SleepUntilTimePoint(_event, PerformanceCounter.ElapsedTicks + diff);
+
+ diff = _ticksPerFrame - (_ticks + PerformanceCounter.ElapsedTicks - ticks);
+
if (diff < _spinTicks)
{
- do
- {
- // SpinWait is a little more HT/SMT friendly than aggressively updating/checking ticks.
- // The value of 5 still gives us quite a bit of precision (~0.0003ms variance at worst) while waiting a reasonable amount of time.
- Thread.SpinWait(5);
-
- ticks = _chrono.ElapsedTicks;
- _ticks += ticks - lastTicks;
- lastTicks = ticks;
- } while (_ticks < _ticksPerFrame);
+ PreciseSleepHelper.SpinWaitUntilTimePoint(PerformanceCounter.ElapsedTicks + diff);
}
else
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/AndroidFence.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/AndroidFence.cs
index 448074cd7..ebc6501ae 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/AndroidFence.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/AndroidFence.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Gpu;
using Ryujinx.Graphics.Gpu.Synchronization;
using Ryujinx.HLE.HOS.Services.Nv.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/AndroidStrongPointer.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/AndroidStrongPointer.cs
index 963a1fe42..85db34d4d 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/AndroidStrongPointer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/AndroidStrongPointer.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types
{
class AndroidStrongPointer where T : unmanaged, IFlattenable
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferInfo.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferInfo.cs
index faade87f8..243a88fe7 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Time.Clock;
+using Ryujinx.HLE.HOS.Services.Time.Clock;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferItem.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferItem.cs
index cbb5ce760..dc752daa3 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferItem.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferItem.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types;
+using Ryujinx.HLE.HOS.Services.SurfaceFlinger.Types;
using System;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferState.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferState.cs
index d735a294e..89e6dfc6d 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferState.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/BufferState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
internal enum BufferState
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorBytePerPixel.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorBytePerPixel.cs
index ec119d687..12539032c 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorBytePerPixel.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorBytePerPixel.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
enum ColorBytePerPixel
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorComponent.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorComponent.cs
index e3da29319..6dbeb11b9 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorComponent.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorComponent.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
enum ColorComponent : uint
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorDataType.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorDataType.cs
index 2daa73b80..d30171cb9 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorDataType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorDataType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
enum ColorDataType
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorFormat.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorFormat.cs
index e13dbd86a..2512393c5 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorFormat.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorFormat.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorShift.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorShift.cs
index e19ed3eff..1cc8fecbc 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorShift.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorShift.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
class ColorShift
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorSpace.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorSpace.cs
index 5021e356e..7f3f0220c 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorSpace.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorSpace.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
enum ColorSpace : ulong
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorSwizzle.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorSwizzle.cs
index 0473d56b3..0cac6dab4 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorSwizzle.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Color/ColorSwizzle.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
+namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
enum ColorSwizzle
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/GraphicBufferHeader.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/GraphicBufferHeader.cs
index c6413ec13..30cb5c375 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/GraphicBufferHeader.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/GraphicBufferHeader.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBuffer.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBuffer.cs
index cbae4a902..51daac818 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBuffer.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBuffer.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBufferSurface.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBufferSurface.cs
index e0570c70a..4a427b42e 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBufferSurface.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBufferSurface.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
{
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBufferSurfaceArray.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBufferSurfaceArray.cs
index 8bc30c1f1..94d780a91 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBufferSurfaceArray.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/NvGraphicBufferSurfaceArray.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Rect.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Rect.cs
index a5f7efa51..d287fab02 100644
--- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Rect.cs
+++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Types/Rect.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/EphemeralNetworkSystemClockContextWriter.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/EphemeralNetworkSystemClockContextWriter.cs
index 14d3cb244..4684d4dca 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/EphemeralNetworkSystemClockContextWriter.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/EphemeralNetworkSystemClockContextWriter.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Time.Clock
+namespace Ryujinx.HLE.HOS.Services.Time.Clock
{
class EphemeralNetworkSystemClockContextWriter : SystemClockContextUpdateCallback
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/EphemeralNetworkSystemClockCore.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/EphemeralNetworkSystemClockCore.cs
index 003863e4c..5aa907cd4 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/EphemeralNetworkSystemClockCore.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/EphemeralNetworkSystemClockCore.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Time.Clock
+namespace Ryujinx.HLE.HOS.Services.Time.Clock
{
class EphemeralNetworkSystemClockCore : SystemClockCore
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/LocalSystemClockContextWriter.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/LocalSystemClockContextWriter.cs
index 49da1245f..7b1c1adaf 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/LocalSystemClockContextWriter.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/LocalSystemClockContextWriter.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Time.Clock
+namespace Ryujinx.HLE.HOS.Services.Time.Clock
{
class LocalSystemClockContextWriter : SystemClockContextUpdateCallback
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/NetworkSystemClockContextWriter.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/NetworkSystemClockContextWriter.cs
index ef315ea4d..99a192f40 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/NetworkSystemClockContextWriter.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/NetworkSystemClockContextWriter.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Time.Clock
+namespace Ryujinx.HLE.HOS.Services.Time.Clock
{
class NetworkSystemClockContextWriter : SystemClockContextUpdateCallback
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardLocalSystemClockCore.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardLocalSystemClockCore.cs
index 458ec4057..cf1e03f30 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardLocalSystemClockCore.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardLocalSystemClockCore.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Time.Clock
+namespace Ryujinx.HLE.HOS.Services.Time.Clock
{
class StandardLocalSystemClockCore : SystemClockCore
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs
index 200ab6306..120596335 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
namespace Ryujinx.HLE.HOS.Services.Time.Clock
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardSteadyClockCore.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardSteadyClockCore.cs
index 3ae699ae0..bc785ca7b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardSteadyClockCore.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardSteadyClockCore.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
namespace Ryujinx.HLE.HOS.Services.Time.Clock
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardUserSystemClockCore.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardUserSystemClockCore.cs
index e50ee7da6..147faa848 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardUserSystemClockCore.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/StandardUserSystemClockCore.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/SteadyClockCore.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/SteadyClockCore.cs
index 2d12a2a06..95cf2a899 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/SteadyClockCore.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/SteadyClockCore.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using Ryujinx.Cpu;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/SystemClockContextUpdateCallback.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/SystemClockContextUpdateCallback.cs
index 3f191820f..119096dcf 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/SystemClockContextUpdateCallback.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/SystemClockContextUpdateCallback.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Threading;
+using Ryujinx.HLE.HOS.Kernel.Threading;
using System.Collections.Generic;
using System.Threading;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/SystemClockCore.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/SystemClockCore.cs
index f8a995b71..c46380513 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/SystemClockCore.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/SystemClockCore.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Kernel.Threading;
namespace Ryujinx.HLE.HOS.Services.Time.Clock
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/TickBasedSteadyClockCore.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/TickBasedSteadyClockCore.cs
index 99e981ecd..5c10c6930 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/TickBasedSteadyClockCore.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/TickBasedSteadyClockCore.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
namespace Ryujinx.HLE.HOS.Services.Time.Clock
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ClockSnapshot.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ClockSnapshot.cs
index d0a74a935..4383fc823 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ClockSnapshot.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ClockSnapshot.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Time.TimeZone;
+using Ryujinx.HLE.HOS.Services.Time.TimeZone;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ContinuousAdjustmentTimePoint.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ContinuousAdjustmentTimePoint.cs
index b57dfaa06..df7ee823c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ContinuousAdjustmentTimePoint.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ContinuousAdjustmentTimePoint.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Time.Clock.Types
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/SteadyClockTimePoint.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/SteadyClockTimePoint.cs
index 2bc99ff81..e4878483d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/SteadyClockTimePoint.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/SteadyClockTimePoint.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/SystemClockContext.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/SystemClockContext.cs
index fc47e775f..cb5f05e4f 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/SystemClockContext.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/SystemClockContext.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Time.Clock
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/TimeSpanType.cs b/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/TimeSpanType.cs
index a7ef81150..c0b4ad292 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/TimeSpanType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Clock/Types/TimeSpanType.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Time.Clock
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/IAlarmService.cs b/src/Ryujinx.HLE/HOS/Services/Time/IAlarmService.cs
index 46b58408a..38cd3eb8c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/IAlarmService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/IAlarmService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Time
+namespace Ryujinx.HLE.HOS.Services.Time
{
[Service("time:al")] // 9.0.0+
class IAlarmService : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/IPowerStateRequestHandler.cs b/src/Ryujinx.HLE/HOS/Services/Time/IPowerStateRequestHandler.cs
index 64b7e69c6..2f67918bf 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/IPowerStateRequestHandler.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/IPowerStateRequestHandler.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Time
+namespace Ryujinx.HLE.HOS.Services.Time
{
[Service("time:p")] // 9.0.0+
class IPowerStateRequestHandler : IpcService
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/IStaticServiceForGlue.cs b/src/Ryujinx.HLE/HOS/Services/Time/IStaticServiceForGlue.cs
index 32aed90cb..eaddf9cff 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/IStaticServiceForGlue.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/IStaticServiceForGlue.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.HLE.HOS.Services.Pcv.Bpc;
using Ryujinx.HLE.HOS.Services.Settings;
using Ryujinx.HLE.HOS.Services.Time.Clock;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/ITimeServiceManager.cs b/src/Ryujinx.HLE/HOS/Services/Time/ITimeServiceManager.cs
index b690b708f..1648aa3e1 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/ITimeServiceManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/ITimeServiceManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Cpu;
using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Ipc;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Time/ResultCode.cs
index 66ae67517..74a57f20b 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/ResultCode.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.HLE.HOS.Services.Time
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForPsc.cs b/src/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForPsc.cs
index b3a87b8a6..b18a4f76c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForPsc.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/StaticService/ITimeZoneServiceForPsc.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Services.Time.Clock;
using Ryujinx.HLE.HOS.Services.Time.TimeZone;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeManager.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeManager.cs
index 53c052e45..f8e36bcd7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Kernel.Memory;
using Ryujinx.HLE.HOS.Services.Time.Clock;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs
index 75479a173..346487030 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Cpu;
+using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Kernel.Memory;
using Ryujinx.HLE.HOS.Services.Time.Clock;
using Ryujinx.HLE.HOS.Services.Time.Clock.Types;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZone.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZone.cs
index 58ae1cd8c..cdd11b58d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZone.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZone.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Memory;
using Ryujinx.Common.Utilities;
using Ryujinx.HLE.Utilities;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZoneContentManager.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZoneContentManager.cs
index 67cb286ae..abf3cd7d6 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZoneContentManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZoneContentManager.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZoneManager.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZoneManager.cs
index 219b1d9fb..3b57b1805 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZoneManager.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/TimeZoneManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Services.Time.Clock;
using System;
using System.IO;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarAdditionalInfo.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarAdditionalInfo.cs
index 8e7dc6d52..331690cc0 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarAdditionalInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarAdditionalInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Time.TimeZone
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarInfo.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarInfo.cs
index 7fc6f7a09..c4c1ca00d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarInfo.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Time.TimeZone
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarTime.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarTime.cs
index fa082bde5..16769ebfa 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarTime.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/CalendarTime.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Time.TimeZone
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TimeTypeInfo.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TimeTypeInfo.cs
index 47620f563..4ec58a680 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TimeTypeInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TimeTypeInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Time.TimeZone
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TimeZoneRule.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TimeZoneRule.cs
index b8dd2382a..9f5c34100 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TimeZoneRule.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TimeZoneRule.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TzifHeader.cs b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TzifHeader.cs
index 1d05ee246..33dca6050 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TzifHeader.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/TimeZone/Types/TzifHeader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Time.TimeZone
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Types/SteadyClockContext.cs b/src/Ryujinx.HLE/HOS/Services/Time/Types/SteadyClockContext.cs
index 2b80604ac..580b6476c 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Types/SteadyClockContext.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Types/SteadyClockContext.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Time.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Time/Types/TimePermissions.cs b/src/Ryujinx.HLE/HOS/Services/Time/Types/TimePermissions.cs
index 34749c425..7591c3e98 100644
--- a/src/Ryujinx.HLE/HOS/Services/Time/Types/TimePermissions.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Time/Types/TimePermissions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.HLE.HOS.Services.Time
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/AndroidSurfaceComposerClient.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/AndroidSurfaceComposerClient.cs
index 782bb7d7e..c45030984 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/AndroidSurfaceComposerClient.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/AndroidSurfaceComposerClient.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
+namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
{
class AndroidSurfaceComposerClient
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DestinationScalingMode.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DestinationScalingMode.cs
index c712bb1d3..066b9ccfc 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DestinationScalingMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DestinationScalingMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
+namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
{
enum DestinationScalingMode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DisplayInfo.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DisplayInfo.cs
index eae8a8001..a32316925 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DisplayInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DisplayInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService.Types
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/SourceScalingMode.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/SourceScalingMode.cs
index 536c0d46f..e950d74b6 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/SourceScalingMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/SourceScalingMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
+namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
{
enum SourceScalingMode
{
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/Types/ViServiceType.cs b/src/Ryujinx.HLE/HOS/Services/Vi/Types/ViServiceType.cs
index 41c8bbfaf..3e6e7c249 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/Types/ViServiceType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/Types/ViServiceType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Services.Vi.Types
+namespace Ryujinx.HLE.HOS.Services.Vi.Types
{
enum ViServiceType
{
diff --git a/src/Ryujinx.HLE/HOS/SystemState/TitleLanguage.cs b/src/Ryujinx.HLE/HOS/SystemState/TitleLanguage.cs
index 5a0b9f8c2..e3bfb9165 100644
--- a/src/Ryujinx.HLE/HOS/SystemState/TitleLanguage.cs
+++ b/src/Ryujinx.HLE/HOS/SystemState/TitleLanguage.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.SystemState
+namespace Ryujinx.HLE.HOS.SystemState
{
public enum TitleLanguage
{
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/Arithmetic.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/Arithmetic.cs
index c51630d64..5b296def0 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/Arithmetic.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/Arithmetic.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Operations;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/BeginConditionalBlock.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/BeginConditionalBlock.cs
index 5439821c5..c8aa4e0eb 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/BeginConditionalBlock.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/BeginConditionalBlock.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
+namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
{
///
/// Marks the begin of a conditional block (started by Code Type 1, Code Type 8 or Code Type C0).
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/DebugLog.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/DebugLog.cs
index 533b362a6..d74a998f4 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/DebugLog.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/DebugLog.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Operations;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/EndConditionalBlock.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/EndConditionalBlock.cs
index 63625a556..fc7edd62b 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/EndConditionalBlock.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/EndConditionalBlock.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Conditions;
using Ryujinx.HLE.HOS.Tamper.Operations;
using System.Collections.Generic;
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/KeyPressConditional.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/KeyPressConditional.cs
index a17586652..2b0e2c813 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/KeyPressConditional.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/KeyPressConditional.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Tamper.Conditions;
+using Ryujinx.HLE.HOS.Tamper.Conditions;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
{
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LegacyArithmetic.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LegacyArithmetic.cs
index 1c389cd7c..3f222864f 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LegacyArithmetic.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LegacyArithmetic.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Operations;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LoadRegisterWithConstant.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LoadRegisterWithConstant.cs
index 16500cf9e..501936b89 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LoadRegisterWithConstant.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LoadRegisterWithConstant.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Tamper.Operations;
+using Ryujinx.HLE.HOS.Tamper.Operations;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
{
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LoadRegisterWithMemory.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LoadRegisterWithMemory.cs
index 87b37a1ee..3440efcec 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LoadRegisterWithMemory.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/LoadRegisterWithMemory.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
{
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/MemoryConditional.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/MemoryConditional.cs
index 272cf3d05..72b6e6cd3 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/MemoryConditional.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/MemoryConditional.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Tamper.Conditions;
+using Ryujinx.HLE.HOS.Tamper.Conditions;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
{
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/PauseProcess.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/PauseProcess.cs
index 14f993947..8bf91ef55 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/PauseProcess.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/PauseProcess.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Tamper.Operations;
+using Ryujinx.HLE.HOS.Tamper.Operations;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
{
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/ReadOrWriteStaticRegister.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/ReadOrWriteStaticRegister.cs
index 67775df7f..73fbbde40 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/ReadOrWriteStaticRegister.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/ReadOrWriteStaticRegister.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Tamper.Operations;
+using Ryujinx.HLE.HOS.Tamper.Operations;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
{
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/RegisterConditional.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/RegisterConditional.cs
index fcd3a9eb7..4e4d70b05 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/RegisterConditional.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/RegisterConditional.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Conditions;
using Ryujinx.HLE.HOS.Tamper.Operations;
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/ResumeProcess.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/ResumeProcess.cs
index 7af327d3e..b052d8104 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/ResumeProcess.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/ResumeProcess.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Tamper.Operations;
+using Ryujinx.HLE.HOS.Tamper.Operations;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
{
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/SaveOrRestoreRegister.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/SaveOrRestoreRegister.cs
index d2e13311d..59cbdb003 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/SaveOrRestoreRegister.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/SaveOrRestoreRegister.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Operations;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/SaveOrRestoreRegisterWithMask.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/SaveOrRestoreRegisterWithMask.cs
index 2264e9d17..6d1c3b3bd 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/SaveOrRestoreRegisterWithMask.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/SaveOrRestoreRegisterWithMask.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
+namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
{
///
/// Code type 0xC2 performs saving or restoring of multiple registers using a bitmask.
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StartEndLoop.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StartEndLoop.cs
index 51fc8f35c..22b13ead7 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StartEndLoop.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StartEndLoop.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Operations;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToAddress.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToAddress.cs
index a2a62015a..537166798 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToAddress.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToAddress.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
+namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
{
///
/// Code type 0 allows writing a static value to a memory address.
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs
index d53b7a26f..27a99bb63 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Operations;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreRegisterToMemory.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreRegisterToMemory.cs
index 422ff2989..d7f3045bc 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreRegisterToMemory.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreRegisterToMemory.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Operations;
namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeType.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeType.cs
index d65f8a2f6..704233da7 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CodeType.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CodeType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Tamper
+namespace Ryujinx.HLE.HOS.Tamper
{
///
/// The opcodes specified for the Atmosphere Cheat VM.
diff --git a/src/Ryujinx.HLE/HOS/Tamper/Comparison.cs b/src/Ryujinx.HLE/HOS/Tamper/Comparison.cs
index dc0f02649..656a62c3e 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/Comparison.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/Comparison.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Tamper
+namespace Ryujinx.HLE.HOS.Tamper
{
///
/// The comparisons used by conditional operations.
diff --git a/src/Ryujinx.HLE/HOS/Tamper/CompilationContext.cs b/src/Ryujinx.HLE/HOS/Tamper/CompilationContext.cs
index 922e568a3..2a8810ad4 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/CompilationContext.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/CompilationContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Tamper.Operations;
+using Ryujinx.HLE.HOS.Tamper.Operations;
using System.Collections.Generic;
namespace Ryujinx.HLE.HOS.Tamper
diff --git a/src/Ryujinx.HLE/HOS/Tamper/InstructionHelper.cs b/src/Ryujinx.HLE/HOS/Tamper/InstructionHelper.cs
index 76ffefb66..759ba5f90 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/InstructionHelper.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/InstructionHelper.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Conditions;
using Ryujinx.HLE.HOS.Tamper.Operations;
using System;
diff --git a/src/Ryujinx.HLE/HOS/Tamper/MemoryHelper.cs b/src/Ryujinx.HLE/HOS/Tamper/MemoryHelper.cs
index 52e12bfe5..b9e649cfc 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/MemoryHelper.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/MemoryHelper.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Tamper.Operations;
namespace Ryujinx.HLE.HOS.Tamper
diff --git a/src/Ryujinx.HLE/HOS/Tamper/MemoryRegion.cs b/src/Ryujinx.HLE/HOS/Tamper/MemoryRegion.cs
index 766e3eedb..b6e4ed0a3 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/MemoryRegion.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/MemoryRegion.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.HOS.Tamper
+namespace Ryujinx.HLE.HOS.Tamper
{
///
/// The regions in the virtual address space of the process that are used as base address of memory operations.
diff --git a/src/Ryujinx.HLE/HOS/Tamper/OperationBlock.cs b/src/Ryujinx.HLE/HOS/Tamper/OperationBlock.cs
index c16c2812a..5a0bccc5d 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/OperationBlock.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/OperationBlock.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Tamper.Operations;
+using Ryujinx.HLE.HOS.Tamper.Operations;
using System.Collections.Generic;
namespace Ryujinx.HLE.HOS.Tamper
diff --git a/src/Ryujinx.HLE/HOS/Tamper/TamperedKProcess.cs b/src/Ryujinx.HLE/HOS/Tamper/TamperedKProcess.cs
index c8768e88a..422e4ef0e 100644
--- a/src/Ryujinx.HLE/HOS/Tamper/TamperedKProcess.cs
+++ b/src/Ryujinx.HLE/HOS/Tamper/TamperedKProcess.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Kernel.Process;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.HLE/HOS/UserChannelPersistence.cs b/src/Ryujinx.HLE/HOS/UserChannelPersistence.cs
index 7c7448ba7..64e5ee4b9 100644
--- a/src/Ryujinx.HLE/HOS/UserChannelPersistence.cs
+++ b/src/Ryujinx.HLE/HOS/UserChannelPersistence.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy.Types;
+using Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy.Types;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.HLE/Loaders/Elf/ElfSymbol32.cs b/src/Ryujinx.HLE/Loaders/Elf/ElfSymbol32.cs
index 945b0c8b2..8d4df8942 100644
--- a/src/Ryujinx.HLE/Loaders/Elf/ElfSymbol32.cs
+++ b/src/Ryujinx.HLE/Loaders/Elf/ElfSymbol32.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.Loaders.Elf
+namespace Ryujinx.HLE.Loaders.Elf
{
struct ElfSymbol32
{
diff --git a/src/Ryujinx.HLE/Loaders/Elf/ElfSymbol64.cs b/src/Ryujinx.HLE/Loaders/Elf/ElfSymbol64.cs
index 3a73ca4ed..45a753615 100644
--- a/src/Ryujinx.HLE/Loaders/Elf/ElfSymbol64.cs
+++ b/src/Ryujinx.HLE/Loaders/Elf/ElfSymbol64.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.Loaders.Elf
+namespace Ryujinx.HLE.Loaders.Elf
{
struct ElfSymbol64
{
diff --git a/src/Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs b/src/Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs
index e533f513c..f17ca348b 100644
--- a/src/Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs
+++ b/src/Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs
@@ -1,4 +1,4 @@
-using System.IO;
+using System.IO;
namespace Ryujinx.HLE.Loaders.Npdm
{
diff --git a/src/Ryujinx.HLE/Loaders/Npdm/FsAccessHeader.cs b/src/Ryujinx.HLE/Loaders/Npdm/FsAccessHeader.cs
index 7336464f5..5987be0ef 100644
--- a/src/Ryujinx.HLE/Loaders/Npdm/FsAccessHeader.cs
+++ b/src/Ryujinx.HLE/Loaders/Npdm/FsAccessHeader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Exceptions;
+using Ryujinx.HLE.Exceptions;
using System;
using System.IO;
diff --git a/src/Ryujinx.HLE/Loaders/Npdm/KernelAccessControl.cs b/src/Ryujinx.HLE/Loaders/Npdm/KernelAccessControl.cs
index bc8bdbaaa..171243799 100644
--- a/src/Ryujinx.HLE/Loaders/Npdm/KernelAccessControl.cs
+++ b/src/Ryujinx.HLE/Loaders/Npdm/KernelAccessControl.cs
@@ -1,4 +1,4 @@
-using System.IO;
+using System.IO;
namespace Ryujinx.HLE.Loaders.Npdm
{
diff --git a/src/Ryujinx.HLE/Loaders/Npdm/ServiceAccessControl.cs b/src/Ryujinx.HLE/Loaders/Npdm/ServiceAccessControl.cs
index 53c864346..bb6df27fa 100644
--- a/src/Ryujinx.HLE/Loaders/Npdm/ServiceAccessControl.cs
+++ b/src/Ryujinx.HLE/Loaders/Npdm/ServiceAccessControl.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Text;
diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs
index 07bbaf12b..28f6fcff4 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
using LibHac.Loader;
diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs
index 2b7e84734..798a9261e 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using LibHac.FsSystem;
using LibHac.Loader;
using LibHac.Ncm;
diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/MetaLoaderExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/MetaLoaderExtensions.cs
index 88f437591..92e71cb5a 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/MetaLoaderExtensions.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/MetaLoaderExtensions.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
using LibHac.Loader;
diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/NcaExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/NcaExtensions.cs
index 4568b44da..e369f4b04 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/NcaExtensions.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/NcaExtensions.cs
@@ -1,4 +1,4 @@
-using LibHac;
+using LibHac;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/PartitionFileSystemExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/PartitionFileSystemExtensions.cs
index 50f7d5853..e95b1b059 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/PartitionFileSystemExtensions.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/PartitionFileSystemExtensions.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
using LibHac.FsSystem;
diff --git a/src/Ryujinx.HLE/Loaders/Processes/ProcessConst.cs b/src/Ryujinx.HLE/Loaders/Processes/ProcessConst.cs
index 9fbf9134b..778f9ce68 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/ProcessConst.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/ProcessConst.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.Loaders.Processes
+namespace Ryujinx.HLE.Loaders.Processes
{
static class ProcessConst
{
diff --git a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs
index 220b868db..efeb9f613 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
using LibHac.FsSystem;
diff --git a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs
index c229b1742..a6a1d87e0 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs
@@ -1,4 +1,4 @@
-using LibHac.Account;
+using LibHac.Account;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
@@ -356,11 +356,22 @@ namespace Ryujinx.HLE.Loaders.Processes
return ProcessResult.Failed;
}
+ string displayVersion;
+
+ if (metaLoader.GetProgramId() > 0x0100000000007FFF)
+ {
+ displayVersion = applicationControlProperties.Value.DisplayVersionString.ToString();
+ }
+ else
+ {
+ displayVersion = device.System.ContentManager.GetCurrentFirmwareVersion()?.VersionString ?? string.Empty;
+ }
+
var processContextFactory = new ArmProcessContextFactory(
context.Device.System.TickSource,
context.Device.Gpu,
$"{programId:x16}",
- applicationControlProperties.Value.DisplayVersionString.ToString(),
+ displayVersion,
diskCacheEnabled,
codeStart,
codeSize);
diff --git a/src/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs b/src/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs
index 9a7b3cd0e..1804d045c 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using LibHac.Loader;
using LibHac.Ns;
using Ryujinx.Common.Logging;
diff --git a/src/Ryujinx.HLE/PerformanceStatistics.cs b/src/Ryujinx.HLE/PerformanceStatistics.cs
index e7270db30..3767a7fb4 100644
--- a/src/Ryujinx.HLE/PerformanceStatistics.cs
+++ b/src/Ryujinx.HLE/PerformanceStatistics.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using System.Timers;
namespace Ryujinx.HLE
diff --git a/src/Ryujinx.HLE/Ryujinx.HLE.csproj b/src/Ryujinx.HLE/Ryujinx.HLE.csproj
index 370933ccf..dbcb82212 100644
--- a/src/Ryujinx.HLE/Ryujinx.HLE.csproj
+++ b/src/Ryujinx.HLE/Ryujinx.HLE.csproj
@@ -23,10 +23,10 @@
+
-
diff --git a/src/Ryujinx.HLE/Ui/IHostUiTheme.cs b/src/Ryujinx.HLE/Ui/IHostUiTheme.cs
index 6404c80c9..11d82361a 100644
--- a/src/Ryujinx.HLE/Ui/IHostUiTheme.cs
+++ b/src/Ryujinx.HLE/Ui/IHostUiTheme.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.Ui
+namespace Ryujinx.HLE.Ui
{
public interface IHostUiTheme
{
diff --git a/src/Ryujinx.HLE/Ui/Input/NpadButtonHandler.cs b/src/Ryujinx.HLE/Ui/Input/NpadButtonHandler.cs
index cd41f5c8b..2d1c1c491 100644
--- a/src/Ryujinx.HLE/Ui/Input/NpadButtonHandler.cs
+++ b/src/Ryujinx.HLE/Ui/Input/NpadButtonHandler.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad;
+using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad;
namespace Ryujinx.HLE.Ui.Input
{
diff --git a/src/Ryujinx.HLE/Ui/Input/NpadReader.cs b/src/Ryujinx.HLE/Ui/Input/NpadReader.cs
index c4ef5da50..8fc95dc94 100644
--- a/src/Ryujinx.HLE/Ui/Input/NpadReader.cs
+++ b/src/Ryujinx.HLE/Ui/Input/NpadReader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
+using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Npad;
namespace Ryujinx.HLE.Ui.Input
diff --git a/src/Ryujinx.HLE/Ui/RenderingSurfaceInfo.cs b/src/Ryujinx.HLE/Ui/RenderingSurfaceInfo.cs
index 10da74ef3..0b3d0a909 100644
--- a/src/Ryujinx.HLE/Ui/RenderingSurfaceInfo.cs
+++ b/src/Ryujinx.HLE/Ui/RenderingSurfaceInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Services.SurfaceFlinger;
+using Ryujinx.HLE.HOS.Services.SurfaceFlinger;
using System;
namespace Ryujinx.HLE.Ui
diff --git a/src/Ryujinx.HLE/Ui/ThemeColor.cs b/src/Ryujinx.HLE/Ui/ThemeColor.cs
index c594c370b..23657ed2b 100644
--- a/src/Ryujinx.HLE/Ui/ThemeColor.cs
+++ b/src/Ryujinx.HLE/Ui/ThemeColor.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.HLE.Ui
+namespace Ryujinx.HLE.Ui
{
public readonly struct ThemeColor
{
diff --git a/src/Ryujinx.HLE/Utilities/StringUtils.cs b/src/Ryujinx.HLE/Utilities/StringUtils.cs
index 9b3479eec..55fb06e48 100644
--- a/src/Ryujinx.HLE/Utilities/StringUtils.cs
+++ b/src/Ryujinx.HLE/Utilities/StringUtils.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using Microsoft.IO;
using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS;
diff --git a/src/Ryujinx.Headless.SDL2/HeadlessHostUiTheme.cs b/src/Ryujinx.Headless.SDL2/HeadlessHostUiTheme.cs
index 361ef0900..a2df6f3ee 100644
--- a/src/Ryujinx.Headless.SDL2/HeadlessHostUiTheme.cs
+++ b/src/Ryujinx.Headless.SDL2/HeadlessHostUiTheme.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.Ui;
+using Ryujinx.HLE.Ui;
namespace Ryujinx.Headless.SDL2
{
diff --git a/src/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs b/src/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs
index 245aba778..3fb93a0ec 100644
--- a/src/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs
+++ b/src/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs
@@ -1,4 +1,4 @@
-using OpenTK;
+using OpenTK;
using OpenTK.Graphics.OpenGL;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
diff --git a/src/Ryujinx.Headless.SDL2/Options.cs b/src/Ryujinx.Headless.SDL2/Options.cs
index a1adcd024..ea2063758 100644
--- a/src/Ryujinx.Headless.SDL2/Options.cs
+++ b/src/Ryujinx.Headless.SDL2/Options.cs
@@ -1,4 +1,4 @@
-using CommandLine;
+using CommandLine;
using Ryujinx.Common.Configuration;
using Ryujinx.HLE.HOS.SystemState;
diff --git a/src/Ryujinx.Headless.SDL2/Program.cs b/src/Ryujinx.Headless.SDL2/Program.cs
index 86d3e841d..e545079b9 100644
--- a/src/Ryujinx.Headless.SDL2/Program.cs
+++ b/src/Ryujinx.Headless.SDL2/Program.cs
@@ -1,4 +1,3 @@
-using ARMeilleure.Translation;
using CommandLine;
using LibHac.Tools.FsSystem;
using Ryujinx.Audio.Backends.SDL2;
@@ -710,9 +709,6 @@ namespace Ryujinx.Headless.SDL2
}
SetupProgressHandler();
-
- Translator.IsReadyForTranslation.Reset();
-
ExecutionEntrypoint();
return true;
diff --git a/src/Ryujinx.Headless.SDL2/SDL2Mouse.cs b/src/Ryujinx.Headless.SDL2/SDL2Mouse.cs
index 684433688..de64b4f8f 100644
--- a/src/Ryujinx.Headless.SDL2/SDL2Mouse.cs
+++ b/src/Ryujinx.Headless.SDL2/SDL2Mouse.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid;
+using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Input;
using System;
using System.Drawing;
diff --git a/src/Ryujinx.Headless.SDL2/StatusUpdatedEventArgs.cs b/src/Ryujinx.Headless.SDL2/StatusUpdatedEventArgs.cs
index 62e161dfd..0b199d128 100644
--- a/src/Ryujinx.Headless.SDL2/StatusUpdatedEventArgs.cs
+++ b/src/Ryujinx.Headless.SDL2/StatusUpdatedEventArgs.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Headless.SDL2
{
diff --git a/src/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs b/src/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs
index 4a04b10a3..e5572c936 100644
--- a/src/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs
+++ b/src/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration;
+using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Input.HLE;
using Ryujinx.SDL2.Common;
diff --git a/src/Ryujinx.Headless.SDL2/WindowBase.cs b/src/Ryujinx.Headless.SDL2/WindowBase.cs
index 1b9556057..1bfe43121 100644
--- a/src/Ryujinx.Headless.SDL2/WindowBase.cs
+++ b/src/Ryujinx.Headless.SDL2/WindowBase.cs
@@ -1,4 +1,3 @@
-using ARMeilleure.Translation;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Logging;
@@ -276,7 +275,6 @@ namespace Ryujinx.Headless.SDL2
{
Device.Gpu.SetGpuThread();
Device.Gpu.InitializeShaderCache(_gpuCancellationTokenSource.Token);
- Translator.IsReadyForTranslation.Set();
while (_isActive)
{
diff --git a/src/Ryujinx.Horizon.Common/ISyscallApi.cs b/src/Ryujinx.Horizon.Common/ISyscallApi.cs
index 8fa276b52..20277f344 100644
--- a/src/Ryujinx.Horizon.Common/ISyscallApi.cs
+++ b/src/Ryujinx.Horizon.Common/ISyscallApi.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Common
{
diff --git a/src/Ryujinx.Horizon.Common/IThreadContext.cs b/src/Ryujinx.Horizon.Common/IThreadContext.cs
index 47aea1a38..6a2b71b67 100644
--- a/src/Ryujinx.Horizon.Common/IThreadContext.cs
+++ b/src/Ryujinx.Horizon.Common/IThreadContext.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Common
+namespace Ryujinx.Horizon.Common
{
public interface IThreadContext
{
diff --git a/src/Ryujinx.Horizon.Common/InvalidResultException.cs b/src/Ryujinx.Horizon.Common/InvalidResultException.cs
index cf38b6403..80621f45f 100644
--- a/src/Ryujinx.Horizon.Common/InvalidResultException.cs
+++ b/src/Ryujinx.Horizon.Common/InvalidResultException.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Common
{
diff --git a/src/Ryujinx.Horizon.Common/KernelResult.cs b/src/Ryujinx.Horizon.Common/KernelResult.cs
index ff367ac46..37d9fb0a9 100644
--- a/src/Ryujinx.Horizon.Common/KernelResult.cs
+++ b/src/Ryujinx.Horizon.Common/KernelResult.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Common
+namespace Ryujinx.Horizon.Common
{
public static class KernelResult
{
diff --git a/src/Ryujinx.Horizon.Common/OnScopeExit.cs b/src/Ryujinx.Horizon.Common/OnScopeExit.cs
index deba7bbad..aebaf3ba1 100644
--- a/src/Ryujinx.Horizon.Common/OnScopeExit.cs
+++ b/src/Ryujinx.Horizon.Common/OnScopeExit.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Common
{
diff --git a/src/Ryujinx.Horizon.Common/Result.cs b/src/Ryujinx.Horizon.Common/Result.cs
index 8e458475d..d313554e3 100644
--- a/src/Ryujinx.Horizon.Common/Result.cs
+++ b/src/Ryujinx.Horizon.Common/Result.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Common
{
diff --git a/src/Ryujinx.Horizon.Generators/CodeGenerator.cs b/src/Ryujinx.Horizon.Generators/CodeGenerator.cs
index 59052499e..9d117f550 100644
--- a/src/Ryujinx.Horizon.Generators/CodeGenerator.cs
+++ b/src/Ryujinx.Horizon.Generators/CodeGenerator.cs
@@ -1,4 +1,4 @@
-using System.Text;
+using System.Text;
namespace Ryujinx.Horizon.Generators
{
diff --git a/src/Ryujinx.Horizon.Generators/Hipc/CommandArgType.cs b/src/Ryujinx.Horizon.Generators/Hipc/CommandArgType.cs
index a5e6ec4a0..f26eeec17 100644
--- a/src/Ryujinx.Horizon.Generators/Hipc/CommandArgType.cs
+++ b/src/Ryujinx.Horizon.Generators/Hipc/CommandArgType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Generators.Hipc
+namespace Ryujinx.Horizon.Generators.Hipc
{
enum CommandArgType : byte
{
diff --git a/src/Ryujinx.Horizon.Generators/Hipc/CommandInterface.cs b/src/Ryujinx.Horizon.Generators/Hipc/CommandInterface.cs
index 2ee192820..2dcdfe5a2 100644
--- a/src/Ryujinx.Horizon.Generators/Hipc/CommandInterface.cs
+++ b/src/Ryujinx.Horizon.Generators/Hipc/CommandInterface.cs
@@ -1,4 +1,4 @@
-using Microsoft.CodeAnalysis.CSharp.Syntax;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
using System.Collections.Generic;
namespace Ryujinx.Horizon.Generators.Hipc
diff --git a/src/Ryujinx.Horizon.Generators/Hipc/HipcGenerator.cs b/src/Ryujinx.Horizon.Generators/Hipc/HipcGenerator.cs
index 4e14f47e9..a65ec3abd 100644
--- a/src/Ryujinx.Horizon.Generators/Hipc/HipcGenerator.cs
+++ b/src/Ryujinx.Horizon.Generators/Hipc/HipcGenerator.cs
@@ -1,4 +1,4 @@
-using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Horizon.Generators/Hipc/HipcSyntaxReceiver.cs b/src/Ryujinx.Horizon.Generators/Hipc/HipcSyntaxReceiver.cs
index 4b998dbe2..9b3421076 100644
--- a/src/Ryujinx.Horizon.Generators/Hipc/HipcSyntaxReceiver.cs
+++ b/src/Ryujinx.Horizon.Generators/Hipc/HipcSyntaxReceiver.cs
@@ -1,4 +1,4 @@
-using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Horizon.Kernel.Generators/CodeGenerator.cs b/src/Ryujinx.Horizon.Kernel.Generators/CodeGenerator.cs
index 121b6dd58..393a36c36 100644
--- a/src/Ryujinx.Horizon.Kernel.Generators/CodeGenerator.cs
+++ b/src/Ryujinx.Horizon.Kernel.Generators/CodeGenerator.cs
@@ -1,4 +1,4 @@
-using System.Text;
+using System.Text;
namespace Ryujinx.Horizon.Kernel.Generators
{
diff --git a/src/Ryujinx.Horizon.Kernel.Generators/SyscallGenerator.cs b/src/Ryujinx.Horizon.Kernel.Generators/SyscallGenerator.cs
index 638b2ea8f..7419a839a 100644
--- a/src/Ryujinx.Horizon.Kernel.Generators/SyscallGenerator.cs
+++ b/src/Ryujinx.Horizon.Kernel.Generators/SyscallGenerator.cs
@@ -1,4 +1,4 @@
-using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using System;
diff --git a/src/Ryujinx.Horizon.Kernel.Generators/SyscallSyntaxReceiver.cs b/src/Ryujinx.Horizon.Kernel.Generators/SyscallSyntaxReceiver.cs
index f586ee682..1542fed6a 100644
--- a/src/Ryujinx.Horizon.Kernel.Generators/SyscallSyntaxReceiver.cs
+++ b/src/Ryujinx.Horizon.Kernel.Generators/SyscallSyntaxReceiver.cs
@@ -1,4 +1,4 @@
-using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using System.Collections.Generic;
using System.Linq;
diff --git a/src/Ryujinx.Horizon/Bcat/BcatIpcServer.cs b/src/Ryujinx.Horizon/Bcat/BcatIpcServer.cs
index 5d01cd9de..dd4e5b53a 100644
--- a/src/Ryujinx.Horizon/Bcat/BcatIpcServer.cs
+++ b/src/Ryujinx.Horizon/Bcat/BcatIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Bcat.Types;
+using Ryujinx.Horizon.Bcat.Types;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/Bcat/BcatMain.cs b/src/Ryujinx.Horizon/Bcat/BcatMain.cs
index f347e2166..ac10d235e 100644
--- a/src/Ryujinx.Horizon/Bcat/BcatMain.cs
+++ b/src/Ryujinx.Horizon/Bcat/BcatMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Bcat
+namespace Ryujinx.Horizon.Bcat
{
internal class BcatMain : IService
{
diff --git a/src/Ryujinx.Horizon/Bcat/BcatServerManager.cs b/src/Ryujinx.Horizon/Bcat/BcatServerManager.cs
index 0431bd9a9..31ac967b4 100644
--- a/src/Ryujinx.Horizon/Bcat/BcatServerManager.cs
+++ b/src/Ryujinx.Horizon/Bcat/BcatServerManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Bcat.Ipc;
+using Ryujinx.Horizon.Bcat.Ipc;
using Ryujinx.Horizon.Bcat.Types;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
diff --git a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator.cs b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator.cs
index 7dfa419d6..78114c51f 100644
--- a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator.cs
+++ b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using Ryujinx.Horizon.Bcat.Types;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Bcat;
diff --git a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/BcatService.cs b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/BcatService.cs
index 9ea2dc11c..91beec20d 100644
--- a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/BcatService.cs
+++ b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/BcatService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Bcat.Types;
+using Ryujinx.Horizon.Bcat.Types;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Bcat;
using Ryujinx.Horizon.Sdk.Sf;
diff --git a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheDirectoryService.cs b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheDirectoryService.cs
index c8b38c28f..1559c833c 100644
--- a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheDirectoryService.cs
+++ b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheDirectoryService.cs
@@ -1,4 +1,4 @@
-using LibHac.Bcat;
+using LibHac.Bcat;
using LibHac.Common;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Bcat;
diff --git a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheFileService.cs b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheFileService.cs
index a26c3258f..bd5c418d9 100644
--- a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheFileService.cs
+++ b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheFileService.cs
@@ -1,4 +1,4 @@
-using LibHac.Bcat;
+using LibHac.Bcat;
using LibHac.Common;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Bcat;
diff --git a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheProgressService.cs b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheProgressService.cs
index 578c18f43..a21d140e8 100644
--- a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheProgressService.cs
+++ b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheProgressService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Horizon.Bcat.Ipc.Types;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Bcat;
diff --git a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheStorageService.cs b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheStorageService.cs
index 9507a8a0e..ecbc4bdb7 100644
--- a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheStorageService.cs
+++ b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/DeliveryCacheStorageService.cs
@@ -1,4 +1,4 @@
-using LibHac.Bcat;
+using LibHac.Bcat;
using LibHac.Common;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Bcat;
diff --git a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/Types/DeliveryCacheProgressImpl.cs b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/Types/DeliveryCacheProgressImpl.cs
index 9e5274a61..dcd86cbfc 100644
--- a/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/Types/DeliveryCacheProgressImpl.cs
+++ b/src/Ryujinx.Horizon/Bcat/Ipc/ServiceCreator/Types/DeliveryCacheProgressImpl.cs
@@ -1,4 +1,4 @@
-using System.Runtime.InteropServices;
+using System.Runtime.InteropServices;
namespace Ryujinx.Horizon.Bcat.Ipc.Types
{
diff --git a/src/Ryujinx.Horizon/Bcat/Types/BcatPortIndex.cs b/src/Ryujinx.Horizon/Bcat/Types/BcatPortIndex.cs
index 958517892..942cacdf4 100644
--- a/src/Ryujinx.Horizon/Bcat/Types/BcatPortIndex.cs
+++ b/src/Ryujinx.Horizon/Bcat/Types/BcatPortIndex.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Bcat.Types
+namespace Ryujinx.Horizon.Bcat.Types
{
enum BcatPortIndex
{
diff --git a/src/Ryujinx.Horizon/Bcat/Types/BcatServicePermissionLevel.cs b/src/Ryujinx.Horizon/Bcat/Types/BcatServicePermissionLevel.cs
index 6bf4b4cc0..e45f986ac 100644
--- a/src/Ryujinx.Horizon/Bcat/Types/BcatServicePermissionLevel.cs
+++ b/src/Ryujinx.Horizon/Bcat/Types/BcatServicePermissionLevel.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Bcat.Types
+namespace Ryujinx.Horizon.Bcat.Types
{
enum BcatServicePermissionLevel
{
diff --git a/src/Ryujinx.Horizon/HorizonStatic.cs b/src/Ryujinx.Horizon/HorizonStatic.cs
index 3e992eadb..305d54bd1 100644
--- a/src/Ryujinx.Horizon/HorizonStatic.cs
+++ b/src/Ryujinx.Horizon/HorizonStatic.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Memory;
using System;
diff --git a/src/Ryujinx.Horizon/Hshl/HshlIpcServer.cs b/src/Ryujinx.Horizon/Hshl/HshlIpcServer.cs
index 7182725cb..d7d89e24b 100644
--- a/src/Ryujinx.Horizon/Hshl/HshlIpcServer.cs
+++ b/src/Ryujinx.Horizon/Hshl/HshlIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Hshl.Ipc;
+using Ryujinx.Horizon.Hshl.Ipc;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/Hshl/HshlMain.cs b/src/Ryujinx.Horizon/Hshl/HshlMain.cs
index 4e894b6f6..9c65f1ffd 100644
--- a/src/Ryujinx.Horizon/Hshl/HshlMain.cs
+++ b/src/Ryujinx.Horizon/Hshl/HshlMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Hshl
+namespace Ryujinx.Horizon.Hshl
{
class HshlMain : IService
{
diff --git a/src/Ryujinx.Horizon/Hshl/Ipc/Manager.cs b/src/Ryujinx.Horizon/Hshl/Ipc/Manager.cs
index 29d9069ac..26e901c42 100644
--- a/src/Ryujinx.Horizon/Hshl/Ipc/Manager.cs
+++ b/src/Ryujinx.Horizon/Hshl/Ipc/Manager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Hshl;
+using Ryujinx.Horizon.Sdk.Hshl;
namespace Ryujinx.Horizon.Hshl.Ipc
{
diff --git a/src/Ryujinx.Horizon/Hshl/Ipc/SetterManager.cs b/src/Ryujinx.Horizon/Hshl/Ipc/SetterManager.cs
index ac1006f0f..d85a70647 100644
--- a/src/Ryujinx.Horizon/Hshl/Ipc/SetterManager.cs
+++ b/src/Ryujinx.Horizon/Hshl/Ipc/SetterManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Hshl;
+using Ryujinx.Horizon.Sdk.Hshl;
namespace Ryujinx.Horizon.Hshl.Ipc
{
diff --git a/src/Ryujinx.Horizon/IService.cs b/src/Ryujinx.Horizon/IService.cs
index c0bc0bcb7..2bc15b120 100644
--- a/src/Ryujinx.Horizon/IService.cs
+++ b/src/Ryujinx.Horizon/IService.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon
+namespace Ryujinx.Horizon
{
interface IService
{
diff --git a/src/Ryujinx.Horizon/Ins/InsIpcServer.cs b/src/Ryujinx.Horizon/Ins/InsIpcServer.cs
index 68698bf6a..bb2749d5f 100644
--- a/src/Ryujinx.Horizon/Ins/InsIpcServer.cs
+++ b/src/Ryujinx.Horizon/Ins/InsIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Ins.Ipc;
+using Ryujinx.Horizon.Ins.Ipc;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/Ins/InsMain.cs b/src/Ryujinx.Horizon/Ins/InsMain.cs
index e428d090a..101bf9b0b 100644
--- a/src/Ryujinx.Horizon/Ins/InsMain.cs
+++ b/src/Ryujinx.Horizon/Ins/InsMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Ins
+namespace Ryujinx.Horizon.Ins
{
class InsMain : IService
{
diff --git a/src/Ryujinx.Horizon/Ins/Ipc/ReceiverManager.cs b/src/Ryujinx.Horizon/Ins/Ipc/ReceiverManager.cs
index 6e9b29a99..b5f44801a 100644
--- a/src/Ryujinx.Horizon/Ins/Ipc/ReceiverManager.cs
+++ b/src/Ryujinx.Horizon/Ins/Ipc/ReceiverManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Ins;
+using Ryujinx.Horizon.Sdk.Ins;
namespace Ryujinx.Horizon.Ins.Ipc
{
diff --git a/src/Ryujinx.Horizon/Ins/Ipc/SenderManager.cs b/src/Ryujinx.Horizon/Ins/Ipc/SenderManager.cs
index e133014e1..7407ada7d 100644
--- a/src/Ryujinx.Horizon/Ins/Ipc/SenderManager.cs
+++ b/src/Ryujinx.Horizon/Ins/Ipc/SenderManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Ins;
+using Ryujinx.Horizon.Sdk.Ins;
namespace Ryujinx.Horizon.Ins.Ipc
{
diff --git a/src/Ryujinx.Horizon/Lbl/Ipc/LblController.cs b/src/Ryujinx.Horizon/Lbl/Ipc/LblController.cs
index 0a27d5efa..2c97476c8 100644
--- a/src/Ryujinx.Horizon/Lbl/Ipc/LblController.cs
+++ b/src/Ryujinx.Horizon/Lbl/Ipc/LblController.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Lbl;
using Ryujinx.Horizon.Sdk.Sf;
diff --git a/src/Ryujinx.Horizon/Lbl/LblIpcServer.cs b/src/Ryujinx.Horizon/Lbl/LblIpcServer.cs
index 53e74d515..6b5421653 100644
--- a/src/Ryujinx.Horizon/Lbl/LblIpcServer.cs
+++ b/src/Ryujinx.Horizon/Lbl/LblIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Lbl.Ipc;
+using Ryujinx.Horizon.Lbl.Ipc;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/Lbl/LblMain.cs b/src/Ryujinx.Horizon/Lbl/LblMain.cs
index f471f31b7..ab1e67ac6 100644
--- a/src/Ryujinx.Horizon/Lbl/LblMain.cs
+++ b/src/Ryujinx.Horizon/Lbl/LblMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Lbl
+namespace Ryujinx.Horizon.Lbl
{
class LblMain : IService
{
diff --git a/src/Ryujinx.Horizon/LibHacResultExtensions.cs b/src/Ryujinx.Horizon/LibHacResultExtensions.cs
index 8c994f149..2abed197d 100644
--- a/src/Ryujinx.Horizon/LibHacResultExtensions.cs
+++ b/src/Ryujinx.Horizon/LibHacResultExtensions.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
namespace Ryujinx.Horizon
{
diff --git a/src/Ryujinx.Horizon/LogManager/Ipc/LogService.cs b/src/Ryujinx.Horizon/LogManager/Ipc/LogService.cs
index c266d0e94..8ed5d99d0 100644
--- a/src/Ryujinx.Horizon/LogManager/Ipc/LogService.cs
+++ b/src/Ryujinx.Horizon/LogManager/Ipc/LogService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Lm;
using Ryujinx.Horizon.Sdk.Sf;
diff --git a/src/Ryujinx.Horizon/LogManager/LmIpcServer.cs b/src/Ryujinx.Horizon/LogManager/LmIpcServer.cs
index 6bdc3c429..d023ff927 100644
--- a/src/Ryujinx.Horizon/LogManager/LmIpcServer.cs
+++ b/src/Ryujinx.Horizon/LogManager/LmIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.LogManager.Ipc;
+using Ryujinx.Horizon.LogManager.Ipc;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/LogManager/LmMain.cs b/src/Ryujinx.Horizon/LogManager/LmMain.cs
index c229de597..ac3cd4bb9 100644
--- a/src/Ryujinx.Horizon/LogManager/LmMain.cs
+++ b/src/Ryujinx.Horizon/LogManager/LmMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.LogManager
+namespace Ryujinx.Horizon.LogManager
{
class LmMain : IService
{
diff --git a/src/Ryujinx.Horizon/LogManager/Types/LogPacket.cs b/src/Ryujinx.Horizon/LogManager/Types/LogPacket.cs
index 57a389be9..b4294d66a 100644
--- a/src/Ryujinx.Horizon/LogManager/Types/LogPacket.cs
+++ b/src/Ryujinx.Horizon/LogManager/Types/LogPacket.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Diag;
+using Ryujinx.Horizon.Sdk.Diag;
using System.Text;
namespace Ryujinx.Horizon.LogManager.Types
diff --git a/src/Ryujinx.Horizon/MmNv/Ipc/Request.cs b/src/Ryujinx.Horizon/MmNv/Ipc/Request.cs
index 9a24c75e8..c53ca1866 100644
--- a/src/Ryujinx.Horizon/MmNv/Ipc/Request.cs
+++ b/src/Ryujinx.Horizon/MmNv/Ipc/Request.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.MmNv;
using Ryujinx.Horizon.Sdk.Sf;
diff --git a/src/Ryujinx.Horizon/MmNv/MmNvIpcServer.cs b/src/Ryujinx.Horizon/MmNv/MmNvIpcServer.cs
index b6615d2cd..c52a294f5 100644
--- a/src/Ryujinx.Horizon/MmNv/MmNvIpcServer.cs
+++ b/src/Ryujinx.Horizon/MmNv/MmNvIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.MmNv.Ipc;
+using Ryujinx.Horizon.MmNv.Ipc;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/MmNv/MmNvMain.cs b/src/Ryujinx.Horizon/MmNv/MmNvMain.cs
index ac5eff1a9..a5a7b6309 100644
--- a/src/Ryujinx.Horizon/MmNv/MmNvMain.cs
+++ b/src/Ryujinx.Horizon/MmNv/MmNvMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.MmNv
+namespace Ryujinx.Horizon.MmNv
{
class MmNvMain : IService
{
diff --git a/src/Ryujinx.Horizon/Ovln/Ipc/ReceiverService.cs b/src/Ryujinx.Horizon/Ovln/Ipc/ReceiverService.cs
index 6cc448e8a..b74d3cd2b 100644
--- a/src/Ryujinx.Horizon/Ovln/Ipc/ReceiverService.cs
+++ b/src/Ryujinx.Horizon/Ovln/Ipc/ReceiverService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Ovln;
+using Ryujinx.Horizon.Sdk.Ovln;
namespace Ryujinx.Horizon.Ovln.Ipc
{
diff --git a/src/Ryujinx.Horizon/Ovln/Ipc/SenderService.cs b/src/Ryujinx.Horizon/Ovln/Ipc/SenderService.cs
index cab123ecf..04ef5d4b1 100644
--- a/src/Ryujinx.Horizon/Ovln/Ipc/SenderService.cs
+++ b/src/Ryujinx.Horizon/Ovln/Ipc/SenderService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Ovln;
+using Ryujinx.Horizon.Sdk.Ovln;
namespace Ryujinx.Horizon.Ovln.Ipc
{
diff --git a/src/Ryujinx.Horizon/Ovln/OvlnIpcServer.cs b/src/Ryujinx.Horizon/Ovln/OvlnIpcServer.cs
index 2c00107fb..c4580a861 100644
--- a/src/Ryujinx.Horizon/Ovln/OvlnIpcServer.cs
+++ b/src/Ryujinx.Horizon/Ovln/OvlnIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Ovln.Ipc;
+using Ryujinx.Horizon.Ovln.Ipc;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/Ovln/OvlnMain.cs b/src/Ryujinx.Horizon/Ovln/OvlnMain.cs
index 8c6cf84e7..79afad20e 100644
--- a/src/Ryujinx.Horizon/Ovln/OvlnMain.cs
+++ b/src/Ryujinx.Horizon/Ovln/OvlnMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Ovln
+namespace Ryujinx.Horizon.Ovln
{
class OvlnMain : IService
{
diff --git a/src/Ryujinx.Horizon/Prepo/Ipc/PrepoService.cs b/src/Ryujinx.Horizon/Prepo/Ipc/PrepoService.cs
index f424b17e2..c165f46fa 100644
--- a/src/Ryujinx.Horizon/Prepo/Ipc/PrepoService.cs
+++ b/src/Ryujinx.Horizon/Prepo/Ipc/PrepoService.cs
@@ -1,4 +1,4 @@
-using MsgPack;
+using MsgPack;
using MsgPack.Serialization;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
diff --git a/src/Ryujinx.Horizon/Prepo/PrepoIpcServer.cs b/src/Ryujinx.Horizon/Prepo/PrepoIpcServer.cs
index 410f997e7..fd3f86ff9 100644
--- a/src/Ryujinx.Horizon/Prepo/PrepoIpcServer.cs
+++ b/src/Ryujinx.Horizon/Prepo/PrepoIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Prepo.Types;
+using Ryujinx.Horizon.Prepo.Types;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/Prepo/PrepoMain.cs b/src/Ryujinx.Horizon/Prepo/PrepoMain.cs
index c311d619f..8d54af9d5 100644
--- a/src/Ryujinx.Horizon/Prepo/PrepoMain.cs
+++ b/src/Ryujinx.Horizon/Prepo/PrepoMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Prepo
+namespace Ryujinx.Horizon.Prepo
{
class PrepoMain : IService
{
diff --git a/src/Ryujinx.Horizon/Prepo/PrepoResult.cs b/src/Ryujinx.Horizon/Prepo/PrepoResult.cs
index 4c6bc7a45..24e46d0c7 100644
--- a/src/Ryujinx.Horizon/Prepo/PrepoResult.cs
+++ b/src/Ryujinx.Horizon/Prepo/PrepoResult.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
namespace Ryujinx.Horizon.Prepo
{
diff --git a/src/Ryujinx.Horizon/Prepo/PrepoServerManager.cs b/src/Ryujinx.Horizon/Prepo/PrepoServerManager.cs
index a79360953..0c1c782f6 100644
--- a/src/Ryujinx.Horizon/Prepo/PrepoServerManager.cs
+++ b/src/Ryujinx.Horizon/Prepo/PrepoServerManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Prepo.Ipc;
using Ryujinx.Horizon.Prepo.Types;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
diff --git a/src/Ryujinx.Horizon/Prepo/Types/PrepoPortIndex.cs b/src/Ryujinx.Horizon/Prepo/Types/PrepoPortIndex.cs
index 31c5b02d0..b8242baea 100644
--- a/src/Ryujinx.Horizon/Prepo/Types/PrepoPortIndex.cs
+++ b/src/Ryujinx.Horizon/Prepo/Types/PrepoPortIndex.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Prepo.Types
+namespace Ryujinx.Horizon.Prepo.Types
{
enum PrepoPortIndex
{
diff --git a/src/Ryujinx.Horizon/Prepo/Types/PrepoServicePermissionLevel.cs b/src/Ryujinx.Horizon/Prepo/Types/PrepoServicePermissionLevel.cs
index 759c5018d..7a8073549 100644
--- a/src/Ryujinx.Horizon/Prepo/Types/PrepoServicePermissionLevel.cs
+++ b/src/Ryujinx.Horizon/Prepo/Types/PrepoServicePermissionLevel.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Prepo.Types
+namespace Ryujinx.Horizon.Prepo.Types
{
enum PrepoServicePermissionLevel
{
diff --git a/src/Ryujinx.Horizon/Psc/Ipc/PmControl.cs b/src/Ryujinx.Horizon/Psc/Ipc/PmControl.cs
index 671472e4e..112a702f4 100644
--- a/src/Ryujinx.Horizon/Psc/Ipc/PmControl.cs
+++ b/src/Ryujinx.Horizon/Psc/Ipc/PmControl.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Psc;
+using Ryujinx.Horizon.Sdk.Psc;
namespace Ryujinx.Horizon.Psc.Ipc
{
diff --git a/src/Ryujinx.Horizon/Psc/Ipc/PmService.cs b/src/Ryujinx.Horizon/Psc/Ipc/PmService.cs
index c38da8581..cb2ea8d40 100644
--- a/src/Ryujinx.Horizon/Psc/Ipc/PmService.cs
+++ b/src/Ryujinx.Horizon/Psc/Ipc/PmService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Psc;
+using Ryujinx.Horizon.Sdk.Psc;
namespace Ryujinx.Horizon.Psc.Ipc
{
diff --git a/src/Ryujinx.Horizon/Psc/Ipc/PmStateLock.cs b/src/Ryujinx.Horizon/Psc/Ipc/PmStateLock.cs
index cef68ac54..5c7961806 100644
--- a/src/Ryujinx.Horizon/Psc/Ipc/PmStateLock.cs
+++ b/src/Ryujinx.Horizon/Psc/Ipc/PmStateLock.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Psc;
+using Ryujinx.Horizon.Sdk.Psc;
namespace Ryujinx.Horizon.Psc.Ipc
{
diff --git a/src/Ryujinx.Horizon/Psc/PscIpcServer.cs b/src/Ryujinx.Horizon/Psc/PscIpcServer.cs
index f8da56724..d6ac65685 100644
--- a/src/Ryujinx.Horizon/Psc/PscIpcServer.cs
+++ b/src/Ryujinx.Horizon/Psc/PscIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Psc.Ipc;
+using Ryujinx.Horizon.Psc.Ipc;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/Psc/PscMain.cs b/src/Ryujinx.Horizon/Psc/PscMain.cs
index facb6bc08..0b5316672 100644
--- a/src/Ryujinx.Horizon/Psc/PscMain.cs
+++ b/src/Ryujinx.Horizon/Psc/PscMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Psc
+namespace Ryujinx.Horizon.Psc
{
class PscMain : IService
{
diff --git a/src/Ryujinx.Horizon/Sdk/Account/Uid.cs b/src/Ryujinx.Horizon/Sdk/Account/Uid.cs
index 0175d393c..a76e6d256 100644
--- a/src/Ryujinx.Horizon/Sdk/Account/Uid.cs
+++ b/src/Ryujinx.Horizon/Sdk/Account/Uid.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Horizon/Sdk/Bcat/IBcatService.cs b/src/Ryujinx.Horizon/Sdk/Bcat/IBcatService.cs
index f6c8e6dd3..9201c4b26 100644
--- a/src/Ryujinx.Horizon/Sdk/Bcat/IBcatService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Bcat/IBcatService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Bcat
diff --git a/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheDirectoryService.cs b/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheDirectoryService.cs
index 23a740c35..f2f6c5b54 100644
--- a/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheDirectoryService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheDirectoryService.cs
@@ -1,4 +1,4 @@
-using LibHac.Bcat;
+using LibHac.Bcat;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheFileService.cs b/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheFileService.cs
index a1e5d43ba..1cba63ced 100644
--- a/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheFileService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheFileService.cs
@@ -1,4 +1,4 @@
-using LibHac.Bcat;
+using LibHac.Bcat;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheProgressService.cs b/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheProgressService.cs
index 07a796f88..bafcb9e15 100644
--- a/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheProgressService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheProgressService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Bcat.Ipc.Types;
+using Ryujinx.Horizon.Bcat.Ipc.Types;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf;
diff --git a/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheStorageService.cs b/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheStorageService.cs
index 5638f074c..f83114d91 100644
--- a/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheStorageService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Bcat/IDeliveryCacheStorageService.cs
@@ -1,4 +1,4 @@
-using LibHac.Bcat;
+using LibHac.Bcat;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Bcat/IServiceCreator.cs b/src/Ryujinx.Horizon/Sdk/Bcat/IServiceCreator.cs
index 04f25259f..f31ff3e94 100644
--- a/src/Ryujinx.Horizon/Sdk/Bcat/IServiceCreator.cs
+++ b/src/Ryujinx.Horizon/Sdk/Bcat/IServiceCreator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Ncm;
using Ryujinx.Horizon.Sdk.Sf;
diff --git a/src/Ryujinx.Horizon/Sdk/DebugUtil.cs b/src/Ryujinx.Horizon/Sdk/DebugUtil.cs
index f56a50ec5..a88c99a76 100644
--- a/src/Ryujinx.Horizon/Sdk/DebugUtil.cs
+++ b/src/Ryujinx.Horizon/Sdk/DebugUtil.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics;
+using System.Diagnostics;
namespace Ryujinx.Horizon.Sdk
{
diff --git a/src/Ryujinx.Horizon/Sdk/Hshl/IManager.cs b/src/Ryujinx.Horizon/Sdk/Hshl/IManager.cs
index 13955c692..52695ce68 100644
--- a/src/Ryujinx.Horizon/Sdk/Hshl/IManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Hshl/IManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Hshl
{
diff --git a/src/Ryujinx.Horizon/Sdk/Hshl/ISetterManager.cs b/src/Ryujinx.Horizon/Sdk/Hshl/ISetterManager.cs
index 8a4b93dd1..fc668b05a 100644
--- a/src/Ryujinx.Horizon/Sdk/Hshl/ISetterManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Hshl/ISetterManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Hshl
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ins/IReceiverManager.cs b/src/Ryujinx.Horizon/Sdk/Ins/IReceiverManager.cs
index 28fc757e5..f9fb3a445 100644
--- a/src/Ryujinx.Horizon/Sdk/Ins/IReceiverManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ins/IReceiverManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Ins
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ins/ISenderManager.cs b/src/Ryujinx.Horizon/Sdk/Ins/ISenderManager.cs
index 878dbfb32..03c22c6dd 100644
--- a/src/Ryujinx.Horizon/Sdk/Ins/ISenderManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ins/ISenderManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Ins
{
diff --git a/src/Ryujinx.Horizon/Sdk/Lbl/ILblController.cs b/src/Ryujinx.Horizon/Sdk/Lbl/ILblController.cs
index 594722e9c..19a8154e3 100644
--- a/src/Ryujinx.Horizon/Sdk/Lbl/ILblController.cs
+++ b/src/Ryujinx.Horizon/Sdk/Lbl/ILblController.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Lbl
diff --git a/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs b/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs
index 843a9acd6..a5622d4aa 100644
--- a/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs
+++ b/src/Ryujinx.Horizon/Sdk/Lbl/LblApi.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sm;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Lm/ILmLogger.cs b/src/Ryujinx.Horizon/Sdk/Lm/ILmLogger.cs
index 42165aab3..2b32a7a02 100644
--- a/src/Ryujinx.Horizon/Sdk/Lm/ILmLogger.cs
+++ b/src/Ryujinx.Horizon/Sdk/Lm/ILmLogger.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Lm/ILogService.cs b/src/Ryujinx.Horizon/Sdk/Lm/ILogService.cs
index b66b91267..ae29267a1 100644
--- a/src/Ryujinx.Horizon/Sdk/Lm/ILogService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Lm/ILogService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.LogManager.Ipc;
using Ryujinx.Horizon.Sdk.Sf;
diff --git a/src/Ryujinx.Horizon/Sdk/MmNv/IRequest.cs b/src/Ryujinx.Horizon/Sdk/MmNv/IRequest.cs
index 300b957fd..1c2ce6552 100644
--- a/src/Ryujinx.Horizon/Sdk/MmNv/IRequest.cs
+++ b/src/Ryujinx.Horizon/Sdk/MmNv/IRequest.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.MmNv
diff --git a/src/Ryujinx.Horizon/Sdk/MmNv/Module.cs b/src/Ryujinx.Horizon/Sdk/MmNv/Module.cs
index e029d037b..a2379ee6d 100644
--- a/src/Ryujinx.Horizon/Sdk/MmNv/Module.cs
+++ b/src/Ryujinx.Horizon/Sdk/MmNv/Module.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.MmNv
+namespace Ryujinx.Horizon.Sdk.MmNv
{
enum Module : uint
{
diff --git a/src/Ryujinx.Horizon/Sdk/MmNv/Session.cs b/src/Ryujinx.Horizon/Sdk/MmNv/Session.cs
index b91585693..b67a9d226 100644
--- a/src/Ryujinx.Horizon/Sdk/MmNv/Session.cs
+++ b/src/Ryujinx.Horizon/Sdk/MmNv/Session.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.MmNv
+namespace Ryujinx.Horizon.Sdk.MmNv
{
class Session
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs b/src/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs
index 652589e1a..4c5e76e6f 100644
--- a/src/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ncm/ApplicationId.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ncm
+namespace Ryujinx.Horizon.Sdk.Ncm
{
readonly struct ApplicationId
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/AhoCorasick.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/AhoCorasick.cs
index e772427c0..6acb9be97 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/AhoCorasick.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/AhoCorasick.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics;
using System.Text;
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BinaryReader.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BinaryReader.cs
index 5bad376a5..17bfcabbe 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BinaryReader.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BinaryReader.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BitVector32.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BitVector32.cs
index f54562011..484c1c07b 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BitVector32.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BitVector32.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc.Detail
+namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
class BitVector32
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Bp.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Bp.cs
index 5a8f3df29..d24fab63a 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Bp.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Bp.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc.Detail
+namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
class Bp
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BpNode.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BpNode.cs
index 6884cddd2..2f502cae6 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BpNode.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/BpNode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc.Detail
+namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
class BpNode
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/CompressedArray.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/CompressedArray.cs
index 1200f1def..fc5cd683d 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/CompressedArray.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/CompressedArray.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.Horizon.Sdk.Ngc.Detail
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ContentsReader.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ContentsReader.cs
index cb865fa0f..6a0fc4f9e 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ContentsReader.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ContentsReader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Fs;
using System;
using System.IO;
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchCheckState.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchCheckState.cs
index 4c014578e..b1a409eae 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchCheckState.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchCheckState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc.Detail
+namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
struct MatchCheckState
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchDelimitedState.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchDelimitedState.cs
index d9b82d422..309658198 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchDelimitedState.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchDelimitedState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc.Detail
+namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
struct MatchDelimitedState
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchRangeList.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchRangeList.cs
index ad2ad7a90..91600f981 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchRangeList.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchRangeList.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchRangeListState.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchRangeListState.cs
index 44a63449e..1a3851fc9 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchRangeListState.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchRangeListState.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchSimilarFormState.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchSimilarFormState.cs
index eab9bf959..b0711f723 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchSimilarFormState.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchSimilarFormState.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc.Detail
+namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
struct MatchSimilarFormState
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchState.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchState.cs
index 04fc1850f..2a701e05b 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchState.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/MatchState.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ProfanityFilter.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ProfanityFilter.cs
index 980126a6f..20adf16a1 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ProfanityFilter.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ProfanityFilter.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Fs;
using System;
using System.Buffers.Binary;
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ProfanityFilterBase.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ProfanityFilterBase.cs
index e45c9f478..acfdd9041 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ProfanityFilterBase.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/ProfanityFilterBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using System;
using System.Globalization;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Sbv.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Sbv.cs
index d6d0bfd60..7a003744c 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Sbv.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Sbv.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc.Detail
+namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
class Sbv
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SbvRank.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SbvRank.cs
index c541b1f57..4ed450f38 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SbvRank.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SbvRank.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Numerics;
namespace Ryujinx.Horizon.Sdk.Ngc.Detail
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SbvSelect.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SbvSelect.cs
index 54c3f8b04..c3a69fdd3 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SbvSelect.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SbvSelect.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Numerics;
namespace Ryujinx.Horizon.Sdk.Ngc.Detail
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Set.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Set.cs
index 559b78515..2627a51b6 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Set.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Set.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc.Detail
+namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
class Set
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SimilarFormTable.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SimilarFormTable.cs
index 7999e6ca1..828d7a249 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SimilarFormTable.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SimilarFormTable.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SparseSet.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SparseSet.cs
index 6690203df..724049081 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SparseSet.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/SparseSet.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc.Detail
+namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
class SparseSet
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8ParseResult.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8ParseResult.cs
index bf065f86a..54a7e73ed 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8ParseResult.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8ParseResult.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
namespace Ryujinx.Horizon.Sdk.Ngc.Detail
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8Text.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8Text.cs
index 47f780494..34978fdce 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8Text.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8Text.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Text;
namespace Ryujinx.Horizon.Sdk.Ngc.Detail
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8Util.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8Util.cs
index 1bb543ba1..e2a027086 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8Util.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/Utf8Util.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Text;
namespace Ryujinx.Horizon.Sdk.Ngc.Detail
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/MaskMode.cs b/src/Ryujinx.Horizon/Sdk/Ngc/MaskMode.cs
index da0a4e6f6..f4810ac89 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/MaskMode.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/MaskMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc
+namespace Ryujinx.Horizon.Sdk.Ngc
{
enum MaskMode
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/ProfanityFilterFlags.cs b/src/Ryujinx.Horizon/Sdk/Ngc/ProfanityFilterFlags.cs
index 19542c006..4b5f86b43 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/ProfanityFilterFlags.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/ProfanityFilterFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Sdk.Ngc
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/SkipMode.cs b/src/Ryujinx.Horizon/Sdk/Ngc/SkipMode.cs
index 69ab48eb9..c177a5d2a 100644
--- a/src/Ryujinx.Horizon/Sdk/Ngc/SkipMode.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ngc/SkipMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Ngc
+namespace Ryujinx.Horizon.Sdk.Ngc
{
enum SkipMode
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/Event.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/Event.cs
index 79d7408e3..cad251311 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/Event.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/Event.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
namespace Ryujinx.Horizon.Sdk.OsTypes
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/EventClearMode.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/EventClearMode.cs
index b82518d79..75b1cb80d 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/EventClearMode.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/EventClearMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.OsTypes
+namespace Ryujinx.Horizon.Sdk.OsTypes
{
enum EventClearMode
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/EventType.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/EventType.cs
index b4b1a275c..573e79b61 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/EventType.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/EventType.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Ryujinx.Horizon.Sdk.OsTypes
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/InterProcessEvent.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/InterProcessEvent.cs
index 62b5bf066..4da4ee86c 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/InterProcessEvent.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/InterProcessEvent.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
namespace Ryujinx.Horizon.Sdk.OsTypes.Impl
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/InterProcessEventImpl.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/InterProcessEventImpl.cs
index a8aeacc92..e15913c06 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/InterProcessEventImpl.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/InterProcessEventImpl.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using System;
namespace Ryujinx.Horizon.Sdk.OsTypes.Impl
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/MultiWaitImpl.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/MultiWaitImpl.cs
index 057aac890..2aefb0db5 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/MultiWaitImpl.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/Impl/MultiWaitImpl.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Horizon.Common;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/InterProcessEventType.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/InterProcessEventType.cs
index 5f6824fea..39c93e570 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/InterProcessEventType.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/InterProcessEventType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.OsTypes
+namespace Ryujinx.Horizon.Sdk.OsTypes
{
struct InterProcessEventType
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWait.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWait.cs
index 5a91f6c36..0e73e3f88 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWait.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWait.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.OsTypes.Impl;
+using Ryujinx.Horizon.Sdk.OsTypes.Impl;
namespace Ryujinx.Horizon.Sdk.OsTypes
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolder.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolder.cs
index a24b19064..e0473ecaf 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolder.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolder.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.OsTypes
+namespace Ryujinx.Horizon.Sdk.OsTypes
{
class MultiWaitHolder : MultiWaitHolderBase
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolderBase.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolderBase.cs
index 018305ba6..4bccba6c2 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolderBase.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolderBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.OsTypes.Impl;
+using Ryujinx.Horizon.Sdk.OsTypes.Impl;
namespace Ryujinx.Horizon.Sdk.OsTypes
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolderOfHandle.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolderOfHandle.cs
index e5839a480..1f5fefde0 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolderOfHandle.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/MultiWaitHolderOfHandle.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.OsTypes
+namespace Ryujinx.Horizon.Sdk.OsTypes
{
class MultiWaitHolderOfHandle : MultiWaitHolder
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/OsEvent.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/OsEvent.cs
index eac5e7c43..8efe614f2 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/OsEvent.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/OsEvent.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Threading;
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/OsMultiWait.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/OsMultiWait.cs
index 827de2313..8e9648de5 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/OsMultiWait.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/OsMultiWait.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.OsTypes
+namespace Ryujinx.Horizon.Sdk.OsTypes
{
static partial class Os
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/OsProcessHandle.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/OsProcessHandle.cs
index 6a6d9bf23..c835be2c9 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/OsProcessHandle.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/OsProcessHandle.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
namespace Ryujinx.Horizon.Sdk.OsTypes
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/OsResult.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/OsResult.cs
index 302922f12..77da87fa7 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/OsResult.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/OsResult.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
namespace Ryujinx.Horizon.Sdk.OsTypes
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/OsSystemEvent.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/OsSystemEvent.cs
index 40723a5cf..8fac94abe 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/OsSystemEvent.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/OsSystemEvent.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.OsTypes.Impl;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/OsThreadManager.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/OsThreadManager.cs
index 2037cd7fe..d47493eba 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/OsThreadManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/OsThreadManager.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.OsTypes
+namespace Ryujinx.Horizon.Sdk.OsTypes
{
static partial class Os
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/SystemEventType.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/SystemEventType.cs
index dee0fa43a..a838f46c4 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/SystemEventType.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/SystemEventType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.OsTypes
+namespace Ryujinx.Horizon.Sdk.OsTypes
{
struct SystemEventType
{
diff --git a/src/Ryujinx.Horizon/Sdk/OsTypes/TriBool.cs b/src/Ryujinx.Horizon/Sdk/OsTypes/TriBool.cs
index 868d10258..b162db9b7 100644
--- a/src/Ryujinx.Horizon/Sdk/OsTypes/TriBool.cs
+++ b/src/Ryujinx.Horizon/Sdk/OsTypes/TriBool.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.OsTypes
+namespace Ryujinx.Horizon.Sdk.OsTypes
{
enum TriBool
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ovln/IReceiverService.cs b/src/Ryujinx.Horizon/Sdk/Ovln/IReceiverService.cs
index f59e8002d..d663ed607 100644
--- a/src/Ryujinx.Horizon/Sdk/Ovln/IReceiverService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ovln/IReceiverService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Ovln
{
diff --git a/src/Ryujinx.Horizon/Sdk/Ovln/ISenderService.cs b/src/Ryujinx.Horizon/Sdk/Ovln/ISenderService.cs
index 93323ba50..b0b9b2f07 100644
--- a/src/Ryujinx.Horizon/Sdk/Ovln/ISenderService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Ovln/ISenderService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Ovln
{
diff --git a/src/Ryujinx.Horizon/Sdk/Prepo/IPrepoService.cs b/src/Ryujinx.Horizon/Sdk/Prepo/IPrepoService.cs
index 3f2628205..fd63755e3 100644
--- a/src/Ryujinx.Horizon/Sdk/Prepo/IPrepoService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Prepo/IPrepoService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Account;
using Ryujinx.Horizon.Sdk.Sf;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Psc/IPmControl.cs b/src/Ryujinx.Horizon/Sdk/Psc/IPmControl.cs
index 6a71d6842..679a43537 100644
--- a/src/Ryujinx.Horizon/Sdk/Psc/IPmControl.cs
+++ b/src/Ryujinx.Horizon/Sdk/Psc/IPmControl.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Psc
{
diff --git a/src/Ryujinx.Horizon/Sdk/Psc/IPmService.cs b/src/Ryujinx.Horizon/Sdk/Psc/IPmService.cs
index c58665818..53e703f82 100644
--- a/src/Ryujinx.Horizon/Sdk/Psc/IPmService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Psc/IPmService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Psc
{
diff --git a/src/Ryujinx.Horizon/Sdk/Psc/IPmStateLock.cs b/src/Ryujinx.Horizon/Sdk/Psc/IPmStateLock.cs
index 41ead492e..2335b8c84 100644
--- a/src/Ryujinx.Horizon/Sdk/Psc/IPmStateLock.cs
+++ b/src/Ryujinx.Horizon/Sdk/Psc/IPmStateLock.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Psc
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainInHeader.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainInHeader.cs
index 882115013..cc1eb6cbb 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainInHeader.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainInHeader.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Cmif
+namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
struct CmifDomainInHeader
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainOutHeader.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainOutHeader.cs
index 89766a421..23c1ce248 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainOutHeader.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainOutHeader.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Cmif
+namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
struct CmifDomainOutHeader
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainRequestType.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainRequestType.cs
index 4e52ff936..0781d5890 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainRequestType.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifDomainRequestType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Cmif
+namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
enum CmifDomainRequestType : byte
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifInHeader.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifInHeader.cs
index 55b859fca..12442dadd 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifInHeader.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifInHeader.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Cmif
+namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
struct CmifInHeader
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifMessage.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifMessage.cs
index f0b6f0c36..6b4c5cc52 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifMessage.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifMessage.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using System;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifOutHeader.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifOutHeader.cs
index ae32e78d6..ddceca030 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifOutHeader.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifOutHeader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifRequest.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifRequest.cs
index 80772ad33..d409be5b3 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifRequest.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifRequest.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf.Hipc;
+using Ryujinx.Horizon.Sdk.Sf.Hipc;
using System;
namespace Ryujinx.Horizon.Sdk.Sf.Cmif
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifRequestFormat.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifRequestFormat.cs
index c32646e30..370341994 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifRequestFormat.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifRequestFormat.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Cmif
+namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
struct CmifRequestFormat
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifResponse.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifResponse.cs
index d1d8dc9c5..fbe90085f 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifResponse.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/CmifResponse.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObject.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObject.cs
index 148396876..e7d1ab6b2 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObject.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObject.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Cmif
+namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
abstract partial class DomainServiceObject : ServerDomainBase, IServiceObject
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObjectDispatchTable.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObjectDispatchTable.cs
index ccfacd908..58957a701 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObjectDispatchTable.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObjectDispatchTable.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObjectProcessor.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObjectProcessor.cs
index 20ac5f101..f677e0598 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObjectProcessor.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/DomainServiceObjectProcessor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using System;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/HandlesToClose.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/HandlesToClose.cs
index 3c37e8b2e..b3c4aae0b 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/HandlesToClose.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/HandlesToClose.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerDomainBase.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerDomainBase.cs
index f38fa0303..fc6350f76 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerDomainBase.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerDomainBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using System;
namespace Ryujinx.Horizon.Sdk.Sf.Cmif
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerDomainManager.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerDomainManager.cs
index f0222991d..7762345af 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerDomainManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerDomainManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerMessageProcessor.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerMessageProcessor.cs
index e76502381..a682f716f 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerMessageProcessor.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerMessageProcessor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerMessageRuntimeMetadata.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerMessageRuntimeMetadata.cs
index 206676020..d79f852a3 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerMessageRuntimeMetadata.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServerMessageRuntimeMetadata.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Cmif
+namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
readonly struct ServerMessageRuntimeMetadata
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchContext.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchContext.cs
index 3339a1a60..4ebe294b9 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchContext.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchContext.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf.Hipc;
+using Ryujinx.Horizon.Sdk.Sf.Hipc;
using System;
namespace Ryujinx.Horizon.Sdk.Sf.Cmif
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchMeta.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchMeta.cs
index 286e94148..008af90ae 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchMeta.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchMeta.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Cmif
+namespace Ryujinx.Horizon.Sdk.Sf.Cmif
{
readonly struct ServiceDispatchMeta
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchTable.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchTable.cs
index 145c17839..ef0372aa1 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchTable.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchTable.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchTableBase.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchTableBase.cs
index a127bfcd5..2625a4c3e 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchTableBase.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceDispatchTableBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceObjectHolder.cs b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceObjectHolder.cs
index 6e87e3405..4dd435377 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceObjectHolder.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Cmif/ServiceObjectHolder.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using System;
namespace Ryujinx.Horizon.Sdk.Sf.Cmif
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/CmifCommandAttribute.cs b/src/Ryujinx.Horizon/Sdk/Sf/CmifCommandAttribute.cs
index 51a7b5976..5af7d156f 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/CmifCommandAttribute.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/CmifCommandAttribute.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Sdk.Sf
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/CommandArg.cs b/src/Ryujinx.Horizon/Sdk/Sf/CommandArg.cs
index f6b54403f..48407a731 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/CommandArg.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/CommandArg.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf.Hipc;
+using Ryujinx.Horizon.Sdk.Sf.Hipc;
namespace Ryujinx.Horizon.Sdk.Sf
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/CommandArgAttributes.cs b/src/Ryujinx.Horizon/Sdk/Sf/CommandArgAttributes.cs
index 5b7c302f2..f6f0e0682 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/CommandArgAttributes.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/CommandArgAttributes.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf.Hipc;
+using Ryujinx.Horizon.Sdk.Sf.Hipc;
using System;
namespace Ryujinx.Horizon.Sdk.Sf
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/CommandHandler.cs b/src/Ryujinx.Horizon/Sdk/Sf/CommandHandler.cs
index fb88eaaa0..d0efe0d4b 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/CommandHandler.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/CommandHandler.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Cmif;
using System;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/CommandSerialization.cs b/src/Ryujinx.Horizon/Sdk/Sf/CommandSerialization.cs
index a14892a8d..038135ac8 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/CommandSerialization.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/CommandSerialization.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf.Cmif;
+using Ryujinx.Horizon.Sdk.Sf.Cmif;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Memory;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/Api.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/Api.cs
index 530f81bd1..5f3f67061 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/Api.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/Api.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using System;
namespace Ryujinx.Horizon.Sdk.Sf.Hipc
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferDescriptor.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferDescriptor.cs
index bef772e67..03ef6d3fc 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferDescriptor.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferDescriptor.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Hipc
+namespace Ryujinx.Horizon.Sdk.Sf.Hipc
{
readonly struct HipcBufferDescriptor
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferFlags.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferFlags.cs
index b1523d61d..b3995613c 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferFlags.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Sdk.Sf.Hipc
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferMode.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferMode.cs
index bc2d5336c..ffd46c5e5 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferMode.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcBufferMode.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Hipc
+namespace Ryujinx.Horizon.Sdk.Sf.Hipc
{
enum HipcBufferMode
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcManager.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcManager.cs
index f72d8e81d..4f0bbb014 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Cmif;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessage.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessage.cs
index 82cf6e75f..887c82eb8 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessage.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessage.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Horizon.Sdk.Sf.Cmif;
using System;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessageData.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessageData.cs
index c83c422ca..548f12e8b 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessageData.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessageData.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Horizon.Sdk.Sf.Hipc
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMetadata.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMetadata.cs
index fe13137a6..add17ce1b 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMetadata.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMetadata.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Hipc
+namespace Ryujinx.Horizon.Sdk.Sf.Hipc
{
struct HipcMetadata
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcReceiveListEntry.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcReceiveListEntry.cs
index 955428b84..9a7c23e9a 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcReceiveListEntry.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcReceiveListEntry.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Hipc
+namespace Ryujinx.Horizon.Sdk.Sf.Hipc
{
readonly struct HipcReceiveListEntry
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcStaticDescriptor.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcStaticDescriptor.cs
index 43e7afb9d..3d11d0212 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcStaticDescriptor.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcStaticDescriptor.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Hipc
+namespace Ryujinx.Horizon.Sdk.Sf.Hipc
{
readonly struct HipcStaticDescriptor
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ManagerOptions.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ManagerOptions.cs
index e747490e6..aa0135aa5 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ManagerOptions.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ManagerOptions.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Hipc
+namespace Ryujinx.Horizon.Sdk.Sf.Hipc
{
readonly struct ManagerOptions
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ReceiveResult.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ReceiveResult.cs
index efe99f3f9..9e3a67a73 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ReceiveResult.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ReceiveResult.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sdk.Sf.Hipc
+namespace Ryujinx.Horizon.Sdk.Sf.Hipc
{
enum ReceiveResult
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/Server.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/Server.cs
index 923f2d52d..935c34a87 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/Server.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/Server.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.OsTypes;
+using Ryujinx.Horizon.Sdk.OsTypes;
using Ryujinx.Horizon.Sdk.Sf.Cmif;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerDomainSessionManager.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerDomainSessionManager.cs
index dda775397..daac6fc9c 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerDomainSessionManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerDomainSessionManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Cmif;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManager.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManager.cs
index 65a433038..e8957b758 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.OsTypes;
+using Ryujinx.Horizon.Sdk.OsTypes;
using Ryujinx.Horizon.Sdk.Sf.Cmif;
using Ryujinx.Horizon.Sdk.Sm;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs
index 764078408..9886e1cbf 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.OsTypes;
using Ryujinx.Horizon.Sdk.Sf.Cmif;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerSession.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerSession.cs
index eb98fefd0..66d5be197 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerSession.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerSession.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.OsTypes;
+using Ryujinx.Horizon.Sdk.OsTypes;
using Ryujinx.Horizon.Sdk.Sf.Cmif;
namespace Ryujinx.Horizon.Sdk.Sf.Hipc
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/SpecialHeader.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/SpecialHeader.cs
index b6304b7b6..150159fba 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/SpecialHeader.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/SpecialHeader.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Horizon.Sdk.Sf.Hipc
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs b/src/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs
index 08b1d89b9..bb9b37e28 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Cmif;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/IServiceObject.cs b/src/Ryujinx.Horizon/Sdk/Sf/IServiceObject.cs
index afa57fef9..f777f510a 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/IServiceObject.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/IServiceObject.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Ryujinx.Horizon.Sdk.Sf
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/RawDataOffsetCalculator.cs b/src/Ryujinx.Horizon/Sdk/Sf/RawDataOffsetCalculator.cs
index 0172c1151..573a50f26 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/RawDataOffsetCalculator.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/RawDataOffsetCalculator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
namespace Ryujinx.Horizon.Sdk.Sf
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/SfResult.cs b/src/Ryujinx.Horizon/Sdk/Sf/SfResult.cs
index 029e17af0..32f160b2d 100644
--- a/src/Ryujinx.Horizon/Sdk/Sf/SfResult.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sf/SfResult.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
namespace Ryujinx.Horizon.Sdk.Sf
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sm/IManagerService.cs b/src/Ryujinx.Horizon/Sdk/Sm/IManagerService.cs
index 2343c7d6f..8d8578fe8 100644
--- a/src/Ryujinx.Horizon/Sdk/Sm/IManagerService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sm/IManagerService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Sm
{
diff --git a/src/Ryujinx.Horizon/Sdk/Sm/IUserService.cs b/src/Ryujinx.Horizon/Sdk/Sm/IUserService.cs
index 8605cdd1b..bc05c007f 100644
--- a/src/Ryujinx.Horizon/Sdk/Sm/IUserService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sm/IUserService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Sm
diff --git a/src/Ryujinx.Horizon/Sdk/Sm/ServiceName.cs b/src/Ryujinx.Horizon/Sdk/Sm/ServiceName.cs
index 1233fad8a..b44106d63 100644
--- a/src/Ryujinx.Horizon/Sdk/Sm/ServiceName.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sm/ServiceName.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
using System.Text;
diff --git a/src/Ryujinx.Horizon/Sdk/Sm/SmApi.cs b/src/Ryujinx.Horizon/Sdk/Sm/SmApi.cs
index 1ab400bde..a63a03a5c 100644
--- a/src/Ryujinx.Horizon/Sdk/Sm/SmApi.cs
+++ b/src/Ryujinx.Horizon/Sdk/Sm/SmApi.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Cmif;
using System;
diff --git a/src/Ryujinx.Horizon/Sdk/Srepo/ISrepoService.cs b/src/Ryujinx.Horizon/Sdk/Srepo/ISrepoService.cs
index 9a1f4ba4f..35218b44e 100644
--- a/src/Ryujinx.Horizon/Sdk/Srepo/ISrepoService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Srepo/ISrepoService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Srepo
{
diff --git a/src/Ryujinx.Horizon/Sdk/Usb/IClientRootSession.cs b/src/Ryujinx.Horizon/Sdk/Usb/IClientRootSession.cs
index 4975ad6b5..b69b94d99 100644
--- a/src/Ryujinx.Horizon/Sdk/Usb/IClientRootSession.cs
+++ b/src/Ryujinx.Horizon/Sdk/Usb/IClientRootSession.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Usb
{
diff --git a/src/Ryujinx.Horizon/Sdk/Usb/IDsRootSession.cs b/src/Ryujinx.Horizon/Sdk/Usb/IDsRootSession.cs
index 32d7aba6c..fb802a262 100644
--- a/src/Ryujinx.Horizon/Sdk/Usb/IDsRootSession.cs
+++ b/src/Ryujinx.Horizon/Sdk/Usb/IDsRootSession.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Usb
{
diff --git a/src/Ryujinx.Horizon/Sdk/Usb/IPdCradleManager.cs b/src/Ryujinx.Horizon/Sdk/Usb/IPdCradleManager.cs
index 0d3865114..125d2e8f2 100644
--- a/src/Ryujinx.Horizon/Sdk/Usb/IPdCradleManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Usb/IPdCradleManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Usb
{
diff --git a/src/Ryujinx.Horizon/Sdk/Usb/IPdManager.cs b/src/Ryujinx.Horizon/Sdk/Usb/IPdManager.cs
index d63821516..52953882e 100644
--- a/src/Ryujinx.Horizon/Sdk/Usb/IPdManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Usb/IPdManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Usb
{
diff --git a/src/Ryujinx.Horizon/Sdk/Usb/IPdManufactureManager.cs b/src/Ryujinx.Horizon/Sdk/Usb/IPdManufactureManager.cs
index 18bac3ea4..eba159c02 100644
--- a/src/Ryujinx.Horizon/Sdk/Usb/IPdManufactureManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Usb/IPdManufactureManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Usb
{
diff --git a/src/Ryujinx.Horizon/Sdk/Usb/IPmObserverService.cs b/src/Ryujinx.Horizon/Sdk/Usb/IPmObserverService.cs
index ef4cc65af..03b1c89be 100644
--- a/src/Ryujinx.Horizon/Sdk/Usb/IPmObserverService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Usb/IPmObserverService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Usb
{
diff --git a/src/Ryujinx.Horizon/Sdk/Usb/IPmService.cs b/src/Ryujinx.Horizon/Sdk/Usb/IPmService.cs
index b8d177bd0..88510eae9 100644
--- a/src/Ryujinx.Horizon/Sdk/Usb/IPmService.cs
+++ b/src/Ryujinx.Horizon/Sdk/Usb/IPmService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Usb
{
diff --git a/src/Ryujinx.Horizon/Sdk/Usb/IQdbManager.cs b/src/Ryujinx.Horizon/Sdk/Usb/IQdbManager.cs
index a8f61f058..1615b020f 100644
--- a/src/Ryujinx.Horizon/Sdk/Usb/IQdbManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Usb/IQdbManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Usb
{
diff --git a/src/Ryujinx.Horizon/Sdk/Wlan/IDetectManager.cs b/src/Ryujinx.Horizon/Sdk/Wlan/IDetectManager.cs
index 2629ed6ef..a48af332f 100644
--- a/src/Ryujinx.Horizon/Sdk/Wlan/IDetectManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Wlan/IDetectManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Wlan
{
diff --git a/src/Ryujinx.Horizon/Sdk/Wlan/IGeneralServiceCreator.cs b/src/Ryujinx.Horizon/Sdk/Wlan/IGeneralServiceCreator.cs
index fa7704e79..7a2d15ea6 100644
--- a/src/Ryujinx.Horizon/Sdk/Wlan/IGeneralServiceCreator.cs
+++ b/src/Ryujinx.Horizon/Sdk/Wlan/IGeneralServiceCreator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Wlan
{
diff --git a/src/Ryujinx.Horizon/Sdk/Wlan/IInfraManager.cs b/src/Ryujinx.Horizon/Sdk/Wlan/IInfraManager.cs
index 6739e1686..473c13a22 100644
--- a/src/Ryujinx.Horizon/Sdk/Wlan/IInfraManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Wlan/IInfraManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Wlan
{
diff --git a/src/Ryujinx.Horizon/Sdk/Wlan/ILocalGetActionFrame.cs b/src/Ryujinx.Horizon/Sdk/Wlan/ILocalGetActionFrame.cs
index 171ddba79..a6b6f475c 100644
--- a/src/Ryujinx.Horizon/Sdk/Wlan/ILocalGetActionFrame.cs
+++ b/src/Ryujinx.Horizon/Sdk/Wlan/ILocalGetActionFrame.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Wlan
{
diff --git a/src/Ryujinx.Horizon/Sdk/Wlan/ILocalGetFrame.cs b/src/Ryujinx.Horizon/Sdk/Wlan/ILocalGetFrame.cs
index 0a8d587ed..000a7f8ab 100644
--- a/src/Ryujinx.Horizon/Sdk/Wlan/ILocalGetFrame.cs
+++ b/src/Ryujinx.Horizon/Sdk/Wlan/ILocalGetFrame.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Wlan
{
diff --git a/src/Ryujinx.Horizon/Sdk/Wlan/ILocalManager.cs b/src/Ryujinx.Horizon/Sdk/Wlan/ILocalManager.cs
index cba9eb918..485a66a1b 100644
--- a/src/Ryujinx.Horizon/Sdk/Wlan/ILocalManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Wlan/ILocalManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Wlan
{
diff --git a/src/Ryujinx.Horizon/Sdk/Wlan/IPrivateServiceCreator.cs b/src/Ryujinx.Horizon/Sdk/Wlan/IPrivateServiceCreator.cs
index 5ab2e0eef..200d88625 100644
--- a/src/Ryujinx.Horizon/Sdk/Wlan/IPrivateServiceCreator.cs
+++ b/src/Ryujinx.Horizon/Sdk/Wlan/IPrivateServiceCreator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Wlan
{
diff --git a/src/Ryujinx.Horizon/Sdk/Wlan/ISfDriverServiceCreator.cs b/src/Ryujinx.Horizon/Sdk/Wlan/ISfDriverServiceCreator.cs
index 78d32e6ae..5a19e208f 100644
--- a/src/Ryujinx.Horizon/Sdk/Wlan/ISfDriverServiceCreator.cs
+++ b/src/Ryujinx.Horizon/Sdk/Wlan/ISfDriverServiceCreator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Wlan
{
diff --git a/src/Ryujinx.Horizon/Sdk/Wlan/ISocketGetFrame.cs b/src/Ryujinx.Horizon/Sdk/Wlan/ISocketGetFrame.cs
index c6d3e0b9a..0c9967c5c 100644
--- a/src/Ryujinx.Horizon/Sdk/Wlan/ISocketGetFrame.cs
+++ b/src/Ryujinx.Horizon/Sdk/Wlan/ISocketGetFrame.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Wlan
{
diff --git a/src/Ryujinx.Horizon/Sdk/Wlan/ISocketManager.cs b/src/Ryujinx.Horizon/Sdk/Wlan/ISocketManager.cs
index dcdfef48c..6df88b54f 100644
--- a/src/Ryujinx.Horizon/Sdk/Wlan/ISocketManager.cs
+++ b/src/Ryujinx.Horizon/Sdk/Wlan/ISocketManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf;
+using Ryujinx.Horizon.Sdk.Sf;
namespace Ryujinx.Horizon.Sdk.Wlan
{
diff --git a/src/Ryujinx.Horizon/Sm/Impl/ServiceInfo.cs b/src/Ryujinx.Horizon/Sm/Impl/ServiceInfo.cs
index fed420aa8..39ed57ceb 100644
--- a/src/Ryujinx.Horizon/Sm/Impl/ServiceInfo.cs
+++ b/src/Ryujinx.Horizon/Sm/Impl/ServiceInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sm;
+using Ryujinx.Horizon.Sdk.Sm;
namespace Ryujinx.Horizon.Sm.Impl
{
diff --git a/src/Ryujinx.Horizon/Sm/Impl/ServiceManager.cs b/src/Ryujinx.Horizon/Sm/Impl/ServiceManager.cs
index 929474aa7..177cc0d3d 100644
--- a/src/Ryujinx.Horizon/Sm/Impl/ServiceManager.cs
+++ b/src/Ryujinx.Horizon/Sm/Impl/ServiceManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.OsTypes;
using Ryujinx.Horizon.Sdk.Sf;
using Ryujinx.Horizon.Sdk.Sm;
diff --git a/src/Ryujinx.Horizon/Sm/Ipc/ManagerService.cs b/src/Ryujinx.Horizon/Sm/Ipc/ManagerService.cs
index c7dcddc91..b9fb9cdad 100644
--- a/src/Ryujinx.Horizon/Sm/Ipc/ManagerService.cs
+++ b/src/Ryujinx.Horizon/Sm/Ipc/ManagerService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sm;
+using Ryujinx.Horizon.Sdk.Sm;
namespace Ryujinx.Horizon.Sm.Ipc
{
diff --git a/src/Ryujinx.Horizon/Sm/Ipc/UserService.cs b/src/Ryujinx.Horizon/Sm/Ipc/UserService.cs
index 868a15e6f..6223f9b51 100644
--- a/src/Ryujinx.Horizon/Sm/Ipc/UserService.cs
+++ b/src/Ryujinx.Horizon/Sm/Ipc/UserService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf;
using Ryujinx.Horizon.Sdk.Sm;
using Ryujinx.Horizon.Sm.Impl;
diff --git a/src/Ryujinx.Horizon/Sm/SmMain.cs b/src/Ryujinx.Horizon/Sm/SmMain.cs
index 7303847ab..024d569f6 100644
--- a/src/Ryujinx.Horizon/Sm/SmMain.cs
+++ b/src/Ryujinx.Horizon/Sm/SmMain.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf.Hipc;
+using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
using Ryujinx.Horizon.Sm.Impl;
using Ryujinx.Horizon.Sm.Types;
diff --git a/src/Ryujinx.Horizon/Sm/SmResult.cs b/src/Ryujinx.Horizon/Sm/SmResult.cs
index 75f47ca93..4cc423788 100644
--- a/src/Ryujinx.Horizon/Sm/SmResult.cs
+++ b/src/Ryujinx.Horizon/Sm/SmResult.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
namespace Ryujinx.Horizon.Sm
{
diff --git a/src/Ryujinx.Horizon/Sm/SmServerManager.cs b/src/Ryujinx.Horizon/Sm/SmServerManager.cs
index c04123455..4b1fa2567 100644
--- a/src/Ryujinx.Horizon/Sm/SmServerManager.cs
+++ b/src/Ryujinx.Horizon/Sm/SmServerManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
using Ryujinx.Horizon.Sm.Impl;
diff --git a/src/Ryujinx.Horizon/Sm/Types/SmPortIndex.cs b/src/Ryujinx.Horizon/Sm/Types/SmPortIndex.cs
index a29778566..fd024bbbb 100644
--- a/src/Ryujinx.Horizon/Sm/Types/SmPortIndex.cs
+++ b/src/Ryujinx.Horizon/Sm/Types/SmPortIndex.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Sm.Types
+namespace Ryujinx.Horizon.Sm.Types
{
enum SmPortIndex
{
diff --git a/src/Ryujinx.Horizon/Srepo/Ipc/SrepoService.cs b/src/Ryujinx.Horizon/Srepo/Ipc/SrepoService.cs
index 501eb5fed..df5ac0f0a 100644
--- a/src/Ryujinx.Horizon/Srepo/Ipc/SrepoService.cs
+++ b/src/Ryujinx.Horizon/Srepo/Ipc/SrepoService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Srepo;
+using Ryujinx.Horizon.Sdk.Srepo;
namespace Ryujinx.Horizon.Srepo.Ipc
{
diff --git a/src/Ryujinx.Horizon/Srepo/SrepoIpcServer.cs b/src/Ryujinx.Horizon/Srepo/SrepoIpcServer.cs
index a971f97b8..2060782cc 100644
--- a/src/Ryujinx.Horizon/Srepo/SrepoIpcServer.cs
+++ b/src/Ryujinx.Horizon/Srepo/SrepoIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf.Hipc;
+using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
using Ryujinx.Horizon.Srepo.Ipc;
diff --git a/src/Ryujinx.Horizon/Srepo/SrepoMain.cs b/src/Ryujinx.Horizon/Srepo/SrepoMain.cs
index 78d813ac9..9c90b94a2 100644
--- a/src/Ryujinx.Horizon/Srepo/SrepoMain.cs
+++ b/src/Ryujinx.Horizon/Srepo/SrepoMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Srepo
+namespace Ryujinx.Horizon.Srepo
{
class SrepoMain : IService
{
diff --git a/src/Ryujinx.Horizon/Usb/Ipc/ClientRootSession.cs b/src/Ryujinx.Horizon/Usb/Ipc/ClientRootSession.cs
index 2167ebcad..dec3f3f91 100644
--- a/src/Ryujinx.Horizon/Usb/Ipc/ClientRootSession.cs
+++ b/src/Ryujinx.Horizon/Usb/Ipc/ClientRootSession.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Usb;
+using Ryujinx.Horizon.Sdk.Usb;
namespace Ryujinx.Horizon.Usb.Ipc
{
diff --git a/src/Ryujinx.Horizon/Usb/Ipc/DsRootSession.cs b/src/Ryujinx.Horizon/Usb/Ipc/DsRootSession.cs
index 8a84537f8..1dd0d32b4 100644
--- a/src/Ryujinx.Horizon/Usb/Ipc/DsRootSession.cs
+++ b/src/Ryujinx.Horizon/Usb/Ipc/DsRootSession.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Usb;
+using Ryujinx.Horizon.Sdk.Usb;
namespace Ryujinx.Horizon.Usb.Ipc
{
diff --git a/src/Ryujinx.Horizon/Usb/Ipc/PdCradleManager.cs b/src/Ryujinx.Horizon/Usb/Ipc/PdCradleManager.cs
index 27e1c4e37..5c0efb667 100644
--- a/src/Ryujinx.Horizon/Usb/Ipc/PdCradleManager.cs
+++ b/src/Ryujinx.Horizon/Usb/Ipc/PdCradleManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Usb;
+using Ryujinx.Horizon.Sdk.Usb;
namespace Ryujinx.Horizon.Usb.Ipc
{
diff --git a/src/Ryujinx.Horizon/Usb/Ipc/PdManager.cs b/src/Ryujinx.Horizon/Usb/Ipc/PdManager.cs
index c501e3f20..1c502919b 100644
--- a/src/Ryujinx.Horizon/Usb/Ipc/PdManager.cs
+++ b/src/Ryujinx.Horizon/Usb/Ipc/PdManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf.Hipc;
+using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Usb;
namespace Ryujinx.Horizon.Usb.Ipc
diff --git a/src/Ryujinx.Horizon/Usb/Ipc/PdManufactureManager.cs b/src/Ryujinx.Horizon/Usb/Ipc/PdManufactureManager.cs
index 04f78b9c2..a909c861b 100644
--- a/src/Ryujinx.Horizon/Usb/Ipc/PdManufactureManager.cs
+++ b/src/Ryujinx.Horizon/Usb/Ipc/PdManufactureManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Usb;
+using Ryujinx.Horizon.Sdk.Usb;
namespace Ryujinx.Horizon.Usb.Ipc
{
diff --git a/src/Ryujinx.Horizon/Usb/Ipc/PmObserverService.cs b/src/Ryujinx.Horizon/Usb/Ipc/PmObserverService.cs
index e2edf4cb9..e1debf423 100644
--- a/src/Ryujinx.Horizon/Usb/Ipc/PmObserverService.cs
+++ b/src/Ryujinx.Horizon/Usb/Ipc/PmObserverService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Usb;
+using Ryujinx.Horizon.Sdk.Usb;
namespace Ryujinx.Horizon.Usb.Ipc
{
diff --git a/src/Ryujinx.Horizon/Usb/Ipc/PmService.cs b/src/Ryujinx.Horizon/Usb/Ipc/PmService.cs
index 625aaa497..8daa27c40 100644
--- a/src/Ryujinx.Horizon/Usb/Ipc/PmService.cs
+++ b/src/Ryujinx.Horizon/Usb/Ipc/PmService.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Usb;
+using Ryujinx.Horizon.Sdk.Usb;
namespace Ryujinx.Horizon.Usb.Ipc
{
diff --git a/src/Ryujinx.Horizon/Usb/Ipc/QdbManager.cs b/src/Ryujinx.Horizon/Usb/Ipc/QdbManager.cs
index 1421142fb..a458bef05 100644
--- a/src/Ryujinx.Horizon/Usb/Ipc/QdbManager.cs
+++ b/src/Ryujinx.Horizon/Usb/Ipc/QdbManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Usb;
+using Ryujinx.Horizon.Sdk.Usb;
namespace Ryujinx.Horizon.Usb.Ipc
{
diff --git a/src/Ryujinx.Horizon/Usb/UsbIpcServer.cs b/src/Ryujinx.Horizon/Usb/UsbIpcServer.cs
index a9158b507..38eeed496 100644
--- a/src/Ryujinx.Horizon/Usb/UsbIpcServer.cs
+++ b/src/Ryujinx.Horizon/Usb/UsbIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf.Hipc;
+using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
using Ryujinx.Horizon.Usb.Ipc;
diff --git a/src/Ryujinx.Horizon/Usb/UsbMain.cs b/src/Ryujinx.Horizon/Usb/UsbMain.cs
index c54b39a65..a9c2e6807 100644
--- a/src/Ryujinx.Horizon/Usb/UsbMain.cs
+++ b/src/Ryujinx.Horizon/Usb/UsbMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Usb
+namespace Ryujinx.Horizon.Usb
{
class UsbMain : IService
{
diff --git a/src/Ryujinx.Horizon/Wlan/Ipc/DetectManager.cs b/src/Ryujinx.Horizon/Wlan/Ipc/DetectManager.cs
index 595592f77..9158807bd 100644
--- a/src/Ryujinx.Horizon/Wlan/Ipc/DetectManager.cs
+++ b/src/Ryujinx.Horizon/Wlan/Ipc/DetectManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Wlan;
+using Ryujinx.Horizon.Sdk.Wlan;
namespace Ryujinx.Horizon.Wlan.Ipc
{
diff --git a/src/Ryujinx.Horizon/Wlan/Ipc/GeneralServiceCreator.cs b/src/Ryujinx.Horizon/Wlan/Ipc/GeneralServiceCreator.cs
index 7f651d227..ef5407d8f 100644
--- a/src/Ryujinx.Horizon/Wlan/Ipc/GeneralServiceCreator.cs
+++ b/src/Ryujinx.Horizon/Wlan/Ipc/GeneralServiceCreator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Wlan;
+using Ryujinx.Horizon.Sdk.Wlan;
namespace Ryujinx.Horizon.Wlan.Ipc
{
diff --git a/src/Ryujinx.Horizon/Wlan/Ipc/InfraManager.cs b/src/Ryujinx.Horizon/Wlan/Ipc/InfraManager.cs
index d69c73b5c..7d3f0fac5 100644
--- a/src/Ryujinx.Horizon/Wlan/Ipc/InfraManager.cs
+++ b/src/Ryujinx.Horizon/Wlan/Ipc/InfraManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Wlan;
+using Ryujinx.Horizon.Sdk.Wlan;
namespace Ryujinx.Horizon.Wlan.Ipc
{
diff --git a/src/Ryujinx.Horizon/Wlan/Ipc/LocalGetActionFrame.cs b/src/Ryujinx.Horizon/Wlan/Ipc/LocalGetActionFrame.cs
index 8458655ed..4606f6e23 100644
--- a/src/Ryujinx.Horizon/Wlan/Ipc/LocalGetActionFrame.cs
+++ b/src/Ryujinx.Horizon/Wlan/Ipc/LocalGetActionFrame.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Wlan;
+using Ryujinx.Horizon.Sdk.Wlan;
namespace Ryujinx.Horizon.Wlan.Ipc
{
diff --git a/src/Ryujinx.Horizon/Wlan/Ipc/LocalGetFrame.cs b/src/Ryujinx.Horizon/Wlan/Ipc/LocalGetFrame.cs
index 5ce8724db..ff5bedb0e 100644
--- a/src/Ryujinx.Horizon/Wlan/Ipc/LocalGetFrame.cs
+++ b/src/Ryujinx.Horizon/Wlan/Ipc/LocalGetFrame.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Wlan;
+using Ryujinx.Horizon.Sdk.Wlan;
namespace Ryujinx.Horizon.Wlan.Ipc
{
diff --git a/src/Ryujinx.Horizon/Wlan/Ipc/LocalManager.cs b/src/Ryujinx.Horizon/Wlan/Ipc/LocalManager.cs
index 789ac1903..602423328 100644
--- a/src/Ryujinx.Horizon/Wlan/Ipc/LocalManager.cs
+++ b/src/Ryujinx.Horizon/Wlan/Ipc/LocalManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Wlan;
+using Ryujinx.Horizon.Sdk.Wlan;
namespace Ryujinx.Horizon.Wlan.Ipc
{
diff --git a/src/Ryujinx.Horizon/Wlan/Ipc/PrivateServiceCreator.cs b/src/Ryujinx.Horizon/Wlan/Ipc/PrivateServiceCreator.cs
index c25723f91..7045419d0 100644
--- a/src/Ryujinx.Horizon/Wlan/Ipc/PrivateServiceCreator.cs
+++ b/src/Ryujinx.Horizon/Wlan/Ipc/PrivateServiceCreator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Wlan;
+using Ryujinx.Horizon.Sdk.Wlan;
namespace Ryujinx.Horizon.Wlan.Ipc
{
diff --git a/src/Ryujinx.Horizon/Wlan/Ipc/SfDriverServiceCreator.cs b/src/Ryujinx.Horizon/Wlan/Ipc/SfDriverServiceCreator.cs
index fd74024b6..212bfae13 100644
--- a/src/Ryujinx.Horizon/Wlan/Ipc/SfDriverServiceCreator.cs
+++ b/src/Ryujinx.Horizon/Wlan/Ipc/SfDriverServiceCreator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Wlan;
+using Ryujinx.Horizon.Sdk.Wlan;
namespace Ryujinx.Horizon.Wlan.Ipc
{
diff --git a/src/Ryujinx.Horizon/Wlan/Ipc/SocketGetFrame.cs b/src/Ryujinx.Horizon/Wlan/Ipc/SocketGetFrame.cs
index 5c1663f68..4104980e2 100644
--- a/src/Ryujinx.Horizon/Wlan/Ipc/SocketGetFrame.cs
+++ b/src/Ryujinx.Horizon/Wlan/Ipc/SocketGetFrame.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Wlan;
+using Ryujinx.Horizon.Sdk.Wlan;
namespace Ryujinx.Horizon.Wlan.Ipc
{
diff --git a/src/Ryujinx.Horizon/Wlan/Ipc/SocketManager.cs b/src/Ryujinx.Horizon/Wlan/Ipc/SocketManager.cs
index a112e7452..947d2a1e5 100644
--- a/src/Ryujinx.Horizon/Wlan/Ipc/SocketManager.cs
+++ b/src/Ryujinx.Horizon/Wlan/Ipc/SocketManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Wlan;
+using Ryujinx.Horizon.Sdk.Wlan;
namespace Ryujinx.Horizon.Wlan.Ipc
{
diff --git a/src/Ryujinx.Horizon/Wlan/WlanIpcServer.cs b/src/Ryujinx.Horizon/Wlan/WlanIpcServer.cs
index eb13f028c..c7b336231 100644
--- a/src/Ryujinx.Horizon/Wlan/WlanIpcServer.cs
+++ b/src/Ryujinx.Horizon/Wlan/WlanIpcServer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Horizon.Sdk.Sf.Hipc;
+using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
using Ryujinx.Horizon.Wlan.Ipc;
diff --git a/src/Ryujinx.Horizon/Wlan/WlanMain.cs b/src/Ryujinx.Horizon/Wlan/WlanMain.cs
index 1381a8cb0..6eef64a21 100644
--- a/src/Ryujinx.Horizon/Wlan/WlanMain.cs
+++ b/src/Ryujinx.Horizon/Wlan/WlanMain.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Horizon.Wlan
+namespace Ryujinx.Horizon.Wlan
{
class WlanMain : IService
{
diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs
index f04fdeb3c..187ca48dd 100644
--- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs
+++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid;
+using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Controller;
using Ryujinx.Common.Logging;
using System;
diff --git a/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs b/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs
index d0e793de4..0e3a13011 100644
--- a/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs
+++ b/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs
@@ -1,4 +1,4 @@
-using Ryujinx.SDL2.Common;
+using Ryujinx.SDL2.Common;
using System;
using System.Collections.Generic;
using static SDL2.SDL;
diff --git a/src/Ryujinx.Input.SDL2/SDL2Keyboard.cs b/src/Ryujinx.Input.SDL2/SDL2Keyboard.cs
index f46930a8e..bc0a7e660 100644
--- a/src/Ryujinx.Input.SDL2/SDL2Keyboard.cs
+++ b/src/Ryujinx.Input.SDL2/SDL2Keyboard.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid;
+using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Keyboard;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Input.SDL2/SDLKeyboardDriver.cs b/src/Ryujinx.Input.SDL2/SDLKeyboardDriver.cs
index d0268adbb..965f7935a 100644
--- a/src/Ryujinx.Input.SDL2/SDLKeyboardDriver.cs
+++ b/src/Ryujinx.Input.SDL2/SDLKeyboardDriver.cs
@@ -1,4 +1,4 @@
-using Ryujinx.SDL2.Common;
+using Ryujinx.SDL2.Common;
using System;
namespace Ryujinx.Input.SDL2
diff --git a/src/Ryujinx.Input/GamepadButtonInputId.cs b/src/Ryujinx.Input/GamepadButtonInputId.cs
index 618f8d0a0..59baa22b4 100644
--- a/src/Ryujinx.Input/GamepadButtonInputId.cs
+++ b/src/Ryujinx.Input/GamepadButtonInputId.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Input
+namespace Ryujinx.Input
{
///
/// Represent a button from a gamepad.
diff --git a/src/Ryujinx.Input/GamepadFeaturesFlag.cs b/src/Ryujinx.Input/GamepadFeaturesFlag.cs
index 206b4ea11..69ec23686 100644
--- a/src/Ryujinx.Input/GamepadFeaturesFlag.cs
+++ b/src/Ryujinx.Input/GamepadFeaturesFlag.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Input
{
diff --git a/src/Ryujinx.Input/GamepadStateSnapshot.cs b/src/Ryujinx.Input/GamepadStateSnapshot.cs
index cf3e3e28d..3de08f574 100644
--- a/src/Ryujinx.Input/GamepadStateSnapshot.cs
+++ b/src/Ryujinx.Input/GamepadStateSnapshot.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.CompilerServices;
namespace Ryujinx.Input
diff --git a/src/Ryujinx.Input/HLE/InputManager.cs b/src/Ryujinx.Input/HLE/InputManager.cs
index 6dba839b9..7111f5502 100644
--- a/src/Ryujinx.Input/HLE/InputManager.cs
+++ b/src/Ryujinx.Input/HLE/InputManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Input.HLE
{
diff --git a/src/Ryujinx.Input/HLE/NpadController.cs b/src/Ryujinx.Input/HLE/NpadController.cs
index c193b45c2..f00db94e2 100644
--- a/src/Ryujinx.Input/HLE/NpadController.cs
+++ b/src/Ryujinx.Input/HLE/NpadController.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Controller;
using Ryujinx.Common.Configuration.Hid.Controller.Motion;
diff --git a/src/Ryujinx.Input/IGamepad.cs b/src/Ryujinx.Input/IGamepad.cs
index c83ad5f82..3853f2819 100644
--- a/src/Ryujinx.Input/IGamepad.cs
+++ b/src/Ryujinx.Input/IGamepad.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid;
+using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Memory;
using System;
using System.Numerics;
diff --git a/src/Ryujinx.Input/IGamepadDriver.cs b/src/Ryujinx.Input/IGamepadDriver.cs
index 792aef004..67b01c26c 100644
--- a/src/Ryujinx.Input/IGamepadDriver.cs
+++ b/src/Ryujinx.Input/IGamepadDriver.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Input
{
diff --git a/src/Ryujinx.Input/IKeyboard.cs b/src/Ryujinx.Input/IKeyboard.cs
index 506ec0995..2fc660112 100644
--- a/src/Ryujinx.Input/IKeyboard.cs
+++ b/src/Ryujinx.Input/IKeyboard.cs
@@ -1,4 +1,4 @@
-using System.Runtime.CompilerServices;
+using System.Runtime.CompilerServices;
namespace Ryujinx.Input
{
diff --git a/src/Ryujinx.Input/Key.cs b/src/Ryujinx.Input/Key.cs
index b4229e059..604022156 100644
--- a/src/Ryujinx.Input/Key.cs
+++ b/src/Ryujinx.Input/Key.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Input
+namespace Ryujinx.Input
{
///
/// Represent a key from a keyboard.
diff --git a/src/Ryujinx.Input/KeyboardStateSnapshot.cs b/src/Ryujinx.Input/KeyboardStateSnapshot.cs
index abf85666b..e0374a861 100644
--- a/src/Ryujinx.Input/KeyboardStateSnapshot.cs
+++ b/src/Ryujinx.Input/KeyboardStateSnapshot.cs
@@ -1,4 +1,4 @@
-using System.Runtime.CompilerServices;
+using System.Runtime.CompilerServices;
namespace Ryujinx.Input
{
diff --git a/src/Ryujinx.Input/Motion/CemuHook/Client.cs b/src/Ryujinx.Input/Motion/CemuHook/Client.cs
index b8b936c1e..e19f3d847 100644
--- a/src/Ryujinx.Input/Motion/CemuHook/Client.cs
+++ b/src/Ryujinx.Input/Motion/CemuHook/Client.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Controller;
using Ryujinx.Common.Configuration.Hid.Controller.Motion;
diff --git a/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs b/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs
index 4eee2e8e0..3a2282ad2 100644
--- a/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs
+++ b/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.Input.Motion.CemuHook.Protocol
diff --git a/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs b/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs
index 3e51c2915..d19c99c57 100644
--- a/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs
+++ b/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.Input.Motion.CemuHook.Protocol
diff --git a/src/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs b/src/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs
index 142006d17..9faa189cd 100644
--- a/src/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs
+++ b/src/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.Input.Motion.CemuHook.Protocol
diff --git a/src/Ryujinx.Input/Motion/CemuHook/Protocol/MessageType.cs b/src/Ryujinx.Input/Motion/CemuHook/Protocol/MessageType.cs
index 5ef15a7a3..5c4b04a2b 100644
--- a/src/Ryujinx.Input/Motion/CemuHook/Protocol/MessageType.cs
+++ b/src/Ryujinx.Input/Motion/CemuHook/Protocol/MessageType.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Input.Motion.CemuHook.Protocol
+namespace Ryujinx.Input.Motion.CemuHook.Protocol
{
public enum MessageType : uint
{
diff --git a/src/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs b/src/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs
index be37f53b6..3cb52bb81 100644
--- a/src/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs
+++ b/src/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Memory;
+using Ryujinx.Common.Memory;
using System.Runtime.InteropServices;
namespace Ryujinx.Input.Motion.CemuHook.Protocol
diff --git a/src/Ryujinx.Input/Motion/MotionInput.cs b/src/Ryujinx.Input/Motion/MotionInput.cs
index 2c7af58f6..9d781c58a 100644
--- a/src/Ryujinx.Input/Motion/MotionInput.cs
+++ b/src/Ryujinx.Input/Motion/MotionInput.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Input.Motion;
+using Ryujinx.Input.Motion;
using System;
using System.Numerics;
diff --git a/src/Ryujinx.Input/Motion/MotionSensorFilter.cs b/src/Ryujinx.Input/Motion/MotionSensorFilter.cs
index 1a9749682..e51633c18 100644
--- a/src/Ryujinx.Input/Motion/MotionSensorFilter.cs
+++ b/src/Ryujinx.Input/Motion/MotionSensorFilter.cs
@@ -1,4 +1,4 @@
-using System.Numerics;
+using System.Numerics;
namespace Ryujinx.Input.Motion
{
diff --git a/src/Ryujinx.Input/MotionInputId.cs b/src/Ryujinx.Input/MotionInputId.cs
index 61c7d305c..8aeb043a9 100644
--- a/src/Ryujinx.Input/MotionInputId.cs
+++ b/src/Ryujinx.Input/MotionInputId.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Input
+namespace Ryujinx.Input
{
///
/// Represent a motion sensor on a gamepad.
diff --git a/src/Ryujinx.Input/StickInputId.cs b/src/Ryujinx.Input/StickInputId.cs
index 94c0f25e8..fa2113ec5 100644
--- a/src/Ryujinx.Input/StickInputId.cs
+++ b/src/Ryujinx.Input/StickInputId.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Input
+namespace Ryujinx.Input
{
///
/// Represent a joystick from a gamepad.
diff --git a/src/Ryujinx.Memory/AddressSpaceManager.cs b/src/Ryujinx.Memory/AddressSpaceManager.cs
index b8d48365c..021d33663 100644
--- a/src/Ryujinx.Memory/AddressSpaceManager.cs
+++ b/src/Ryujinx.Memory/AddressSpaceManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory.Range;
+using Ryujinx.Memory.Range;
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/src/Ryujinx.Memory/IRefCounted.cs b/src/Ryujinx.Memory/IRefCounted.cs
index e0a311d6d..697a16277 100644
--- a/src/Ryujinx.Memory/IRefCounted.cs
+++ b/src/Ryujinx.Memory/IRefCounted.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Memory
+namespace Ryujinx.Memory
{
public interface IRefCounted
{
diff --git a/src/Ryujinx.Memory/IVirtualMemoryManager.cs b/src/Ryujinx.Memory/IVirtualMemoryManager.cs
index 8c9ca1684..9cf3663cf 100644
--- a/src/Ryujinx.Memory/IVirtualMemoryManager.cs
+++ b/src/Ryujinx.Memory/IVirtualMemoryManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory.Range;
+using Ryujinx.Memory.Range;
using System;
using System.Buffers;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Memory/IWritableBlock.cs b/src/Ryujinx.Memory/IWritableBlock.cs
index 36b9f5a6e..0858e0c96 100644
--- a/src/Ryujinx.Memory/IWritableBlock.cs
+++ b/src/Ryujinx.Memory/IWritableBlock.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Memory
{
diff --git a/src/Ryujinx.Memory/InvalidAccessHandler.cs b/src/Ryujinx.Memory/InvalidAccessHandler.cs
index 3dadb766d..963cee9d5 100644
--- a/src/Ryujinx.Memory/InvalidAccessHandler.cs
+++ b/src/Ryujinx.Memory/InvalidAccessHandler.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Memory
+namespace Ryujinx.Memory
{
///
/// Function that handles a invalid memory access from the emulated CPU.
diff --git a/src/Ryujinx.Memory/InvalidMemoryRegionException.cs b/src/Ryujinx.Memory/InvalidMemoryRegionException.cs
index 014824002..55503dd76 100644
--- a/src/Ryujinx.Memory/InvalidMemoryRegionException.cs
+++ b/src/Ryujinx.Memory/InvalidMemoryRegionException.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Memory
{
diff --git a/src/Ryujinx.Memory/MemoryAllocationFlags.cs b/src/Ryujinx.Memory/MemoryAllocationFlags.cs
index e5fa9360d..d8d1a83c4 100644
--- a/src/Ryujinx.Memory/MemoryAllocationFlags.cs
+++ b/src/Ryujinx.Memory/MemoryAllocationFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Memory
{
diff --git a/src/Ryujinx.Memory/MemoryBlock.cs b/src/Ryujinx.Memory/MemoryBlock.cs
index 7d8d7cf05..7fe7862a9 100644
--- a/src/Ryujinx.Memory/MemoryBlock.cs
+++ b/src/Ryujinx.Memory/MemoryBlock.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
using System.Threading;
diff --git a/src/Ryujinx.Memory/MemoryConstants.cs b/src/Ryujinx.Memory/MemoryConstants.cs
index fc6f87e03..6cf9403bf 100644
--- a/src/Ryujinx.Memory/MemoryConstants.cs
+++ b/src/Ryujinx.Memory/MemoryConstants.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Memory
+namespace Ryujinx.Memory
{
static class MemoryConstants
{
diff --git a/src/Ryujinx.Memory/MemoryManagement.cs b/src/Ryujinx.Memory/MemoryManagement.cs
index 3415ba40e..860d3f368 100644
--- a/src/Ryujinx.Memory/MemoryManagement.cs
+++ b/src/Ryujinx.Memory/MemoryManagement.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Memory
{
diff --git a/src/Ryujinx.Memory/MemoryManagementUnix.cs b/src/Ryujinx.Memory/MemoryManagementUnix.cs
index 9827b59be..e132dbbb8 100644
--- a/src/Ryujinx.Memory/MemoryManagementUnix.cs
+++ b/src/Ryujinx.Memory/MemoryManagementUnix.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Concurrent;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx.Memory/MemoryManagementWindows.cs b/src/Ryujinx.Memory/MemoryManagementWindows.cs
index b5be5b3cf..742ef6c96 100644
--- a/src/Ryujinx.Memory/MemoryManagementWindows.cs
+++ b/src/Ryujinx.Memory/MemoryManagementWindows.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory.WindowsShared;
+using Ryujinx.Memory.WindowsShared;
using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx.Memory/MemoryManagerUnixHelper.cs b/src/Ryujinx.Memory/MemoryManagerUnixHelper.cs
index 6f36a6d56..43888c85b 100644
--- a/src/Ryujinx.Memory/MemoryManagerUnixHelper.cs
+++ b/src/Ryujinx.Memory/MemoryManagerUnixHelper.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx.Memory/MemoryNotContiguousException.cs b/src/Ryujinx.Memory/MemoryNotContiguousException.cs
index 3468adb99..b392ead85 100644
--- a/src/Ryujinx.Memory/MemoryNotContiguousException.cs
+++ b/src/Ryujinx.Memory/MemoryNotContiguousException.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Memory
{
diff --git a/src/Ryujinx.Memory/MemoryPermission.cs b/src/Ryujinx.Memory/MemoryPermission.cs
index 6e71d7b8c..fae9428af 100644
--- a/src/Ryujinx.Memory/MemoryPermission.cs
+++ b/src/Ryujinx.Memory/MemoryPermission.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Memory
{
diff --git a/src/Ryujinx.Memory/MemoryProtectionException.cs b/src/Ryujinx.Memory/MemoryProtectionException.cs
index e5606e99f..304ce8ed5 100644
--- a/src/Ryujinx.Memory/MemoryProtectionException.cs
+++ b/src/Ryujinx.Memory/MemoryProtectionException.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.InteropServices;
namespace Ryujinx.Memory
diff --git a/src/Ryujinx.Memory/NativeMemoryManager.cs b/src/Ryujinx.Memory/NativeMemoryManager.cs
index d17579354..fe718bda8 100644
--- a/src/Ryujinx.Memory/NativeMemoryManager.cs
+++ b/src/Ryujinx.Memory/NativeMemoryManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Buffers;
namespace Ryujinx.Memory
diff --git a/src/Ryujinx.Memory/PageTable.cs b/src/Ryujinx.Memory/PageTable.cs
index 8fdedd4f8..ff22d028e 100644
--- a/src/Ryujinx.Memory/PageTable.cs
+++ b/src/Ryujinx.Memory/PageTable.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Memory
+namespace Ryujinx.Memory
{
public class PageTable where T : unmanaged
{
diff --git a/src/Ryujinx.Memory/Range/IMultiRangeItem.cs b/src/Ryujinx.Memory/Range/IMultiRangeItem.cs
index e95a69fc3..87fde2465 100644
--- a/src/Ryujinx.Memory/Range/IMultiRangeItem.cs
+++ b/src/Ryujinx.Memory/Range/IMultiRangeItem.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Memory.Range
+namespace Ryujinx.Memory.Range
{
public interface IMultiRangeItem
{
diff --git a/src/Ryujinx.Memory/Range/INonOverlappingRange.cs b/src/Ryujinx.Memory/Range/INonOverlappingRange.cs
index 1886eb1d0..23194e0f2 100644
--- a/src/Ryujinx.Memory/Range/INonOverlappingRange.cs
+++ b/src/Ryujinx.Memory/Range/INonOverlappingRange.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Memory.Range
+namespace Ryujinx.Memory.Range
{
///
/// Range of memory that can be split in two.
diff --git a/src/Ryujinx.Memory/Range/MemoryRange.cs b/src/Ryujinx.Memory/Range/MemoryRange.cs
index 7e7b84b51..46aca9ba0 100644
--- a/src/Ryujinx.Memory/Range/MemoryRange.cs
+++ b/src/Ryujinx.Memory/Range/MemoryRange.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Memory.Range
+namespace Ryujinx.Memory.Range
{
///
/// Range of memory composed of an address and size.
diff --git a/src/Ryujinx.Memory/Range/MultiRange.cs b/src/Ryujinx.Memory/Range/MultiRange.cs
index 5a0b4178a..093e21903 100644
--- a/src/Ryujinx.Memory/Range/MultiRange.cs
+++ b/src/Ryujinx.Memory/Range/MultiRange.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
namespace Ryujinx.Memory.Range
@@ -15,6 +15,11 @@ namespace Ryujinx.Memory.Range
private bool HasSingleRange => _ranges == null;
+ ///
+ /// Indicates that the range is fully unmapped.
+ ///
+ public bool IsUnmapped => HasSingleRange && _singleRange.Address == InvalidAddress;
+
///
/// Total of physical sub-ranges on the virtual memory region.
///
@@ -38,8 +43,18 @@ namespace Ryujinx.Memory.Range
/// is null
public MultiRange(MemoryRange[] ranges)
{
- _singleRange = MemoryRange.Empty;
- _ranges = ranges ?? throw new ArgumentNullException(nameof(ranges));
+ ArgumentNullException.ThrowIfNull(ranges);
+
+ if (ranges.Length == 1)
+ {
+ _singleRange = ranges[0];
+ _ranges = null;
+ }
+ else
+ {
+ _singleRange = MemoryRange.Empty;
+ _ranges = ranges;
+ }
}
///
@@ -91,7 +106,7 @@ namespace Ryujinx.Memory.Range
offset -= range.Size;
}
- return new MultiRange(ranges.ToArray());
+ return ranges.Count == 1 ? new MultiRange(ranges[0].Address, ranges[0].Size) : new MultiRange(ranges.ToArray());
}
}
diff --git a/src/Ryujinx.Memory/Range/MultiRangeList.cs b/src/Ryujinx.Memory/Range/MultiRangeList.cs
index 5131889fc..1804ff5c8 100644
--- a/src/Ryujinx.Memory/Range/MultiRangeList.cs
+++ b/src/Ryujinx.Memory/Range/MultiRangeList.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Collections;
+using Ryujinx.Common.Collections;
using System.Collections;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Memory/Range/NonOverlappingRangeList.cs b/src/Ryujinx.Memory/Range/NonOverlappingRangeList.cs
index 60b2b3784..511589176 100644
--- a/src/Ryujinx.Memory/Range/NonOverlappingRangeList.cs
+++ b/src/Ryujinx.Memory/Range/NonOverlappingRangeList.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
namespace Ryujinx.Memory.Range
diff --git a/src/Ryujinx.Memory/Tracking/AbstractRegion.cs b/src/Ryujinx.Memory/Tracking/AbstractRegion.cs
index bd4c8ab5c..7226fe954 100644
--- a/src/Ryujinx.Memory/Tracking/AbstractRegion.cs
+++ b/src/Ryujinx.Memory/Tracking/AbstractRegion.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory.Range;
+using Ryujinx.Memory.Range;
namespace Ryujinx.Memory.Tracking
{
diff --git a/src/Ryujinx.Memory/Tracking/BitMap.cs b/src/Ryujinx.Memory/Tracking/BitMap.cs
index 173952f3c..8f0086fc1 100644
--- a/src/Ryujinx.Memory/Tracking/BitMap.cs
+++ b/src/Ryujinx.Memory/Tracking/BitMap.cs
@@ -1,4 +1,4 @@
-using System.Runtime.CompilerServices;
+using System.Runtime.CompilerServices;
namespace Ryujinx.Memory.Tracking
{
diff --git a/src/Ryujinx.Memory/Tracking/ConcurrentBitmap.cs b/src/Ryujinx.Memory/Tracking/ConcurrentBitmap.cs
index 994fda921..b588b0a84 100644
--- a/src/Ryujinx.Memory/Tracking/ConcurrentBitmap.cs
+++ b/src/Ryujinx.Memory/Tracking/ConcurrentBitmap.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading;
namespace Ryujinx.Memory.Tracking
diff --git a/src/Ryujinx.Memory/Tracking/IMultiRegionHandle.cs b/src/Ryujinx.Memory/Tracking/IMultiRegionHandle.cs
index 71bd602fa..62b58344d 100644
--- a/src/Ryujinx.Memory/Tracking/IMultiRegionHandle.cs
+++ b/src/Ryujinx.Memory/Tracking/IMultiRegionHandle.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Memory.Tracking
{
diff --git a/src/Ryujinx.Memory/Tracking/IRegionHandle.cs b/src/Ryujinx.Memory/Tracking/IRegionHandle.cs
index 9d99d90e8..28bae8328 100644
--- a/src/Ryujinx.Memory/Tracking/IRegionHandle.cs
+++ b/src/Ryujinx.Memory/Tracking/IRegionHandle.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Memory.Tracking
{
diff --git a/src/Ryujinx.Memory/Tracking/MemoryTracking.cs b/src/Ryujinx.Memory/Tracking/MemoryTracking.cs
index ab9d98932..6febcbbb3 100644
--- a/src/Ryujinx.Memory/Tracking/MemoryTracking.cs
+++ b/src/Ryujinx.Memory/Tracking/MemoryTracking.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Pools;
+using Ryujinx.Common.Pools;
using Ryujinx.Memory.Range;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs b/src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs
index 5d3f20f4f..1c1b48b3c 100644
--- a/src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs
+++ b/src/Ryujinx.Memory/Tracking/MultiRegionHandle.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
diff --git a/src/Ryujinx.Memory/Tracking/PreciseRegionSignal.cs b/src/Ryujinx.Memory/Tracking/PreciseRegionSignal.cs
index 038f95956..9828584a6 100644
--- a/src/Ryujinx.Memory/Tracking/PreciseRegionSignal.cs
+++ b/src/Ryujinx.Memory/Tracking/PreciseRegionSignal.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Memory.Tracking
+namespace Ryujinx.Memory.Tracking
{
public delegate bool PreciseRegionSignal(ulong address, ulong size, bool write);
}
diff --git a/src/Ryujinx.Memory/Tracking/RegionHandle.cs b/src/Ryujinx.Memory/Tracking/RegionHandle.cs
index d36207cad..df3d9c311 100644
--- a/src/Ryujinx.Memory/Tracking/RegionHandle.cs
+++ b/src/Ryujinx.Memory/Tracking/RegionHandle.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
diff --git a/src/Ryujinx.Memory/Tracking/RegionSignal.cs b/src/Ryujinx.Memory/Tracking/RegionSignal.cs
index c8a28d7d7..78c8687f0 100644
--- a/src/Ryujinx.Memory/Tracking/RegionSignal.cs
+++ b/src/Ryujinx.Memory/Tracking/RegionSignal.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Memory.Tracking
+namespace Ryujinx.Memory.Tracking
{
public delegate void RegionSignal(ulong address, ulong size);
}
diff --git a/src/Ryujinx.Memory/Tracking/SmartMultiRegionHandle.cs b/src/Ryujinx.Memory/Tracking/SmartMultiRegionHandle.cs
index bab00377d..57129a182 100644
--- a/src/Ryujinx.Memory/Tracking/SmartMultiRegionHandle.cs
+++ b/src/Ryujinx.Memory/Tracking/SmartMultiRegionHandle.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Runtime.CompilerServices;
namespace Ryujinx.Memory.Tracking
diff --git a/src/Ryujinx.Memory/Tracking/VirtualRegion.cs b/src/Ryujinx.Memory/Tracking/VirtualRegion.cs
index e595196c7..538e94fef 100644
--- a/src/Ryujinx.Memory/Tracking/VirtualRegion.cs
+++ b/src/Ryujinx.Memory/Tracking/VirtualRegion.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory.Range;
+using Ryujinx.Memory.Range;
using System.Collections.Generic;
namespace Ryujinx.Memory.Tracking
diff --git a/src/Ryujinx.Memory/WindowsShared/WindowsFlags.cs b/src/Ryujinx.Memory/WindowsShared/WindowsFlags.cs
index 7dd4215ee..6effff743 100644
--- a/src/Ryujinx.Memory/WindowsShared/WindowsFlags.cs
+++ b/src/Ryujinx.Memory/WindowsShared/WindowsFlags.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Memory.WindowsShared
{
diff --git a/src/Ryujinx.Memory/WritableRegion.cs b/src/Ryujinx.Memory/WritableRegion.cs
index 21565ea5c..666c8a99b 100644
--- a/src/Ryujinx.Memory/WritableRegion.cs
+++ b/src/Ryujinx.Memory/WritableRegion.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Memory
{
diff --git a/src/Ryujinx.SDL2.Common/SDL2Driver.cs b/src/Ryujinx.SDL2.Common/SDL2Driver.cs
index 2642b26fa..db1a85e3a 100644
--- a/src/Ryujinx.SDL2.Common/SDL2Driver.cs
+++ b/src/Ryujinx.SDL2.Common/SDL2Driver.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using System;
using System.Collections.Concurrent;
diff --git a/src/Ryujinx.ShaderTools/Program.cs b/src/Ryujinx.ShaderTools/Program.cs
index 4211ab491..04453912b 100644
--- a/src/Ryujinx.ShaderTools/Program.cs
+++ b/src/Ryujinx.ShaderTools/Program.cs
@@ -1,4 +1,4 @@
-using CommandLine;
+using CommandLine;
using Ryujinx.Graphics.Shader;
using Ryujinx.Graphics.Shader.Translation;
using System;
diff --git a/src/Ryujinx.Tests.Memory/MockVirtualMemoryManager.cs b/src/Ryujinx.Tests.Memory/MockVirtualMemoryManager.cs
index 435bb35ae..5c8396e6d 100644
--- a/src/Ryujinx.Tests.Memory/MockVirtualMemoryManager.cs
+++ b/src/Ryujinx.Tests.Memory/MockVirtualMemoryManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Memory;
+using Ryujinx.Memory;
using Ryujinx.Memory.Range;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Tests.Memory/MultiRegionTrackingTests.cs b/src/Ryujinx.Tests.Memory/MultiRegionTrackingTests.cs
index 564ebd806..c71a3e1f0 100644
--- a/src/Ryujinx.Tests.Memory/MultiRegionTrackingTests.cs
+++ b/src/Ryujinx.Tests.Memory/MultiRegionTrackingTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Memory;
using Ryujinx.Memory.Tracking;
using System;
diff --git a/src/Ryujinx.Tests.Memory/TrackingTests.cs b/src/Ryujinx.Tests.Memory/TrackingTests.cs
index 035f0c228..c74446cfb 100644
--- a/src/Ryujinx.Tests.Memory/TrackingTests.cs
+++ b/src/Ryujinx.Tests.Memory/TrackingTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Memory;
using Ryujinx.Memory.Tracking;
using System;
diff --git a/src/Ryujinx.Tests.Unicorn/UnicornAArch32.cs b/src/Ryujinx.Tests.Unicorn/UnicornAArch32.cs
index 245487771..6fe62b741 100644
--- a/src/Ryujinx.Tests.Unicorn/UnicornAArch32.cs
+++ b/src/Ryujinx.Tests.Unicorn/UnicornAArch32.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using UnicornEngine.Const;
namespace Ryujinx.Tests.Unicorn
diff --git a/src/Ryujinx.Tests/Audio/Renderer/AudioRendererConfigurationTests.cs b/src/Ryujinx.Tests/Audio/Renderer/AudioRendererConfigurationTests.cs
index 6467bdf3b..845b6493c 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/AudioRendererConfigurationTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/AudioRendererConfigurationTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/BehaviourParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/BehaviourParameterTests.cs
index cf87e15c1..1d8c8964f 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/BehaviourParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/BehaviourParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Common;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/BiquadFilterParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/BiquadFilterParameterTests.cs
index 0f6e38335..617b52457 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/BiquadFilterParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/BiquadFilterParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Common/UpdateDataHeaderTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Common/UpdateDataHeaderTests.cs
index f6572e555..256679f73 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Common/UpdateDataHeaderTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Common/UpdateDataHeaderTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Common;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Common/VoiceUpdateStateTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Common/VoiceUpdateStateTests.cs
index fe935cb60..7b09d18cc 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Common/VoiceUpdateStateTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Common/VoiceUpdateStateTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Common;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Common/WaveBufferTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Common/WaveBufferTests.cs
index f7411e719..91f9c0561 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Common/WaveBufferTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Common/WaveBufferTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Common;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Dsp/ResamplerTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Dsp/ResamplerTests.cs
index 0624f3401..f393c971a 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Dsp/ResamplerTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Dsp/ResamplerTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Dsp;
using Ryujinx.Audio.Renderer.Parameter;
using System;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Dsp/UpsamplerTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Dsp/UpsamplerTests.cs
index 9b01b3ca6..3b1b94441 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Dsp/UpsamplerTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Dsp/UpsamplerTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Dsp;
using Ryujinx.Audio.Renderer.Server.Upsampler;
using System;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/EffectInfoParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/EffectInfoParameterTests.cs
index c4ac82f07..ee28423be 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/EffectInfoParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/EffectInfoParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/EffectOutStatusTests.cs b/src/Ryujinx.Tests/Audio/Renderer/EffectOutStatusTests.cs
index 8cb57da37..2a4449437 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/EffectOutStatusTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/EffectOutStatusTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/MemoryPoolParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/MemoryPoolParameterTests.cs
index 2850fd35b..733629a95 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/MemoryPoolParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/MemoryPoolParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/BehaviourErrorInfoOutStatusTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/BehaviourErrorInfoOutStatusTests.cs
index 7323e7205..a21729561 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/BehaviourErrorInfoOutStatusTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/BehaviourErrorInfoOutStatusTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/AuxParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/AuxParameterTests.cs
index 101bd3481..75b24c40a 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/AuxParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/AuxParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Effect;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/BiquadFilterEffectParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/BiquadFilterEffectParameterTests.cs
index 6cb7d93a6..73c1ea9d3 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/BiquadFilterEffectParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/BiquadFilterEffectParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Effect;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/BufferMixerParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/BufferMixerParameterTests.cs
index 49ff509ca..7a86e3736 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/BufferMixerParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/BufferMixerParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Effect;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/CompressorParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/CompressorParameterTests.cs
index 016338dc7..de7733ae4 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/CompressorParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/CompressorParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Effect;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/DelayParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/DelayParameterTests.cs
index b11e3f473..3daaf9a16 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/DelayParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/DelayParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Effect;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/LimiterParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/LimiterParameterTests.cs
index e176cc62f..b74999567 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/LimiterParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/LimiterParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Effect;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/LimiterStatisticsTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/LimiterStatisticsTests.cs
index 13ad34ebd..9b3bfb13f 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/LimiterStatisticsTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/LimiterStatisticsTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Effect;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/Reverb3dParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/Reverb3dParameterTests.cs
index 694ed55d6..a5d562fbe 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/Reverb3dParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/Reverb3dParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Effect;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/ReverbParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/ReverbParameterTests.cs
index ef9f3457d..6cc103f82 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/ReverbParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Effect/ReverbParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Effect;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/MixInParameterDirtyOnlyUpdateTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/MixInParameterDirtyOnlyUpdateTests.cs
index 03184fdf5..148e8a5db 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/MixInParameterDirtyOnlyUpdateTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/MixInParameterDirtyOnlyUpdateTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/MixParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/MixParameterTests.cs
index 4fb2bb770..d9c0e1c73 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/MixParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/MixParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/PerformanceInParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/PerformanceInParameterTests.cs
index a81fa1460..685b9ed5f 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/PerformanceInParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/PerformanceInParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Performance;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/PerformanceOutStatusTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/PerformanceOutStatusTests.cs
index e61dea2e5..eb39fe48d 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/PerformanceOutStatusTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/PerformanceOutStatusTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Performance;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/RendererInfoOutStatusTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/RendererInfoOutStatusTests.cs
index 6b60db29e..34f049656 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/RendererInfoOutStatusTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/RendererInfoOutStatusTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Sink/CircularBufferParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Sink/CircularBufferParameterTests.cs
index 8bc37c1c1..f5113fd06 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Sink/CircularBufferParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Sink/CircularBufferParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Sink;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Sink/DeviceParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Sink/DeviceParameterTests.cs
index 27ae2b473..e7677c822 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/Sink/DeviceParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/Sink/DeviceParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter.Sink;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/SinkInParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/SinkInParameterTests.cs
index 21a178890..84f9cd9a1 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/SinkInParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/SinkInParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/SinkOutStatusTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/SinkOutStatusTests.cs
index 828248afe..18c501d22 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/SinkOutStatusTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/SinkOutStatusTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Parameter/SplitterInParamHeaderTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Parameter/SplitterInParamHeaderTests.cs
index fc966e4c8..f7a2965f5 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Parameter/SplitterInParamHeaderTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Parameter/SplitterInParamHeaderTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Server/AddressInfoTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Server/AddressInfoTests.cs
index 7c6b65267..53a662584 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Server/AddressInfoTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Server/AddressInfoTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Server.MemoryPool;
using System;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Server/MemoryPoolStateTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Server/MemoryPoolStateTests.cs
index 94dc69066..c6a2e473e 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Server/MemoryPoolStateTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Server/MemoryPoolStateTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Server.MemoryPool;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Server/MixStateTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Server/MixStateTests.cs
index d1ddf64d1..6262913b4 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Server/MixStateTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Server/MixStateTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Server.Mix;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Server/PoolMapperTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Server/PoolMapperTests.cs
index 4c931d9ee..d7879d627 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Server/PoolMapperTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Server/PoolMapperTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio;
using Ryujinx.Audio.Renderer.Server.MemoryPool;
using System;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Server/SplitterDestinationTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Server/SplitterDestinationTests.cs
index 513629546..ad974aab1 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Server/SplitterDestinationTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Server/SplitterDestinationTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Server.Splitter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Server/SplitterStateTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Server/SplitterStateTests.cs
index 2486f8c0b..0421bd9d1 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Server/SplitterStateTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Server/SplitterStateTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Server.Splitter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Server/VoiceChannelResourceTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Server/VoiceChannelResourceTests.cs
index 0b8672862..565ac7a69 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Server/VoiceChannelResourceTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Server/VoiceChannelResourceTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Server.Voice;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Server/VoiceStateTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Server/VoiceStateTests.cs
index ddd05bc4f..dbd6eff8f 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Server/VoiceStateTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Server/VoiceStateTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Server.Voice;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/Server/WaveBufferTests.cs b/src/Ryujinx.Tests/Audio/Renderer/Server/WaveBufferTests.cs
index 9f3889c08..0e2ed0e85 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/Server/WaveBufferTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/Server/WaveBufferTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Server.Voice;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/VoiceChannelResourceInParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/VoiceChannelResourceInParameterTests.cs
index b04f505e5..2bcfd32c3 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/VoiceChannelResourceInParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/VoiceChannelResourceInParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/VoiceInParameterTests.cs b/src/Ryujinx.Tests/Audio/Renderer/VoiceInParameterTests.cs
index 9770189cb..239da195a 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/VoiceInParameterTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/VoiceInParameterTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Audio/Renderer/VoiceOutStatusTests.cs b/src/Ryujinx.Tests/Audio/Renderer/VoiceOutStatusTests.cs
index abef0646b..1579d89b5 100644
--- a/src/Ryujinx.Tests/Audio/Renderer/VoiceOutStatusTests.cs
+++ b/src/Ryujinx.Tests/Audio/Renderer/VoiceOutStatusTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Audio.Renderer.Parameter;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTest.cs b/src/Ryujinx.Tests/Cpu/CpuTest.cs
index 35158c0b4..da0f03e6b 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTest.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTest.cs
@@ -61,7 +61,6 @@ namespace Ryujinx.Tests.Cpu
_memory.Map(DataBaseAddress, Size, Size, MemoryMapFlags.Private);
_context = CpuContext.CreateExecutionContext();
- Translator.IsReadyForTranslation.Set();
_cpuContext = new CpuContext(_memory, for64Bit: true);
diff --git a/src/Ryujinx.Tests/Cpu/CpuTest32.cs b/src/Ryujinx.Tests/Cpu/CpuTest32.cs
index 05a4d3bee..6a690834f 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTest32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTest32.cs
@@ -1,4 +1,4 @@
-using ARMeilleure;
+using ARMeilleure;
using ARMeilleure.State;
using ARMeilleure.Translation;
using NUnit.Framework;
@@ -56,7 +56,6 @@ namespace Ryujinx.Tests.Cpu
_context = CpuContext.CreateExecutionContext();
_context.IsAarch32 = true;
- Translator.IsReadyForTranslation.Set();
_cpuContext = new CpuContext(_memory, for64Bit: false);
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestAlu32.cs b/src/Ryujinx.Tests/Cpu/CpuTestAlu32.cs
index 404dfd7de..41365c624 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestAlu32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestAlu32.cs
@@ -1,4 +1,4 @@
-#define Alu32
+#define Alu32
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestAluBinary32.cs b/src/Ryujinx.Tests/Cpu/CpuTestAluBinary32.cs
index 4e355358a..43d054368 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestAluBinary32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestAluBinary32.cs
@@ -1,4 +1,4 @@
-#define AluBinary32
+#define AluBinary32
using ARMeilleure.State;
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestAluRs32.cs b/src/Ryujinx.Tests/Cpu/CpuTestAluRs32.cs
index f8fb013d5..0e71b1839 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestAluRs32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestAluRs32.cs
@@ -1,4 +1,4 @@
-#define AluRs32
+#define AluRs32
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestBf32.cs b/src/Ryujinx.Tests/Cpu/CpuTestBf32.cs
index 5afefd62c..197171b8d 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestBf32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestBf32.cs
@@ -1,4 +1,4 @@
-#define Bf32
+#define Bf32
using NUnit.Framework;
using System;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestMul32.cs b/src/Ryujinx.Tests/Cpu/CpuTestMul32.cs
index 58da762dd..7e4b4c062 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestMul32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestMul32.cs
@@ -1,4 +1,4 @@
-#define Mul32
+#define Mul32
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestSimdCrypto32.cs b/src/Ryujinx.Tests/Cpu/CpuTestSimdCrypto32.cs
index c82b17978..60076da47 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestSimdCrypto32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestSimdCrypto32.cs
@@ -1,4 +1,4 @@
-// https://www.intel.com/content/dam/doc/white-paper/advanced-encryption-standard-new-instructions-set-paper.pdf
+// https://www.intel.com/content/dam/doc/white-paper/advanced-encryption-standard-new-instructions-set-paper.pdf
using ARMeilleure.State;
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestSimdLogical32.cs b/src/Ryujinx.Tests/Cpu/CpuTestSimdLogical32.cs
index 65cac9dee..819d9300b 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestSimdLogical32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestSimdLogical32.cs
@@ -1,4 +1,4 @@
-#define SimdLogical32
+#define SimdLogical32
using ARMeilleure.State;
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestSimdMemory32.cs b/src/Ryujinx.Tests/Cpu/CpuTestSimdMemory32.cs
index 28f00d58e..d59e963b5 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestSimdMemory32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestSimdMemory32.cs
@@ -1,4 +1,4 @@
-#define SimdMemory32
+#define SimdMemory32
using ARMeilleure.State;
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestSimdMov32.cs b/src/Ryujinx.Tests/Cpu/CpuTestSimdMov32.cs
index 0566df20f..85f77fff1 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestSimdMov32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestSimdMov32.cs
@@ -1,4 +1,4 @@
-#define SimdMov32
+#define SimdMov32
using ARMeilleure.State;
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestSimdReg32.cs b/src/Ryujinx.Tests/Cpu/CpuTestSimdReg32.cs
index 1db90bfa4..9d9606bba 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestSimdReg32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestSimdReg32.cs
@@ -1,4 +1,4 @@
-#define SimdReg32
+#define SimdReg32
using ARMeilleure.State;
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestSimdRegElem32.cs b/src/Ryujinx.Tests/Cpu/CpuTestSimdRegElem32.cs
index cf960dfdf..49aab0513 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestSimdRegElem32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestSimdRegElem32.cs
@@ -1,4 +1,4 @@
-#define SimdRegElem32
+#define SimdRegElem32
using ARMeilleure.State;
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestSimdShImm32.cs b/src/Ryujinx.Tests/Cpu/CpuTestSimdShImm32.cs
index f81d22c21..39b50867f 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestSimdShImm32.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestSimdShImm32.cs
@@ -1,4 +1,4 @@
-#define SimdShImm32
+#define SimdShImm32
using ARMeilleure.State;
using NUnit.Framework;
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestT32Alu.cs b/src/Ryujinx.Tests/Cpu/CpuTestT32Alu.cs
index 8046d581b..a0d46692c 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestT32Alu.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestT32Alu.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
namespace Ryujinx.Tests.Cpu
{
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestT32Flow.cs b/src/Ryujinx.Tests/Cpu/CpuTestT32Flow.cs
index f3832a8c3..01159afc6 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestT32Flow.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestT32Flow.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.State;
+using ARMeilleure.State;
using NUnit.Framework;
namespace Ryujinx.Tests.Cpu
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestT32Mem.cs b/src/Ryujinx.Tests/Cpu/CpuTestT32Mem.cs
index ca47d8e36..94ccb950c 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestT32Mem.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestT32Mem.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using System;
namespace Ryujinx.Tests.Cpu
diff --git a/src/Ryujinx.Tests/Cpu/CpuTestThumb.cs b/src/Ryujinx.Tests/Cpu/CpuTestThumb.cs
index 625ce2d82..6111e53fa 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTestThumb.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTestThumb.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.State;
+using ARMeilleure.State;
using NUnit.Framework;
namespace Ryujinx.Tests.Cpu
diff --git a/src/Ryujinx.Tests/Cpu/EnvironmentTests.cs b/src/Ryujinx.Tests/Cpu/EnvironmentTests.cs
index 5e6b286bd..2a4775a31 100644
--- a/src/Ryujinx.Tests/Cpu/EnvironmentTests.cs
+++ b/src/Ryujinx.Tests/Cpu/EnvironmentTests.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Translation;
+using ARMeilleure.Translation;
using NUnit.Framework;
using Ryujinx.Cpu.Jit;
using Ryujinx.Tests.Memory;
diff --git a/src/Ryujinx.Tests/Cpu/PrecomputedThumbTestCase.cs b/src/Ryujinx.Tests/Cpu/PrecomputedThumbTestCase.cs
index e699f8bbf..28d739fcd 100644
--- a/src/Ryujinx.Tests/Cpu/PrecomputedThumbTestCase.cs
+++ b/src/Ryujinx.Tests/Cpu/PrecomputedThumbTestCase.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Tests.Cpu
+namespace Ryujinx.Tests.Cpu
{
public class PrecomputedThumbTestCase
{
diff --git a/src/Ryujinx.Tests/HLE/SoftwareKeyboardTests.cs b/src/Ryujinx.Tests/HLE/SoftwareKeyboardTests.cs
index b5bcc213f..79ca2d480 100644
--- a/src/Ryujinx.Tests/HLE/SoftwareKeyboardTests.cs
+++ b/src/Ryujinx.Tests/HLE/SoftwareKeyboardTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.HLE.HOS.Applets;
using System.Text;
diff --git a/src/Ryujinx.Tests/Memory/MockMemoryManager.cs b/src/Ryujinx.Tests/Memory/MockMemoryManager.cs
index 8a902db41..20c318de6 100644
--- a/src/Ryujinx.Tests/Memory/MockMemoryManager.cs
+++ b/src/Ryujinx.Tests/Memory/MockMemoryManager.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Memory;
+using ARMeilleure.Memory;
using System;
namespace Ryujinx.Tests.Memory
diff --git a/src/Ryujinx.Tests/Memory/PartialUnmaps.cs b/src/Ryujinx.Tests/Memory/PartialUnmaps.cs
index 296f74917..04f7f40e6 100644
--- a/src/Ryujinx.Tests/Memory/PartialUnmaps.cs
+++ b/src/Ryujinx.Tests/Memory/PartialUnmaps.cs
@@ -1,4 +1,4 @@
-using ARMeilleure.Signal;
+using ARMeilleure.Signal;
using ARMeilleure.Translation;
using NUnit.Framework;
using Ryujinx.Common.Memory.PartialUnmaps;
diff --git a/src/Ryujinx.Tests/Time/TimeZoneRuleTests.cs b/src/Ryujinx.Tests/Time/TimeZoneRuleTests.cs
index 4d5c4eaa3..8448309ee 100644
--- a/src/Ryujinx.Tests/Time/TimeZoneRuleTests.cs
+++ b/src/Ryujinx.Tests/Time/TimeZoneRuleTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.HLE.HOS.Services.Time.TimeZone;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx.Tests/TreeDictionaryTests.cs b/src/Ryujinx.Tests/TreeDictionaryTests.cs
index f1a8ee73d..ea9fb0731 100644
--- a/src/Ryujinx.Tests/TreeDictionaryTests.cs
+++ b/src/Ryujinx.Tests/TreeDictionaryTests.cs
@@ -1,4 +1,4 @@
-using NUnit.Framework;
+using NUnit.Framework;
using Ryujinx.Common.Collections;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx.Ui.Common/App/ApplicationAddedEventArgs.cs b/src/Ryujinx.Ui.Common/App/ApplicationAddedEventArgs.cs
index 78eed7afd..01e20276e 100644
--- a/src/Ryujinx.Ui.Common/App/ApplicationAddedEventArgs.cs
+++ b/src/Ryujinx.Ui.Common/App/ApplicationAddedEventArgs.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Ui.App.Common
{
diff --git a/src/Ryujinx.Ui.Common/App/ApplicationCountUpdatedEventArgs.cs b/src/Ryujinx.Ui.Common/App/ApplicationCountUpdatedEventArgs.cs
index 6a8e465e0..ca54ddf7a 100644
--- a/src/Ryujinx.Ui.Common/App/ApplicationCountUpdatedEventArgs.cs
+++ b/src/Ryujinx.Ui.Common/App/ApplicationCountUpdatedEventArgs.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Ui.App.Common
{
diff --git a/src/Ryujinx.Ui.Common/App/ApplicationData.cs b/src/Ryujinx.Ui.Common/App/ApplicationData.cs
index 65ab01eeb..bd844805b 100644
--- a/src/Ryujinx.Ui.Common/App/ApplicationData.cs
+++ b/src/Ryujinx.Ui.Common/App/ApplicationData.cs
@@ -1,4 +1,4 @@
-using LibHac.Common;
+using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
using LibHac.FsSystem;
diff --git a/src/Ryujinx.Ui.Common/App/ApplicationJsonSerializerContext.cs b/src/Ryujinx.Ui.Common/App/ApplicationJsonSerializerContext.cs
index 76eea33ca..9a7b3eddf 100644
--- a/src/Ryujinx.Ui.Common/App/ApplicationJsonSerializerContext.cs
+++ b/src/Ryujinx.Ui.Common/App/ApplicationJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Ryujinx.Ui.App.Common
{
diff --git a/src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs b/src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs
index c60a07a37..b0e5cffe8 100644
--- a/src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs
+++ b/src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs
@@ -136,6 +136,13 @@ namespace Ryujinx.Ui.App.Common
if (!fileInfo.Attributes.HasFlag(FileAttributes.Hidden) && extension is ".nsp" or ".pfs0" or ".xci" or ".nca" or ".nro" or ".nso")
{
var fullPath = fileInfo.ResolveLinkTarget(true)?.FullName ?? fileInfo.FullName;
+
+ if (!File.Exists(fullPath))
+ {
+ Logger.Warning?.Print(LogClass.Application, $"Skipping invalid symlink: {fileInfo.FullName}");
+ continue;
+ }
+
applications.Add(fullPath);
numApplicationsFound++;
}
diff --git a/src/Ryujinx.Ui.Common/App/ApplicationMetadata.cs b/src/Ryujinx.Ui.Common/App/ApplicationMetadata.cs
index 9e2ca6870..43647feef 100644
--- a/src/Ryujinx.Ui.Common/App/ApplicationMetadata.cs
+++ b/src/Ryujinx.Ui.Common/App/ApplicationMetadata.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Text.Json.Serialization;
namespace Ryujinx.Ui.App.Common
diff --git a/src/Ryujinx.Ui.Common/Configuration/AudioBackend.cs b/src/Ryujinx.Ui.Common/Configuration/AudioBackend.cs
index 1147a0a6b..dc0a5ac61 100644
--- a/src/Ryujinx.Ui.Common/Configuration/AudioBackend.cs
+++ b/src/Ryujinx.Ui.Common/Configuration/AudioBackend.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Ui.Common.Configuration
diff --git a/src/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormatSettings.cs b/src/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormatSettings.cs
index a1727df51..9a1841fc5 100644
--- a/src/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormatSettings.cs
+++ b/src/Ryujinx.Ui.Common/Configuration/ConfigurationFileFormatSettings.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
namespace Ryujinx.Ui.Common.Configuration
{
diff --git a/src/Ryujinx.Ui.Common/Configuration/ConfigurationJsonSerializerContext.cs b/src/Ryujinx.Ui.Common/Configuration/ConfigurationJsonSerializerContext.cs
index 2aa7e5366..03989edec 100644
--- a/src/Ryujinx.Ui.Common/Configuration/ConfigurationJsonSerializerContext.cs
+++ b/src/Ryujinx.Ui.Common/Configuration/ConfigurationJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Ryujinx.Ui.Common.Configuration
{
diff --git a/src/Ryujinx.Ui.Common/Configuration/FileTypes.cs b/src/Ryujinx.Ui.Common/Configuration/FileTypes.cs
index 0b8b7384b..9d2f63864 100644
--- a/src/Ryujinx.Ui.Common/Configuration/FileTypes.cs
+++ b/src/Ryujinx.Ui.Common/Configuration/FileTypes.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ui.Common
+namespace Ryujinx.Ui.Common
{
public enum FileTypes
{
diff --git a/src/Ryujinx.Ui.Common/Configuration/LoggerModule.cs b/src/Ryujinx.Ui.Common/Configuration/LoggerModule.cs
index e18b2bfa3..54ad20dd7 100644
--- a/src/Ryujinx.Ui.Common/Configuration/LoggerModule.cs
+++ b/src/Ryujinx.Ui.Common/Configuration/LoggerModule.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Logging.Targets;
using System;
diff --git a/src/Ryujinx.Ui.Common/Configuration/System/Language.cs b/src/Ryujinx.Ui.Common/Configuration/System/Language.cs
index 2eb9ef5c1..72416bfe7 100644
--- a/src/Ryujinx.Ui.Common/Configuration/System/Language.cs
+++ b/src/Ryujinx.Ui.Common/Configuration/System/Language.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Ui.Common.Configuration.System
diff --git a/src/Ryujinx.Ui.Common/Configuration/System/Region.cs b/src/Ryujinx.Ui.Common/Configuration/System/Region.cs
index 03aed7d50..2478b40f9 100644
--- a/src/Ryujinx.Ui.Common/Configuration/System/Region.cs
+++ b/src/Ryujinx.Ui.Common/Configuration/System/Region.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Utilities;
+using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
namespace Ryujinx.Ui.Common.Configuration.System
diff --git a/src/Ryujinx.Ui.Common/Configuration/Ui/ColumnSort.cs b/src/Ryujinx.Ui.Common/Configuration/Ui/ColumnSort.cs
index cbc13b857..88cf7cdac 100644
--- a/src/Ryujinx.Ui.Common/Configuration/Ui/ColumnSort.cs
+++ b/src/Ryujinx.Ui.Common/Configuration/Ui/ColumnSort.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ui.Common.Configuration.Ui
+namespace Ryujinx.Ui.Common.Configuration.Ui
{
public struct ColumnSort
{
diff --git a/src/Ryujinx.Ui.Common/Configuration/Ui/GuiColumns.cs b/src/Ryujinx.Ui.Common/Configuration/Ui/GuiColumns.cs
index aff654599..7e944015b 100644
--- a/src/Ryujinx.Ui.Common/Configuration/Ui/GuiColumns.cs
+++ b/src/Ryujinx.Ui.Common/Configuration/Ui/GuiColumns.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ui.Common.Configuration.Ui
+namespace Ryujinx.Ui.Common.Configuration.Ui
{
public struct GuiColumns
{
diff --git a/src/Ryujinx.Ui.Common/DiscordIntegrationModule.cs b/src/Ryujinx.Ui.Common/DiscordIntegrationModule.cs
index 69d725967..edc634aa5 100644
--- a/src/Ryujinx.Ui.Common/DiscordIntegrationModule.cs
+++ b/src/Ryujinx.Ui.Common/DiscordIntegrationModule.cs
@@ -1,4 +1,4 @@
-using DiscordRPC;
+using DiscordRPC;
using Ryujinx.Common;
using Ryujinx.Ui.Common.Configuration;
diff --git a/src/Ryujinx.Ui.Common/Extensions/FileTypeExtensions.cs b/src/Ryujinx.Ui.Common/Extensions/FileTypeExtensions.cs
index e60fa78cd..c827f750e 100644
--- a/src/Ryujinx.Ui.Common/Extensions/FileTypeExtensions.cs
+++ b/src/Ryujinx.Ui.Common/Extensions/FileTypeExtensions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using static Ryujinx.Ui.Common.Configuration.ConfigurationState.UiSection;
namespace Ryujinx.Ui.Common
diff --git a/src/Ryujinx.Ui.Common/Helper/ConsoleHelper.cs b/src/Ryujinx.Ui.Common/Helper/ConsoleHelper.cs
index 160c6390f..65155641f 100644
--- a/src/Ryujinx.Ui.Common/Helper/ConsoleHelper.cs
+++ b/src/Ryujinx.Ui.Common/Helper/ConsoleHelper.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx.Ui.Common/Helper/OpenHelper.cs b/src/Ryujinx.Ui.Common/Helper/OpenHelper.cs
index 49a53ae48..04ebbf3b0 100644
--- a/src/Ryujinx.Ui.Common/Helper/OpenHelper.cs
+++ b/src/Ryujinx.Ui.Common/Helper/OpenHelper.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using System;
using System.Diagnostics;
using System.IO;
diff --git a/src/Ryujinx.Ui.Common/Helper/SetupValidator.cs b/src/Ryujinx.Ui.Common/Helper/SetupValidator.cs
index 4a7dac474..65c38d7b8 100644
--- a/src/Ryujinx.Ui.Common/Helper/SetupValidator.cs
+++ b/src/Ryujinx.Ui.Common/Helper/SetupValidator.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.HLE.FileSystem;
using System;
using System.IO;
diff --git a/src/Ryujinx.Ui.Common/Helper/ShortcutHelper.cs b/src/Ryujinx.Ui.Common/Helper/ShortcutHelper.cs
index 103b78c24..97b9853db 100644
--- a/src/Ryujinx.Ui.Common/Helper/ShortcutHelper.cs
+++ b/src/Ryujinx.Ui.Common/Helper/ShortcutHelper.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common;
+using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using ShellLink;
using SixLabors.ImageSharp;
diff --git a/src/Ryujinx.Ui.Common/Helper/TitleHelper.cs b/src/Ryujinx.Ui.Common/Helper/TitleHelper.cs
new file mode 100644
index 000000000..089b52154
--- /dev/null
+++ b/src/Ryujinx.Ui.Common/Helper/TitleHelper.cs
@@ -0,0 +1,30 @@
+using Ryujinx.HLE.Loaders.Processes;
+using System;
+
+namespace Ryujinx.Ui.Common.Helper
+{
+ public static class TitleHelper
+ {
+ public static string ActiveApplicationTitle(ProcessResult activeProcess, string applicationVersion, string pauseString = "")
+ {
+ if (activeProcess == null)
+ {
+ return String.Empty;
+ }
+
+ string titleNameSection = string.IsNullOrWhiteSpace(activeProcess.Name) ? string.Empty : $" {activeProcess.Name}";
+ string titleVersionSection = string.IsNullOrWhiteSpace(activeProcess.DisplayVersion) ? string.Empty : $" v{activeProcess.DisplayVersion}";
+ string titleIdSection = $" ({activeProcess.ProgramIdText.ToUpper()})";
+ string titleArchSection = activeProcess.Is64Bit ? " (64-bit)" : " (32-bit)";
+
+ string appTitle = $"Ryujinx {applicationVersion} -{titleNameSection}{titleVersionSection}{titleIdSection}{titleArchSection}";
+
+ if (!string.IsNullOrEmpty(pauseString))
+ {
+ appTitle += $" ({pauseString})";
+ }
+
+ return appTitle;
+ }
+ }
+}
diff --git a/src/Ryujinx.Ui.Common/Helper/ValueFormatUtils.cs b/src/Ryujinx.Ui.Common/Helper/ValueFormatUtils.cs
index 951cd089e..b1597a7cc 100644
--- a/src/Ryujinx.Ui.Common/Helper/ValueFormatUtils.cs
+++ b/src/Ryujinx.Ui.Common/Helper/ValueFormatUtils.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Globalization;
using System.Linq;
diff --git a/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApi.cs b/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApi.cs
index e8eba6d38..ff0b80c46 100644
--- a/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApi.cs
+++ b/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApi.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
diff --git a/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApiGamesSwitch.cs b/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApiGamesSwitch.cs
index 6a0442f08..3c62b7cc4 100644
--- a/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApiGamesSwitch.cs
+++ b/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApiGamesSwitch.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Ryujinx.Ui.Common.Models.Amiibo
diff --git a/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApiUsage.cs b/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApiUsage.cs
index d9d3a18f6..3c774fd56 100644
--- a/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApiUsage.cs
+++ b/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboApiUsage.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Ryujinx.Ui.Common.Models.Amiibo
{
diff --git a/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboJson.cs b/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboJson.cs
index bcfe230dd..c9d91c50a 100644
--- a/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboJson.cs
+++ b/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboJson.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
diff --git a/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboJsonSerializerContext.cs b/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboJsonSerializerContext.cs
index 09888d37b..4906c6524 100644
--- a/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboJsonSerializerContext.cs
+++ b/src/Ryujinx.Ui.Common/Models/Amiibo/AmiiboJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Ryujinx.Ui.Common.Models.Amiibo
{
diff --git a/src/Ryujinx.Ui.Common/Models/Github/GithubReleaseAssetJsonResponse.cs b/src/Ryujinx.Ui.Common/Models/Github/GithubReleaseAssetJsonResponse.cs
index ed0a49f6c..67d238d24 100644
--- a/src/Ryujinx.Ui.Common/Models/Github/GithubReleaseAssetJsonResponse.cs
+++ b/src/Ryujinx.Ui.Common/Models/Github/GithubReleaseAssetJsonResponse.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ui.Common.Models.Github
+namespace Ryujinx.Ui.Common.Models.Github
{
public class GithubReleaseAssetJsonResponse
{
diff --git a/src/Ryujinx.Ui.Common/Models/Github/GithubReleasesJsonResponse.cs b/src/Ryujinx.Ui.Common/Models/Github/GithubReleasesJsonResponse.cs
index 3fa7cf817..0f83e32cc 100644
--- a/src/Ryujinx.Ui.Common/Models/Github/GithubReleasesJsonResponse.cs
+++ b/src/Ryujinx.Ui.Common/Models/Github/GithubReleasesJsonResponse.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Ryujinx.Ui.Common.Models.Github
{
diff --git a/src/Ryujinx.Ui.Common/Models/Github/GithubReleasesJsonSerializerContext.cs b/src/Ryujinx.Ui.Common/Models/Github/GithubReleasesJsonSerializerContext.cs
index c6dd88755..8a19277b3 100644
--- a/src/Ryujinx.Ui.Common/Models/Github/GithubReleasesJsonSerializerContext.cs
+++ b/src/Ryujinx.Ui.Common/Models/Github/GithubReleasesJsonSerializerContext.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Ryujinx.Ui.Common.Models.Github
{
diff --git a/src/Ryujinx.Ui.Common/SystemInfo/SystemInfo.cs b/src/Ryujinx.Ui.Common/SystemInfo/SystemInfo.cs
index 6a4fe6803..e78db8af7 100644
--- a/src/Ryujinx.Ui.Common/SystemInfo/SystemInfo.cs
+++ b/src/Ryujinx.Ui.Common/SystemInfo/SystemInfo.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Logging;
+using Ryujinx.Common.Logging;
using Ryujinx.Ui.Common.Helper;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx.Ui.Common/UserError.cs b/src/Ryujinx.Ui.Common/UserError.cs
index 63be1e264..832aae9d6 100644
--- a/src/Ryujinx.Ui.Common/UserError.cs
+++ b/src/Ryujinx.Ui.Common/UserError.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ui.Common
+namespace Ryujinx.Ui.Common
{
///
/// Represent a common error that could be reported to the user by the emulator.
diff --git a/src/Ryujinx.Ui.LocaleGenerator/LocaleGenerator.cs b/src/Ryujinx.Ui.LocaleGenerator/LocaleGenerator.cs
index d1b9131d0..27573a8fb 100644
--- a/src/Ryujinx.Ui.LocaleGenerator/LocaleGenerator.cs
+++ b/src/Ryujinx.Ui.LocaleGenerator/LocaleGenerator.cs
@@ -1,4 +1,4 @@
-using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis;
using System.Linq;
using System.Text;
diff --git a/src/Ryujinx/Input/GTK3/GTK3Keyboard.cs b/src/Ryujinx/Input/GTK3/GTK3Keyboard.cs
index 16bef39b4..ff7a2c3b6 100644
--- a/src/Ryujinx/Input/GTK3/GTK3Keyboard.cs
+++ b/src/Ryujinx/Input/GTK3/GTK3Keyboard.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Common.Configuration.Hid;
+using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Keyboard;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx/Input/GTK3/GTK3KeyboardDriver.cs b/src/Ryujinx/Input/GTK3/GTK3KeyboardDriver.cs
index ae249c273..e502254be 100644
--- a/src/Ryujinx/Input/GTK3/GTK3KeyboardDriver.cs
+++ b/src/Ryujinx/Input/GTK3/GTK3KeyboardDriver.cs
@@ -1,4 +1,4 @@
-using Gdk;
+using Gdk;
using Gtk;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx/Input/GTK3/GTK3MappingHelper.cs b/src/Ryujinx/Input/GTK3/GTK3MappingHelper.cs
index 7a72a6093..422a96030 100644
--- a/src/Ryujinx/Input/GTK3/GTK3MappingHelper.cs
+++ b/src/Ryujinx/Input/GTK3/GTK3MappingHelper.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
diff --git a/src/Ryujinx/Ui/Applet/ErrorAppletDialog.cs b/src/Ryujinx/Ui/Applet/ErrorAppletDialog.cs
index cd3530f34..c6bcf3f28 100644
--- a/src/Ryujinx/Ui/Applet/ErrorAppletDialog.cs
+++ b/src/Ryujinx/Ui/Applet/ErrorAppletDialog.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
using Ryujinx.Ui.Common.Configuration;
using System.Reflection;
diff --git a/src/Ryujinx/Ui/Applet/GtkHostUiTheme.cs b/src/Ryujinx/Ui/Applet/GtkHostUiTheme.cs
index df8103325..1bc010591 100644
--- a/src/Ryujinx/Ui/Applet/GtkHostUiTheme.cs
+++ b/src/Ryujinx/Ui/Applet/GtkHostUiTheme.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
using Ryujinx.HLE.Ui;
using System.Diagnostics;
diff --git a/src/Ryujinx/Ui/Helper/SortHelper.cs b/src/Ryujinx/Ui/Helper/SortHelper.cs
index c7a72ab9b..4e625f922 100644
--- a/src/Ryujinx/Ui/Helper/SortHelper.cs
+++ b/src/Ryujinx/Ui/Helper/SortHelper.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
using Ryujinx.Ui.Common.Helper;
using System;
diff --git a/src/Ryujinx/Ui/Helper/ThemeHelper.cs b/src/Ryujinx/Ui/Helper/ThemeHelper.cs
index 5289ebc5f..67962cb6c 100644
--- a/src/Ryujinx/Ui/Helper/ThemeHelper.cs
+++ b/src/Ryujinx/Ui/Helper/ThemeHelper.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
using Ryujinx.Common.Logging;
using Ryujinx.Ui.Common.Configuration;
using System.IO;
diff --git a/src/Ryujinx/Ui/MainWindow.cs b/src/Ryujinx/Ui/MainWindow.cs
index 516fc2c18..409338700 100644
--- a/src/Ryujinx/Ui/MainWindow.cs
+++ b/src/Ryujinx/Ui/MainWindow.cs
@@ -1,4 +1,3 @@
-using ARMeilleure.Translation;
using Gtk;
using LibHac.Common;
using LibHac.Common.Keys;
@@ -936,8 +935,6 @@ namespace Ryujinx.Ui
_deviceExitStatus.Reset();
- Translator.IsReadyForTranslation.Reset();
-
Thread windowThread = new(CreateGameWindow)
{
Name = "GUI.WindowThread",
@@ -1487,6 +1484,8 @@ namespace Ryujinx.Ui
_pauseEmulation.Sensitive = false;
_resumeEmulation.Sensitive = true;
_emulationContext.System.TogglePauseEmulation(true);
+ Title = TitleHelper.ActiveApplicationTitle(_emulationContext.Processes.ActiveApplication, Program.Version, "Paused");
+ Logger.Info?.Print(LogClass.Emulation, "Emulation was paused");
}
private void ResumeEmulation_Pressed(object sender, EventArgs args)
@@ -1494,6 +1493,8 @@ namespace Ryujinx.Ui
_pauseEmulation.Sensitive = true;
_resumeEmulation.Sensitive = false;
_emulationContext.System.TogglePauseEmulation(false);
+ Title = TitleHelper.ActiveApplicationTitle(_emulationContext.Processes.ActiveApplication, Program.Version);
+ Logger.Info?.Print(LogClass.Emulation, "Emulation was resumed");
}
public void ActivatePauseMenu()
diff --git a/src/Ryujinx/Ui/OpenGLRenderer.cs b/src/Ryujinx/Ui/OpenGLRenderer.cs
index 2ca791fe8..d10445b00 100644
--- a/src/Ryujinx/Ui/OpenGLRenderer.cs
+++ b/src/Ryujinx/Ui/OpenGLRenderer.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Input.HLE;
diff --git a/src/Ryujinx/Ui/OpenToolkitBindingsContext.cs b/src/Ryujinx/Ui/OpenToolkitBindingsContext.cs
index b35673ebb..49dd5da8e 100644
--- a/src/Ryujinx/Ui/OpenToolkitBindingsContext.cs
+++ b/src/Ryujinx/Ui/OpenToolkitBindingsContext.cs
@@ -1,4 +1,4 @@
-using SPB.Graphics;
+using SPB.Graphics;
using System;
namespace Ryujinx.Ui
diff --git a/src/Ryujinx/Ui/RendererWidgetBase.cs b/src/Ryujinx/Ui/RendererWidgetBase.cs
index 0ee344434..7660f190e 100644
--- a/src/Ryujinx/Ui/RendererWidgetBase.cs
+++ b/src/Ryujinx/Ui/RendererWidgetBase.cs
@@ -1,4 +1,3 @@
-using ARMeilleure.Translation;
using Gdk;
using Gtk;
using Ryujinx.Common;
@@ -11,6 +10,7 @@ using Ryujinx.Input;
using Ryujinx.Input.GTK3;
using Ryujinx.Input.HLE;
using Ryujinx.Ui.Common.Configuration;
+using Ryujinx.Ui.Common.Helper;
using Ryujinx.Ui.Widgets;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Png;
@@ -449,7 +449,6 @@ namespace Ryujinx.Ui
{
Device.Gpu.SetGpuThread();
Device.Gpu.InitializeShaderCache(_gpuCancellationTokenSource.Token);
- Translator.IsReadyForTranslation.Set();
Renderer.Window.ChangeVSyncMode(Device.EnableDeviceVsync);
@@ -525,12 +524,7 @@ namespace Ryujinx.Ui
var activeProcess = Device.Processes.ActiveApplication;
- string titleNameSection = string.IsNullOrWhiteSpace(activeProcess.Name) ? string.Empty : $" {activeProcess.Name}";
- string titleVersionSection = string.IsNullOrWhiteSpace(activeProcess.DisplayVersion) ? string.Empty : $" v{activeProcess.DisplayVersion}";
- string titleIdSection = $" ({activeProcess.ProgramIdText.ToUpper()})";
- string titleArchSection = activeProcess.Is64Bit ? " (64-bit)" : " (32-bit)";
-
- parent.Title = $"Ryujinx {Program.Version} -{titleNameSection}{titleVersionSection}{titleIdSection}{titleArchSection}";
+ parent.Title = TitleHelper.ActiveApplicationTitle(activeProcess, Program.Version);
});
Thread renderLoopThread = new(Render)
diff --git a/src/Ryujinx/Ui/SPBOpenGLContext.cs b/src/Ryujinx/Ui/SPBOpenGLContext.cs
index b6195a9c6..6f2db697a 100644
--- a/src/Ryujinx/Ui/SPBOpenGLContext.cs
+++ b/src/Ryujinx/Ui/SPBOpenGLContext.cs
@@ -1,4 +1,4 @@
-using OpenTK.Graphics.OpenGL;
+using OpenTK.Graphics.OpenGL;
using Ryujinx.Graphics.OpenGL;
using SPB.Graphics;
using SPB.Graphics.OpenGL;
diff --git a/src/Ryujinx/Ui/StatusUpdatedEventArgs.cs b/src/Ryujinx/Ui/StatusUpdatedEventArgs.cs
index 949390caa..72e7d7f5b 100644
--- a/src/Ryujinx/Ui/StatusUpdatedEventArgs.cs
+++ b/src/Ryujinx/Ui/StatusUpdatedEventArgs.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Ryujinx.Ui
{
diff --git a/src/Ryujinx/Ui/VulkanRenderer.cs b/src/Ryujinx/Ui/VulkanRenderer.cs
index ecb3fa243..e1aae0965 100644
--- a/src/Ryujinx/Ui/VulkanRenderer.cs
+++ b/src/Ryujinx/Ui/VulkanRenderer.cs
@@ -1,4 +1,4 @@
-using Gdk;
+using Gdk;
using Ryujinx.Common.Configuration;
using Ryujinx.Input.HLE;
using Ryujinx.Ui.Helper;
diff --git a/src/Ryujinx/Ui/Widgets/GameTableContextMenu.cs b/src/Ryujinx/Ui/Widgets/GameTableContextMenu.cs
index 5af181b08..eb048b00d 100644
--- a/src/Ryujinx/Ui/Widgets/GameTableContextMenu.cs
+++ b/src/Ryujinx/Ui/Widgets/GameTableContextMenu.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
using LibHac;
using LibHac.Account;
using LibHac.Common;
diff --git a/src/Ryujinx/Ui/Widgets/GtkInputDialog.cs b/src/Ryujinx/Ui/Widgets/GtkInputDialog.cs
index e4fb5aa17..622980921 100644
--- a/src/Ryujinx/Ui/Widgets/GtkInputDialog.cs
+++ b/src/Ryujinx/Ui/Widgets/GtkInputDialog.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
namespace Ryujinx.Ui.Widgets
{
diff --git a/src/Ryujinx/Ui/Widgets/RawInputToTextEntry.cs b/src/Ryujinx/Ui/Widgets/RawInputToTextEntry.cs
index a0092f29b..e82a3d492 100644
--- a/src/Ryujinx/Ui/Widgets/RawInputToTextEntry.cs
+++ b/src/Ryujinx/Ui/Widgets/RawInputToTextEntry.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
namespace Ryujinx.Ui.Widgets
{
diff --git a/src/Ryujinx/Ui/Widgets/UserErrorDialog.cs b/src/Ryujinx/Ui/Widgets/UserErrorDialog.cs
index b2dea8355..63a280e6d 100644
--- a/src/Ryujinx/Ui/Widgets/UserErrorDialog.cs
+++ b/src/Ryujinx/Ui/Widgets/UserErrorDialog.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
using Ryujinx.Ui.Common;
using Ryujinx.Ui.Common.Helper;
diff --git a/src/Ryujinx/Ui/Windows/AboutWindow.cs b/src/Ryujinx/Ui/Windows/AboutWindow.cs
index 9e11905db..ba12bb68b 100644
--- a/src/Ryujinx/Ui/Windows/AboutWindow.cs
+++ b/src/Ryujinx/Ui/Windows/AboutWindow.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
using Ryujinx.Common.Utilities;
using Ryujinx.Ui.Common.Helper;
using System.Net.Http;
diff --git a/src/Ryujinx/Ui/Windows/AmiiboWindow.cs b/src/Ryujinx/Ui/Windows/AmiiboWindow.cs
index 4bbaaaaa4..a2a5bce6f 100644
--- a/src/Ryujinx/Ui/Windows/AmiiboWindow.cs
+++ b/src/Ryujinx/Ui/Windows/AmiiboWindow.cs
@@ -1,4 +1,5 @@
-using Gtk;
+using Gdk;
+using Gtk;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
@@ -13,7 +14,9 @@ using System.Linq;
using System.Net.Http;
using System.Reflection;
using System.Text;
+using System.Text.Json;
using System.Threading.Tasks;
+using Window = Gtk.Window;
namespace Ryujinx.Ui.Windows
{
@@ -49,11 +52,11 @@ namespace Ryujinx.Ui.Windows
public AmiiboWindow() : base($"Ryujinx {Program.Version} - Amiibo")
{
- Icon = new Gdk.Pixbuf(Assembly.GetAssembly(typeof(ConfigurationState)), "Ryujinx.Ui.Common.Resources.Logo_Ryujinx.png");
+ Icon = new Pixbuf(Assembly.GetAssembly(typeof(ConfigurationState)), "Ryujinx.Ui.Common.Resources.Logo_Ryujinx.png");
InitializeComponent();
- _httpClient = new HttpClient()
+ _httpClient = new HttpClient
{
Timeout = TimeSpan.FromSeconds(30),
};
@@ -64,7 +67,7 @@ namespace Ryujinx.Ui.Windows
_amiiboList = new List();
_amiiboLogoBytes = EmbeddedResources.Read("Ryujinx.Ui.Common/Resources/Logo_Amiibo.png");
- _amiiboImage.Pixbuf = new Gdk.Pixbuf(_amiiboLogoBytes);
+ _amiiboImage.Pixbuf = new Pixbuf(_amiiboLogoBytes);
_scanButton.Sensitive = false;
_randomUuidCheckBox.Sensitive = false;
@@ -72,37 +75,83 @@ namespace Ryujinx.Ui.Windows
_ = LoadContentAsync();
}
- private async Task LoadContentAsync()
+ private static bool TryGetAmiiboJson(string json, out AmiiboJson amiiboJson)
{
- string amiiboJsonString = DefaultJson;
-
- if (File.Exists(_amiiboJsonPath))
+ if (string.IsNullOrEmpty(json))
{
- amiiboJsonString = await File.ReadAllTextAsync(_amiiboJsonPath);
+ amiiboJson = JsonHelper.Deserialize(DefaultJson, _serializerContext.AmiiboJson);
- if (await NeedsUpdate(JsonHelper.Deserialize(amiiboJsonString, _serializerContext.AmiiboJson).LastUpdated))
- {
- amiiboJsonString = await DownloadAmiiboJson();
- }
+ return false;
}
- else
+
+ try
+ {
+ amiiboJson = JsonHelper.Deserialize(json, _serializerContext.AmiiboJson);
+
+ return true;
+ }
+ catch (JsonException exception)
+ {
+ Logger.Error?.Print(LogClass.Application, $"Unable to deserialize amiibo data: {exception}");
+ amiiboJson = JsonHelper.Deserialize(DefaultJson, _serializerContext.AmiiboJson);
+
+ return false;
+ }
+ }
+
+ private async Task GetMostRecentAmiiboListOrDefaultJson()
+ {
+ bool localIsValid = false;
+ bool remoteIsValid = false;
+ AmiiboJson amiiboJson = new();
+
+ try
{
try
{
- amiiboJsonString = await DownloadAmiiboJson();
+ if (File.Exists(_amiiboJsonPath))
+ {
+ localIsValid = TryGetAmiiboJson(await File.ReadAllTextAsync(_amiiboJsonPath), out amiiboJson);
+ }
}
- catch (Exception ex)
+ catch (Exception exception)
{
- Logger.Error?.Print(LogClass.Application, $"Failed to download amiibo data: {ex}");
+ Logger.Warning?.Print(LogClass.Application, $"Unable to read data from '{_amiiboJsonPath}': {exception}");
+ }
+ if (!localIsValid || await NeedsUpdate(amiiboJson.LastUpdated))
+ {
+ remoteIsValid = TryGetAmiiboJson(await DownloadAmiiboJson(), out amiiboJson);
+ }
+ }
+ catch (Exception exception)
+ {
+ if (!(localIsValid || remoteIsValid))
+ {
+ Logger.Error?.Print(LogClass.Application, $"Couldn't get valid amiibo data: {exception}");
+
+ // Neither local or remote files are valid JSON, close window.
ShowInfoDialog();
-
Close();
}
+ else if (!remoteIsValid)
+ {
+ Logger.Warning?.Print(LogClass.Application, $"Couldn't update amiibo data: {exception}");
+
+ // Only the local file is valid, the local one should be used
+ // but the user should be warned.
+ ShowInfoDialog();
+ }
}
- _amiiboList = JsonHelper.Deserialize(amiiboJsonString, _serializerContext.AmiiboJson).Amiibo;
- _amiiboList = _amiiboList.OrderBy(amiibo => amiibo.AmiiboSeries).ToList();
+ return amiiboJson;
+ }
+
+ private async Task LoadContentAsync()
+ {
+ AmiiboJson amiiboJson = await GetMostRecentAmiiboListOrDefaultJson();
+
+ _amiiboList = amiiboJson.Amiibo.OrderBy(amiibo => amiibo.AmiiboSeries).ToList();
if (LastScannedAmiiboShowAll)
{
@@ -178,46 +227,50 @@ namespace Ryujinx.Ui.Windows
if (response.IsSuccessStatusCode)
{
- return response.Content.Headers.LastModified != new DateTimeOffset(oldLastModified.Ticks - (oldLastModified.Ticks % TimeSpan.TicksPerSecond), TimeSpan.Zero);
+ return response.Content.Headers.LastModified != oldLastModified;
}
-
- return false;
}
- catch (Exception ex)
+ catch (HttpRequestException exception)
{
- Logger.Error?.Print(LogClass.Application, $"Failed to check for amiibo updates: {ex}");
-
- ShowInfoDialog();
-
- return false;
+ Logger.Error?.Print(LogClass.Application, $"Unable to check for amiibo data updates: {exception}");
}
+
+ return false;
}
private async Task DownloadAmiiboJson()
{
- HttpResponseMessage response = await _httpClient.GetAsync("https://amiibo.ryujinx.org/");
-
- if (response.IsSuccessStatusCode)
+ try
{
- string amiiboJsonString = await response.Content.ReadAsStringAsync();
+ HttpResponseMessage response = await _httpClient.GetAsync("https://amiibo.ryujinx.org/");
- using (FileStream dlcJsonStream = File.Create(_amiiboJsonPath, 4096, FileOptions.WriteThrough))
+ if (response.IsSuccessStatusCode)
{
- dlcJsonStream.Write(Encoding.UTF8.GetBytes(amiiboJsonString));
+ string amiiboJsonString = await response.Content.ReadAsStringAsync();
+
+ try
+ {
+ using FileStream dlcJsonStream = File.Create(_amiiboJsonPath, 4096, FileOptions.WriteThrough);
+ dlcJsonStream.Write(Encoding.UTF8.GetBytes(amiiboJsonString));
+ }
+ catch (Exception exception)
+ {
+ Logger.Warning?.Print(LogClass.Application, $"Couldn't write amiibo data to file '{_amiiboJsonPath}: {exception}'");
+ }
+
+ return amiiboJsonString;
}
- return amiiboJsonString;
- }
- else
- {
Logger.Error?.Print(LogClass.Application, $"Failed to download amiibo data. Response status code: {response.StatusCode}");
-
- GtkDialog.CreateInfoDialog($"Amiibo API", "An error occured while fetching information from the API.");
-
- Close();
+ }
+ catch (HttpRequestException exception)
+ {
+ Logger.Error?.Print(LogClass.Application, $"Failed to request amiibo data: {exception}");
}
- return DefaultJson;
+ GtkDialog.CreateInfoDialog("Amiibo API", "An error occured while fetching information from the API.");
+
+ return null;
}
private async Task UpdateAmiiboPreview(string imageUrl)
@@ -227,7 +280,7 @@ namespace Ryujinx.Ui.Windows
if (response.IsSuccessStatusCode)
{
byte[] amiiboPreviewBytes = await response.Content.ReadAsByteArrayAsync();
- Gdk.Pixbuf amiiboPreview = new(amiiboPreviewBytes);
+ Pixbuf amiiboPreview = new(amiiboPreviewBytes);
float ratio = Math.Min((float)_amiiboImage.AllocatedWidth / amiiboPreview.Width,
(float)_amiiboImage.AllocatedHeight / amiiboPreview.Height);
@@ -235,7 +288,7 @@ namespace Ryujinx.Ui.Windows
int resizeHeight = (int)(amiiboPreview.Height * ratio);
int resizeWidth = (int)(amiiboPreview.Width * ratio);
- _amiiboImage.Pixbuf = amiiboPreview.ScaleSimple(resizeWidth, resizeHeight, Gdk.InterpType.Bilinear);
+ _amiiboImage.Pixbuf = amiiboPreview.ScaleSimple(resizeWidth, resizeHeight, InterpType.Bilinear);
}
else
{
@@ -245,7 +298,7 @@ namespace Ryujinx.Ui.Windows
private static void ShowInfoDialog()
{
- GtkDialog.CreateInfoDialog($"Amiibo API", "Unable to connect to Amiibo API server. The service may be down or you may need to verify your internet connection is online.");
+ GtkDialog.CreateInfoDialog("Amiibo API", "Unable to connect to Amiibo API server. The service may be down or you may need to verify your internet connection is online.");
}
//
@@ -301,7 +354,7 @@ namespace Ryujinx.Ui.Windows
{
AmiiboId = _amiiboCharsComboBox.ActiveId;
- _amiiboImage.Pixbuf = new Gdk.Pixbuf(_amiiboLogoBytes);
+ _amiiboImage.Pixbuf = new Pixbuf(_amiiboLogoBytes);
string imageUrl = _amiiboList.Find(amiibo => amiibo.Head + amiibo.Tail == _amiiboCharsComboBox.ActiveId).Image;
@@ -341,7 +394,7 @@ namespace Ryujinx.Ui.Windows
private void ShowAllCheckBox_Clicked(object sender, EventArgs e)
{
- _amiiboImage.Pixbuf = new Gdk.Pixbuf(_amiiboLogoBytes);
+ _amiiboImage.Pixbuf = new Pixbuf(_amiiboLogoBytes);
_amiiboSeriesComboBox.Changed -= SeriesComboBox_Changed;
_amiiboCharsComboBox.Changed -= CharacterComboBox_Changed;
@@ -352,7 +405,7 @@ namespace Ryujinx.Ui.Windows
_scanButton.Sensitive = false;
_randomUuidCheckBox.Sensitive = false;
- new Task(() => ParseAmiiboData()).Start();
+ new Task(ParseAmiiboData).Start();
}
private void ScanButton_Pressed(object sender, EventArgs args)
diff --git a/src/Ryujinx/Ui/Windows/AvatarWindow.cs b/src/Ryujinx/Ui/Windows/AvatarWindow.cs
index 826b0e056..3d3ff7c3c 100644
--- a/src/Ryujinx/Ui/Windows/AvatarWindow.cs
+++ b/src/Ryujinx/Ui/Windows/AvatarWindow.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
diff --git a/src/Ryujinx/Ui/Windows/UserProfilesManagerWindow.cs b/src/Ryujinx/Ui/Windows/UserProfilesManagerWindow.cs
index c2ca010c7..3d503f64e 100644
--- a/src/Ryujinx/Ui/Windows/UserProfilesManagerWindow.cs
+++ b/src/Ryujinx/Ui/Windows/UserProfilesManagerWindow.cs
@@ -1,4 +1,4 @@
-using Gtk;
+using Gtk;
using Ryujinx.Common.Memory;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS.Services.Account.Acc;
diff --git a/src/Spv.Generator/ConstantKey.cs b/src/Spv.Generator/ConstantKey.cs
index 9fd255988..5359c24d6 100644
--- a/src/Spv.Generator/ConstantKey.cs
+++ b/src/Spv.Generator/ConstantKey.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics.CodeAnalysis;
namespace Spv.Generator
diff --git a/src/Spv.Generator/DeterministicHashCode.cs b/src/Spv.Generator/DeterministicHashCode.cs
index 1bf0b4684..ee7ad1de0 100644
--- a/src/Spv.Generator/DeterministicHashCode.cs
+++ b/src/Spv.Generator/DeterministicHashCode.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Numerics;
using System.Runtime.CompilerServices;
diff --git a/src/Spv.Generator/DeterministicStringKey.cs b/src/Spv.Generator/DeterministicStringKey.cs
index 398aa6c8c..7ed14c33c 100644
--- a/src/Spv.Generator/DeterministicStringKey.cs
+++ b/src/Spv.Generator/DeterministicStringKey.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Spv.Generator
{
diff --git a/src/Spv.Generator/GeneratorPool.cs b/src/Spv.Generator/GeneratorPool.cs
index e4266eee9..3c16586c9 100644
--- a/src/Spv.Generator/GeneratorPool.cs
+++ b/src/Spv.Generator/GeneratorPool.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Spv.Generator
{
diff --git a/src/Spv.Generator/IOperand.cs b/src/Spv.Generator/IOperand.cs
index bda2ed694..8809b606d 100644
--- a/src/Spv.Generator/IOperand.cs
+++ b/src/Spv.Generator/IOperand.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
namespace Spv.Generator
diff --git a/src/Spv.Generator/Instruction.cs b/src/Spv.Generator/Instruction.cs
index 27250e0f9..45492033f 100644
--- a/src/Spv.Generator/Instruction.cs
+++ b/src/Spv.Generator/Instruction.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
diff --git a/src/Spv.Generator/InstructionOperands.cs b/src/Spv.Generator/InstructionOperands.cs
index dfabe3071..de74f1127 100644
--- a/src/Spv.Generator/InstructionOperands.cs
+++ b/src/Spv.Generator/InstructionOperands.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
diff --git a/src/Spv.Generator/LiteralInteger.cs b/src/Spv.Generator/LiteralInteger.cs
index 4d5f801e3..013ca3b94 100644
--- a/src/Spv.Generator/LiteralInteger.cs
+++ b/src/Spv.Generator/LiteralInteger.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
namespace Spv.Generator
diff --git a/src/Spv.Generator/LiteralString.cs b/src/Spv.Generator/LiteralString.cs
index 1ced040a0..ed20d0e8f 100644
--- a/src/Spv.Generator/LiteralString.cs
+++ b/src/Spv.Generator/LiteralString.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
using System.Text;
diff --git a/src/Spv.Generator/Module.cs b/src/Spv.Generator/Module.cs
index 193284106..fb02cc966 100644
--- a/src/Spv.Generator/Module.cs
+++ b/src/Spv.Generator/Module.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using static Spv.Specification;
diff --git a/src/Spv.Generator/OperandType.cs b/src/Spv.Generator/OperandType.cs
index 06e8e1fb3..ddbdc89db 100644
--- a/src/Spv.Generator/OperandType.cs
+++ b/src/Spv.Generator/OperandType.cs
@@ -1,4 +1,4 @@
-namespace Spv.Generator
+namespace Spv.Generator
{
public enum OperandType
{
diff --git a/src/Spv.Generator/TypeDeclarationKey.cs b/src/Spv.Generator/TypeDeclarationKey.cs
index 1f59331f0..aaaf4fd31 100644
--- a/src/Spv.Generator/TypeDeclarationKey.cs
+++ b/src/Spv.Generator/TypeDeclarationKey.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics.CodeAnalysis;
namespace Spv.Generator
diff --git a/src/Spv.Generator/spirv.cs b/src/Spv.Generator/spirv.cs
index bbcda330b..7844c9708 100644
--- a/src/Spv.Generator/spirv.cs
+++ b/src/Spv.Generator/spirv.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2020 The Khronos Group Inc.
+// Copyright (c) 2014-2020 The Khronos Group Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and/or associated documentation files (the "Materials"),