aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Gpu/Image
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Image')
-rw-r--r--Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs16
-rw-r--r--Ryujinx.Graphics.Gpu/Image/TextureManager.cs10
2 files changed, 26 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs b/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs
index 5862ea71..621dc2e7 100644
--- a/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs
+++ b/Ryujinx.Graphics.Gpu/Image/TextureBindingsManager.cs
@@ -202,6 +202,22 @@ namespace Ryujinx.Graphics.Gpu.Image
}
/// <summary>
+ /// Gets a texture and a sampler from their respective pools from a texture ID and a sampler ID.
+ /// </summary>
+ /// <param name="textureId">ID of the texture</param>
+ /// <param name="samplerId">ID of the sampler</param>
+ public (Texture, Sampler) GetTextureAndSampler(int textureId, int samplerId)
+ {
+ ulong texturePoolAddress = _texturePoolAddress;
+
+ TexturePool texturePool = texturePoolAddress != 0
+ ? _texturePoolCache.FindOrCreate(_channel, texturePoolAddress, _texturePoolMaximumId)
+ : null;
+
+ return (texturePool.Get(textureId), _samplerPool.Get(samplerId));
+ }
+
+ /// <summary>
/// Updates the texture scale for a given texture or image.
/// </summary>
/// <param name="texture">Start GPU virtual address of the pool</param>
diff --git a/Ryujinx.Graphics.Gpu/Image/TextureManager.cs b/Ryujinx.Graphics.Gpu/Image/TextureManager.cs
index a6373872..70cb57d0 100644
--- a/Ryujinx.Graphics.Gpu/Image/TextureManager.cs
+++ b/Ryujinx.Graphics.Gpu/Image/TextureManager.cs
@@ -309,6 +309,16 @@ namespace Ryujinx.Graphics.Gpu.Image
}
/// <summary>
+ /// Gets a texture and a sampler from their respective pools from a texture ID and a sampler ID.
+ /// </summary>
+ /// <param name="textureId">ID of the texture</param>
+ /// <param name="samplerId">ID of the sampler</param>
+ public (Texture, Sampler) GetGraphicsTextureAndSampler(int textureId, int samplerId)
+ {
+ return _gpBindingsManager.GetTextureAndSampler(textureId, samplerId);
+ }
+
+ /// <summary>
/// Commits bindings on the compute pipeline.
/// </summary>
public void CommitComputeBindings()