INtial text again

This commit is contained in:
2026-05-20 16:26:36 +10:00
parent 081364e764
commit e43ac21b2f
12 changed files with 608 additions and 15 deletions

View File

@@ -112,19 +112,39 @@ void RejectsTextureAssets()
Expect(result.reason.find("texture") != std::string::npos, "texture rejection should mention texture assets");
}
void RejectsTextParameters()
void RejectsTextParametersWithoutDeclaredFont()
{
ShaderPackage shaderPackage = MakeSinglePassPackage();
ShaderParameterDefinition parameter;
parameter.id = "caption";
parameter.type = ShaderParameterType::Text;
parameter.fontId = "missing";
shaderPackage.parameters.push_back(parameter);
const RenderCadenceCompositor::ShaderSupportResult result =
RenderCadenceCompositor::CheckStatelessSinglePassShaderSupport(shaderPackage);
Expect(!result.supported, "text-parameter packages should be rejected for now");
Expect(result.reason.find("text") != std::string::npos, "text rejection should mention text parameters");
Expect(!result.supported, "text parameters without declared fonts should be rejected");
Expect(result.reason.find("unknown font") != std::string::npos, "text rejection should mention the missing font");
}
void SupportsTextParametersWithDeclaredFont()
{
ShaderPackage shaderPackage = MakeSinglePassPackage();
ShaderFontAsset fontAsset;
fontAsset.id = "roboto";
shaderPackage.fontAssets.push_back(fontAsset);
ShaderParameterDefinition parameter;
parameter.id = "caption";
parameter.type = ShaderParameterType::Text;
parameter.fontId = "roboto";
shaderPackage.parameters.push_back(parameter);
const RenderCadenceCompositor::ShaderSupportResult result =
RenderCadenceCompositor::CheckStatelessSinglePassShaderSupport(shaderPackage);
Expect(result.supported, "text parameters with declared fonts should be supported");
Expect(result.reason.empty(), "supported text parameters should not report a rejection reason");
}
void BuildsDeclaredFontAtlasesDuringCatalogLoad()
@@ -133,6 +153,14 @@ void BuildsDeclaredFontAtlasesDuringCatalogLoad()
std::string error;
Expect(catalog.Load(RepoRoot() / "shaders", 12, error), "shader catalog loads");
bool textOverlaySupported = false;
for (const RenderCadenceCompositor::SupportedShaderSummary& shader : catalog.Shaders())
{
if (shader.id == "text-overlay")
textOverlaySupported = true;
}
Expect(textOverlaySupported, "text overlay is listed as a supported shader after font atlas preparation");
const auto& fontAtlases = catalog.FontAtlases();
const auto textOverlayIt = fontAtlases.find("text-overlay");
Expect(textOverlayIt != fontAtlases.end(), "text overlay font atlas is prepared during catalog load");
@@ -153,7 +181,8 @@ int main()
RejectsUnknownPassInput();
RejectsTemporalPackage();
RejectsTextureAssets();
RejectsTextParameters();
RejectsTextParametersWithoutDeclaredFont();
SupportsTextParametersWithDeclaredFont();
BuildsDeclaredFontAtlasesDuringCatalogLoad();
if (gFailures != 0)