ITexture.cs
1 using Ryujinx.Common.Memory; 2 3 namespace Ryujinx.Graphics.GAL 4 { 5 public interface ITexture 6 { 7 int Width { get; } 8 int Height { get; } 9 10 void CopyTo(ITexture destination, int firstLayer, int firstLevel); 11 void CopyTo(ITexture destination, int srcLayer, int dstLayer, int srcLevel, int dstLevel); 12 void CopyTo(ITexture destination, Extents2D srcRegion, Extents2D dstRegion, bool linearFilter); 13 void CopyTo(BufferRange range, int layer, int level, int stride); 14 15 ITexture CreateView(TextureCreateInfo info, int firstLayer, int firstLevel); 16 17 PinnedSpan<byte> GetData(); 18 PinnedSpan<byte> GetData(int layer, int level); 19 20 /// <summary> 21 /// Sets the texture data. The data passed as a <see cref="MemoryOwner{Byte}" /> will be disposed when 22 /// the operation completes. 23 /// </summary> 24 /// <param name="data">Texture data bytes</param> 25 void SetData(MemoryOwner<byte> data); 26 27 /// <summary> 28 /// Sets the texture data. The data passed as a <see cref="MemoryOwner{Byte}" /> will be disposed when 29 /// the operation completes. 30 /// </summary> 31 /// <param name="data">Texture data bytes</param> 32 /// <param name="layer">Target layer</param> 33 /// <param name="level">Target level</param> 34 void SetData(MemoryOwner<byte> data, int layer, int level); 35 36 /// <summary> 37 /// Sets the texture data. The data passed as a <see cref="MemoryOwner{Byte}" /> will be disposed when 38 /// the operation completes. 39 /// </summary> 40 /// <param name="data">Texture data bytes</param> 41 /// <param name="layer">Target layer</param> 42 /// <param name="level">Target level</param> 43 /// <param name="region">Target sub-region of the texture to update</param> 44 void SetData(MemoryOwner<byte> data, int layer, int level, Rectangle<int> region); 45 46 void SetStorage(BufferRange buffer); 47 48 void Release(); 49 } 50 }