shader: preserve export vectors instead of rebuilding scalar components

This commit is contained in:
nmzik
2026-10-09 02:42:43 +02:00
parent ee4dd90649
commit b4853a0e08
2 changed files with 35 additions and 38 deletions
+3 -2
View File
@@ -12826,7 +12826,7 @@ void TestNewShaderRecompilerExpPixelOutputs() {
options.input_info.pixel = &default_info;
auto partial_result = RecompileForTest(partial_shader, options);
const auto partial_source = DisassembleSpirvBinary(partial_result.spirv);
Check(SpirvSourceHasInstructionOperand(partial_source, "OpBitcast",
Check(SpirvSourceHasInstructionOperand(partial_source, "OpCompositeConstruct",
"%uint_1065353216"),
"disabled float alpha export did not default to 1.0f bits");
CheckSpirvBinaryValidates(partial_result.spirv);
@@ -13228,8 +13228,9 @@ void TestLogicalAlphaBlendExport() {
const auto source = DisassembleSpirvBinary(guest.spirv);
Check(source.find("OpDecorate %out_mrt_1 Location 0") != std::string::npos &&
source.find("OpDecorate %out_mrt_1 Index 1") != std::string::npos &&
CountSourceOccurrences(source, "OpStore %out_mrt_0 ") == 1 &&
CountSourceOccurrences(source, "OpStore %out_mrt_1 ") == 1 &&
SpirvInstructionOpcodeCount(guest.spirv, 81u) == 8u,
!SpirvContainsVectorShuffle(guest.spirv, {3u, 3u, 3u, 3u}),
"guest dual-source export was replaced by synthetic alpha");
}