test: verify native vector descriptor loads in structured loops

This commit is contained in:
nmzik
2026-10-04 11:59:42 +04:00
parent 3ba0e971e9
commit 33e74cab2c
+10 -11
View File
@@ -7933,8 +7933,7 @@ void TestNewShaderRecompilerCfgLoopHeaderDynamicScalarBufferLoadStructured() {
CheckSpirvBinaryValidates(result.spirv);
}
#if KYTY_PLATFORM != KYTY_PLATFORM_WINDOWS
void TestNewShaderRecompilerCfgLoopHeaderBufferLoadDispatcher() {
void TestNewShaderRecompilerCfgLoopHeaderBufferLoadStructured() {
const uint32_t shader[] = {
EncodeSMovB32(0, 128), // preheader: s0 = 0
EncodeMubuf0(0x0c),
@@ -7947,13 +7946,15 @@ void TestNewShaderRecompilerCfgLoopHeaderBufferLoadDispatcher() {
0xbf810000u,
};
auto options = MakeCompileOptions(ShaderType::Compute);
options.dump_ir = true;
ExpectFatal([&] { (void)RecompileForTest(shader, options); },
"self-modifying vector-buffer descriptor did not terminate "
"compilation");
const auto result = RecompileForTest(shader, MakeCompileOptions(ShaderType::Compute));
Check(result.program.info.uses_dma && !result.program.dispatcher_fallback &&
SpirvContainsOpcode(result.spirv, 246),
"loop-carried vector descriptor lost its structured GPU loop");
Check(result.program.info.buffers.size() == 1u && result.program.info.buffers[0].written &&
result.resources.flattened_srt.empty() && result.resources.specialization_reads.empty(),
"loop-carried vector descriptor was evaluated on the host");
CheckSpirvBinaryValidates(result.spirv);
}
#endif
void TestNewShaderRecompilerCfgLoopHeaderDsAppendConsumeStructured() {
const uint32_t shader[] = {
@@ -14657,9 +14658,7 @@ int main() {
TestNewShaderRecompilerCfgPostEndTargetMergePS();
TestNewShaderRecompilerCfgLoopBreakContinue();
TestNewShaderRecompilerCfgLoopHeaderDynamicScalarBufferLoadStructured();
#if KYTY_PLATFORM != KYTY_PLATFORM_WINDOWS
TestNewShaderRecompilerCfgLoopHeaderBufferLoadDispatcher();
#endif
TestNewShaderRecompilerCfgLoopHeaderBufferLoadStructured();
TestNewShaderRecompilerCfgLoopHeaderDsAppendConsumeStructured();
TestNewShaderRecompilerCfgLoopHeaderDsReadStructured();
TestNewShaderRecompilerCfgLoopHeaderDsRead2B64Structured();