aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs')
-rw-r--r--src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs
index b4773b81..f0e57b53 100644
--- a/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs
@@ -639,14 +639,27 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl.Instructions
private static string GetSamplerName(CodeGenContext context, AstTextureOperation texOp, ref int srcIndex)
{
- TextureDefinition definition = context.Properties.Textures[texOp.Binding];
- string name = definition.Name;
+ TextureDefinition textureDefinition = context.Properties.Textures[texOp.Binding];
+ string name = textureDefinition.Name;
- if (definition.ArrayLength != 1)
+ if (textureDefinition.ArrayLength != 1)
{
name = $"{name}[{GetSourceExpr(context, texOp.GetSource(srcIndex++), AggregateType.S32)}]";
}
+ if (texOp.IsSeparate)
+ {
+ TextureDefinition samplerDefinition = context.Properties.Textures[texOp.SamplerBinding];
+ string samplerName = samplerDefinition.Name;
+
+ if (samplerDefinition.ArrayLength != 1)
+ {
+ samplerName = $"{samplerName}[{GetSourceExpr(context, texOp.GetSource(srcIndex++), AggregateType.S32)}]";
+ }
+
+ name = $"{texOp.Type.ToGlslSamplerType()}({name}, {samplerName})";
+ }
+
return name;
}