forked from Mirror/Ryujinx
Share scales array for graphics and compute (#2653)
This commit is contained in:
parent
405840a24b
commit
83bdafccda
2 changed files with 8 additions and 10 deletions
|
@ -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>
|
||||||
|
|
|
@ -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];
|
||||||
|
|
Loading…
Reference in a new issue