Davey HughesandCraig d5ae54c8e2 Show both eyes through the unified VR view API (#96)
* Allocate the frame for the widest 3D mode

FB_WIDTH followed the live 3D mode while the surface keeps its load-time
size, so changing the mode to side-by-side at run time handed video_cb
a pitch wider than the buffer.

Co-authored-by: Craig <[email protected]>

* Update libretro.h for the unified VR view API

The header from RetroArch's unified OpenXR pull request
(libretro/RetroArch#19811). REQUEST_FLAT and ipd_hint_m are gone from
retro_video_views: a flat map is one without TRACKED, and OpenXR always
gives real eye poses.

Co-authored-by: Craig <[email protected]>

* Show both eyes through the unified view API

A core learns about a headset only from the HMD status bit;
SET_VIDEO_VIEWS returning true means the map was accepted. Entering VR
on that true left desktop frontends blank.

VR enabled now sends the two eyes side by side as an untracked
LEFT/RIGHT map whenever the frontend presents both eyes, in a headset or
a stereo display mode, and needs no GL, so it works in every build. The
chosen 3D mode comes back when the frontend stops presenting both eyes.

Head-locked, a new vb_vr value in HAVE_VR builds, keeps the GL renderer:
it enters on the first frame with HMD and sends a TRACKED map. A video
reinit restarts the headset session and leaving VR changes the geometry,
so a lost headset is waited for five seconds before the core falls back
to the stereo screen. A frontend that reports a headset but refuses the
tracked map is not asked again until the headset drops or head-locked
is turned off.

The map in use is sent every retro_run(), as libretro.h asks, except
on the frames that wait for a lost headset: it covers state loads and
run-ahead. The frontend writes the recommended eye size back on each
tracked map, so a new size there is taken as a resize.

The VR options were always shown because libretro_vr.h defines
VB_VR_ENABLED as 0 or 1; they now test its value.

HAVE_VR builds, Android's among them, no longer ask for GL unless
head-locked is chosen: enabled now means the stereo screen.

Co-authored-by: Craig <[email protected]>

---------

Co-authored-by: Craig <[email protected]>
2026-10-12 19:05:46 +02:00
2026-10-08 02:42:13 +02:00
2026-10-08 02:42:13 +02:00
2026-10-08 02:42:13 +02:00
2017-10-23 21:24:22 -04:00
2016-08-18 10:41:58 -07:00
2012-06-03 17:48:14 +02:00
2026-10-08 02:42:13 +02:00
2026-10-08 02:42:13 +02:00
2026-10-08 03:19:59 +02:00
S
Description
Standalone hard fork of Mednafen VB to libretro.
GPL-2.0
24 MiB
0 Stars 1 Watchers 0 Forks
Languages
C 84.5%
C++ 12.2%
Makefile 1.7%
Python 1.2%
Pawn 0.2%
Other 0.2%