Plan renderer diagnostics in app status

This commit is contained in:
2026-06-03 19:49:54 +02:00
parent fa1493b843
commit 164f99fe48
8 changed files with 151 additions and 17 deletions

View File

@@ -33,6 +33,23 @@ struct RecordingFrameLabel {
std::string text;
};
struct RendererDiagnosticsInput {
bool framebuffer_fetch = false;
bool float32_render_targets = false;
bool float32_linear_filtering = false;
bool float16_render_targets = false;
};
struct RendererDiagnosticIndicator {
bool supported = false;
std::string_view label;
};
struct RendererDiagnosticsPlan {
RendererDiagnosticIndicator framebuffer_fetch;
RendererDiagnosticIndicator floating_point_targets;
};
[[nodiscard]] inline pp::foundation::Result<int> display_resolution_from_index(int index)
{
if (index < 0 || static_cast<std::size_t>(index) >= document_resolution_values.size()) {
@@ -116,4 +133,38 @@ struct RecordingFrameLabel {
};
}
[[nodiscard]] inline RendererDiagnosticsPlan plan_renderer_diagnostics(
RendererDiagnosticsInput input) noexcept
{
RendererDiagnosticsPlan plan;
plan.framebuffer_fetch = {
input.framebuffer_fetch,
"FBF",
};
if (input.float32_linear_filtering) {
plan.floating_point_targets = {
true,
"F32L",
};
} else if (input.float32_render_targets) {
plan.floating_point_targets = {
true,
"F32",
};
} else if (input.float16_render_targets) {
plan.floating_point_targets = {
true,
"F16",
};
} else {
plan.floating_point_targets = {
false,
"",
};
}
return plan;
}
}