Stop identifying shader textures with handle and cbuf, use binding instead (#5266)
* Stop identifying shader textures with handle and cbuf, use binding instead * Remove now unused code * Consider image operations as having accurate type information too I don't know why that was not the case before * Fix missing unscale on InsertCoordNormalization, stop calling SetUsageFlagsForTextureQuery when not needed * Shader cache version bump * Change get texture methods to return descriptors created from ResourceManager state This is required to ensure that reserved textures and images will not be bound as a guest texture/image * Fix BindlessElimination.SetHandle inserting coords at the wrong place
This commit is contained in:
parent
3b46bb73f7
commit
1c7a90ef35
25 changed files with 656 additions and 659 deletions
|
@ -8,16 +8,14 @@ namespace Ryujinx.Graphics.Shader.IntermediateRepresentation
|
|||
public TextureFormat Format { get; set; }
|
||||
public TextureFlags Flags { get; private set; }
|
||||
|
||||
public int CbufSlot { get; private set; }
|
||||
public int Handle { get; private set; }
|
||||
public int Binding { get; private set; }
|
||||
|
||||
public TextureOperation(
|
||||
Instruction inst,
|
||||
SamplerType type,
|
||||
TextureFormat format,
|
||||
TextureFlags flags,
|
||||
int cbufSlot,
|
||||
int handle,
|
||||
int binding,
|
||||
int compIndex,
|
||||
Operand[] dests,
|
||||
Operand[] sources) : base(inst, compIndex, dests, sources)
|
||||
|
@ -25,30 +23,17 @@ namespace Ryujinx.Graphics.Shader.IntermediateRepresentation
|
|||
Type = type;
|
||||
Format = format;
|
||||
Flags = flags;
|
||||
CbufSlot = cbufSlot;
|
||||
Handle = handle;
|
||||
Binding = binding;
|
||||
}
|
||||
|
||||
public TextureOperation(
|
||||
Instruction inst,
|
||||
SamplerType type,
|
||||
TextureFormat format,
|
||||
TextureFlags flags,
|
||||
int handle,
|
||||
int compIndex,
|
||||
Operand[] dests,
|
||||
Operand[] sources) : this(inst, type, format, flags, DefaultCbufSlot, handle, compIndex, dests, sources)
|
||||
{
|
||||
}
|
||||
|
||||
public void TurnIntoIndexed(int handle)
|
||||
public void TurnIntoIndexed(int binding)
|
||||
{
|
||||
Type |= SamplerType.Indexed;
|
||||
Flags &= ~TextureFlags.Bindless;
|
||||
Handle = handle;
|
||||
Binding = binding;
|
||||
}
|
||||
|
||||
public void SetHandle(int handle, int cbufSlot = DefaultCbufSlot)
|
||||
public void SetBinding(int binding)
|
||||
{
|
||||
if ((Flags & TextureFlags.Bindless) != 0)
|
||||
{
|
||||
|
@ -57,8 +42,7 @@ namespace Ryujinx.Graphics.Shader.IntermediateRepresentation
|
|||
RemoveSource(0);
|
||||
}
|
||||
|
||||
CbufSlot = cbufSlot;
|
||||
Handle = handle;
|
||||
Binding = binding;
|
||||
}
|
||||
|
||||
public void SetLodLevelFlag()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue