mirror of
https://github.com/nestriness/nestri.git
synced 2025-12-12 16:55:37 +02:00
⭐ feat(runner): More runner improvements (#294)
## Description Whew.. - Steam can now run without namespaces using live-patcher (because Docker..) - Improved NVIDIA GPU selection and handling - Pipeline tests for GPU picking logic - Optimizations and cleanup all around - SSH (by default disabled) for easier instance debugging. - CachyOS' Proton because that works without namespaces (couldn't figure out how to enable automatically in Steam yet..) - Package updates and partial removal of futures (libp2p is going to switch to Tokio in next release hopefully) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - SSH server can now be enabled within the container for remote access when configured. - Added persistent live patching for Steam runtime entrypoints to improve compatibility with namespace-less applications. - Enhanced GPU selection with multi-GPU support and PCI bus ID matching for improved hardware compatibility. - Improved encoder selection by runtime testing of video encoders for better reliability. - Added WebSocket transport support in peer-to-peer networking. - Added flexible compositor and application launching with configurable commands and improved socket handling. - **Bug Fixes** - Addressed NVIDIA-specific GStreamer issues by setting new environment variables. - Improved error handling and logging for GPU and encoder selection. - Fixed process monitoring to handle patcher restarts and added cleanup logic. - Added GStreamer cache clearing workaround for Wayland socket failures. - **Improvements** - Real-time logging of container processes to standard output and error for easier monitoring. - Enhanced process management and reduced CPU usage in protocol handling loops. - Updated dependency versions for greater stability and feature support. - Improved audio capture defaults and expanded audio pipeline support. - Enhanced video pipeline setup with conditional handling for different encoder APIs and DMA-BUF support. - Refined concurrency and lifecycle management in protocol messaging for increased robustness. - Consistent namespace usage and updated crate references across the codebase. - Enhanced SSH configuration with key management, port customization, and startup verification. - Improved GPU and video encoder integration in pipeline construction. - Simplified error handling and consolidated write operations in protocol streams. - Removed Ludusavi installation from container image and updated package installations. - **Other** - Minor formatting and style changes for better code readability and maintainability. - Docker build context now ignores `.idea` directory to streamline builds. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
191c59d230
commit
41dca22d9d
@@ -55,7 +55,11 @@ impl AppArgs {
|
||||
tracing::info!("AppArgs:");
|
||||
tracing::info!("> verbose: {}", self.verbose);
|
||||
tracing::info!("> debug: {}", self.debug);
|
||||
tracing::info!("> resolution: '{}x{}'", self.resolution.0, self.resolution.1);
|
||||
tracing::info!(
|
||||
"> resolution: '{}x{}'",
|
||||
self.resolution.0,
|
||||
self.resolution.1
|
||||
);
|
||||
tracing::info!("> framerate: {}", self.framerate);
|
||||
tracing::info!("> relay_url: '{}'", self.relay_url);
|
||||
tracing::info!("> room: '{}'", self.room);
|
||||
|
||||
@@ -19,10 +19,7 @@ impl DeviceArgs {
|
||||
.get_one::<String>("gpu-name")
|
||||
.unwrap_or(&"".to_string())
|
||||
.clone(),
|
||||
gpu_index: matches
|
||||
.get_one::<i32>("gpu-index")
|
||||
.unwrap_or(&-1)
|
||||
.clone(),
|
||||
gpu_index: matches.get_one::<i32>("gpu-index").unwrap_or(&-1).clone(),
|
||||
gpu_card_path: matches
|
||||
.get_one::<String>("gpu-card-path")
|
||||
.unwrap_or(&"".to_string())
|
||||
|
||||
@@ -120,20 +120,11 @@ impl VideoEncodingOptions {
|
||||
.unwrap(),
|
||||
}),
|
||||
RateControlMethod::CBR => RateControl::CBR(RateControlCBR {
|
||||
target_bitrate: matches
|
||||
.get_one::<u32>("video-bitrate")
|
||||
.unwrap()
|
||||
.clone(),
|
||||
target_bitrate: matches.get_one::<u32>("video-bitrate").unwrap().clone(),
|
||||
}),
|
||||
RateControlMethod::VBR => RateControl::VBR(RateControlVBR {
|
||||
target_bitrate: matches
|
||||
.get_one::<u32>("video-bitrate")
|
||||
.unwrap()
|
||||
.clone(),
|
||||
max_bitrate: matches
|
||||
.get_one::<u32>("video-bitrate-max")
|
||||
.unwrap()
|
||||
.clone(),
|
||||
target_bitrate: matches.get_one::<u32>("video-bitrate").unwrap().clone(),
|
||||
max_bitrate: matches.get_one::<u32>("video-bitrate-max").unwrap().clone(),
|
||||
}),
|
||||
},
|
||||
},
|
||||
@@ -209,20 +200,11 @@ impl AudioEncodingOptions {
|
||||
.unwrap_or(&RateControlMethod::CBR)
|
||||
{
|
||||
RateControlMethod::CBR => RateControl::CBR(RateControlCBR {
|
||||
target_bitrate: matches
|
||||
.get_one::<u32>("audio-bitrate")
|
||||
.unwrap()
|
||||
.clone(),
|
||||
target_bitrate: matches.get_one::<u32>("audio-bitrate").unwrap().clone(),
|
||||
}),
|
||||
RateControlMethod::VBR => RateControl::VBR(RateControlVBR {
|
||||
target_bitrate: matches
|
||||
.get_one::<u32>("audio-bitrate")
|
||||
.unwrap()
|
||||
.clone(),
|
||||
max_bitrate: matches
|
||||
.get_one::<u32>("audio-bitrate-max")
|
||||
.unwrap()
|
||||
.clone(),
|
||||
target_bitrate: matches.get_one::<u32>("audio-bitrate").unwrap().clone(),
|
||||
max_bitrate: matches.get_one::<u32>("audio-bitrate-max").unwrap().clone(),
|
||||
}),
|
||||
wot => panic!("Invalid rate control method for audio: {}", wot.as_str()),
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user