This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM5728:2D GPU 和3D GPU 之间的表面共享

Guru**** 2589275 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/590923/linux-am5728-surface-sharing-between-2d-gpu-and-3d-gpu

器件型号:AM5728

工具/软件:Linux

你(们)好

在      TI 的帮助下、我开发了 blit (compose) 2D surface (DRM 存储器的 gcoSURF_SetBuffer (带 Ducati (IVA-HD)的解码 NV12)和2DGPU (GC320)上的2D surface (ARGB)。 DRM 存储器(使用 Ducati (IVA-HD)解码的 NV12)应使 OMAP-BO_WC 具有 OMAP-BO_WC 新功能。

没关系。

我需要在 2DGPU (GC320)上为3DGPU (GBM 库)和2D 表面(ARGB)创建(组合)渲染表面。

您能否支持2D GPU 将 gcoSURF_SetBuffer 与3DGPU (GBM lib)渲染表面的 vaddr 结合使用?

REQ.Handle = GBM_BO_GET_Handle (lpBO).u32;  //呈现*/

drmCommandWriteRead (m_DrmDeviceFD、DRM_OMAP_GEM_INFO、&req、sizeof (req));

(笑声)

mmap (0、大小、PROT_READ | PROT_WRITE、MAP_SHARED、m_DrmDeviceFD、 偏移量); /* OK */

(笑声)

2DGPU 上的 GcoSURF_SetBuffer 会像下面一样死亡。

extra drivers\ti-gc320-driver-5.0.11.p7\hal\os\linux\kernel\gc_hal_kernel_os.c

gckOS_MapUserMemory()
   在 gckOS OS 操作系统中、
   在 gceCORE 内核中、
   在 gctPOINTER 存储器中、
   在 gctuint32物理层中、
   在 gctSIZE _T 大小中、
   Out gctPOINTER *信息、
   输出 gctuint32_ptr 地址
   )

(笑声)

 PgD_t * PgD = PgD_OFFSET (Current->mm、逻辑);

 pud_t * pud = pud_offset (PgD、逻辑);

[210.379759] 无法处理虚拟地址400005b0处的内核分页请求
[210.387011] PgD = d1311f80
[210.389770] [400005b0]* PgD=00000000
[210.39332] 内部错误:Oops:205 [#1]抢占 SMP ARM

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    我发现 GBM_BO_IMPORT_FD 有助于解决我的问题。
    GBM 库 API 非常好。
    非常感谢。