Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
277f191
GPU: remove obsolete config code
davidrohr Oct 16, 2026
319ff9c
GPU Display: Fix FPE with display width = 0, e.g. with none backend
davidrohr Oct 22, 2026
4593695
GPU: Possibility to generate run time type information about config s…
davidrohr Oct 16, 2026
b4a805e
GPU Display: Reorganize frontend to have GPUSettingsFrontendConfig.cx…
davidrohr Oct 16, 2026
7471a2f
GPU Display Frontend: move key binding constants to separate header
davidrohr Oct 24, 2026
f49477d
GPU Display: Build config RTTI Structs
davidrohr Oct 22, 2026
76b5ee8
GPU Display: Remove mKeysShifted helper array
davidrohr Oct 24, 2026
8cb2b62
GPU Display: Assemble all variables controlling the display in a cont…
davidrohr Oct 25, 2026
614cf5a
GPU Display: Add option to list configuration bindings for keyboard a…
davidrohr Oct 24, 2026
330a1b7
GPU Display Frontend: move key handling to RTTI callbacks instead of …
davidrohr Oct 24, 2026
c023f2c
GPU Display Frontend: Add a map for key down actions, and assign keys…
davidrohr Oct 27, 2026
5e63abc
GPU Display: Switch help-text to auto-generated help text from key bi…
davidrohr Oct 27, 2026
a043158
GPU Display: Info messages per configuration value, not per key, so t…
davidrohr Oct 27, 2026
2166caf
GPU Display: Unify calling DrawGLScene and handling of events
davidrohr Oct 27, 2026
d942bbc
GPU Display: Clean up full screen / maximized setting, make them idem…
davidrohr Oct 28, 2026
8724386
GPU Display: Cleanup: check for config changes only once
davidrohr Oct 28, 2026
b129713
GPU Display backend glut: support maximizing the window
davidrohr Oct 28, 2026
caf5328
GPU Display: Modernize GLUT backend: Use callbacks with user-data for…
davidrohr Oct 28, 2026
9b8e887
GPU Display Frontend: Use condition_variable to signal stop and confi…
davidrohr Oct 29, 2026
916c1ee
GPU Wayland Display: Fix handling of F keys
davidrohr Oct 29, 2026
06e60f3
GPU Display: Drop / implement some simple TODOs
davidrohr Oct 29, 2026
1043b49
GPU Display: Fix creating unrequested screenshot, when enabling savin…
davidrohr Oct 29, 2026
b9a86b1
GPU Display Frontend: auto-generate info message for key-press if non…
davidrohr Oct 29, 2026
5a6d553
GPU Display: Order key bindings for better grouping in the help text
davidrohr Oct 29, 2026
80e6dea
GPU Display: Drop obsolete compat profile for OpenGL
davidrohr Oct 31, 2026
91cf226
GPU Display: Wrap lines of help text if they do not fit on screen
davidrohr Oct 31, 2026
8cae0e3
GPU Display: Fix do not exit on arrow key presses in the console
davidrohr Nov 3, 2026
751a579
GPU Display Qt GUI: Add proper passing of frames with config elements…
davidrohr Oct 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions GPU/GPUTracking/DataTypes/GPUConfigDump.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,7 @@ using namespace o2::gpu;
namespace
{
GPUSettingsStandalone configStandalone;
std::vector<std::function<void()>> qprint_global;
#define QCONFIG_PRINT
#include "utils/qconfig_internal.h"
#undef QCONFIG_PRINT
#include "utils/qconfig_print.inc"
} // namespace

void GPUConfigDump::dumpConfig(const GPUSettingsRec* rec, const GPUSettingsProcessing* proc, const GPUSettingsQA* qa, const GPUSettingsDisplay* display, const GPUSettingsDeviceBackend* device, const GPURecoStepConfiguration* workflow)
Expand Down
31 changes: 15 additions & 16 deletions GPU/GPUTracking/Definitions/GPUSettingsList.h
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ EndConfig()
#ifndef GPUCA_GPUCODE_DEVICE
// Light settings concerning the event display (can be changed without rebuilding vertices)
BeginSubConfig(GPUSettingsDisplayLight, light, configStandalone.display, "GLL", 'g', "Light OpenGL display settings", display_light)
AddOption(animationMode, int32_t, 0, "", 0, "")
AddOption(animationMode, int32_t, 0, "", 0, "", min(0), max(6))
AddOption(smoothPoints, bool, true, "", 0, "Apply smoothing to points")
AddOption(smoothLines, bool, false, "", 0, "Apply smoothing to lines")
AddOption(depthBuffer, bool, false, "", 0, "Enable Z-buffer")
Expand All @@ -449,19 +449,19 @@ AddOption(drawTracks, bool, false, "", 0, "Highlight sector tracks")
AddOption(drawExtrapolatedTracks, bool, false, "", 0, "Highlight global sector tracks prolonged into adjacent sector")
AddOption(drawFinal, bool, false, "", 0, "Highlight final tracks")
AddOption(excludeClusters, int32_t, 0, "", 0, "Exclude clusters from selected draw objects from display, (2 = exclude clusters but still show tracks)")
AddOption(drawSector, int32_t, -1, "", 0, "Show individual sector")
AddOption(drawSector, int32_t, -1, "", 0, "Show individual sector", min(-1), max(35))
AddOption(drawRelatedSectors, int32_t, 0, "", 0, "Show related sectors (if drawSector != -1)")
AddOption(drawGrid, int32_t, 0, "", 0, "Highlight grid")
AddOption(propagateTracks, int32_t, 0, "", 0, "Propagate final tracks further (inward / outward / show MC tracks)")
AddOption(showCollision, int32_t, -1, "", 0, "Show only individual collision")
AddOption(colorCollisions, int32_t, 0, "", 0, "Distinguish collisions in timeframe by color")
AddOption(colorClusters, int32_t, 1, "", 0, "Color clusters belonging to track objects")
AddOption(pointSize, float, 2.0f, "", 0, "Set point size")
AddOption(lineWidth, float, 1.4f, "", 0, "Set line width")
AddOption(pointSize, float, 2.0f, "", 0, "Set point size", min(0.8f), max(20.f))
AddOption(lineWidth, float, 1.4f, "", 0, "Set line width", min(0.4f), max(20.f))
AddOption(drawTPC, bool, true, "", 0, "Enable drawing TPC data")
AddOption(drawTRD, bool, true, "", 0, "Enabale drawing TRD data")
AddOption(drawTOF, bool, true, "", 0, "Enabale drawing TOF data")
AddOption(drawITS, bool, true, "", 0, "Enabale drawing ITS data")
AddOption(drawTRD, bool, true, "", 0, "Enable drawing TRD data")
AddOption(drawTOF, bool, true, "", 0, "Enable drawing TOF data")
AddOption(drawITS, bool, true, "", 0, "Enable drawing ITS data")
AddOption(drawField, bool, false, "", 0, "Enable drawing magnetic field")
AddOption(bFieldStepSize, float, 5.0f, "", 0, "Set field line step size")
AddOption(bFieldStepCount, int32_t, 100, "", 0, "Set field line step count")
Expand All @@ -477,7 +477,7 @@ AddOption(drawITSTracks, bool, true, "", 0, "Show tracks with ITS contribution")
AddOption(drawTRDTracks, bool, true, "", 0, "Show tracks with TRD contribution")
AddOption(drawTOFTracks, bool, true, "", 0, "Show tracks with TOF contribution")
AddOption(drawTracksAndFilter, bool, false, "", 0, "Use AND filter instead of OR filter for selecting tracks")
AddOption(propagateLoopers, bool, false, "", 0, "Enabale propagation of loopers")
AddOption(propagateLoopers, bool, false, "", 0, "Enable propagation of loopers")
AddOption(clustersOnly, bool, false, "", 0, "Visualize clusters only")
AddOption(clustersOnNominalRow, bool, false, "", 0, "Show clusters at nominal x of pad row for early-transformed data")
AddOption(separateExtrapolatedTracks, bool, false, "", 0, "Draw track segments propagated to adjacent sectors separately")
Expand All @@ -490,8 +490,7 @@ AddOption(hideRejectedTracks, int32_t, 1, "", 0, "Hide rejected tracks")
AddOption(hideUnmatchedClusters, int32_t, 0, "", 0, "Hide unmatched clusters")
AddOption(trackFilter, int32_t, 0, "", 0, "Apply filter on tracks to be displayed")
AddOption(projectXY, int32_t, 0, "", 0, "Project everything on the XY-plane")
AddOption(xAdd, float, 0, "", 0, "Separate sectors, increase X coordinate")
AddOption(zAdd, float, 0, "", 0, "Separate sides, increase Z coordinate")
AddOption(xzAdd, float, 0, "", 0, "Separate sectors, increase X coordinate", min(0.f), max(300.f))
AddHelp("help", 'h')
EndConfig()

Expand All @@ -502,15 +501,14 @@ AddOption(camYUp, bool, false, "", 0, "Orient the camera such that the y-axis is
AddOption(cameraMode, int32_t, 0, "", 0, "Camera mode")
AddOption(fullScreen, bool, false, "", 0, "Full Screen")
AddOption(maximized, bool, true, "", 0, "Maximized window")
AddOption(rendererCompatSmoothing, bool, false, "", 0, "Use compat smoothing (if available) instead of shader for smooth lines / points")
AddOption(drawQualityMSAA, int32_t, 0, "", 0, "MultiSample Anti Aliasing")
AddOption(drawQualityDownsampleFSAA, int32_t, 0, "", 0, "Downsampling Anti Aliasing")
AddOption(drawQualityMSAA, int32_t, 0, "", 0, "MultiSample Anti Aliasing", min(0), max(8))
AddOption(drawQualityDownsampleFSAA, int32_t, 0, "", 0, "Downsampling Anti Aliasing", min(0), max(4))
AddOption(drawQualityVSync, bool, true, "", 0, "Enable Vertical Sync")
AddOption(fpsLimit, int32_t, 1, "", 0, "FPS limit: 0 = none (maximum rate), 1 = display refresh rate (no limit without VSync), 2 = fpsRate")
AddOption(fpsRate, int32_t, 100, "", 0, "Target frame rate (frames per second) for fpsLimit 2, or if the backend cannot limit to the refresh rate (0 = no limit)")
AddOption(fpsRate, int32_t, 100, "", 0, "Target frame rate (frames per second) for fpsLimit 2, or if the backend cannot limit to the refresh rate", min(1), max(9999))
AddOption(useGLIndirectDraw, bool, true, "", 0, "Use OpenGL indirect draws to reduce number of draw calls")
AddOption(screenshotScaleFactor, int32_t, 1, "", 0, "Resolution scale factor when taking screenshots")
AddOption(fov, int32_t, 45, "", 0, "Display FOV")
AddOption(screenshotScaleFactor, int32_t, 1, "", 0, "Resolution scale factor when taking screenshots", min(1), max(4))
AddOption(fov, float, 45.f, "", 0, "Display FOV", min(5.f), max(175.f))
AddHelp("help", 'h')
EndConfig()

Expand All @@ -534,6 +532,7 @@ AddOption(displayFrontend, std::string, "auto", "displayFrontend", 0, "Frontend
AddOptionVec(filterMacros, std::string, "", 0, "ROOT macros used as track filter")
AddOption(guiReplyTimeout, uint32_t, 100, "", 0, "Time in ms the Qt GUI waits at most for the display to process its update")
AddOption(guiMaxUpdatesAhead, uint32_t, 3, "", 0, "Number of updates the Qt GUI may send ahead of the last one the display has processed, before it waits for the display")
AddOption(listFrontendOptionHandling, bool, false, "", 0, "List all assigned keys in frontend, Configurable settings in Qt GUI, and missing configuration options")
AddSubConfig(GPUSettingsDisplayLight, light)
AddSubConfig(GPUSettingsDisplayHeavy, heavy)
AddSubConfig(GPUSettingsDisplayRenderer, renderer)
Expand Down
6 changes: 6 additions & 0 deletions GPU/GPUTracking/Global/GPUChainTracking.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -860,6 +860,12 @@ int32_t GPUChainTracking::RunChainFinalize()
usleep(10000);
if (GetProcessingSettings().runsStandalone) {
iKey = kbhit() ? getch() : 0;
if (iKey == 27 && kbhit()) { // Escape sequence (arrow keys, ...), not the ESC key
while (kbhit()) {
getch();
}
iKey = 0;
}
if (iKey == 27) {
GetProcessingSettings().eventDisplay->setDisplayControl(2);
} else if (iKey == 'n') {
Expand Down
29 changes: 23 additions & 6 deletions GPU/GPUTracking/display/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,22 @@ if(NOT GPUCA_EVENT_DISPLAY_OPENGL)
set(X11_FOUND 0)
endif()

if(GLUT_FOUND)
include(CheckSymbolExists)
set(CMAKE_REQUIRED_INCLUDES ${GLUT_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${GLUT_glut_LIBRARY})
check_symbol_exists(glutDisplayFuncUcall "GL/freeglut.h;GL/freeglut_ucall.h" GPUCA_GLUT_HAS_UCALL) # Callbacks with user data, freeglut >= 3.2 (modifier key codes exist since 2.8)
unset(CMAKE_REQUIRED_INCLUDES)
unset(CMAKE_REQUIRED_LIBRARIES)
if(NOT GPUCA_GLUT_HAS_UCALL)
if(ALIGPU_BUILD_TYPE STREQUAL "Standalone")
message(FATAL_ERROR "GLUT event display frontend needs freeglut >= 3.2")
endif()
message(STATUS "GLUT event display frontend disabled: needs freeglut >= 3.2")
set(GLUT_FOUND 0)
endif()
endif()

if(Vulkan_FOUND)
string(FIND "${Vulkan_VERSION}" "." vulkan_dot_index)
if(NOT ${Vulkan_VERSION} VERSION_GREATER_EQUAL "1.4.328" OR vulkan_dot_index EQUAL -1 OR NOT GPUCA_GLSLC)
Expand Down Expand Up @@ -113,9 +129,10 @@ set(SRCS_NO_H helpers/GPUDisplayLoader.cxx
helpers/GPUDisplayQuaternion.cxx
helpers/GPUDisplayInterpolation.cxx
helpers/GPUDisplayROOT.cxx
frontend/GPUDisplayKeys.cxx)
frontend/GPUDisplayHelp.cxx
frontend/GPUDisplayFrontendConfig.cxx)

set(HDRS_INSTALL helpers/GPUDisplayMagneticFieldConstants.h)
set(HDRS_INSTALL helpers/GPUDisplayMagneticFieldConstants.h frontend/GPUDisplayFrontendKeys.h frontend/GPUDisplayControl.h)

if(GPUCA_EVENT_DISPLAY_VULKAN)
set(SRCS ${SRCS} backend/GPUDisplayBackendVulkan.cxx)
Expand Down Expand Up @@ -150,10 +167,10 @@ if(GPUCA_EVENT_DISPLAY_WAYLAND)
list(APPEND WAYLAND_PROTOCOL_SOURCES ${source})
endforeach()

set_property(SOURCE frontend/GPUDisplayFrontendWayland.cxx ${WAYLAND_PROTOCOL_SOURCES} APPEND PROPERTY OBJECT_DEPENDS ${WAYLAND_PROTOCOL_HEADERS})
set_property(SOURCE frontend/GPUDisplayFrontendWayland.cxx APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}/xdg-gen/)
set_property(SOURCE frontend/GPUDisplayFrontendWayland.cxx frontend/GPUDisplayFrontendWaylandEv.cxx ${WAYLAND_PROTOCOL_SOURCES} APPEND PROPERTY OBJECT_DEPENDS ${WAYLAND_PROTOCOL_HEADERS})
set_property(SOURCE frontend/GPUDisplayFrontendWayland.cxx frontend/GPUDisplayFrontendWaylandEv.cxx APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}/xdg-gen/)

set(SRCS_NO_H ${SRCS_NO_H} frontend/GPUDisplayFrontendWayland.cxx ${WAYLAND_PROTOCOL_SOURCES})
set(SRCS_NO_H ${SRCS_NO_H} frontend/GPUDisplayFrontendWayland.cxx frontend/GPUDisplayFrontendWaylandEv.cxx ${WAYLAND_PROTOCOL_SOURCES})
endif()

if(X11_FOUND)
Expand Down Expand Up @@ -234,7 +251,7 @@ if (OPENGL_GLU_FOUND)
endif()

if(GPUCA_CONFIG_GL3W)
target_compile_definitions(${targetName} PRIVATE GPUCA_DISPLAY_GL3W GPUCA_DISPLAY_OPENGL_CORE)
target_compile_definitions(${targetName} PRIVATE GPUCA_DISPLAY_GL3W)
endif()

if(ALIGPU_BUILD_TYPE STREQUAL "O2")
Expand Down
Loading
Loading