Workaround for cubemap view data upload bug on Intel (#2539)

* Workaround for cubemap view data upload bug on Intel

* Trigger CI
This commit is contained in:
gdkchan 2021-08-11 18:19:28 -03:00 committed by GitHub
parent c3e2646f9e
commit d44d8f2eb6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -435,8 +435,19 @@ namespace Ryujinx.Graphics.OpenGL.Image
private void ReadFrom(IntPtr data, int size)
{
TextureTarget target = Target.Convert();
int baseLevel = 0;
Bind(target, 0);
// glTexSubImage on cubemap views is broken on Intel, we have to use the storage instead.
if (Target == Target.Cubemap && HwCapabilities.Vendor == HwCapabilities.GpuVendor.IntelWindows)
{
GL.ActiveTexture(TextureUnit.Texture0);
GL.BindTexture(target, Storage.Handle);
baseLevel = FirstLevel;
}
else
{
Bind(target, 0);
}
FormatInfo format = FormatTable.GetFormatInfo(Info.Format);
@ -457,7 +468,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
return;
}
switch (Info.Target)
switch (Target)
{
case Target.Texture1D:
if (format.IsCompressed)
@ -558,7 +569,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
{
GL.CompressedTexSubImage2D(
TextureTarget.TextureCubeMapPositiveX + face,
level,
baseLevel + level,
0,
0,
width,
@ -571,7 +582,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
{
GL.TexSubImage2D(
TextureTarget.TextureCubeMapPositiveX + face,
level,
baseLevel + level,
0,
0,
width,