From 5795bb15282498b3824a5d15fe1ff78b85a18c23 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Wed, 27 May 2020 11:07:10 -0300 Subject: Support separate textures and samplers (#1216) * Support separate textures and samplers * Add missing bindless flag, fix SNORM format on buffer textures * Add missing separation * Add comments about the new handles --- Ryujinx.Graphics.Gpu/Image/TextureManager.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'Ryujinx.Graphics.Gpu/Image/TextureManager.cs') diff --git a/Ryujinx.Graphics.Gpu/Image/TextureManager.cs b/Ryujinx.Graphics.Gpu/Image/TextureManager.cs index 600e2f5b..c0eeb068 100644 --- a/Ryujinx.Graphics.Gpu/Image/TextureManager.cs +++ b/Ryujinx.Graphics.Gpu/Image/TextureManager.cs @@ -773,6 +773,22 @@ namespace Ryujinx.Graphics.Gpu.Image } } + if (info.Target == Target.TextureBuffer) + { + // We assume that the host does not support signed normalized format + // (as is the case with OpenGL), so we just use a unsigned format. + // The shader will need the appropriate conversion code to compensate. + switch (formatInfo.Format) + { + case Format.R8Snorm: formatInfo = new FormatInfo(Format.R8Sint, 1, 1, 1); break; + case Format.R16Snorm: formatInfo = new FormatInfo(Format.R16Sint, 1, 1, 2); break; + case Format.R8G8Snorm: formatInfo = new FormatInfo(Format.R8G8Sint, 1, 1, 2); break; + case Format.R16G16Snorm: formatInfo = new FormatInfo(Format.R16G16Sint, 1, 1, 4); break; + case Format.R8G8B8A8Snorm: formatInfo = new FormatInfo(Format.R8G8B8A8Sint, 1, 1, 4); break; + case Format.R16G16B16A16Snorm: formatInfo = new FormatInfo(Format.R16G16B16A16Sint, 1, 1, 8); break; + } + } + int width = info.Width / info.SamplesInX; int height = info.Height / info.SamplesInY; -- cgit v1.2.3