| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using Ryujinx.Graphics.Shader.IntermediateRepresentation;
- using System.Collections.Generic;
- namespace Ryujinx.Graphics.Shader.Translation.Transforms
- {
- static class TransformPasses
- {
- public static void RunPass(TransformContext context)
- {
- RunPass<DrawParametersReplace>(context);
- RunPass<ForcePreciseEnable>(context);
- RunPass<VectorComponentSelect>(context);
- RunPass<TexturePass>(context);
- RunPass<SharedStoreSmallIntCas>(context);
- RunPass<SharedAtomicSignedCas>(context);
- RunPass<ShufflePass>(context);
- RunPass<VertexToCompute>(context);
- RunPass<GeometryToCompute>(context);
- }
- private static void RunPass<T>(TransformContext context) where T : ITransformPass
- {
- if (!T.IsEnabled(context.GpuAccessor, context.Stage, context.TargetLanguage, context.UsedFeatures))
- {
- return;
- }
- for (int blkIndex = 0; blkIndex < context.Blocks.Length; blkIndex++)
- {
- BasicBlock block = context.Blocks[blkIndex];
- for (LinkedListNode<INode> node = block.Operations.First; node != null; node = node.Next)
- {
- if (node.Value is not Operation)
- {
- continue;
- }
- node = T.RunPass(context, node);
- }
- }
- }
- }
- }
|