aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/StructuredIr
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Shader/StructuredIr')
-rw-r--r--Ryujinx.Graphics.Shader/StructuredIr/AstTextureOperation.cs7
-rw-r--r--Ryujinx.Graphics.Shader/StructuredIr/StructuredProgram.cs6
2 files changed, 11 insertions, 2 deletions
diff --git a/Ryujinx.Graphics.Shader/StructuredIr/AstTextureOperation.cs b/Ryujinx.Graphics.Shader/StructuredIr/AstTextureOperation.cs
index 5473978e..a3fa3e3a 100644
--- a/Ryujinx.Graphics.Shader/StructuredIr/AstTextureOperation.cs
+++ b/Ryujinx.Graphics.Shader/StructuredIr/AstTextureOperation.cs
@@ -4,8 +4,9 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
{
class AstTextureOperation : AstOperation
{
- public SamplerType Type { get; }
- public TextureFlags Flags { get; }
+ public SamplerType Type { get; }
+ public TextureFormat Format { get; }
+ public TextureFlags Flags { get; }
public int Handle { get; }
public int ArraySize { get; }
@@ -13,6 +14,7 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
public AstTextureOperation(
Instruction inst,
SamplerType type,
+ TextureFormat format,
TextureFlags flags,
int handle,
int arraySize,
@@ -20,6 +22,7 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
params IAstNode[] sources) : base(inst, index, sources)
{
Type = type;
+ Format = format;
Flags = flags;
Handle = handle;
ArraySize = arraySize;
diff --git a/Ryujinx.Graphics.Shader/StructuredIr/StructuredProgram.cs b/Ryujinx.Graphics.Shader/StructuredIr/StructuredProgram.cs
index 4758b08f..f1dd08f2 100644
--- a/Ryujinx.Graphics.Shader/StructuredIr/StructuredProgram.cs
+++ b/Ryujinx.Graphics.Shader/StructuredIr/StructuredProgram.cs
@@ -57,6 +57,7 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
return new AstTextureOperation(
inst,
texOp.Type,
+ texOp.Format,
texOp.Flags,
texOp.Handle,
4, // TODO: Non-hardcoded array size.
@@ -118,6 +119,11 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
if (operation is TextureOperation texOp)
{
+ if (texOp.Inst == Instruction.ImageLoad || texOp.Inst == Instruction.ImageStore)
+ {
+ dest.VarType = texOp.Format.GetComponentType();
+ }
+
AstTextureOperation astTexOp = GetAstTextureOperation(texOp);
if (texOp.Inst == Instruction.ImageLoad)