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); CheckSpirvBinaryValidates(result.spirv);
} }
#if KYTY_PLATFORM != KYTY_PLATFORM_WINDOWS void TestNewShaderRecompilerCfgLoopHeaderBufferLoadStructured() {
void TestNewShaderRecompilerCfgLoopHeaderBufferLoadDispatcher() {
const uint32_t shader[] = { const uint32_t shader[] = {
EncodeSMovB32(0, 128), // preheader: s0 = 0 EncodeSMovB32(0, 128), // preheader: s0 = 0
EncodeMubuf0(0x0c), EncodeMubuf0(0x0c),
@@ -7947,13 +7946,15 @@ void TestNewShaderRecompilerCfgLoopHeaderBufferLoadDispatcher() {
0xbf810000u, 0xbf810000u,
}; };
auto options = MakeCompileOptions(ShaderType::Compute); const auto result = RecompileForTest(shader, MakeCompileOptions(ShaderType::Compute));
options.dump_ir = true; Check(result.program.info.uses_dma && !result.program.dispatcher_fallback &&
ExpectFatal([&] { (void)RecompileForTest(shader, options); }, SpirvContainsOpcode(result.spirv, 246),
"self-modifying vector-buffer descriptor did not terminate " "loop-carried vector descriptor lost its structured GPU loop");
"compilation"); 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() { void TestNewShaderRecompilerCfgLoopHeaderDsAppendConsumeStructured() {
const uint32_t shader[] = { const uint32_t shader[] = {
@@ -14657,9 +14658,7 @@ int main() {
TestNewShaderRecompilerCfgPostEndTargetMergePS(); TestNewShaderRecompilerCfgPostEndTargetMergePS();
TestNewShaderRecompilerCfgLoopBreakContinue(); TestNewShaderRecompilerCfgLoopBreakContinue();
TestNewShaderRecompilerCfgLoopHeaderDynamicScalarBufferLoadStructured(); TestNewShaderRecompilerCfgLoopHeaderDynamicScalarBufferLoadStructured();
#if KYTY_PLATFORM != KYTY_PLATFORM_WINDOWS TestNewShaderRecompilerCfgLoopHeaderBufferLoadStructured();
TestNewShaderRecompilerCfgLoopHeaderBufferLoadDispatcher();
#endif
TestNewShaderRecompilerCfgLoopHeaderDsAppendConsumeStructured(); TestNewShaderRecompilerCfgLoopHeaderDsAppendConsumeStructured();
TestNewShaderRecompilerCfgLoopHeaderDsReadStructured(); TestNewShaderRecompilerCfgLoopHeaderDsReadStructured();
TestNewShaderRecompilerCfgLoopHeaderDsRead2B64Structured(); TestNewShaderRecompilerCfgLoopHeaderDsRead2B64Structured();