diff options
author | gdkchan <gab.dark.100@gmail.com> | 2021-09-28 18:52:27 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-28 23:52:27 +0200 |
commit | 83bdafccdab01322af8503e9ad21f52981e646c1 (patch) | |
tree | 4941d53d24474643a8153d304af2e056505ba1eb | |
parent | 405840a24b75ecd7cab52c1960464071e2bc9b81 (diff) |
Share scales array for graphics and compute (#2653)
-rw-r--r-- | Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs | 11 | ||||
-rw-r--r-- | Ryujinx.Graphics.Gpu/Image/TextureManager.cs | 7 |
2 files changed, 8 insertions, 10 deletions
diff --git a/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs b/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs index 597c527d..d7691e13 100644 --- a/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs +++ b/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs @@ -62,12 +62,14 @@ namespace Ryujinx.Graphics.Gpu.Image /// <param name="context">The GPU context that the texture bindings manager belongs to</param> /// <param name="channel">The GPU channel that the texture bindings manager belongs to</param> /// <param name="poolCache">Texture pools cache used to get texture pools from</param> + /// <param name="scales">Array where the scales for the currently bound textures are stored</param> /// <param name="isCompute">True if the bindings manager is used for the compute engine</param> - public TextureBindingsManager(GpuContext context, GpuChannel channel, TexturePoolCache poolCache, bool isCompute) + public TextureBindingsManager(GpuContext context, GpuChannel channel, TexturePoolCache poolCache, float[] scales, bool isCompute) { _context = context; _channel = channel; _texturePoolCache = poolCache; + _scales = scales; _isCompute = isCompute; int stages = isCompute ? 1 : Constants.ShaderStages; @@ -89,13 +91,6 @@ namespace Ryujinx.Graphics.Gpu.Image _textureState[stage] = new TextureStatePerStage[InitialTextureStateSize]; _imageState[stage] = new TextureStatePerStage[InitialImageStateSize]; } - - _scales = new float[64]; - - for (int i = 0; i < 64; i++) - { - _scales[i] = 1f; - } } /// <summary> diff --git a/Ryujinx.Graphics.Gpu/Image/TextureManager.cs b/Ryujinx.Graphics.Gpu/Image/TextureManager.cs index 1d7b8df2..a6373872 100644 --- a/Ryujinx.Graphics.Gpu/Image/TextureManager.cs +++ b/Ryujinx.Graphics.Gpu/Image/TextureManager.cs @@ -35,8 +35,11 @@ namespace Ryujinx.Graphics.Gpu.Image TexturePoolCache texturePoolCache = new TexturePoolCache(context); - _cpBindingsManager = new TextureBindingsManager(context, channel, texturePoolCache, isCompute: true); - _gpBindingsManager = new TextureBindingsManager(context, channel, texturePoolCache, isCompute: false); + float[] scales = new float[64]; + new Span<float>(scales).Fill(1f); + + _cpBindingsManager = new TextureBindingsManager(context, channel, texturePoolCache, scales, isCompute: true); + _gpBindingsManager = new TextureBindingsManager(context, channel, texturePoolCache, scales, isCompute: false); _rtColors = new Texture[Constants.TotalRenderTargets]; _rtHostColors = new ITexture[Constants.TotalRenderTargets]; |