Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Viture Pro XR 120 hz IMU reading #83

Open
granitrocky opened this issue Dec 16, 2024 · 5 comments
Open

Viture Pro XR 120 hz IMU reading #83

granitrocky opened this issue Dec 16, 2024 · 5 comments

Comments

@granitrocky
Copy link

Hello,
I am able to get the display to run at 120 hz in Gnome, but the sensor reading seems pretty blurry while my head is in motion.

I know the official SDK lets you choose the refresh rate of the IMU by calling set_imu_fq(3) to set it to 120 hz.

@wheaney
Copy link
Owner

wheaney commented Dec 16, 2024

Hi, a few things:

  • Blurriness during head movements is probably the most common complaint about Breezy and XR Gaming, I'm unfortunately not aware of how to address it but it's not really fixed by higher refresh rates.
  • set_imu_fq tells the glasses how frequently to send IMU data to my driver. Not the refresh rate.
  • The available refresh rates in GNOME are determined by how the glasses report themselves to GNOME, it's unrelated to any of my code. I've heard reports from folks that it can be inconsistent (sometimes it shows 120Hz and sometimes it maxes at 90Hz) but all of that is out of my control. One thing to note is that widescreen/SBS mode has a max of 90Hz, so you'll only be able to get 120Hz if you have that disabled.

@granitrocky
Copy link
Author

Right, I think I mashed together a few concepts in my initial post. I am aware of the 120 Hz shown in Gnome to be different than the IMU polling rate. I assumed that the set_imu_fq would alleviate some of the display blurriness in Breezy by letting it update the position more frequently. The actual 120 Hz display works very well when the widescreen is disabled, it's just that head motion is blurry.

When my head is stable, the video is definitely refreshed at that higher 120 Hz mode.

@wheaney
Copy link
Owner

wheaney commented Dec 17, 2024

It already tries to use a 240Hz polling rate. From what I've been able to tell when investigating this in the past, it looks like there are two frames being rendered together or merged together due to a mid-vsync update or something. But I see it in both my GNOME and Vulkan implementations, which don't share rendering at all (except a fragment shader which wouldn't have anything to do with this kind of timing). I also see this same kind of motion blur on my steam deck's native LCD display if I move the camera quickly in a game such that the whole view is in motion. So it may just be a property of certain displays or how they refresh, although I know XREAL glasses can be clear because the Beam does a good job of this. Long story short, I don't really know the solution ATM.

@granitrocky
Copy link
Author

granitrocky commented Dec 17, 2024

Ah I didn't realize the driver is open source. For some reason I thought it was only precompiled. I'm going to play with it a bit

@granitrocky
Copy link
Author

granitrocky commented Dec 17, 2024

Is there a reason this is disclosed by 60 as a constant instead of using IMU_FREQUENCY?

https://github.com/wheaney/XRLinuxDriver/blob/901e0075817980dd69a1001dc2d6688fd5878349/src/devices/viture.c#L210

Ah nevermind I see what it's doing now. It's some fraction of one instead of a buffer size in bytes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants