More kms vaapi allow to work without xwayland
This commit is contained in:
parent
a3beaeb0cc
commit
585382cf18
3
TODO
3
TODO
@ -83,4 +83,5 @@ Support screen rotation in amd/intel/nvidia wayland.
|
|||||||
Support wlroots dmabuf screen recording, because it doesn't require root access unlike kms grab.
|
Support wlroots dmabuf screen recording, because it doesn't require root access unlike kms grab.
|
||||||
Capture cursor on amd/intel wayland without xwayland.
|
Capture cursor on amd/intel wayland without xwayland.
|
||||||
When nvidia supports hardware cursor then capture the cursor. Right now the cursor is captured because it's a software cursor so it's composed on the dma buf.
|
When nvidia supports hardware cursor then capture the cursor. Right now the cursor is captured because it's a software cursor so it's composed on the dma buf.
|
||||||
CPU usage is pretty high on AMD/Intel/(Nvidia(wayland)), why? opening and closing fds, creating egl, cuda association, is slow when done every frame.
|
CPU usage is pretty high on AMD/Intel/(Nvidia(wayland)), why? opening and closing fds, creating egl, cuda association, is slow when done every frame. Test if desktop portal screencast has better performance.
|
||||||
|
Cursor on amd/intel wayland only shows up when the cursor is above xwayland applications.
|
@ -576,7 +576,9 @@ static int gsr_capture_kms_vaapi_capture(gsr_capture *cap, AVFrame *frame) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gsr_cursor_tick(&cap_kms->cursor);
|
if(cap_kms->dpy) {
|
||||||
|
gsr_cursor_tick(&cap_kms->cursor);
|
||||||
|
}
|
||||||
|
|
||||||
vec2i capture_pos = cap_kms->capture_pos;
|
vec2i capture_pos = cap_kms->capture_pos;
|
||||||
vec2i capture_size = cap_kms->capture_size;
|
vec2i capture_size = cap_kms->capture_size;
|
||||||
@ -591,10 +593,12 @@ static int gsr_capture_kms_vaapi_capture(gsr_capture *cap, AVFrame *frame) {
|
|||||||
capture_pos, capture_size,
|
capture_pos, capture_size,
|
||||||
texture_rotation);
|
texture_rotation);
|
||||||
|
|
||||||
gsr_color_conversion_draw(&cap_kms->color_conversion, cap_kms->cursor.texture_id,
|
if(cap_kms->dpy) {
|
||||||
cursor_capture_pos, (vec2i){cap_kms->cursor.size.x, cap_kms->cursor.size.y},
|
gsr_color_conversion_draw(&cap_kms->color_conversion, cap_kms->cursor.texture_id,
|
||||||
(vec2i){0, 0}, (vec2i){cap_kms->cursor.size.x, cap_kms->cursor.size.y},
|
cursor_capture_pos, (vec2i){cap_kms->cursor.size.x, cap_kms->cursor.size.y},
|
||||||
0.0f);
|
(vec2i){0, 0}, (vec2i){cap_kms->cursor.size.x, cap_kms->cursor.size.y},
|
||||||
|
0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
cap_kms->egl.eglSwapBuffers(cap_kms->egl.egl_display, cap_kms->egl.egl_surface);
|
cap_kms->egl.eglSwapBuffers(cap_kms->egl.egl_display, cap_kms->egl.egl_surface);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user