Apply rotation fix for intel as well (for kms capture)
This commit is contained in:
parent
f6107a0c5d
commit
c9c615d4c7
6
TODO
6
TODO
@ -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.
|
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?).
|
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.
|
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?
|
@ -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: Find a better way to do this. Is this info available somewhere in drm? it should be!
|
||||||
|
|
||||||
// TODO: test on intel
|
// Note: workaround AMD/Intel issue. If there is one monitor enabled and it's rotated then
|
||||||
// Note: workaround AMD 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.
|
// 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;
|
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;
|
cap_kms->requires_rotation = true;
|
||||||
} else {
|
} else {
|
||||||
cap_kms->requires_rotation = false;
|
cap_kms->requires_rotation = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user