test(vulkan-rt): headless BLAS build-options + refit test (#36)

Exercises the real hardware AS-build path: builds and refits triangle
and procedural BLASes with fast-build/fast-trace + allow-update flags
via one-time command buffers, asserting the requested flags land, that
an allowUpdate refit keeps the same AS handle/blasAddr (in-place
UPDATE), that the no-update / topology-change fallback still produces a
valid BLAS, and that the validation layer reports zero errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
catbot 2026-06-16 13:37:46 +00:00
commit ce0114607a
2 changed files with 239 additions and 0 deletions

View file

@ -265,6 +265,36 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
sc.GetInterfacesAndImplementations(ifaces, scrollImpls);
cfg.tests.push_back(std::move(scrollTest));
}
// Issue #36: BLAS build options. Drives the real hardware AS-build
// path — records Mesh::Build / Refit / BuildProcedural /
// RefitProcedural with fast-build/fast-trace + allow-update flags
// into one-time command buffers and submits them, asserting the
// requested flags land, that an allowUpdate refit keeps the AS
// handle (in-place UPDATE), and that the validation layer reports no
// errors. Needs a Vulkan RT device at runtime (same as the RT
// examples), so it shares the native build settings.
Test blasTest;
Configuration& bc = blasTest.config;
bc.path = cfg.path;
bc.name = "BLASBuildOptions";
bc.outputName = "BLASBuildOptions";
bc.type = ConfigurationType::Executable;
bc.target = cfg.target;
bc.march = cfg.march;
bc.mtune = cfg.mtune;
bc.debug = cfg.debug;
bc.sysroot = cfg.sysroot;
bc.dependencies = cfg.dependencies;
bc.externalDependencies = cfg.externalDependencies;
bc.compileFlags = cfg.compileFlags;
bc.linkFlags = cfg.linkFlags;
bc.defines = cfg.defines;
bc.cFiles = cfg.cFiles;
std::vector<fs::path> blasImpls(impls.begin(), impls.end());
blasImpls.emplace_back("tests/BLASBuildOptions/main");
bc.GetInterfacesAndImplementations(ifaces, blasImpls);
cfg.tests.push_back(std::move(blasTest));
}
return cfg;