diff options
-rw-r--r-- | TODO | 6 | ||||
-rw-r--r-- | src/capture/kms_vaapi.c | 5 |
2 files changed, 7 insertions, 4 deletions
@@ -54,4 +54,8 @@ Monitor capture on steam deck is slightly below the game fps, but only when capt Make sure rgb to yuv color conversion is 100% correct. Fallback to vaapi copy in kms if opengl version fails. This can happen on steam deck for some reason (driver bug?). -Test if vaapi copy version uses less memory than opengl version.
\ No newline at end of file +Test if vaapi copy version uses less memory than opengl version. + +Intel is a bit weird with monitor capture and multiple monitors. If one of the monitors is rotated then all the kms will be rotated as well. + Is that only the case when the primary monitor is rotated? Also the primary monitor becomes position 0, 0 so crtc (x11 randr) position doesn't match the drm pos. Maybe get monitor position and size from drm instead. + How about if multiple monitors are rotated?
\ No newline at end of file diff --git a/src/capture/kms_vaapi.c b/src/capture/kms_vaapi.c index 8d650ed..ce97400 100644 --- a/src/capture/kms_vaapi.c +++ b/src/capture/kms_vaapi.c @@ -145,11 +145,10 @@ static int gsr_capture_kms_vaapi_start(gsr_capture *cap, AVCodecContext *video_c // TODO: Find a better way to do this. Is this info available somewhere in drm? it should be! - // TODO: test on intel - // Note: workaround AMD issue. If there is one monitor enabled and it's rotated then + // Note: workaround AMD/Intel issue. If there is one monitor enabled and it's rotated then // the drm buf will also be rotated. This only happens when you only have one monitor enabled. cap_kms->x11_rot = monitor_callback_userdata.rotation; - if(monitor_callback_userdata.num_monitors == 1 && cap_kms->x11_rot != X11_ROT_0 && cap_kms->params.gpu_inf.vendor == GSR_GPU_VENDOR_AMD) { + if(monitor_callback_userdata.num_monitors == 1 && cap_kms->x11_rot != X11_ROT_0) { cap_kms->requires_rotation = true; } else { cap_kms->requires_rotation = false; |