Share scales array for graphics and compute (#2653)

This commit is contained in:
gdkchan 2021-09-28 18:52:27 -03:00 committed by GitHub
parent 405840a24b
commit 83bdafccda
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 10 deletions

View File

@ -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="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="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="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> /// <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; _context = context;
_channel = channel; _channel = channel;
_texturePoolCache = poolCache; _texturePoolCache = poolCache;
_scales = scales;
_isCompute = isCompute; _isCompute = isCompute;
int stages = isCompute ? 1 : Constants.ShaderStages; int stages = isCompute ? 1 : Constants.ShaderStages;
@ -89,13 +91,6 @@ namespace Ryujinx.Graphics.Gpu.Image
_textureState[stage] = new TextureStatePerStage[InitialTextureStateSize]; _textureState[stage] = new TextureStatePerStage[InitialTextureStateSize];
_imageState[stage] = new TextureStatePerStage[InitialImageStateSize]; _imageState[stage] = new TextureStatePerStage[InitialImageStateSize];
} }
_scales = new float[64];
for (int i = 0; i < 64; i++)
{
_scales[i] = 1f;
}
} }
/// <summary> /// <summary>

View File

@ -35,8 +35,11 @@ namespace Ryujinx.Graphics.Gpu.Image
TexturePoolCache texturePoolCache = new TexturePoolCache(context); TexturePoolCache texturePoolCache = new TexturePoolCache(context);
_cpBindingsManager = new TextureBindingsManager(context, channel, texturePoolCache, isCompute: true); float[] scales = new float[64];
_gpBindingsManager = new TextureBindingsManager(context, channel, texturePoolCache, isCompute: false); 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]; _rtColors = new Texture[Constants.TotalRenderTargets];
_rtHostColors = new ITexture[Constants.TotalRenderTargets]; _rtHostColors = new ITexture[Constants.TotalRenderTargets];