From 54ab51e117c195bbd6ecc78d9b9df9c29a611133 Mon Sep 17 00:00:00 2001 From: ParantezTech <12572227+par274@users.noreply.github.com> Date: Tue, 22 Sep 2026 04:20:21 +0300 Subject: [PATCH] [SpirvTranslator] Fix SPIR-V viewport/layer capability handling --- src/SharpEmu.ShaderCompiler.Vulkan/Gen5SpirvTranslator.cs | 7 +++++-- src/SharpEmu.ShaderCompiler.Vulkan/SpirvModuleBuilder.cs | 3 +-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/SharpEmu.ShaderCompiler.Vulkan/Gen5SpirvTranslator.cs b/src/SharpEmu.ShaderCompiler.Vulkan/Gen5SpirvTranslator.cs index 1529b9b..719609c 100644 --- a/src/SharpEmu.ShaderCompiler.Vulkan/Gen5SpirvTranslator.cs +++ b/src/SharpEmu.ShaderCompiler.Vulkan/Gen5SpirvTranslator.cs @@ -5165,9 +5165,13 @@ public static partial class Gen5SpirvTranslator SpirvBuiltIn.PointSize, "gl_PointSize"); } + if (needLayer || needViewport) + { + _module.AddExtension("SPV_EXT_shader_viewport_index_layer"); + _module.AddCapability(SpirvCapability.ShaderViewportIndexLayerExt); + } if (needLayer) { - _module.AddCapability(SpirvCapability.ShaderLayer); _layerOutput = DeclareBuiltInOutput( _uintType, SpirvBuiltIn.Layer, @@ -5175,7 +5179,6 @@ public static partial class Gen5SpirvTranslator } if (needViewport) { - _module.AddCapability(SpirvCapability.ShaderViewportIndex); _viewportIndexOutput = DeclareBuiltInOutput( _uintType, SpirvBuiltIn.ViewportIndex, diff --git a/src/SharpEmu.ShaderCompiler.Vulkan/SpirvModuleBuilder.cs b/src/SharpEmu.ShaderCompiler.Vulkan/SpirvModuleBuilder.cs index 921f0bb..4fcd834 100644 --- a/src/SharpEmu.ShaderCompiler.Vulkan/SpirvModuleBuilder.cs +++ b/src/SharpEmu.ShaderCompiler.Vulkan/SpirvModuleBuilder.cs @@ -207,8 +207,7 @@ public enum SpirvCapability : uint GroupNonUniformVote = 62, GroupNonUniformBallot = 64, GroupNonUniformShuffle = 65, - ShaderLayer = 5253, - ShaderViewportIndex = 5254, + ShaderViewportIndexLayerExt = 5254, RuntimeDescriptorArray = 5302, PhysicalStorageBufferAddresses = 5347, }