diff options
author | riperiperi <rhy3756547@hotmail.com> | 2021-09-19 13:03:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-19 14:03:05 +0200 |
commit | b0af010247a2bc1d9af1fb1068d4fad0319ad216 (patch) | |
tree | 73f1b68c5b6e44bbdde1952e61209f9b12527edc /Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs | |
parent | 32c09af71a5bebdb711b175627e1e26370275d96 (diff) |
Set texture/image bindings in place rather than allocating and passing an array (#2647)
* Remove allocations for texture bindings and state
* Rent rather than stackalloc + copy
A bit faster.
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs')
-rw-r--r-- | Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs b/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs index a0304308..8469f1ae 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Compute/ComputeClass.cs @@ -191,7 +191,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Compute _channel.BufferManager.SetComputeStorageBufferBindings(info.SBuffers); _channel.BufferManager.SetComputeUniformBufferBindings(info.CBuffers); - var textureBindings = new TextureBindingInfo[info.Textures.Count]; + TextureBindingInfo[] textureBindings = _channel.TextureManager.RentComputeTextureBindings(info.Textures.Count); for (int index = 0; index < info.Textures.Count; index++) { @@ -207,9 +207,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Compute descriptor.Flags); } - _channel.TextureManager.SetComputeTextures(textureBindings); - - var imageBindings = new TextureBindingInfo[info.Images.Count]; + TextureBindingInfo[] imageBindings = _channel.TextureManager.RentComputeImageBindings(info.Images.Count); for (int index = 0; index < info.Images.Count; index++) { @@ -227,8 +225,6 @@ namespace Ryujinx.Graphics.Gpu.Engine.Compute descriptor.Flags); } - _channel.TextureManager.SetComputeImages(imageBindings); - _channel.TextureManager.CommitComputeBindings(); _channel.BufferManager.CommitComputeBindings(); |