Exclusive Fullscreen Performance Regression on Nvidia Jetson Orin Nano
Issue Overview
Users of the Nvidia Jetson Orin Nano developer kit are experiencing a significant performance regression when running applications in exclusive fullscreen mode compared to fullscreen windowed mode. The issue manifests as follows:
- Performance drops by approximately 50% in exclusive fullscreen mode
- Both CPU and GPU usage are lower in exclusive fullscreen mode
- The problem persists across different software versions, including JetPack 6.0 (R36.3.0)
- The issue affects various applications, with severity varying between them
- Vsync is disabled, and framerates are observed to be higher than the monitor refresh rate in both modes
- The problem is consistent regardless of whether jetson_clocks is enabled or not
Possible Causes
-
Driver Bug: The issue appears to stem from a bug in the graphics driver’s flip mode implementation. This affects both OpenGL and Vulkan applications, albeit differently.
-
Firmware Incompatibility: Different firmware versions seem to impact the severity of the problem, suggesting a potential firmware-related cause.
-
Hardware-Specific Issue: The problem may be unique to the Jetson Orin Nano’s hardware configuration or its interaction with the current driver stack.
-
Application-Level Conflict: While unlikely, there could be an interaction between the applications and the Jetson platform that triggers this behavior specifically in fullscreen mode.
Troubleshooting Steps, Solutions & Fixes
-
Verify the Issue:
- Use the Nvidia X Server Settings application to enable the Graphics API Visual Indicator:
sudo apt install nvidia-settings
- Open "Nvidia X Server Settings" and navigate to "X Screen 0/OpenGL Settings"
- Enable "Graphics API Visual Indicator" to observe blit/flip mode and FPS
- Use the Nvidia X Server Settings application to enable the Graphics API Visual Indicator:
-
Test with Different Applications:
-
Minecraft Java (Demo mode if you don’t own the game):
- Install Prism Launcher using pi-apps:
wget -qO- https://raw.githubusercontent.com/Botspot/pi-apps/master/install | bash ~/pi-apps/manage install "Minecraft Java Prism Launcher"
- Create a new instance with the latest version (e.g., 1.20.1)
- Enter a world, press F11 for fullscreen, then go to "options/video settings"
- Set maximum framerate to unlimited and disable Vsync
- Install Prism Launcher using pi-apps:
-
GravityMark Benchmark:
- Download from https://gravitymark.tellusim.com/
- Run with the following command:
./GravityMark.arm64 -temporal 0 -fullscreen 1 -screen 0 -fps 1 -info 1 -sensors 1 -benchmark 1 -gl -asteroids 1000
-
-
Toggle Flip Mode:
- In Nvidia X Server Settings, under "X Screen 0/OpenGL Settings":
- Enable "Allow Flipping" to use FLIP mode (default)
- Disable "Allow Flipping" to force BLIT mode
- Compare performance between FLIP and BLIT modes in fullscreen
- In Nvidia X Server Settings, under "X Screen 0/OpenGL Settings":
-
Check for Updates:
- Ensure you’re running the latest JetPack version (currently 6.0 / R36.3.0)
- Look for any available system updates or driver patches
-
Firmware Investigation:
- If possible, test with different firmware versions to isolate the issue
- Note: Older firmware (e.g., 2023-02-17) may exhibit less severe symptoms but is not readily available
-
Report Findings:
- Document your results, including:
- JetPack version
- Firmware version
- Performance metrics in FLIP vs BLIT mode
- Screenshots or videos demonstrating the issue
- Submit a detailed bug report to Nvidia, referencing this known issue
- Document your results, including:
-
Temporary Workaround:
- For critical applications, consider forcing BLIT mode by disabling "Allow Flipping" in Nvidia X Server Settings
- Be aware that this may not be ideal for all use cases and is a temporary solution
-
Monitor for Updates:
- Keep an eye on Nvidia’s developer forums and release notes for any acknowledgment or fixes related to this issue
While a permanent fix is not yet available, users can mitigate the performance regression by forcing BLIT mode. However, this workaround may not be suitable for all applications and scenarios. Continued engagement with Nvidia support and clear documentation of the issue across various applications will be crucial for resolving this performance regression in future updates.