Failure to encode video frame on AMD RYZEN AI MAX+ 395 w/ Radeon 8060S
Description
When the HMD connects to the alvr server it sometimes displays a dark flat square with the steamvr landscape. But it never starts streaming the a functional VR environment.
ALVR also opens two small windows that complain about it not being able encode the video frames (I do wonder where the App on the HMD gets that initial image from if the video encoding fails)
From the logs "tab":
14:33:02.073 WARNING Beware, using just integrated graphics might lead to very poor performance in SteamVR and VR games. 14:33:02.073 WARNING For more information, please refer to the wiki: https://github.com/alvr-org/ALVR/wiki/Linux-Troubleshooting
14:33:02.073 WARNING Make sure you have put the following line in your SteamVR launch options and restart it: /home/talpa/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command% 14:33:02.076 INFO GPU Encoder vendor: Mesa Gallium driver 25.2.2-1 for Radeon 8060S Graphics (radeonsi, gfx1151, LLVM 19.1.7, DRM 3.64, 6.16.5) 14:33:04.527 INFO Server connected 14:33:28.129 INFO Initial socket buffer size: send: 87040B, recv: 131072B 14:33:28.162 INFO Initial socket buffer size: send: 212992B, recv: 212992B 14:33:28.162 INFO Set socket send buffer succeeded: 425984 14:33:28.162 INFO Set socket recv buffer succeeded: 425984 14:33:28.164 INFO Render Target: 4288 2144 14:33:28.164 INFO Refresh Rate: 72 14:33:28.188 INFO CEncoder::Run 14:33:28.188 INFO CEncoder Listening 14:33:28.191 INFO Received new playspace with size: [2.121238, 2.121238] 14:33:28.252 INFO CEncoder client connected, pid 12626, cmdline /home/talpa/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor 14:33:28.310 INFO Using Vulkan device Radeon 8060S Graphics (RADV GFX1151) 14:33:28.311 INFO Using device path /dev/dri/renderD128 14:33:28.312 INFO FrameRender: Input size 4288x2144 14:33:28.312 INFO FrameRender: Output size 2560x1120 14:33:28.334 INFO Using VAAPI encoder 14:33:28.645 ERROR Encoder: Failed to start picture processing: 1 (operation failed). 14:33:28.651 ERROR error in encoder thread: av_buffersrc_add_frame failed Input/output error 14:33:46.173 INFO Client disconnected. Cause: Broken pipe (os error 32)
General Troubleshooting
- [ x] I carefully followed the instructions in the README and successfully completed the setup wizard
- [x ] I read the ALVR GitHub Wiki
Added the launch option for steamvr:
/home/talpa/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command% according to https://github.com/alvr-org/ALVR/wiki/Linux-Troubleshooting
My best guess at the location that emmits the error:
alvr/server_openvr/cpp/platform/linux/EncodePipelineVAAPI.cpp 395: throw alvr::AvException("av_buffersrc_add_frame failed", err);
Environment
Sway as the window manager (wayland protocol)
vaapi according to vainfo
Trying display: wayland libva info: VA-API version 1.22.0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so libva info: Found init function __vaDriverInit_1_22 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.22 (libva 2.22.0) vainfo: Driver version: Mesa Gallium driver 25.2.2-1 for Radeon 8060S Graphics (radeonsi, gfx1151, LLVM 19.1.7, DRM 3.64, 6.16.5) vainfo: Supported profile and entrypoints VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointEncSlice VAProfileHEVCMain10 : VAEntrypointVLD VAProfileHEVCMain10 : VAEntrypointEncSlice VAProfileJPEGBaseline : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile2 : VAEntrypointVLD VAProfileAV1Profile0 : VAEntrypointVLD VAProfileAV1Profile0 : VAEntrypointEncSlice VAProfileNone : VAEntrypointVideoProc
Hardware
Asus ROG Flow Z13 (2025)
CPU: AMD RYZEN AI MAX+ 395
GPU: Radeon 8060S (iGPU)
GPU Driver Version:
Both kernel 6.15.9 and 6.16.5
firmware-amd-graphics/unstable,unstable,now 20250808-1 all [installed] Binary firmware for AMD/ATI graphics and NPU chips
libdrm-amdgpu1/unstable,now 2.4.125-2 amd64 [installed,automatic] Userspace interface to amdgpu-specific kernel DRM services -- runtime
Installation
ALVR Version: 20,14.1
ALVR Settings File: Tried a few different configurations but the current one is:
{ "server_version": "20.14.1", "openvr_config": { "eye_resolution_width": 1536, "eye_resolution_height": 1536, "target_eye_resolution_width": 1536, "target_eye_resolution_height": 1536, "tracking_ref_only": false, "enable_vive_tracker_proxy": false, "minimum_idr_interval_ms": 100, "adapter_index": 0, "codec": 0, "h264_profile": 0, "refresh_rate": 72, "use_10bit_encoder": false, "use_full_range_encoding": true, "encoding_gamma": 1.0, "enable_hdr": false, "force_hdr_srgb_correction": false, "clamp_hdr_extended_range": false, "enable_amf_pre_analysis": false, "enable_vbaq": false, "enable_amf_hmqb": false, "use_amf_preproc": false, "amf_preproc_sigma": 4, "amf_preproc_tor": 7, "encoder_quality_preset": 2, "rate_control_mode": 0, "filler_data": false, "entropy_coding": 1, "force_sw_encoding": false, "sw_thread_count": 0, "controller_is_tracker": false, "controllers_enabled": true, "body_tracking_vive_enabled": false, "body_tracking_has_legs": false, "enable_foveated_encoding": true, "foveation_center_size_x": 0.45, "foveation_center_size_y": 0.4, "foveation_center_shift_x": 0.4, "foveation_center_shift_y": 0.1, "foveation_edge_ratio_x": 4.0, "foveation_edge_ratio_y": 5.0, "enable_color_correction": false, "brightness": 0.0, "contrast": 0.0, "saturation": 0.0, "gamma": 0.0, "sharpening": 0.0, "linux_async_compute": false, "linux_async_reprojection": false, "nvenc_quality_preset": 1, "nvenc_tuning_preset": 2, "nvenc_multi_pass": 1, "nvenc_adaptive_quantization_mode": 1, "nvenc_low_delay_key_frame_scale": -1, "nvenc_refresh_rate": -1, "enable_intra_refresh": false, "intra_refresh_period": -1, "intra_refresh_count": -1, "max_num_ref_frames": -1, "gop_length": -1, "p_frame_strategy": -1, "nvenc_rate_control_mode": -1, "rc_buffer_size": -1, "rc_initial_delay": -1, "rc_max_bitrate": -1, "rc_average_bitrate": -1, "nvenc_enable_weighted_prediction": false, "capture_frame_dir": "", "amd_bitrate_corruption_fix": false, "use_separate_hand_trackers": true, "_controller_profile": 10, "_server_impl_debug": false, "_client_impl_debug": false, "_server_core_debug": false, "_client_core_debug": false, "_connection_debug": false, "_sockets_debug": false, "_server_gfx_debug": false, "_client_gfx_debug": false, "_encoder_debug": false, "_decoder_debug": false }, "client_connections": { "9152.client": { "display_name": "Pico 4 Ultra", "current_ip": null, "manual_ips": [], "trusted": true, "connection_state": "Disconnected" } }, "session_settings": { "video": { "passthrough": { "enabled": false, "content": { "Blend": { "premultiplied_alpha": true, "threshold": 0.5 }, "RgbChromaKey": { "red": 0, "green": 255, "blue": 0, "distance_threshold": 85, "feathering": 0.05 }, "HsvChromaKey": { "hue_start_max_deg": 70.0, "hue_start_min_deg": 80.0, "hue_end_min_deg": 160.0, "hue_end_max_deg": 170.0, "saturation_start_max": 0.2, "saturation_start_min": 0.3, "saturation_end_min": 1.0, "saturation_end_max": 1.1, "value_start_max": 0.0, "value_start_min": 0.1, "value_end_min": 1.0, "value_end_max": 1.1 }, "variant": "Blend" } }, "bitrate": { "gui_collapsed": false, "mode": { "ConstantMbps": 30, "Adaptive": { "gui_collapsed": true, "saturation_multiplier": 0.95, "max_throughput_mbps": { "enabled": false, "content": 100 }, "min_throughput_mbps": { "enabled": false, "content": 5 }, "max_network_latency_ms": { "enabled": false, "content": 8 }, "encoder_latency_limiter": { "enabled": true, "content": { "max_saturation_multiplier": 0.9 } }, "decoder_latency_limiter": { "enabled": true, "content": { "gui_collapsed": false, "max_decoder_latency_ms": 30, "latency_overstep_frames": 90, "latency_overstep_multiplier": 0.99 } } }, "variant": "ConstantMbps" }, "adapt_to_framerate": { "enabled": false, "content": { "framerate_reset_threshold_multiplier": 2.0 } }, "history_size": 256, "image_corruption_fix": false }, "preferred_codec": { "variant": "H264" }, "foveated_encoding": { "enabled": true, "content": { "gui_collapsed": true, "force_enable": false, "center_size_x": 0.45, "center_size_y": 0.4, "center_shift_x": 0.4, "center_shift_y": 0.1, "edge_ratio_x": 4.0, "edge_ratio_y": 5.0 } }, "color_correction": { "enabled": false, "content": { "brightness": 0.0, "contrast": 0.0, "saturation": 0.5, "gamma": 1.0, "sharpening": 0.5 } }, "max_buffering_frames": 2.0, "buffering_history_weight": 0.9, "enforce_server_frame_pacing": true, "encoder_config": { "gui_collapsed": true, "quality_preset": { "variant": "Speed" }, "enable_vbaq": false, "rate_control_mode": { "variant": "Cbr" }, "h264_profile": { "variant": "High" }, "entropy_coding": { "variant": "Cavlc" }, "filler_data": false, "use_10bit": false, "server_overrides_use_10bit": false, "use_full_range": true, "server_overrides_use_full_range": false, "encoding_gamma": 1.0, "server_overrides_encoding_gamma": false, "hdr": { "gui_collapsed": true, "enable_hdr": false, "server_overrides_enable_hdr": false, "force_hdr_srgb_correction": false, "clamp_hdr_extended_range": false }, "nvenc": { "gui_collapsed": true, "quality_preset": { "variant": "P1" }, "tuning_preset": { "variant": "LowLatency" }, "multi_pass": { "variant": "QuarterResolution" }, "adaptive_quantization_mode": { "variant": "Spatial" }, "low_delay_key_frame_scale": -1, "refresh_rate": -1, "enable_intra_refresh": false, "intra_refresh_period": -1, "intra_refresh_count": -1, "max_num_ref_frames": -1, "gop_length": -1, "p_frame_strategy": -1, "rate_control_mode": -1, "rc_buffer_size": -1, "rc_initial_delay": -1, "rc_max_bitrate": -1, "rc_average_bitrate": -1, "enable_weighted_prediction": false }, "amf": { "gui_collapsed": true, "enable_hmqb": false, "use_preproc": false, "preproc_sigma": 4, "preproc_tor": 7, "enable_pre_analysis": false }, "software": { "gui_collapsed": true, "force_software_encoding": false, "thread_count": 0 } }, "force_software_decoder": false, "mediacodec_extra_options": { "gui_collapsed": false, "key": "", "value": { "ty": { "variant": "Int32" }, "value": "0" }, "content": [ [ "operating-rate", { "ty": { "variant": "Int32" }, "value": "2147483647" } ], [ "priority", { "ty": { "variant": "Int32" }, "value": "0" } ], [ "vendor.qti-ext-dec-low-latency.enable", { "ty": { "variant": "Int32" }, "value": "1" } ] ] }, "transcoding_view_resolution": { "Scale": 1.0, "Absolute": { "width": 1536, "height": { "set": false, "content": 1080 } }, "variant": "Absolute" }, "emulated_headset_view_resolution": { "Scale": 1.0, "Absolute": { "width": 1536, "height": { "set": false, "content": 1080 } }, "variant": "Absolute" }, "preferred_fps": 60.0, "adapter_index": 0, "clientside_foveation": { "enabled": false, "content": { "mode": { "Static": { "level": { "variant": "High" } }, "Dynamic": { "max_level": { "variant": "High" } }, "variant": "Dynamic" }, "vertical_offset_deg": 0.0 } }, "clientside_post_processing": { "enabled": false, "content": { "super_sampling": { "variant": "Quality" }, "sharpening": { "variant": "Quality" } } }, "upscaling": { "enabled": false, "content": { "edge_direction": true, "edge_threshold": 4.0, "edge_sharpness": 2.0, "upscale_factor": 1.5 } } }, "audio": { "game_audio": { "enabled": true, "content": { "gui_collapsed": true, "device": { "set": false, "content": { "NameSubstring": "", "Index": 0, "variant": "NameSubstring" } }, "mute_when_streaming": true, "buffering": { "gui_collapsed": true, "average_buffering_ms": 50, "batch_ms": 10 } } }, "microphone": { "enabled": true, "content": { "gui_collapsed": true, "devices": { "Custom": { "sink": { "NameSubstring": "", "Index": 0, "variant": "NameSubstring" }, "source": { "NameSubstring": "", "Index": 0, "variant": "NameSubstring" } }, "variant": "Automatic" }, "buffering": { "gui_collapsed": true, "average_buffering_ms": 50, "batch_ms": 10 } } } }, "headset": { "position_recentering_mode": { "Local": { "view_height": 1.5 }, "variant": "LocalFloor" }, "rotation_recentering_mode": { "variant": "Yaw" }, "controllers": { "enabled": true, "content": { "gui_collapsed": false, "tracked": true, "hand_skeleton": { "enabled": true, "content": { "steamvr_input_2_0": true, "predict": false } }, "multimodal_tracking": false, "hand_tracking_interaction": { "enabled": false, "content": { "only_touch": false, "pinch_touch_distance": 0.0, "pinch_trigger_distance": 0.25, "curl_touch_distance": 2.0, "curl_trigger_distance": 2.5, "joystick_deadzone": 40.0, "joystick_offset_horizontal": 0.0, "joystick_offset_vertical": 0.0, "joystick_range": 1.0, "activation_delay": 50, "deactivation_delay": 100, "repeat_delay": 100 } }, "steamvr_pipeline_frames": 2.1, "haptics": { "enabled": true, "content": { "gui_collapsed": true, "intensity_multiplier": 1.0, "amplitude_curve": 1.0, "min_duration_s": 0.01 } }, "emulation_mode": { "Custom": { "serial_number": "ALVR Controller", "button_set": { "gui_collapsed": false, "element": "/user/hand/left/input/a/click", "content": [] } }, "variant": "Pico4" }, "extra_openvr_props": { "gui_collapsed": true, "element": { "key": { "variant": "TrackingSystemNameString" }, "value": "" }, "content": [] }, "linear_velocity_cutoff": 0.05, "angular_velocity_cutoff": 10.0, "left_controller_position_offset": { "gui_collapsed": true, "content": [ 0.0, 0.0, -0.11 ] }, "left_controller_rotation_offset": { "gui_collapsed": true, "content": [ 0.0, 0.0, 0.0 ] }, "left_hand_tracking_position_offset": { "gui_collapsed": true, "content": [ 0.04, -0.02, -0.13 ] }, "left_hand_tracking_rotation_offset": { "gui_collapsed": true, "content": [ 0.0, -45.0, -90.0 ] }, "button_mappings": { "set": false, "content": { "gui_collapsed": false, "key": "/user/hand/left/input/a/click", "value": { "gui_collapsed": false, "element": { "destination": "/user/hand/left/input/a/click", "mapping_type": { "HysteresisThreshold": { "value": 0.5, "deviation": 0.05 }, "BinaryToScalar": { "off": 0.0, "on": 1.0 }, "Remap": { "min": 0.0, "max": 1.0 }, "variant": "Passthrough" }, "binary_conditions": { "gui_collapsed": true, "element": "/user/hand/left/input/trigger/touch", "content": [] } }, "content": [] }, "content": [] } }, "button_mapping_config": { "gui_collapsed": true, "click_threshold": { "value": 0.5, "deviation": 0.05 }, "touch_threshold": { "value": 0.1, "deviation": 0.05 }, "force_threshold": 0.8 } } }, "emulation_mode": { "Custom": { "serial_number": "Unknown" }, "variant": "Custom" }, "extra_openvr_props": { "gui_collapsed": true, "element": { "key": { "variant": "TrackingSystemNameString" }, "value": "" }, "content": [] }, "tracking_ref_only": false, "enable_vive_tracker_proxy": false, "face_tracking": { "enabled": false, "content": { "gui_collapsed": true, "sources": { "eye_tracking_fb": true, "face_tracking_fb": true, "eye_expressions_htc": true, "lip_expressions_htc": true, "face_tracking_pico": true }, "sink": { "VrchatEyeOsc": { "port": 9000 }, "variant": "VrchatEyeOsc" } } }, "body_tracking": { "enabled": false, "content": { "gui_collapsed": true, "sources": { "body_tracking_fb": { "enabled": true, "content": { "full_body": true } }, "body_tracking_bd": { "enabled": true, "content": { "BodyTracking": { "high_accuracy": true, "prompt_calibration_on_start": true }, "variant": "BodyTracking" } } }, "sink": { "VrchatBodyOsc": { "port": 9000 }, "variant": "FakeViveTracker" }, "tracked": true } }, "vmc": { "enabled": false, "content": { "gui_collapsed": true, "host": "127.0.0.1", "port": 39539, "publish": true, "orientation_correction": true } }, "max_prediction_ms": 100 }, "connection": { "stream_protocol": { "variant": "Udp" }, "client_discovery": { "enabled": true, "content": { "auto_trust_clients": false } }, "wired_client_type": { "Custom": "alvr.client", "variant": "Store" }, "wired_client_autolaunch": true, "enable_on_connect_script": false, "enable_on_disconnect_script": false, "allow_untrusted_http": false, "avoid_video_glitching": false, "packet_size": 1400, "stream_port": 9944, "web_server_port": 8082, "osc_local_port": 9942, "server_send_buffer_bytes": { "Custom": 100000, "variant": "Maximum" }, "server_recv_buffer_bytes": { "Custom": 100000, "variant": "Maximum" }, "client_send_buffer_bytes": { "Custom": 100000, "variant": "Maximum" }, "client_recv_buffer_bytes": { "Custom": 100000, "variant": "Maximum" }, "max_queued_server_video_frames": 1024, "statistics_history_size": 256, "minimum_idr_interval_ms": 100, "dscp": { "set": false, "content": { "ClassSelector": 7, "AssuredForwarding": { "class": 4, "drop_probability": { "variant": "Low" } }, "variant": "ExpeditedForwarding" } } }, "extra": { "steamvr_launcher": { "open_close_steamvr_with_dashboard": false }, "capture": { "startup_video_recording": false, "rolling_video_files": { "enabled": false, "content": { "duration_s": 5 } }, "capture_frame_dir": "" }, "logging": { "show_notification_tip": true, "prefer_backtrace": false, "notification_level": { "variant": "Warning" }, "client_log_report_level": { "enabled": true, "content": { "variant": "Error" } }, "show_raw_events": { "enabled": false, "content": { "hide_spammy_events": false } }, "log_to_disk": false, "log_tracking": false, "log_button_presses": false, "log_haptics": false, "debug_groups": { "server_impl": false, "client_impl": false, "server_core": false, "client_core": false, "connection": false, "sockets": false, "server_gfx": false, "client_gfx": false, "encoder": false, "decoder": false } }, "patches": { "linux_async_compute": false, "linux_async_reprojection": false }, "velocities_multiplier": 1.0, "open_setup_wizard": false, "new_version_popup": { "enabled": true, "content": { "hide_while_version": "21.0.0-dev10" } } } } }
SteamVR Version: 2.12
Install Type: tar.gz and I also tied to compile alvr_streamer from source
OS Name and Version Debian GNU/Linux forky/sid
Also all 3 AMD encoder tests at the bottom of https://github.com/alvr-org/ALVR/wiki/FFmpeg-Hardware-Encoding-Testing works just fine and produces video files while slightly loading the gpu
If I simply return in
alvr/server_openvr/cpp/platform/linux/EncodePipelineVAAPI.cpp 395: throw alvr::AvException("av_buffersrc_add_frame failed", err);
instead of throwing the error alvr seems to be working fine.
I haven't tried to count the number of time it happens to se if it just a single frame it happens to yet.
I'm experiencing the exact same issue. The log shows the same av_buffersrc_add_frame failed error on AMD RYZEN HX370
Same issue here on Ryzen HX 370 and 6700XT.
Same here. Is there any bugfixing going on already? @talpadk Could edit be a workaround? Would everything be working fine?
We probably should count the times it occur (might leak memory or something else), maybe write a message to stdout or stderr But I suspect that it is only the first frame that the encoder frame that fail. It may also cause a delay of one frame in the video signal, but I would think that the headset simply displays the most recent frames it gets
But at least for me it allows me to use alvr and I don't see any bad side effects here
Same issue here on same hardware as talpadk but using Bazzite 43 what do you mean by "If I simply return in" as I can't get to use ALVR at all?
Same issue here on same hardware as talpadk but using Bazzite 43 what do you mean by "If I simply return in" as I can't get to use ALVR at all?
As a diff:
diff --git a/alvr/server_openvr/cpp/platform/linux/EncodePipelineVAAPI.cpp b/alvr/server_openvr/cpp/platform/linux/EncodePipelineVAAPI.cpp
index e303f22e..63acee44 100644
--- a/alvr/server_openvr/cpp/platform/linux/EncodePipelineVAAPI.cpp
+++ b/alvr/server_openvr/cpp/platform/linux/EncodePipelineVAAPI.cpp
@@ -395,7 +395,8 @@ void alvr::EncodePipelineVAAPI::PushFrame(uint64_t targetTimestampNs, bool idr)
filter_in, mapped_frame, AV_BUFFERSRC_FLAG_PUSH | AV_BUFFERSRC_FLAG_KEEP_REF
);
if (err != 0) {
- throw alvr::AvException("av_buffersrc_add_frame failed", err);
+ return;
+ //throw alvr::AvException("av_buffersrc_add_frame failed", err);
}
err = av_buffersink_get_frame(filter_out, encoder_frame);
if (err != 0) {
As an image
As I mentioned earlier, I haven't looked into if this leaks memory, or if it happens more than once. But at least it made ALVR work for me.