1961398_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1961398_ja-JP

1961398_ja-JP

GStreamer dmabufheaps の問題

カーネル 6.6 に切り替えた後、GStreamer を実行できません。

dmaに問題があると思います。

imx8mp:~$ GST_DEBUG=*dma*:5 gst-launch-1.0 videotestsrc ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.072033375   889 0xffff88000b70 WARN       dmabufheapsmemory gstdmabufheaps.c:98:gst_dmabufheaps_allocator_mem_init: Could not open dmabufheaps driver
0:00:00.072123500   889 0xffff88000b70 WARN       dmabufheapsmemory gstdmabufheaps.c:119:gst_dmabufheaps_allocator_obtain: No allocator named dmabufheapsmem found

(gst-launch-1.0:889): GStreamer-CRITICAL **: 06:27:14.679: gst_buffer_pool_config_set_allocator: assertion 'allocator != NULL || params != NULL' failed
0:00:00.077851750   889 0xffff88000b70 WARN       dmabufheapsmemory gstdmabufheaps.c:119:gst_dmabufheaps_allocator_obtain: No allocator named dmabufheapsmem found

(gst-launch-1.0:889): GStreamer-CRITICAL **: 06:27:14.684: gst_buffer_pool_config_set_allocator: assertion 'allocator != NULL || params != NULL' failed

(gst-launch-1.0:889): GStreamer-CRITICAL **: 06:27:14.685: gst_object_unref: assertion 'object != NULL' failed
0:00:00.078302375   889 0xffff88000b70 DEBUG              wl_dmabuf gstwllinuxdmabuf.c:141:gst_wl_linux_dmabuf_construct_wl_buffer: Creating wl_buffer from DMABuf of size 307200 (320 x 240), DRM fourcc AR24

(gst-launch-1.0:889): GStreamer-Allocators-CRITICAL **: 06:27:14.685: gst_dmabuf_memory_get_fd: assertion 'gst_is_dmabuf_memory (mem)' failed
error marshalling arguments for add: dup failed: Bad file descriptor
Error marshalling request: Bad file descriptor
0:00:01.078829000   889 0xffff88000b70 ERROR              wl_dmabuf gstwllinuxdmabuf.c:217:gst_wl_linux_dmabuf_construct_wl_buffer: zwp_linux_buffer_params_v1 time out
0:00:01.078882000   889 0xffff88000b70 ERROR              wl_dmabuf gstwllinuxdmabuf.c:225:gst_wl_linux_dmabuf_construct_wl_buffer: can't create linux-dmabuf buffer
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:02.173458875
Setting pipeline to NULL ...

私はwaylandディスプレイサーバー、weston(v 12.0.4)を使用していますコンポジターおよびgStreamer v1.24.0として

VPU、GPU、DMA、...の間でバージョンが一致していませんか?どうすれば確認できますか?出力 abov には、「dmabufheaps ドライバーを開けませんでした」という警告が表示されます。どのドライバーを意味していますか?このドライバーは誰が提供しますか?

実際、私はグラフィックやマルチメディアのものにmeta-imxレイヤーを使用しています。もしかしたら、それは権利の問題かもしれません。
私はこの問題を調査するアイデアが恋しいです。ですから、どんな提案でもいただけるとありがたいです。

日時:GStreamer dmabufheapsの問題

名前変更の理由がわかりました。カーネルコンフィグCONFIG_CMA_SIZE_MBYTESが

devicetree の linux,cma 項目のサイズを指定すると、新しいカーネルはデバイスの名前を "Reserved" に変更します。
 
私の場合、カーネル構成は次のとおりです。

CONFIG_CMA_SIZE_MBYTES=320

 
デバイスツリー (imx8mp.dtsi):

resmem: reserved-memory {
   #address-cells = <2>;
   #size-cells = <2>;
   ranges;

   ocram: ocram@900000 {
      no-map;
      reg = <0 0x900000 0 0x70000>;
   };

/*
*    Memory reserved for optee usage. Please do not use.
*    This will be automaticky added to dtb if OP-TEE is installed.
*    optee@56000000 {
*       reg = <0 0x56000000 0 0x2000000>;
*       no-map;
*    };
*/
   /* global autoconfigured region for contiguous allocations */
   linux,cma {
      compatible = "shared-dma-pool";
      reusable;
      size = <0 0x3C000000>;
      alloc-ranges = <0 0x40000000 0 0xC0000000>;
      linux,cma-default;
   };
...

0x3C000000は960MiBです。つまり、カーネル構成からは320MiBを超えていました。サイズを0x14000000に変更した後、/dev/dma_heapのデバイス名は、linux,cmaおよびlinux,cma-uncachedで期待どおりになりました。

日時:GStreamer dmabufheapsの問題

私はいくつかの調査を行い、名前が変更された2つのデバイスがあることがわかりました。

/dev/dma_heap/linux,cma は /dev/dma_heap/reserved と呼ばれるようになりました

/dev/dma_heap/linux,cma-uncached は /dev/dma_heap/reserved-uncached という名前になりました

私は古い名前でこの新しいデバイスへの2つのシンボリックリンクを作りました、そして今ではgstreamerはうまく機能します。

デバイスの名前が変更されたのはなぜですか?そして、どうすればこれを変更できますか?

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 08:35 PM
Updated by: