Try re-enabling use of modified in linux dma buf ext egl create image
This commit is contained in:
parent
2a890a4b4d
commit
97a345f08f
2
TODO
2
TODO
@ -103,3 +103,5 @@ Overclocking (-oc) can overclock too much on some systems. Maybe remove the opti
|
|||||||
Exit if X11/Wayland killed (if drm plane dead or something?)
|
Exit if X11/Wayland killed (if drm plane dead or something?)
|
||||||
|
|
||||||
Use SRC_W and SRC_H for screen plane instead of crtc_w and crtc_h.
|
Use SRC_W and SRC_H for screen plane instead of crtc_w and crtc_h.
|
||||||
|
|
||||||
|
Make it possible to select which /dev/dri/card* to use, but that requires opengl to also use the same card. Not sure if that is possible for amd, intel and nvidia without using vulkan instead.
|
||||||
|
@ -253,7 +253,7 @@ static void gsr_capture_kms_vaapi_tick(gsr_capture *cap, AVCodecContext *video_c
|
|||||||
const int plane = 0;
|
const int plane = 0;
|
||||||
|
|
||||||
const int div[2] = {1, 2}; // divide UV texture size by 2 because chroma is half size
|
const int div[2] = {1, 2}; // divide UV texture size by 2 because chroma is half size
|
||||||
//const uint64_t modifier = cap_kms->prime.objects[cap_kms->prime.layers[layer].object_index[plane]].drm_format_modifier;
|
const uint64_t modifier = cap_kms->prime.objects[cap_kms->prime.layers[layer].object_index[plane]].drm_format_modifier;
|
||||||
|
|
||||||
const intptr_t img_attr[] = {
|
const intptr_t img_attr[] = {
|
||||||
EGL_LINUX_DRM_FOURCC_EXT, formats[i],
|
EGL_LINUX_DRM_FOURCC_EXT, formats[i],
|
||||||
@ -262,9 +262,8 @@ static void gsr_capture_kms_vaapi_tick(gsr_capture *cap, AVCodecContext *video_c
|
|||||||
EGL_DMA_BUF_PLANE0_FD_EXT, cap_kms->prime.objects[cap_kms->prime.layers[layer].object_index[plane]].fd,
|
EGL_DMA_BUF_PLANE0_FD_EXT, cap_kms->prime.objects[cap_kms->prime.layers[layer].object_index[plane]].fd,
|
||||||
EGL_DMA_BUF_PLANE0_OFFSET_EXT, cap_kms->prime.layers[layer].offset[plane],
|
EGL_DMA_BUF_PLANE0_OFFSET_EXT, cap_kms->prime.layers[layer].offset[plane],
|
||||||
EGL_DMA_BUF_PLANE0_PITCH_EXT, cap_kms->prime.layers[layer].pitch[plane],
|
EGL_DMA_BUF_PLANE0_PITCH_EXT, cap_kms->prime.layers[layer].pitch[plane],
|
||||||
// TODO:
|
EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, modifier & 0xFFFFFFFFULL,
|
||||||
//EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, modifier & 0xFFFFFFFFULL,
|
EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, modifier >> 32ULL,
|
||||||
//EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, modifier >> 32ULL,
|
|
||||||
EGL_NONE
|
EGL_NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -488,9 +487,8 @@ static int gsr_capture_kms_vaapi_capture(gsr_capture *cap, AVFrame *frame) {
|
|||||||
EGL_DMA_BUF_PLANE0_FD_EXT, drm_fd->fd,
|
EGL_DMA_BUF_PLANE0_FD_EXT, drm_fd->fd,
|
||||||
EGL_DMA_BUF_PLANE0_OFFSET_EXT, drm_fd->offset,
|
EGL_DMA_BUF_PLANE0_OFFSET_EXT, drm_fd->offset,
|
||||||
EGL_DMA_BUF_PLANE0_PITCH_EXT, drm_fd->pitch,
|
EGL_DMA_BUF_PLANE0_PITCH_EXT, drm_fd->pitch,
|
||||||
// TODO:
|
EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, drm_fd->modifier & 0xFFFFFFFFULL,
|
||||||
//EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, drm_fd->modifier & 0xFFFFFFFFULL,
|
EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, drm_fd->modifier >> 32ULL,
|
||||||
//EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, drm_fd->modifier >> 32ULL,
|
|
||||||
EGL_NONE
|
EGL_NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -349,7 +349,7 @@ static void gsr_capture_xcomposite_vaapi_tick(gsr_capture *cap, AVCodecContext *
|
|||||||
const int plane = 0;
|
const int plane = 0;
|
||||||
|
|
||||||
const int div[2] = {1, 2}; // divide UV texture size by 2 because chroma is half size
|
const int div[2] = {1, 2}; // divide UV texture size by 2 because chroma is half size
|
||||||
//const uint64_t modifier = cap_kms->prime.objects[cap_kms->prime.layers[layer].object_index[plane]].drm_format_modifier;
|
const uint64_t modifier = cap_xcomp->prime.objects[cap_xcomp->prime.layers[layer].object_index[plane]].drm_format_modifier;
|
||||||
|
|
||||||
const intptr_t img_attr[] = {
|
const intptr_t img_attr[] = {
|
||||||
EGL_LINUX_DRM_FOURCC_EXT, formats[i],
|
EGL_LINUX_DRM_FOURCC_EXT, formats[i],
|
||||||
@ -358,9 +358,8 @@ static void gsr_capture_xcomposite_vaapi_tick(gsr_capture *cap, AVCodecContext *
|
|||||||
EGL_DMA_BUF_PLANE0_FD_EXT, cap_xcomp->prime.objects[cap_xcomp->prime.layers[layer].object_index[plane]].fd,
|
EGL_DMA_BUF_PLANE0_FD_EXT, cap_xcomp->prime.objects[cap_xcomp->prime.layers[layer].object_index[plane]].fd,
|
||||||
EGL_DMA_BUF_PLANE0_OFFSET_EXT, cap_xcomp->prime.layers[layer].offset[plane],
|
EGL_DMA_BUF_PLANE0_OFFSET_EXT, cap_xcomp->prime.layers[layer].offset[plane],
|
||||||
EGL_DMA_BUF_PLANE0_PITCH_EXT, cap_xcomp->prime.layers[layer].pitch[plane],
|
EGL_DMA_BUF_PLANE0_PITCH_EXT, cap_xcomp->prime.layers[layer].pitch[plane],
|
||||||
// TODO:
|
EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, modifier & 0xFFFFFFFFULL,
|
||||||
//EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, modifier & 0xFFFFFFFFULL,
|
EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, modifier >> 32ULL,
|
||||||
//EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, modifier >> 32ULL,
|
|
||||||
EGL_NONE
|
EGL_NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1403,7 +1403,7 @@ int main(int argc, char **argv) {
|
|||||||
fprintf(stderr, "Error: option -r has to be between 5 and 1200, was: %s\n", replay_buffer_size_secs_str);
|
fprintf(stderr, "Error: option -r has to be between 5 and 1200, was: %s\n", replay_buffer_size_secs_str);
|
||||||
_exit(1);
|
_exit(1);
|
||||||
}
|
}
|
||||||
replay_buffer_size_secs += 5; // Add a few seconds to account of lost packets because of non-keyframe packets skipped
|
replay_buffer_size_secs += 3; // Add a few seconds to account of lost packets because of non-keyframe packets skipped
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wayland = false;
|
bool wayland = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user