aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.GAL/Format.cs
diff options
context:
space:
mode:
authorriperiperi <rhy3756547@hotmail.com>2022-12-26 18:50:27 +0000
committerGitHub <noreply@github.com>2022-12-26 15:50:27 -0300
commit470be03c2ff22346a1f0ae53fa25f53c4d1790b5 (patch)
tree7ce75f2ac860063279893571c762257806e197b5 /Ryujinx.Graphics.GAL/Format.cs
parentc963b3c80488f88c9d7f44588b6ba45051af3e2d (diff)
GPU: Add fallback when 16-bit formats are not supported (#4108)
* Add conversion for 16 bit RGBA formats (not supported in Rosetta) * Rebase fix Rebase fix * Forgot to remove this * Fix RGBA16 format conversion * Add RGBA4 -> RGBA8 conversion * Handle host stride alignment * Address Feedback Part 1 * Can't count * Don't zero out rgb when alpha is 0 * Separate RGBA4 and 5-bit component formats Not sure of a better way to name them... * Add A1B5G5R5 conversion * Put this in the right place. * Make format naming consistent for capabilities * Change method names
Diffstat (limited to 'Ryujinx.Graphics.GAL/Format.cs')
-rw-r--r--Ryujinx.Graphics.GAL/Format.cs21
1 files changed, 21 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.GAL/Format.cs b/Ryujinx.Graphics.GAL/Format.cs
index 87d08803..5e0274e5 100644
--- a/Ryujinx.Graphics.GAL/Format.cs
+++ b/Ryujinx.Graphics.GAL/Format.cs
@@ -449,6 +449,27 @@ namespace Ryujinx.Graphics.GAL
}
/// <summary>
+ /// Checks if the texture format is 16 bit packed.
+ /// </summary>
+ /// <param name="format">Texture format</param>
+ /// <returns>True if the texture format is 16 bit packed, false otherwise</returns>
+ public static bool Is16BitPacked(this Format format)
+ {
+ switch (format)
+ {
+ case Format.B5G6R5Unorm:
+ case Format.B5G5R5A1Unorm:
+ case Format.R5G5B5X1Unorm:
+ case Format.R5G5B5A1Unorm:
+ case Format.R5G6B5Unorm:
+ case Format.R4G4B4A4Unorm:
+ return true;
+ }
+
+ return false;
+ }
+
+ /// <summary>
/// Checks if the texture format is an ASTC format.
/// </summary>
/// <param name="format">Texture format</param>