Merge remote-tracking branch 'origin/master' into claude/issue-47

# Conflicts:
#	project.cpp
This commit is contained in:
catbot 2026-06-16 17:10:39 +00:00
commit c670bc70b7
3 changed files with 144 additions and 9 deletions

View file

@ -422,10 +422,39 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
// slip through (the C++ static_assert only guards the C++ side). No GPU
// device at runtime, but glslang + spirv-val are required tools.
Test fusedTest;
Configuration& fc = fusedTest.config;
Configuration& ftc = fusedTest.config;
ftc.path = cfg.path;
ftc.name = "UIFusedShader";
ftc.outputName = "UIFusedShader";
ftc.type = ConfigurationType::Executable;
ftc.target = cfg.target;
ftc.march = cfg.march;
ftc.mtune = cfg.mtune;
ftc.debug = cfg.debug;
ftc.sysroot = cfg.sysroot;
ftc.dependencies = cfg.dependencies;
ftc.externalDependencies = cfg.externalDependencies;
ftc.compileFlags = cfg.compileFlags;
ftc.linkFlags = cfg.linkFlags;
ftc.defines = cfg.defines;
ftc.cFiles = cfg.cFiles;
std::vector<fs::path> fusedImpls(impls.begin(), impls.end());
fusedImpls.emplace_back("tests/UIFusedShader/main");
ftc.GetInterfacesAndImplementations(ifaces, fusedImpls);
fusedTest.requires_ = { "tool:glslang", "tool:spirv-val" };
cfg.tests.push_back(std::move(fusedTest));
// Issue #60: VulkanBuffer::FlushDevice / FlushHost now record the chosen
// memory type's propertyFlags at Create time and skip the
// flush/invalidate when the memory is HOST_COHERENT. The gate is pure
// logic over the recorded flags, so this test stamps them directly and
// verifies the coherent path issues no Vulkan call — no GPU device
// needed at runtime.
Test flushTest;
Configuration& fc = flushTest.config;
fc.path = cfg.path;
fc.name = "UIFusedShader";
fc.outputName = "UIFusedShader";
fc.name = "VulkanBufferFlushGate";
fc.outputName = "VulkanBufferFlushGate";
fc.type = ConfigurationType::Executable;
fc.target = cfg.target;
fc.march = cfg.march;
@ -438,11 +467,10 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
fc.linkFlags = cfg.linkFlags;
fc.defines = cfg.defines;
fc.cFiles = cfg.cFiles;
std::vector<fs::path> fusedImpls(impls.begin(), impls.end());
fusedImpls.emplace_back("tests/UIFusedShader/main");
fc.GetInterfacesAndImplementations(ifaces, fusedImpls);
fusedTest.requires_ = { "tool:glslang", "tool:spirv-val" };
cfg.tests.push_back(std::move(fusedTest));
std::vector<fs::path> flushImpls(impls.begin(), impls.end());
flushImpls.emplace_back("tests/VulkanBufferFlushGate/main");
fc.GetInterfacesAndImplementations(ifaces, flushImpls);
cfg.tests.push_back(std::move(flushTest));
// Issue #57: Font::GetLineWidth memoises per-codepoint advances in
// font units (Font::AdvanceUnits) and rescales per call, instead of