aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/CodeGen
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2020-10-20 19:03:20 -0300
committerGitHub <noreply@github.com>2020-10-20 19:03:20 -0300
commit2dcc6333f8cbb959293832f52857bdaeab1918bf (patch)
tree1aefd3ff6abb23d1a4efc78ee14274283b9041a4 /Ryujinx.Graphics.Shader/CodeGen
parent08332bdc041a594d389b0b732b3c4b5f8573e3fb (diff)
Fix image binding format (#1625)
* Fix image binding format * XML doc
Diffstat (limited to 'Ryujinx.Graphics.Shader/CodeGen')
-rw-r--r--Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs12
-rw-r--r--Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs2
2 files changed, 5 insertions, 9 deletions
diff --git a/Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs b/Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs
index cd82aa02..08279839 100644
--- a/Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs
+++ b/Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs
@@ -345,14 +345,14 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
string indexedSamplerName = OperandManager.GetSamplerName(context.Config.Stage, texOp, indexExpr);
- desc = new TextureDescriptor(indexedSamplerName, texOp.Type, texOp.Handle + index * 2);
+ desc = new TextureDescriptor(indexedSamplerName, texOp.Type, texOp.Format, texOp.Handle + index * 2);
context.TextureDescriptors.Add(desc);
}
}
else
{
- desc = new TextureDescriptor(samplerName, texOp.Type, texOp.Handle);
+ desc = new TextureDescriptor(samplerName, texOp.Type, texOp.Format, texOp.Handle);
context.TextureDescriptors.Add(desc);
}
@@ -371,10 +371,6 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
if (!images.TryAdd(imageName, texOp))
{
- // Ensure that all texture operations share the same format.
- // This avoid errors like mismatched formats.
- texOp.Format = images[imageName].Format;
-
continue;
}
@@ -404,14 +400,14 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
string indexedSamplerName = OperandManager.GetSamplerName(context.Config.Stage, texOp, indexExpr);
- var desc = new TextureDescriptor(indexedSamplerName, texOp.Type, texOp.Handle + index * 2);
+ var desc = new TextureDescriptor(indexedSamplerName, texOp.Type, texOp.Format, texOp.Handle + index * 2);
context.TextureDescriptors.Add(desc);
}
}
else
{
- var desc = new TextureDescriptor(imageName, texOp.Type, texOp.Handle);
+ var desc = new TextureDescriptor(imageName, texOp.Type, texOp.Format, texOp.Handle);
context.ImageDescriptors.Add(desc);
}
diff --git a/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs b/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs
index 465356e6..459b60c4 100644
--- a/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs
+++ b/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs
@@ -260,7 +260,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
public static string GetImageName(ShaderStage stage, AstTextureOperation texOp, string indexExpr)
{
- string suffix = texOp.Handle.ToString("X");
+ string suffix = texOp.Handle.ToString("X") + "_" + texOp.Format.ToGlslFormat();
if ((texOp.Type & SamplerType.Indexed) != 0)
{