383c039037
* shader cache: Fix invalid virtual address clean up This fix an issue causing the virtual address of texture descriptors to not be cleaned up when caching and instead cleaning texture format and swizzle. This should fix duplicate high duplication in the cache for certain games and possible texture corruption issues. **THIS WILL INVALIDATE ALL SHADER CACHE LEVELS CONSIDERING THE NATURE OF THE ISSUE** * shader cache: Address gdk's comment
58 lines
2.1 KiB
C#
58 lines
2.1 KiB
C#
using Ryujinx.Graphics.GAL;
|
|
|
|
namespace Ryujinx.Graphics.Gpu.Image
|
|
{
|
|
/// <summary>
|
|
/// Texture target.
|
|
/// </summary>
|
|
enum TextureTarget : byte
|
|
{
|
|
Texture1D,
|
|
Texture2D,
|
|
Texture3D,
|
|
Cubemap,
|
|
Texture1DArray,
|
|
Texture2DArray,
|
|
TextureBuffer,
|
|
Texture2DRect,
|
|
CubemapArray
|
|
}
|
|
|
|
static class TextureTargetConverter
|
|
{
|
|
/// <summary>
|
|
/// Converts the texture target enum to a host compatible, Graphics Abstraction Layer enum.
|
|
/// </summary>
|
|
/// <param name="target">The target enum to convert</param>
|
|
/// <param name="isMultisample">True if the texture is a multisampled texture</param>
|
|
/// <returns>The host compatible texture target</returns>
|
|
public static Target Convert(this TextureTarget target, bool isMultisample)
|
|
{
|
|
if (isMultisample)
|
|
{
|
|
switch (target)
|
|
{
|
|
case TextureTarget.Texture2D: return Target.Texture2DMultisample;
|
|
case TextureTarget.Texture2DArray: return Target.Texture2DMultisampleArray;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (target)
|
|
{
|
|
case TextureTarget.Texture1D: return Target.Texture1D;
|
|
case TextureTarget.Texture2D: return Target.Texture2D;
|
|
case TextureTarget.Texture2DRect: return Target.Texture2D;
|
|
case TextureTarget.Texture3D: return Target.Texture3D;
|
|
case TextureTarget.Texture1DArray: return Target.Texture1DArray;
|
|
case TextureTarget.Texture2DArray: return Target.Texture2DArray;
|
|
case TextureTarget.Cubemap: return Target.Cubemap;
|
|
case TextureTarget.CubemapArray: return Target.CubemapArray;
|
|
case TextureTarget.TextureBuffer: return Target.TextureBuffer;
|
|
}
|
|
}
|
|
|
|
return Target.Texture1D;
|
|
}
|
|
}
|
|
} |