namespace Ryujinx.Graphics.Gpu.Shader.DiskCache { /// /// Result of a shader cache load operation. /// enum DiskCacheLoadResult { /// /// No error. /// Success, /// /// File can't be accessed. /// NoAccess, /// /// The constant buffer 1 data length is too low for the translation of the guest shader. /// InvalidCb1DataLength, /// /// The cache is missing the descriptor of a texture used by the shader. /// MissingTextureDescriptor, /// /// File is corrupted. /// FileCorruptedGeneric, /// /// File is corrupted, detected by magic value check. /// FileCorruptedInvalidMagic, /// /// File is corrupted, detected by length check. /// FileCorruptedInvalidLength, /// /// File might be valid, but is incompatible with the current emulator version. /// IncompatibleVersion } static class DiskCacheLoadResultExtensions { /// /// Gets an error message from a result code. /// /// Result code /// Error message public static string GetMessage(this DiskCacheLoadResult result) { return result switch { DiskCacheLoadResult.Success => "No error.", DiskCacheLoadResult.NoAccess => "Could not access the cache file.", DiskCacheLoadResult.InvalidCb1DataLength => "Constant buffer 1 data length is too low.", DiskCacheLoadResult.MissingTextureDescriptor => "Texture descriptor missing from the cache file.", DiskCacheLoadResult.FileCorruptedGeneric => "The cache file is corrupted.", DiskCacheLoadResult.FileCorruptedInvalidMagic => "Magic check failed, the cache file is corrupted.", DiskCacheLoadResult.FileCorruptedInvalidLength => "Length check failed, the cache file is corrupted.", DiskCacheLoadResult.IncompatibleVersion => "The version of the disk cache is not compatible with this version of the emulator.", _ => "Unknown error." }; } } }