diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureBindingsArrayCache.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureBindingsArrayCache.cs
index 88a8cfc0b0..7e486e0a84 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/TextureBindingsArrayCache.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/TextureBindingsArrayCache.cs
@@ -630,10 +630,11 @@ namespace Ryujinx.Graphics.Gpu.Image
bool isSampler = bindingInfo.IsSamplerOnly;
bool poolModified = isSampler ? entry.SamplerPoolModified() : entry.TexturePoolModified();
bool isStore = bindingInfo.Flags.HasFlag(TextureUsageFlags.ImageStore);
+ bool resScaleUnsupported = bindingInfo.Flags.HasFlag(TextureUsageFlags.ResScaleUnsupported);
if (!poolModified && !isNewEntry && entry.ValidateTextures())
{
- entry.SynchronizeMemory(isStore);
+ entry.SynchronizeMemory(isStore, resScaleUnsupported);
if (isImage)
{
@@ -680,6 +681,13 @@ namespace Ryujinx.Graphics.Gpu.Image
{
texture.SignalModified();
}
+
+ if (resScaleUnsupported && texture.ScaleMode != TextureScaleMode.Blacklisted)
+ {
+ // Scaling textures used on arrays is currently not supported.
+
+ texture.BlacklistScale();
+ }
}
}
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/GpuChannelPoolState.cs b/src/Ryujinx.Graphics.Gpu/Shader/GpuChannelPoolState.cs
index d746c6ddab..a2ab993358 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/GpuChannelPoolState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/GpuChannelPoolState.cs
@@ -27,7 +27,6 @@ namespace Ryujinx.Graphics.Gpu.Shader
///
/// GPU virtual address of the texture pool
/// Maximum ID of the texture pool
- /// Maximum ID of the sampler pool
/// Constant buffer slot where the texture handles are located
public GpuChannelPoolState(ulong texturePoolGpuVa, int texturePoolMaximumId, int textureBufferIndex)
{
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/ShaderSpecializationState.cs b/src/Ryujinx.Graphics.Gpu/Shader/ShaderSpecializationState.cs
index e370d1f02f..98acb6f27d 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/ShaderSpecializationState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/ShaderSpecializationState.cs
@@ -399,7 +399,7 @@ namespace Ryujinx.Graphics.Gpu.Shader
}
///
- /// Checks if a given texture was registerd on this specialization state.
+ /// Checks if a given texture was registered on this specialization state.
///
/// Shader stage where the texture is used
/// Offset in words of the texture handle on the texture buffer
@@ -410,7 +410,7 @@ namespace Ryujinx.Graphics.Gpu.Shader
}
///
- /// Checks if a given texture array (from constant buffer) was registerd on this specialization state.
+ /// Checks if a given texture array (from constant buffer) was registered on this specialization state.
///
/// Shader stage where the texture is used
/// Offset in words of the texture handle on the texture buffer
@@ -422,7 +422,7 @@ namespace Ryujinx.Graphics.Gpu.Shader
}
///
- /// Checks if a given texture array (from a sampler pool or texture pool) was registerd on this specialization state.
+ /// Checks if a given texture array (from a sampler pool or texture pool) was registered on this specialization state.
///
/// True for sampler pool, false for texture pool
/// True if the length for the given pool, false otherwise
diff --git a/src/Ryujinx.Graphics.Vulkan/DescriptorSetTemplate.cs b/src/Ryujinx.Graphics.Vulkan/DescriptorSetTemplate.cs
index a59ac81e8c..117f79bb44 100644
--- a/src/Ryujinx.Graphics.Vulkan/DescriptorSetTemplate.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DescriptorSetTemplate.cs
@@ -60,7 +60,7 @@ namespace Ryujinx.Graphics.Vulkan
{
entries[seg] = new DescriptorUpdateTemplateEntry()
{
- DescriptorType = DescriptorType.UniformTexelBuffer,
+ DescriptorType = segment.Type.Convert(),
DstBinding = (uint)binding,
DescriptorCount = (uint)count,
Offset = structureOffset,