From f78bcb80485419466fde56812425a53e22705765 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Wed, 3 Nov 2021 20:58:24 -0300 Subject: Clamp number of mipmap levels to avoid API errors due to invalid textures (#2808) --- Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs') diff --git a/Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs b/Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs index ce4616e4..215446ec 100644 --- a/Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs +++ b/Ryujinx.Graphics.OpenGL/Image/TextureStorage.cs @@ -50,12 +50,14 @@ namespace Ryujinx.Graphics.OpenGL.Image internalFormat = (SizedInternalFormat)format.PixelInternalFormat; } + int levels = Info.GetLevelsClamped(); + switch (Info.Target) { case Target.Texture1D: GL.TexStorage1D( TextureTarget1d.Texture1D, - Info.Levels, + levels, internalFormat, Info.Width); break; @@ -63,7 +65,7 @@ namespace Ryujinx.Graphics.OpenGL.Image case Target.Texture1DArray: GL.TexStorage2D( TextureTarget2d.Texture1DArray, - Info.Levels, + levels, internalFormat, Info.Width, Info.Height); @@ -72,7 +74,7 @@ namespace Ryujinx.Graphics.OpenGL.Image case Target.Texture2D: GL.TexStorage2D( TextureTarget2d.Texture2D, - Info.Levels, + levels, internalFormat, Info.Width, Info.Height); @@ -81,7 +83,7 @@ namespace Ryujinx.Graphics.OpenGL.Image case Target.Texture2DArray: GL.TexStorage3D( TextureTarget3d.Texture2DArray, - Info.Levels, + levels, internalFormat, Info.Width, Info.Height, @@ -112,7 +114,7 @@ namespace Ryujinx.Graphics.OpenGL.Image case Target.Texture3D: GL.TexStorage3D( TextureTarget3d.Texture3D, - Info.Levels, + levels, internalFormat, Info.Width, Info.Height, @@ -122,7 +124,7 @@ namespace Ryujinx.Graphics.OpenGL.Image case Target.Cubemap: GL.TexStorage2D( TextureTarget2d.TextureCubeMap, - Info.Levels, + levels, internalFormat, Info.Width, Info.Height); @@ -131,7 +133,7 @@ namespace Ryujinx.Graphics.OpenGL.Image case Target.CubemapArray: GL.TexStorage3D( (TextureTarget3d)All.TextureCubeMapArray, - Info.Levels, + levels, internalFormat, Info.Width, Info.Height, -- cgit v1.2.3