ST意法半导体
直播中

张丽

7年用户 1501经验值
私信 关注
[问答]

在stm32MP1上使用3D GPU代替DMA2D是否可行?

我想知道在 STM32MP1 上使用 3D GPU 代替 DMA2D 是否可行?








回帖(1)

李椰潭

2023-1-30 09:56:24
有可能,是的。这不是我们尝试过的东西,因为 MP1 有点超出我们的范围。当然,您可以在 M4 上运行 TouchGFX。我只做了一些初步测试,但由于这不是我们的优先事项,所以我没有花时间在这上面。
为了能够将它与当前的 TouchGFX 实现一起使用,您必须使用使用 BlitOp 的当前 DMA 接口。查看 BlitOp 类型。它指定了 src、dst、步骤和循环等。


  • struct BlitOp
  • {
  •     uint32_t operation;     ///< The operation to perform @see BlitOperations
  •     const uint16_t* pSrc;   ///< Pointer to the source (pixels or indexes)
  •     const uint16_t* pClut;   ///< Pointer to the source CLUT entires
  •     uint16_t* pDst;         ///< Pointer to the destination
  •     uint16_t nSteps;        ///< The number of pixels in a line
  •     uint16_t nLoops;        ///< The number of lines
  •     uint16_t srcLoopStride; ///< The number of bytes to stride the source after every loop
  •     uint16_t dstLoopStride; ///< The number of bytes to stride the destination after every loop
  •     colortype color;        ///< Color to fill
  •     uint16_t alpha;          ///< The alpha to use
  •     uint16_t srcFormat;      ///< The source format @see Bitmap::BitmapFormat
  •     uint16_t dstFormat;      ///< The destination format @see Bitmap::BitmapFormat
  • };

对于任何特定功能,例如旋转和缩放,您可以创建自己的自定义小部件,然后在直接挂接到 GPU API 的 ::draw() 函数中实现这些功能。但是你需要想出一种机制来保护帧缓冲区,就像我们为 DMA2D 所做的那样。这在 Linux 上有点不同。更不用说您需要一个新的定制 HAL 才能在 Linux 上运行。我有一个在 Raspberry pi 上运行的,但它是非常非官方的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分