From 048b8d21ecbd1168ff8e033b12cbfd66bba0127c Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 15 Jul 2024 18:57:33 +0200 Subject: Add support for desktop portal capture (-w portal) --- TODO | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'TODO') diff --git a/TODO b/TODO index eff74fd..b4dae18 100644 --- a/TODO +++ b/TODO @@ -84,7 +84,9 @@ Make it possible to select which /dev/dri/card* to use, but that requires opengl Support intel display framebuffer compression (I915_FORMAT_MOD_Y_TILED_CCS modifier) (and other power saving modifiers, see https://trac.ffmpeg.org/ticket/8542). The only fix may be to use desktop portal for recording. This issue doesn't appear on x11 since these modifiers are not used by xorg server. This issue only appears on some intel iGPUs, such as Intel Iris Xe, see: https://github.com/dec05eba/gpu-screen-recorder-issues/issues/1. -Intel dedicated GPU (intel arc a750) can have a similar issue, but it's not related to compression. In that case the modifier is I915_FORMAT_MOD_4_TILED. + The compression format is described in libdrm/drm_fourcc.h (I915_FORMAT_MOD_Y_TILED_CCS comment). The main surface is plane 0 while plane 1 contains the compression data. + The compression data (plane 1) is 1024x512 pixels and matches the main surface (plane 0) and it's divided into 128Bx32 blocks, + but the data is actually QWORD (bytes) so it's in 64Bx64 tiles (?). Test if p2 state can be worked around by using pure nvenc api and overwriting cuInit/cuCtxCreate* to not do anything. Cuda might be loaded when using nvenc but it might not be used, with certain record options? (such as h264 p5). nvenc uses cuda when using b frames and rgb->yuv conversion, so convert the image ourselves instead.- @@ -148,4 +150,6 @@ Use MapTexture2DINTEL for software encoding on intel. To test vulkan encode on amd set the environment variable RADV_PERFTEST=video_encode before running a program that uses vulkan encode (or queries for it, such as vulkaninfo). -Support hevc/av1 for software encoder and hdr support at the same time. Need support for yuv420p shader for that. Use libx265 for hevc and libsvtav1 for av1 (libsvtav1 is the fastest software av1 video encoder). Also support vp8/vp9 since we are not limited by hardware. \ No newline at end of file +Support hevc/av1 for software encoder and hdr support at the same time. Need support for yuv420p shader for that. Use libx265 for hevc and libsvtav1 for av1 (libsvtav1 is the fastest software av1 video encoder). Also support vp8/vp9 since we are not limited by hardware. + +Cleanup pipewire code and add more error checks. \ No newline at end of file -- cgit v1.2.3