From 38be18ef2a36c9c6a35a49ff685df9ebbab8baa7 Mon Sep 17 00:00:00 2001 From: riperiperi Date: Sat, 17 Apr 2021 21:16:28 +0100 Subject: [PATCH] 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. --- Ryujinx.Graphics.OpenGL/Image/ITextureInfo.cs | 2 +- Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs | 8 ++++---- Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs | 4 ++-- Ryujinx.Graphics.OpenGL/Image/TextureView.cs | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Ryujinx.Graphics.OpenGL/Image/ITextureInfo.cs b/Ryujinx.Graphics.OpenGL/Image/ITextureInfo.cs index 0e9f6f11f..4c8d7fefc 100644 --- a/Ryujinx.Graphics.OpenGL/Image/ITextureInfo.cs +++ b/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; diff --git a/Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs b/Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs index 3c0546d24..621388ce0 100644 --- a/Ryujinx.Graphics.OpenGL/Image/TextureCopy.cs +++ b/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, diff --git a/Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs b/Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs index c5108893e..ce4616e4a 100644 --- a/Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs +++ b/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; } diff --git a/Ryujinx.Graphics.OpenGL/Image/TextureView.cs b/Ryujinx.Graphics.OpenGL/Image/TextureView.cs index 8799167ad..e8c3e3be5 100644 --- a/Ryujinx.Graphics.OpenGL/Image/TextureView.cs +++ b/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; }