Просмотр исходного кода

Fix bug that could cause depth buffer to be missing after clear (#3067)

gdkchan 4 лет назад
Родитель
Сommit
b944941733

+ 8 - 8
Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs

@@ -369,14 +369,14 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
 
                 if (color != null)
                 {
-                    if (clipRegionWidth > color.Width)
+                    if (clipRegionWidth > color.Width / samplesInX)
                     {
-                        clipRegionWidth = color.Width;
+                        clipRegionWidth = color.Width / samplesInX;
                     }
 
-                    if (clipRegionHeight > color.Height)
+                    if (clipRegionHeight > color.Height / samplesInY)
                     {
-                        clipRegionHeight = color.Height;
+                        clipRegionHeight = color.Height / samplesInY;
                     }
                 }
             }
@@ -400,14 +400,14 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
 
                 if (depthStencil != null)
                 {
-                    if (clipRegionWidth > depthStencil.Width)
+                    if (clipRegionWidth > depthStencil.Width / samplesInX)
                     {
-                        clipRegionWidth = depthStencil.Width;
+                        clipRegionWidth = depthStencil.Width / samplesInX;
                     }
 
-                    if (clipRegionHeight > depthStencil.Height)
+                    if (clipRegionHeight > depthStencil.Height / samplesInY)
                     {
-                        clipRegionHeight = depthStencil.Height;
+                        clipRegionHeight = depthStencil.Height / samplesInY;
                     }
                 }
             }

+ 1 - 0
Ryujinx.Graphics.Gpu/Image/TextureManager.cs

@@ -434,6 +434,7 @@ namespace Ryujinx.Graphics.Gpu.Image
         {
             new Span<ITexture>(_rtHostColors).Fill(null);
             _rtHostColors[index] = _rtColors[index]?.HostTexture;
+            _rtHostDs = null;
 
             _context.Renderer.Pipeline.SetRenderTargets(_rtHostColors, null);
         }