12-12-2022 10:51 AM
Hey all,
I recently got a Quest Pro (and shortly after, a Quest 2) and being the stubborn person that I am, decided to try writing an OpenXR driver for Quest Link to use on macOS and Linux, since Meta does not currently support these platforms (nor do I expect them to any time soon lol).
However while writing my own driver, I noticed that the Quest Pro consistently had worse performance. Looking further, I found that with the exact same resolution, encoding settings, etc, Quest 2's USB transmit is a stable 0.5ms, whereas the Quest Pro often crosses the 1ms transmit time.
Quest 2:
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.575194ms, encode 18.336222ms
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.479831ms, encode 18.421983ms
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.482888ms, encode 18.347163ms
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.480982ms, encode 18.464094ms
Quest Pro:
INFO [comp_ql_calc_frame_pacing] Avg: tx 1.075382ms, encode 12.934615ms
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.710841ms, encode 10.299981ms
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.850958ms, encode 10.371938ms
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.645109ms, encode 10.543258ms
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.592482ms, encode 10.271824ms
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.770167ms, encode 10.140699ms
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.911711ms, encode 10.275272ms
INFO [comp_ql_calc_frame_pacing] Avg: tx 0.556561ms, encode 10.065738ms
Both devices are on v47, and `libusb_get_device_speed` returns `LIBUSB_SPEED_SUPER` for both headsets, so in theory they should be operating at 5000Mbit/s. It's worth noting that I'm including the cap'n proto preamble packets, so that's 0.4ms Quest 2/1ms Quest Pro across 3-4 packets (segment sizes + cap'n proto + optional csd + idr/coded slices).
02-05-2023 02:31 AM
I have the same performance issue as well. But more so when I use my app that has passthrough