aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Gpu/Image/TextureBindingInfo.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.Gpu/Image/TextureBindingInfo.cs')
-rw-r--r--src/Ryujinx.Graphics.Gpu/Image/TextureBindingInfo.cs73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureBindingInfo.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureBindingInfo.cs
new file mode 100644
index 00000000..febe508b
--- /dev/null
+++ b/src/Ryujinx.Graphics.Gpu/Image/TextureBindingInfo.cs
@@ -0,0 +1,73 @@
+using Ryujinx.Graphics.GAL;
+using Ryujinx.Graphics.Shader;
+
+namespace Ryujinx.Graphics.Gpu.Image
+{
+ /// <summary>
+ /// Texture binding information.
+ /// This is used for textures that needs to be accessed from shaders.
+ /// </summary>
+ readonly struct TextureBindingInfo
+ {
+ /// <summary>
+ /// Shader sampler target type.
+ /// </summary>
+ public Target Target { get; }
+
+ /// <summary>
+ /// For images, indicates the format specified on the shader.
+ /// </summary>
+ public Format Format { get; }
+
+ /// <summary>
+ /// Shader texture host binding point.
+ /// </summary>
+ public int Binding { get; }
+
+ /// <summary>
+ /// Constant buffer slot with the texture handle.
+ /// </summary>
+ public int CbufSlot { get; }
+
+ /// <summary>
+ /// Index of the texture handle on the constant buffer at slot <see cref="CbufSlot"/>.
+ /// </summary>
+ public int Handle { get; }
+
+ /// <summary>
+ /// Flags from the texture descriptor that indicate how the texture is used.
+ /// </summary>
+ public TextureUsageFlags Flags { get; }
+
+ /// <summary>
+ /// Constructs the texture binding information structure.
+ /// </summary>
+ /// <param name="target">The shader sampler target type</param>
+ /// <param name="format">Format of the image as declared on the shader</param>
+ /// <param name="binding">The shader texture binding point</param>
+ /// <param name="cbufSlot">Constant buffer slot where the texture handle is located</param>
+ /// <param name="handle">The shader texture handle (read index into the texture constant buffer)</param>
+ /// <param name="flags">The texture's usage flags, indicating how it is used in the shader</param>
+ public TextureBindingInfo(Target target, Format format, int binding, int cbufSlot, int handle, TextureUsageFlags flags)
+ {
+ Target = target;
+ Format = format;
+ Binding = binding;
+ CbufSlot = cbufSlot;
+ Handle = handle;
+ Flags = flags;
+ }
+
+ /// <summary>
+ /// Constructs the texture binding information structure.
+ /// </summary>
+ /// <param name="target">The shader sampler target type</param>
+ /// <param name="binding">The shader texture binding point</param>
+ /// <param name="cbufSlot">Constant buffer slot where the texture handle is located</param>
+ /// <param name="handle">The shader texture handle (read index into the texture constant buffer)</param>
+ /// <param name="flags">The texture's usage flags, indicating how it is used in the shader</param>
+ public TextureBindingInfo(Target target, int binding, int cbufSlot, int handle, TextureUsageFlags flags) : this(target, (Format)0, binding, cbufSlot, handle, flags)
+ {
+ }
+ }
+} \ No newline at end of file