diff options
| author | riperiperi <rhy3756547@hotmail.com> | 2021-03-19 01:17:38 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-19 02:17:38 +0100 |
| commit | 9b7335a63bd921d38866090e8c53f35b8e050939 (patch) | |
| tree | bfb6aa5d5e1cef0b1cf02f5683bb5cbdd923c1ca /Ryujinx.Graphics.Gpu/Image/TextureManager.cs | |
| parent | 39899c04076a8e9004b173320ffbb6dbf45ff3e4 (diff) | |
Improve linear texture compatibility rules (#2099)
* Improve linear texture compatibility rules
Fixes an issue where small or width-aligned (rather than byte aligned) textures would fail to create a view of existing data. Creates a copy dependency as size change may be risky.
* Minor cleanup
* Remove Size Change for Copy Depenedencies
The copy to the target (potentially different sized) texture can properly deal with cropping by itself.
* Move StrideAlignment and GobAlignment into Constants
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Image/TextureManager.cs')
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Image/TextureManager.cs | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/Ryujinx.Graphics.Gpu/Image/TextureManager.cs b/Ryujinx.Graphics.Gpu/Image/TextureManager.cs index 07bc7c7e..2b756e4c 100644 --- a/Ryujinx.Graphics.Gpu/Image/TextureManager.cs +++ b/Ryujinx.Graphics.Gpu/Image/TextureManager.cs @@ -429,7 +429,7 @@ namespace Ryujinx.Graphics.Gpu.Image // Discount square textures that aren't depth-stencil like. (excludes game textures, cubemap faces, most 3D texture LUT, texture atlas) // Detect if the texture is possibly square. Widths may be aligned, so to remove the uncertainty we align both the width and height. - int widthAlignment = (info.IsLinear ? 32 : 64) / info.FormatInfo.BytesPerPixel; + int widthAlignment = (info.IsLinear ? Constants.StrideAlignment : Constants.GobAlignment) / info.FormatInfo.BytesPerPixel; bool possiblySquare = BitUtils.AlignUp(info.Width, widthAlignment) == BitUtils.AlignUp(info.Height, widthAlignment); @@ -977,8 +977,6 @@ namespace Ryujinx.Graphics.Gpu.Image { // Copy only compatibility, or target texture is already a view. - ChangeSizeIfNeeded(overlapInfo, overlap, false, sizeHint); // Force a size match for copy - overlap.SynchronizeMemory(); texture.CreateCopyDependency(overlap, oInfo.FirstLayer, oInfo.FirstLevel, false); } |
