diff options
author | gdkchan <gab.dark.100@gmail.com> | 2019-12-05 17:34:47 -0300 |
---|---|---|
committer | Thog <thog@protonmail.com> | 2020-01-09 02:13:00 +0100 |
commit | e25b7c9848b6ec486eb513297b5c536857665c7f (patch) | |
tree | c1ccb6c58bed0f7ece835359516330104feb8f4d /Ryujinx.Graphics.Gpu/Image/Texture.cs | |
parent | 6a98c643cabeea25dc42e19fe475a687a034a532 (diff) |
Initial support for the guest OpenGL driver (NVIDIA and Nouveau)
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Image/Texture.cs')
-rw-r--r-- | Ryujinx.Graphics.Gpu/Image/Texture.cs | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Gpu/Image/Texture.cs b/Ryujinx.Graphics.Gpu/Image/Texture.cs index 120abe3f..5e057588 100644 --- a/Ryujinx.Graphics.Gpu/Image/Texture.cs +++ b/Ryujinx.Graphics.Gpu/Image/Texture.cs @@ -277,7 +277,36 @@ namespace Ryujinx.Graphics.Gpu.Image public void Flush() { - byte[] data = HostTexture.GetData(0); + Span<byte> data = HostTexture.GetData(); + + if (_info.IsLinear) + { + data = LayoutConverter.ConvertLinearToLinearStrided( + _info.Width, + _info.Height, + _info.FormatInfo.BlockWidth, + _info.FormatInfo.BlockHeight, + _info.Stride, + _info.FormatInfo.BytesPerPixel, + data); + } + else + { + data = LayoutConverter.ConvertLinearToBlockLinear( + _info.Width, + _info.Height, + _depth, + _info.Levels, + _layers, + _info.FormatInfo.BlockWidth, + _info.FormatInfo.BlockHeight, + _info.FormatInfo.BytesPerPixel, + _info.GobBlocksInY, + _info.GobBlocksInZ, + _info.GobBlocksInTileX, + _sizeInfo, + data); + } _context.PhysicalMemory.Write(Address, data); } |