From a6a67a2b7add9a9dc8c4f0bab730957b8ebaf6e8 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Thu, 10 Nov 2022 13:38:38 -0300 Subject: Minor improvement to Vulkan pipeline state and bindings management (#3829) * Minor improvement to Vulkan pipeline state and bindings management * Clean up buffer textures too * Use glBindTextureUnit --- Ryujinx.Graphics.OpenGL/Image/TextureBase.cs | 6 ++++++ Ryujinx.Graphics.OpenGL/Pipeline.cs | 5 +++++ 2 files changed, 11 insertions(+) (limited to 'Ryujinx.Graphics.OpenGL') diff --git a/Ryujinx.Graphics.OpenGL/Image/TextureBase.cs b/Ryujinx.Graphics.OpenGL/Image/TextureBase.cs index 2e70fa82..2ab9dffb 100644 --- a/Ryujinx.Graphics.OpenGL/Image/TextureBase.cs +++ b/Ryujinx.Graphics.OpenGL/Image/TextureBase.cs @@ -34,5 +34,11 @@ namespace Ryujinx.Graphics.OpenGL.Image GL.ActiveTexture(TextureUnit.Texture0 + unit); GL.BindTexture(target, Handle); } + + public static void ClearBinding(int unit) + { + GL.ActiveTexture(TextureUnit.Texture0 + unit); + GL.BindTextureUnit(unit, 0); + } } } diff --git a/Ryujinx.Graphics.OpenGL/Pipeline.cs b/Ryujinx.Graphics.OpenGL/Pipeline.cs index 5f224625..5911758e 100644 --- a/Ryujinx.Graphics.OpenGL/Pipeline.cs +++ b/Ryujinx.Graphics.OpenGL/Pipeline.cs @@ -919,6 +919,7 @@ namespace Ryujinx.Graphics.OpenGL if (texture == null) { + GL.BindImageTexture(binding, 0, 0, true, 0, TextureAccess.ReadWrite, SizedInternalFormat.Rgba8); return; } @@ -1275,6 +1276,10 @@ namespace Ryujinx.Graphics.OpenGL ((TextureBase)texture).Bind(binding); } } + else + { + TextureBase.ClearBinding(binding); + } Sampler glSampler = (Sampler)sampler; -- cgit v1.2.3