Skip to content

Diagnostics report is missing GPU rendering capability status #3282

@gregpriday

Description

@gregpriday

Summary

The diagnostics report collected by DiagnosticsCollector includes hardware GPU info (app.getGPUInfo) but omits app.getGPUFeatureStatus() — the API that reveals whether WebGL is hardware-accelerated, software-only, or disabled. This makes it impossible to diagnose user-reported terminal rendering slowdowns or WebGL-related issues from a diagnostics report alone.

Problem Statement

When users report sluggish terminal rendering or unexpected CPU usage, a key diagnostic question is: "Is the GPU actually hardware-accelerating the terminal renderer?" The answer lives in app.getGPUFeatureStatus(), which maps Chromium feature names (e.g., webgl, webgl2, gpu_compositing) to their active status ("enabled", "software_only", "disabled_off", etc.).

This data is available at runtime but not captured anywhere in the diagnostics report. The existing collectGpu() function calls app.getGPUInfo("basic") (which returns hardware device info — VRAM size, device ID, driver version) but not getGPUFeatureStatus() (which returns the runtime capability flags). The two APIs are complementary: hardware info without feature status doesn't tell you if hardware acceleration is actually active.

Current Behavior

Expected Behavior

The gpu section of the diagnostics report should include both hardware info and the runtime feature capability status, so that a user-submitted diagnostics report fully answers: "Is this machine running hardware-accelerated WebGL?"

Context

Relevant code:

Acceptance Criteria

  • The gpu section of a collected diagnostics report includes the output of app.getGPUFeatureStatus()
  • The addition handles errors gracefully (same pattern as other sections — caught exception returns an error object)
  • The added data is visible in the diagnostics output accessible via the app's diagnostics UI

Edge Cases & Risks

app.getGPUFeatureStatus() is synchronous and fast, so it does not need the existing GPU_TIMEOUT_MS guard. However, it should still be wrapped in a try/catch to match the defensive pattern used throughout the rest of DiagnosticsCollector.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions