-
-
Notifications
You must be signed in to change notification settings - Fork 446
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Vulkan based linux port This version replaces the "screen grab" version. The mechanism is based on frame capture in vrcompositor process, which are then shared with vrserver process, encoded there and transmitted to the headset. A vulkan layer is added to vrcompositor, this layer exposes the VK_EXT_direct_mode_display, VK_EXT_acquire_xlib_display and some other related vulkan functions. Functions implemented in the layer add one display to the list naturally returned by the driver, this display matches properties in ALVR settings (resolution and refresh rate), and all functions required by SteamVR are implemented (xlib acquire, properties enumeration, vsync event, swapchain creation). The layer then connects to a socket owned by the server, submits the VkImage creation parameters, and transfers file descriptors corresponding to the images in the swapchain and associated semaphores. The, on each frame, a packet is sent on the socket describing the image that has been submitted. On server side, vulkan frames are mapped to vaapi surfaces, using ffmpeg, then converted to a format suitable for encoding, encoded through vaapi and sent with the usual mechanism. In order to associate each frame with tracking information, timing details are requested to the compositor, and tracking history is queried to find the most suitable tracking index. This mechanism is still inaccurate and will need significant upgrades. Co-authored-by: Ron B <me@ronthecookie.me> * include pose age in timing calculation * linux: correctly set timestamps for bitrate * fix uninitialized variable, layer metadata * use stack inspection in layer to find pose In order to get the correct pose associated to an image, search the stack for the variable, then copy it and send to the server. * Automatically wrap vrcompositor-launcher This will allow the user to not have to modify `vrenv.sh` which is quite error-prone. * update vulkan-layer shell.nix Co-authored-by: Patrick Nicolas <patricknicolas@laposte.net> Co-authored-by: Ron B <me@ronthecookie.me> Co-authored-by: zarik5 <riccardo.zaglia5@gmail.com>
- Loading branch information
1 parent
85e53ec
commit 64288f4
Showing
64 changed files
with
5,764 additions
and
2,919 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#!/usr/bin/env sh | ||
|
||
export VK_LAYER_PATH=$(cat $XDG_RUNTIME_DIR/alvr_dir.txt | rev | cut -d'/' -f3- | rev)/alvr/server/cpp/tools/vulkan-layer/build | ||
export VK_INSTANCE_LAYERS=VK_LAYER_ALVR_capture | ||
export DISABLE_VK_LAYER_VALVE_steam_fossilize_1=1 | ||
export DISABLE_VK_LAYER_VALVE_steam_overlay_1=1 | ||
|
||
exec "$0".real "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.