diff options
author | gdkchan <gab.dark.100@gmail.com> | 2023-06-08 17:09:14 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-08 17:09:14 -0300 |
commit | fe30c03cac9d1f09270a4156aceab273dbac81fb (patch) | |
tree | b6107578e87f11fbd9a50dde002f190e2e091615 /src/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs | |
parent | 5813b2e354e072d43eb30c51083e737cf6bc1ee2 (diff) |
Implement soft float64 conversion on shaders when host has no support (#5159)1.1.870
* Implement soft float64 conversion on shaders when host has no support
* Shader cache version bump
* Fix rebase error
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs')
-rw-r--r-- | src/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs b/src/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs index bdb3a62e..8d2669c0 100644 --- a/src/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs +++ b/src/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs @@ -11,8 +11,12 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations { RunOptimizationPasses(blocks, config); + // TODO: Some of those are not optimizations and shouldn't be here. + GlobalToStorage.RunPass(hfm, blocks, config); + bool hostSupportsShaderFloat64 = config.GpuAccessor.QueryHostSupportsShaderFloat64(); + // Those passes are looking for specific patterns and only needs to run once. for (int blkIndex = 0; blkIndex < blocks.Length; blkIndex++) { @@ -24,6 +28,12 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations { EliminateMultiplyByFragmentCoordW(blocks[blkIndex]); } + + // If the host does not support double operations, we need to turn them into float operations. + if (!hostSupportsShaderFloat64) + { + DoubleToFloat.RunPass(hfm, blocks[blkIndex]); + } } // Run optimizations one last time to remove any code that is now optimizable after above passes. |