Fix image binding format (#1625)

* Fix image binding format

* XML doc
This commit is contained in:
gdkchan 2020-10-20 19:03:20 -03:00 committed by GitHub
parent 08332bdc04
commit 2dcc6333f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 223 additions and 89 deletions

View file

@ -1014,7 +1014,7 @@ namespace Ryujinx.Graphics.Gpu.Engine
{
var descriptor = info.Textures[index];
Target target = GetTarget(descriptor.Type);
Target target = ShaderTexture.GetTarget(descriptor.Type);
if (descriptor.IsBindless)
{
@ -1034,9 +1034,10 @@ namespace Ryujinx.Graphics.Gpu.Engine
{
var descriptor = info.Images[index];
Target target = GetTarget(descriptor.Type);
Target target = ShaderTexture.GetTarget(descriptor.Type);
Format format = ShaderTexture.GetFormat(descriptor.Format);
imageBindings[index] = new TextureBindingInfo(target, descriptor.HandleIndex, descriptor.Flags);
imageBindings[index] = new TextureBindingInfo(target, format, descriptor.HandleIndex, descriptor.Flags);
}
TextureManager.SetGraphicsImages(stage, imageBindings);
@ -1096,53 +1097,6 @@ namespace Ryujinx.Graphics.Gpu.Engine
}
}
/// <summary>
/// Gets texture target from a sampler type.
/// </summary>
/// <param name="type">Sampler type</param>
/// <returns>Texture target value</returns>
private static Target GetTarget(SamplerType type)
{
type &= ~(SamplerType.Indexed | SamplerType.Shadow);
switch (type)
{
case SamplerType.Texture1D:
return Target.Texture1D;
case SamplerType.TextureBuffer:
return Target.TextureBuffer;
case SamplerType.Texture1D | SamplerType.Array:
return Target.Texture1DArray;
case SamplerType.Texture2D:
return Target.Texture2D;
case SamplerType.Texture2D | SamplerType.Array:
return Target.Texture2DArray;
case SamplerType.Texture2D | SamplerType.Multisample:
return Target.Texture2DMultisample;
case SamplerType.Texture2D | SamplerType.Multisample | SamplerType.Array:
return Target.Texture2DMultisampleArray;
case SamplerType.Texture3D:
return Target.Texture3D;
case SamplerType.TextureCube:
return Target.Cubemap;
case SamplerType.TextureCube | SamplerType.Array:
return Target.CubemapArray;
}
Logger.Warning?.Print(LogClass.Gpu, $"Invalid sampler type \"{type}\".");
return Target.Texture2D;
}
/// <summary>
/// Issues a texture barrier.
/// This waits until previous texture writes from the GPU to finish, before