Procházet zdrojové kódy

Fix intel view copy workaround. (#2216)

The texture target must be taken from the storage rather than the view, when using the storage handle for the copy.
riperiperi před 5 roky
rodič
revize
38be18ef2a

+ 1 - 1
Ryujinx.Graphics.OpenGL/Image/ITextureInfo.cs

@@ -4,8 +4,8 @@ namespace Ryujinx.Graphics.OpenGL.Image
 {
     interface ITextureInfo
     {
+        ITextureInfo Storage { get; }
         int Handle { get; }
-        int StorageHandle { get; }
         int FirstLayer => 0;
         int FirstLevel => 0;
 

+ 4 - 4
Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs

@@ -208,14 +208,14 @@ namespace Ryujinx.Graphics.OpenGL.Image
                     if (HwCapabilities.Vendor == HwCapabilities.GpuVendor.Intel)
                     {
                         GL.CopyImageSubData(
-                            src.StorageHandle,
-                            srcInfo.Target.ConvertToImageTarget(),
+                            src.Storage.Handle,
+                            src.Storage.Info.Target.ConvertToImageTarget(),
                             src.FirstLevel + srcLevel + level,
                             0,
                             0,
                             src.FirstLayer + srcLayer,
-                            dst.StorageHandle,
-                            dstInfo.Target.ConvertToImageTarget(),
+                            dst.Storage.Handle,
+                            dst.Storage.Info.Target.ConvertToImageTarget(),
                             dst.FirstLevel + dstLevel + level,
                             0,
                             0,

+ 2 - 2
Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs

@@ -4,10 +4,10 @@ using Ryujinx.Graphics.GAL;
 
 namespace Ryujinx.Graphics.OpenGL.Image
 {
-    class TextureStorage : ITextureInfo 
+    class TextureStorage : ITextureInfo
     {
+        public ITextureInfo Storage => this;
         public int Handle { get; private set; }
-        public int StorageHandle => Handle;
         public float ScaleFactor { get; private set; }
 
         public TextureCreateInfo Info { get; }

+ 2 - 2
Ryujinx.Graphics.OpenGL/Image/TextureView.cs

@@ -10,10 +10,10 @@ namespace Ryujinx.Graphics.OpenGL.Image
 
         private readonly TextureStorage _parent;
 
-        public int StorageHandle => _parent.Handle;
-
         private TextureView _incompatibleFormatView;
 
+        public ITextureInfo Storage => _parent;
+
         public int FirstLayer { get; private set; }
         public int FirstLevel { get; private set; }