Implement shader LEA instruction and improve bindless image load/store (#1355)
This commit is contained in:
parent
76e5af967a
commit
e13154c83d
7 changed files with 82 additions and 43 deletions
|
@ -99,7 +99,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
|
||||
if (!op.IsBindless)
|
||||
{
|
||||
operation.Format = GetTextureFormat(context, handle);
|
||||
operation.Format = context.Config.GetTextureFormat(handle);
|
||||
}
|
||||
|
||||
context.Add(operation);
|
||||
|
@ -228,7 +228,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
|
||||
if (!op.IsBindless)
|
||||
{
|
||||
format = GetTextureFormat(context, op.Immediate);
|
||||
format = context.Config.GetTextureFormat(op.Immediate);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1223,27 +1223,6 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
};
|
||||
}
|
||||
|
||||
private static TextureFormat GetTextureFormat(EmitterContext context, int handle)
|
||||
{
|
||||
// When the formatted load extension is supported, we don't need to
|
||||
// specify a format, we can just declare it without a format and the GPU will handle it.
|
||||
if (context.Config.GpuAccessor.QuerySupportsImageLoadFormatted())
|
||||
{
|
||||
return TextureFormat.Unknown;
|
||||
}
|
||||
|
||||
var format = context.Config.GpuAccessor.QueryTextureFormat(handle);
|
||||
|
||||
if (format == TextureFormat.Unknown)
|
||||
{
|
||||
context.Config.GpuAccessor.Log($"Unknown format for texture {handle}.");
|
||||
|
||||
format = TextureFormat.R8G8B8A8Unorm;
|
||||
}
|
||||
|
||||
return format;
|
||||
}
|
||||
|
||||
private static TextureFormat GetTextureFormat(IntegerSize size)
|
||||
{
|
||||
return size switch
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue