diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2021-05-19 18:15:26 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-19 23:15:26 +0200 |
| commit | 49745cfa37b247c3e49bfae126bafbe41e166bc6 (patch) | |
| tree | 1a37f2f2c23791244b22529f6e228f008f984409 /Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs | |
| parent | b5c72b44dee2fd977d7cca5aa3c29ef1e2286aa7 (diff) | |
Move shader resource descriptor creation out of the backend (#2290)
* Move shader resource descriptor creation out of the backend
* Remove now unused code, and other nits
* Shader cache version bump
* Nits
* Set format for bindless image load/store
* Fix buffer write flag
Diffstat (limited to 'Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs')
| -rw-r--r-- | Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs b/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs index f91a00eb..3a523adc 100644 --- a/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs +++ b/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs @@ -33,7 +33,7 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations if (bindlessHandle.Type == OperandType.ConstantBuffer) { - texOp.SetHandle(bindlessHandle.GetCbufOffset(), bindlessHandle.GetCbufSlot()); + SetHandle(config, texOp, bindlessHandle.GetCbufOffset(), bindlessHandle.GetCbufSlot()); continue; } @@ -56,7 +56,7 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations continue; } - texOp.SetHandle(src0.GetCbufOffset() | (src1.GetCbufOffset() << 16), src0.GetCbufSlot()); + SetHandle(config, texOp, src0.GetCbufOffset() | (src1.GetCbufOffset() << 16), src0.GetCbufSlot()); } else if (texOp.Inst == Instruction.ImageLoad || texOp.Inst == Instruction.ImageStore) { @@ -64,11 +64,19 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations if (src0.Type == OperandType.ConstantBuffer) { - texOp.SetHandle(src0.GetCbufOffset(), src0.GetCbufSlot()); - texOp.Format = config.GetTextureFormat(texOp.Handle, texOp.CbufSlot); + int cbufOffset = src0.GetCbufOffset(); + int cbufSlot = src0.GetCbufSlot(); + texOp.Format = config.GetTextureFormat(cbufOffset, cbufSlot); + SetHandle(config, texOp, cbufOffset, cbufSlot); } } } } + + private static void SetHandle(ShaderConfig config, TextureOperation texOp, int cbufOffset, int cbufSlot) + { + texOp.SetHandle(cbufOffset, cbufSlot); + config.SetUsedTexture(texOp.Inst, texOp.Type, texOp.Format, texOp.Flags, cbufSlot, cbufOffset); + } } } |
