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:SGX544渲染到缓冲器

Guru**** 2551640 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/585234/am5728-sgx544-rendering-to-buffer

器件型号:AM5728

我希望获得内存的双缓冲渲染以获得读取结果、并尝试后续步骤:

1) 1)创建 OMAP-bo 并将其获取 dmabuf

2) 2)从 dmabuf 创建 eglImage

3) 3)使用限制数据创建纹理

4) 4)创建带纹理附件的帧缓冲区

两个错误中的问题:

1) 1)带 EGL_Linux_DMA_BUF_EXT 的 eglCreateImageKHR 只允许来自测试格式列表的 DRM_FORMAT_YUV 格式:

       DRM_FORMAT_C8、
       DRM_FORMAT_R8、
       DRM_FORMAT_RG88、
       DRM_FORMAT_GR88、
       DRM_FORMAT_XRGB4444、
       DRM_FORMAT_XBGR4444、
       DRM_FORMAT_RGBX4444、
       DRM_FORMAT_BGRX4444、
       DRM_FORMAT_ARGB4444、
       DRM_FORMAT_ABGR4444、
       DRM_FORMAT_RGBA4444、
       DRM_FORMAT_BGRA4444、
       DRM_FORMAT_RGB565、
       DRM_FORMAT_BGR565、
       DRM_FORMAT_RGB888、
       DRM_FORMAT_BGR888、
       DRM_FORMAT_XRGB8888、
       DRM_FORMAT_XBGR8888、
       DRM_FORMAT_RGBX8888、
       DRM_FORMAT_BGRX8888、
       DRM_FORMAT_ARGB8888、
       DRM_FORMAT_ABGR8888、
       DRM_FORMAT_RGBA8888、
       DRM_FORMAT_BGRA8888、
       DRM_FORMAT_UYVY、
       DRM_FORMAT_VYUY、
       DRM_FORMAT_YUV、

对于此格式、eglCreateImageKHR 返回 EGL_BAD_MATCH 错误

该扩展允许使用任何 RGB 或灰度格式?

2) 2)当我创建 YUYV EGL 图像时、将其附加到纹理、创建帧缓冲剂尝试将纹理附加到它有错误:

PVR:(错误):ComputeFrameBufferCompleteness:未知纹理格式[0、]
分段故障(转储内核)

它是呈现到某些缓冲区的正确方法还是存在更好的方法?

我使用 ti-processor-sdk-linux-am57xx-evm-03.02.00.05

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Konstantin、

    在离屏缓冲区上渲染的正确方法是使用 EGL 像素图表面。 您可以尝试以下步骤:

    1.创建一个 OMAP-bo

    2.从 OMAP-bo 获取 dmabuf FD  

    3.使用 dmabuf fd 创建 GBM_bo

    4.使用 GBM_bo 创建 eglPixmapSurface

     -您可以在像素图曲面上使用 eglMakeCurrent

    -您需要调用 eglWaitGL 而不是 eglSwapBuffers

    -您可以使用2个 OMAP BOS 进行双缓冲、并每帧循环一次像素图。

    请告诉我这些步骤是否有助于您实现所需的目标。

    此致、
    Subhajit

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

    调用 eglCreatePixmapSurface 时、需要将 EGLConfig 传递给它、但 EGL_surface_type = EGL_PIXMAP_BIT 的 eglChooseConfig 返回无可用配置

    我在并行线程中看到的相同问题:


    e2e.ti.com/.../547595


    e2e.ti.com/.../547804


    我是否可以从汽车 SDK 复制 EGL 库? DRA 看起来接近 Sitara

    "使用 dmabuf fd 创建 GBM_bo"下的含义是什么? GBM_BO_IMPORT? GBM_BO_IMPORT (disp_kmsc->gbm.dev,GBM_BO_IMPORT_FD,res->dmafd,GBM_BO_USE_RENDERING)返回0