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.

[参考译文] AM5728:在 galRunTest2_DRM.c 中读取 DRM 缓冲区

Guru**** 2568585 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/595714/am5728-reading-drm-buffer-in-galruntest2_drm-c

主题中讨论的其他器件:AM5728

您好!

我想读取图像格式缓冲区而不是 BMP 文件。

我使用"create_target_surface"函数中的示例代码创建缓冲区。

我使用 OMAP-BO_MAP 获取缓冲区的虚拟地址。

然后、使用 SDK 包装缓冲区
gcoSURF_construct: gcvPOOL_default 更改为 gcvPOOL_user
gcoSURF_SetBuffer:设置 缓冲区的虚拟地址

当我使用"gcoSURF_Lock"时、打印出以下错误消息:

失败:gcvSTATUS_memory_unlocked

那么 、我该怎么做呢?

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

    这是什么处理器? 哪款 SDK?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨、Biser
    我的处理器是 AM5728
    我使用此示例 :git.ti.com/.../ti-gc320-test
    我在这个主题中找到了 galRunTest2_DRM.c: e2e.ti.com/.../565351

    此致、
    Bossun
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bossun、
    此应用程序使用 DRM 缓冲区创建目标(目标)表面、而动态库中的源表面使用其内部存储器创建。 从语句中,看起来您也在尝试使用 DRM 缓冲区创建源曲面。 正确吗?
    我已经尝试过这种方法、并且已经成功、源曲面和目标曲面都是 DRM 缓冲区。

    您能否与我分享您尝试修改的单位中的哪个用例? 有哪些变化?

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

    大家好、 Ramprasad

    感谢您的回复。

    您能否发布您的代码或告诉我您的步骤?

    以下 是我在 init()函数中的部件代码:

    gcmONERROR (gcoSURF_construct(t2d->runtime ->hal、
    t2d->srcWidth、
    t2d->srcHeight、
    1、
    gcvSURF_bitmap、
    t2d->srcFormat、
    gcvPOOL_user、
    &t2d->srcSurf);
    
    gcmONERROR (gcoSURF_GetSize (t2d->srcSurf、
    _t2d->srcWidth、
    &t2d->srcHeight、
    gcvNULL));
    
    //更改作者:Bossun Wang
    printf ("t2d->srcWidth:%d\n"、t2d->srcWidth);
    printf ("t2d->srcHeight:%d\n"、t2d->srcHeight);
    
    unsigned long phys =~0U;
    
    gcmONERROR (gcoSURF_SetBuffer (t2d->srcSurf、
    gcvSURF_bitmap、
    t2d->srcFormat、
    t2d->srcStride、
    SRC_vaddr、
    PHY);
    
    gcmONERROR (gcoSURF_Lock (t2d->srcSurf、
    _t2d->srcPhysAddr
    、&t2d->srcVirtAddr); 

    此致、

    Bossun

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bossun、
    代码看起来正常。 确保在 gcoSURF_constructure 之前初始化 t2d->srcWidth、srcHeight、srcFormat 和 srcStride。
    在 gcosurf_Lock()之前,我调用 gcosurf_SetWindow(),也是针对目标曲面完成的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、 Ramprasad、
    感谢您的指导。

    我使用了 gcoSURF_SetWindow(),它工作正常。

    但我将 src 格式设置为 gcvSURF_YUY2,以下代码在 Render ()函数中是错误的:

    //开始渲染序列
    gcmONERROR (gco2D_SetColorSourceEx (egn2D、
    t2d->srcPhysAddr、
    t2d->srcStride、
    t2d->srcFormat、
    gcvSURF_0_degm、
    t2d->srcWidth、
    t2d->srcHeight、
    gcvFALSE、
    gcvSURF_不透明、
    0)); 

    渲染(258)失败:gcvSTATUS_not _supported

    如何解决?

    此致、

    Bossun

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bossun、
    仅 RGB 格式支持 gcod2D_SetColorSourceEx。 如果您的格式是非 RGB 格式,或者通常可以使用通用 API gco2D_SetGenericSource()
    请参阅使用此 API 的示例

    Ramprasad