Diagnostics (not in OpenFrames): what vkframes is built with and runs on, and how fast a window draws, for an information or debugging panel.
library_versions(): the versions of vkframes, VSG, vsgXchange, Dear
ImGui, the Vulkan headers it was built with and the Vulkan loader it runs
with (LibraryVersions).device_info(): its Vulkan device and driver (DeviceInfo).render_stats(): its frame rate and where a frame's time goes
(RenderStats), measured at every frame at no cost: the program's part
(the scene's update and the event handler), and the renderer's: waiting
for the next image to draw into (with vsync, this is mostly waiting for
the display), recording and submitting, and presenting; the GPU's time
for the frame (timestamps around its commands, read frames later, so it
lags a few frames; not measured on devices without timestamps); and the
device's memory in use and its budget (if the driver says).scene_counts(): the size of its scene graph (SceneCounts),
counted when asked (a traversal of the whole graph: for an occasional
update, not every frame).| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=*), | public, | parameter | :: | vkframes_version | = | '0.0.1' |
vkframes' version (fpm.toml's). |
A window's Vulkan device and driver (each '' if unknown).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=:), | public, | allocatable | :: | driver |
its driver's name |
||
| character(len=:), | public, | allocatable | :: | driver_info |
its driver's information (e.g. its version) |
||
| character(len=:), | public, | allocatable | :: | kind |
integrated GPU, discrete GPU, virtual GPU, CPU or other |
||
| character(len=:), | public, | allocatable | :: | name |
the device (e.g. "Apple M3 Max") |
||
| character(len=:), | public, | allocatable | :: | vulkan |
the Vulkan version it supports |
The versions of vkframes and the libraries it uses (each '' if unknown).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=:), | public, | allocatable | :: | imgui |
Dear ImGui (GUI panels) |
||
| character(len=:), | public, | allocatable | :: | vkframes |
vkframes |
||
| character(len=:), | public, | allocatable | :: | vsg |
VulkanSceneGraph |
||
| character(len=:), | public, | allocatable | :: | vsgxchange |
vsgXchange (images, models, fonts) |
||
| character(len=:), | public, | allocatable | :: | vulkan_headers |
the Vulkan headers vkframes was built with |
||
| character(len=:), | public, | allocatable | :: | vulkan_loader |
the Vulkan loader it runs with (its instance version) |
A window's frame rate and frame times (see the module documentation). Times are in milliseconds; the rate and frame time are averaged over about half a second, the rest are the last frame's.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | public | :: | acquire_ms | = | 0.0_wp |
waiting for the next image to draw into |
|
| real(kind=wp), | public | :: | fps | = | 0.0_wp |
frames per second |
|
| real(kind=wp), | public | :: | frame_ms | = | 0.0_wp |
the time between frames |
|
| integer(kind=int64), | public | :: | frames | = | 0_int64 |
frames drawn |
|
| real(kind=wp), | public | :: | gpu_memory_budget | = | -1.0_wp |
device memory available to the program (bytes; -1: unknown) |
|
| real(kind=wp), | public | :: | gpu_memory_used | = | -1.0_wp |
device memory in use (bytes; -1: unknown) |
|
| real(kind=wp), | public | :: | gpu_ms | = | -1.0_wp |
the GPU's time for a frame (-1: not measured) |
|
| integer, | public | :: | height | = | 0 |
the image's size (framebuffer pixels) |
|
| real(kind=wp), | public | :: | present_ms | = | 0.0_wp |
presenting the image |
|
| real(kind=wp), | public | :: | program_ms | = | 0.0_wp |
the program's part of frame(): the scene's update, the handler |
|
| real(kind=wp), | public | :: | record_ms | = | 0.0_wp |
recording and submitting the GPU's commands |
|
| integer, | public | :: | width | = | 0 |
the image's size (framebuffer pixels) |
The size of a window's scene graph: what is switched off isn't counted.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=int64), | public | :: | draws | = | 0_int64 |
draw commands |
|
| integer(kind=int64), | public | :: | nodes | = | 0_int64 |
nodes |
|
| integer(kind=int64), | public | :: | vertices | = | 0_int64 |
vertices drawn (indices for indexed draws, times instances) |
The versions of vkframes and the libraries it uses.
The rendering layer's version string which (see vkf_version), '' if unknown.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | which |
1 VSG ... 5 the Vulkan loader |