This repository contains a thesis project prototype for performance testing of local graphics applications. The system treats a local exe as the test target and unifies configuration, execution, sampling, and analysis. For OpenGL applications, it can further capture rendering events and output related metrics such as FPS. The project is still evolving, and future work includes Vulkan / DirectX testing as well as comparative testing across different input scenes.
The current project has already established the following main workflow:
- create
Application / Scene / Runin the backend - launch a local
exeand periodically sample CPU / memory / GPU metrics - optionally enable OpenGL injection and collect
SWAP + DRAWevents - compute render summaries in the backend and expose query APIs
- view results in real time through the desktop overlay window
The focus of this project is to build a reproducible performance testing workflow for graphics applications and improve observability of rendering behavior under black-box conditions.
- Create an
Application - Create a
Scene - Start a
Run - The backend launches the target process
- Metric samples are collected periodically and stored as
MetricSample - View the results through the overlay window
Currently available metrics:
cpuPctmemBytessystemCpuPctsystemMemBytesgpuUtilPctgpuMemUsedBytes
- Enable
render probeinScene - The backend injects
tp_opengl_hook.dllthroughinjector.exe - The injected module captures
SWAP + DRAWevents - Events are written to
render_events.jsonl - The backend parses the event stream and generates
render-summary
Currently implemented render-level metrics:
avgFpsavgFrameTimeMsframeTimeP95MsdrawCallCountdrawCallsPerSecAvgdrawCallsPerFrameAvgpeakDrawCallsPerFrame
.
|-- backend/
| `-- api-service/ # Spring Boot backend
|-- img/
| `-- test/ # progress screenshots
|-- opengl-injection/ # OpenGL injection module (C++ / MinHook)
|-- scripts/
| `-- test/ # local test programs and helper scripts
|-- tools/
| `-- osd-overlay/ # Windows overlay tool: PerfOverlay
`-- README.md
- Windows 10/11
- Java 17
- Maven or the bundled
mvnw - Visual Studio Build Tools / x64 Native Tools
- NVIDIA GPU and
nvidia-smiif GPU metrics are required
Notes:
- General system-level testing does not require OpenGL
- For non-OpenGL programs, the current implementation generally provides CPU / memory / GPU metrics only
cd backend\api-service
mvnw.cmd spring-boot:runDefault address: http://localhost:8080
cmake -S opengl-injection -B opengl-injection\build -A x64
cmake --build opengl-injection\build --config Releasecd tools\osd-overlay
build-overlay.batThen run:
tools\osd-overlay\dist\PerfOverlay.exeThis project is licensed under the MIT License. See LICENSE.