diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2023-10-03 19:43:11 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-03 22:43:11 +0000 |
| commit | a2a97e1b11d38b51231e05a1da5202481cdf4df8 (patch) | |
| tree | 97565f52001cbb1dbe2d0899ef60c371bfc5c8ff /src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs | |
| parent | 8b2625b0be3020740a90f167e46f8f665102fef5 (diff) | |
Implement textureSamples texture query shader instruction (#5750)
* Implement textureSamples texture query shader instruction
* Shader cache version bump
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs')
| -rw-r--r-- | src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs index a1f92d11..7510e887 100644 --- a/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs +++ b/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs @@ -517,7 +517,33 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl.Instructions return texCall; } - public static string TextureSize(CodeGenContext context, AstOperation operation) + public static string TextureQuerySamples(CodeGenContext context, AstOperation operation) + { + AstTextureOperation texOp = (AstTextureOperation)operation; + + bool isBindless = (texOp.Flags & TextureFlags.Bindless) != 0; + + // TODO: Bindless texture support. For now we just return 0. + if (isBindless) + { + return NumberFormatter.FormatInt(0); + } + + bool isIndexed = (texOp.Type & SamplerType.Indexed) != 0; + + string indexExpr = null; + + if (isIndexed) + { + indexExpr = GetSoureExpr(context, texOp.GetSource(0), AggregateType.S32); + } + + string samplerName = GetSamplerName(context.Properties, texOp, indexExpr); + + return $"textureSamples({samplerName})"; + } + + public static string TextureQuerySize(CodeGenContext context, AstOperation operation) { AstTextureOperation texOp = (AstTextureOperation)operation; |
