From add35a79e6b82586b9c2d5c57119931d444adfdb Mon Sep 17 00:00:00 2001 From: ParantezTech <12572227+par274@users.noreply.github.com> Date: Thu, 8 Oct 2026 02:50:51 +0300 Subject: [PATCH] [ShaderCompiler] Predict written formatted buffers for static specializations --- .../Resources/ResourceSpecialization.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/SharpEmu.ShaderCompiler/Resources/ResourceSpecialization.cs b/src/SharpEmu.ShaderCompiler/Resources/ResourceSpecialization.cs index f1fbcd9..e177e96 100644 --- a/src/SharpEmu.ShaderCompiler/Resources/ResourceSpecialization.cs +++ b/src/SharpEmu.ShaderCompiler/Resources/ResourceSpecialization.cs @@ -86,6 +86,23 @@ public sealed class ResourceSpecialization : IEquatable image.MipCount, image.ConversionFormat, image.ShaderSwizzle, image.IndirectRoot, image.IndirectMappingOffset, image.IndirectSearchIterations, image.Cube)).ToList(), }; + + public static ResourceSpecialization Predicted(ShaderResourceInfo info) + { + var specialization = Default(info); + for (var index = 0; index < info.Buffers.Count; index++) + { + if (info.Buffers[index].Formatted && info.Buffers[index].Written) + { + specialization.Buffers[index] = new BufferSpecialization(0, PredictedWrittenFormat, PredictedWrittenSwizzle); + } + } + + return specialization; + } + + private const uint PredictedWrittenFormat = 20; + private const uint PredictedWrittenSwizzle = 4; } // A plan's resource tables with one draw's specialization applied, which the emitter