From 2b34c78459c421c2771c13eebae11e75c581fd52 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 15 May 2025 19:48:25 +0200 Subject: Revert "temp test for cosmic" This reverts commit 35222bafe22b5685710395cfb274293cf488a59d. --- src/capture/kms.c | 39 +++++---------------------------------- 1 file changed, 5 insertions(+), 34 deletions(-) (limited to 'src/capture/kms.c') diff --git a/src/capture/kms.c b/src/capture/kms.c index 552b7e5..18858f2 100644 --- a/src/capture/kms.c +++ b/src/capture/kms.c @@ -264,21 +264,14 @@ static void gsr_capture_kms_on_event(gsr_capture *cap, gsr_egl *egl) { // } // } -static gsr_kms_response_item* find_drm_by_connector_id_and_plane_type(gsr_kms_response *kms_response, uint32_t connector_id, gsr_kms_plane_type plane_type) { +static gsr_kms_response_item* find_drm_by_connector_id(gsr_kms_response *kms_response, uint32_t connector_id) { for(int i = 0; i < kms_response->num_items; ++i) { - if(kms_response->items[i].connector_id == connector_id && kms_response->items[i].plane_type == plane_type) + if(kms_response->items[i].connector_id == connector_id && !kms_response->items[i].is_cursor) return &kms_response->items[i]; } return NULL; } -static gsr_kms_response_item* find_drm_by_connector_id(gsr_kms_response *kms_response, uint32_t connector_id) { - gsr_kms_response_item *response_item = find_drm_by_connector_id_and_plane_type(kms_response, connector_id, KMS_PLANE_TYPE_PRIMARY); - if(!response_item) - response_item = find_drm_by_connector_id_and_plane_type(kms_response, connector_id, KMS_PLANE_TYPE_OVERLAY); - return response_item; -} - static gsr_kms_response_item* find_largest_drm(gsr_kms_response *kms_response) { if(kms_response->num_items == 0) return NULL; @@ -287,7 +280,7 @@ static gsr_kms_response_item* find_largest_drm(gsr_kms_response *kms_response) { gsr_kms_response_item *largest_drm = &kms_response->items[0]; for(int i = 0; i < kms_response->num_items; ++i) { const int64_t size = (int64_t)kms_response->items[i].width * (int64_t)kms_response->items[i].height; - if(size > largest_size && kms_response->items[i].plane_type == KMS_PLANE_TYPE_PRIMARY) { + if(size > largest_size && !kms_response->items[i].is_cursor) { largest_size = size; largest_drm = &kms_response->items[i]; } @@ -298,7 +291,7 @@ static gsr_kms_response_item* find_largest_drm(gsr_kms_response *kms_response) { static gsr_kms_response_item* find_cursor_drm(gsr_kms_response *kms_response, uint32_t connector_id) { gsr_kms_response_item *cursor_drm = NULL; for(int i = 0; i < kms_response->num_items; ++i) { - if(kms_response->items[i].plane_type == KMS_PLANE_TYPE_CURSOR) { + if(kms_response->items[i].is_cursor) { cursor_drm = &kms_response->items[i]; if(kms_response->items[i].connector_id == connector_id) break; @@ -656,28 +649,6 @@ static int gsr_capture_kms_capture(gsr_capture *cap, gsr_capture_metadata *captu capture_pos, self->capture_size, original_frame_size, gsr_monitor_rotation_to_rotation(self->monitor_rotation), GSR_SOURCE_COLOR_RGB, self->external_texture_fallback, false); - if(drm_fd->plane_type != KMS_PLANE_TYPE_OVERLAY) { - const vec2i framebuffer_size = original_frame_size; - for(int i = 0; i < self->monitor_id.num_connector_ids; ++i) { - const gsr_kms_response_item *overlay_drm_fd = find_drm_by_connector_id_and_plane_type(&self->kms_response, self->monitor_id.connector_ids[i], KMS_PLANE_TYPE_OVERLAY); - if(!overlay_drm_fd) - continue; - - self->external_texture_fallback = false; - image = gsr_capture_kms_create_egl_image_with_fallback(self, overlay_drm_fd); - if(image) { - gsr_capture_kms_bind_image_to_input_texture_with_fallback(self, image); - self->params.egl->eglDestroyImage(self->params.egl->egl_display, image); - } - - // TODO: Lole - gsr_color_conversion_draw(color_conversion, self->external_texture_fallback ? self->external_input_texture_id : self->input_texture_id, - target_pos, output_size, - (vec2i){overlay_drm_fd->x, overlay_drm_fd->y}, framebuffer_size, original_frame_size, - gsr_monitor_rotation_to_rotation(self->monitor_rotation), GSR_SOURCE_COLOR_RGB, self->external_texture_fallback, true); - } - } - if(self->params.record_cursor) { gsr_kms_response_item *cursor_drm_fd = find_cursor_drm_if_on_monitor(self, drm_fd->connector_id, capture_is_combined_plane); // The cursor is handled by x11 on x11 instead of using the cursor drm plane because on prime systems with a dedicated nvidia gpu @@ -690,7 +661,7 @@ static int gsr_capture_kms_capture(gsr_capture *cap, gsr_capture_metadata *captu cursor_monitor_offset.y += self->params.region_position.y; render_x11_cursor(self, color_conversion, cursor_monitor_offset, target_pos, output_size); } else if(cursor_drm_fd) { - const vec2i framebuffer_size = original_frame_size; + const vec2i framebuffer_size = rotate_capture_size_if_rotated(self, (vec2i){ drm_fd->src_w, drm_fd->src_h }); render_drm_cursor(self, color_conversion, cursor_drm_fd, target_pos, output_size, framebuffer_size); } } -- cgit v1.2.3-70-g09d2