diff options
author | dec05eba <dec05eba@protonmail.com> | 2024-06-10 16:44:04 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2024-06-10 16:44:04 +0200 |
commit | e4832f3d643abf8adf1f5872614b020c833afd0b (patch) | |
tree | 28aea0eb7192450aa4a66ec4d78c04ca67d96760 /src/capture/kms.c | |
parent | c17a717326d2cc1c0576e6dc9f2116e72e38b45a (diff) |
Revert "Fix screen capture on intel arc gpu (on x11 and wayland)"
This reverts commit f8453bcaa4b488aea601af632ab5656979eb6024.
Diffstat (limited to 'src/capture/kms.c')
-rw-r--r-- | src/capture/kms.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/capture/kms.c b/src/capture/kms.c index c2309d5..40db34b 100644 --- a/src/capture/kms.c +++ b/src/capture/kms.c @@ -195,7 +195,7 @@ static vec2i swap_vec2i(vec2i value) { return value; } -bool gsr_capture_kms_capture(gsr_capture_kms *self, AVFrame *frame, bool hdr, bool cursor_texture_is_external, bool record_cursor) { +bool gsr_capture_kms_capture(gsr_capture_kms *self, AVFrame *frame, bool hdr, bool screen_plane_use_modifiers, bool cursor_texture_is_external, bool record_cursor) { //egl->glClearColor(0.0f, 0.0f, 0.0f, 1.0f); self->base.egl->glClear(0); @@ -262,18 +262,29 @@ bool gsr_capture_kms_capture(gsr_capture_kms *self, AVFrame *frame, bool hdr, bo // Error: avcodec_send_frame failed, error: Input/output error // Assertion pic->display_order == pic->encode_order failed at libavcodec/vaapi_encode_h265.c:765 // kms server info: kms client shutdown, shutting down the server - const intptr_t img_attr[] = { + intptr_t img_attr[18] = { EGL_LINUX_DRM_FOURCC_EXT, drm_fd->pixel_format, EGL_WIDTH, drm_fd->width, EGL_HEIGHT, drm_fd->height, EGL_DMA_BUF_PLANE0_FD_EXT, drm_fd->fd, EGL_DMA_BUF_PLANE0_OFFSET_EXT, drm_fd->offset, EGL_DMA_BUF_PLANE0_PITCH_EXT, drm_fd->pitch, - EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, drm_fd->modifier & 0xFFFFFFFFULL, - EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, drm_fd->modifier >> 32ULL, - EGL_NONE }; + if(screen_plane_use_modifiers) { + img_attr[12] = EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT; + img_attr[13] = drm_fd->modifier & 0xFFFFFFFFULL; + + img_attr[14] = EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT; + img_attr[15] = drm_fd->modifier >> 32ULL; + + img_attr[16] = EGL_NONE; + img_attr[17] = EGL_NONE; + } else { + img_attr[12] = EGL_NONE; + img_attr[13] = EGL_NONE; + } + EGLImage image = self->base.egl->eglCreateImage(self->base.egl->egl_display, 0, EGL_LINUX_DMA_BUF_EXT, NULL, img_attr); self->base.egl->glBindTexture(GL_TEXTURE_2D, self->base.input_texture); self->base.egl->glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image); |