aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/StructuredIr/AstOperation.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Shader/StructuredIr/AstOperation.cs')
-rw-r--r--Ryujinx.Graphics.Shader/StructuredIr/AstOperation.cs18
1 files changed, 18 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.Shader/StructuredIr/AstOperation.cs b/Ryujinx.Graphics.Shader/StructuredIr/AstOperation.cs
index a8474955..19397256 100644
--- a/Ryujinx.Graphics.Shader/StructuredIr/AstOperation.cs
+++ b/Ryujinx.Graphics.Shader/StructuredIr/AstOperation.cs
@@ -1,4 +1,6 @@
using Ryujinx.Graphics.Shader.IntermediateRepresentation;
+using Ryujinx.Graphics.Shader.Translation;
+using System.Numerics;
using static Ryujinx.Graphics.Shader.StructuredIr.AstHelper;
@@ -56,5 +58,21 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
_sources[index] = source;
}
+
+ public AggregateType GetVectorType(AggregateType scalarType)
+ {
+ int componentsCount = BitOperations.PopCount((uint)Index);
+
+ AggregateType type = scalarType;
+
+ switch (componentsCount)
+ {
+ case 2: type |= AggregateType.Vector2; break;
+ case 3: type |= AggregateType.Vector3; break;
+ case 4: type |= AggregateType.Vector4; break;
+ }
+
+ return type;
+ }
}
} \ No newline at end of file