From 03711dd7b5d44e20fb45c728803ea6b9599dec87 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Tue, 21 Apr 2020 20:35:28 -0300 Subject: Implement SULD shader instruction (#1117) * Implement SULD shader instruction * Some nits --- Ryujinx.Graphics.Shader/StructuredIr/AstTextureOperation.cs | 7 +++++-- Ryujinx.Graphics.Shader/StructuredIr/StructuredProgram.cs | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'Ryujinx.Graphics.Shader/StructuredIr') 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) -- cgit v1.2.3