问题标签 [mali]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
202 浏览

three.js - 使用 Mali GPU 的 Three.js 中对象的奇怪抖动

我有一个奇怪的问题一直困扰着我很长一段时间,这个问题最好通过一个简短的视频来解释:

视频

如您所见,当您移动相机时,场景中的对象会出现抖动,但当相机不移动时,也会时不时地发生类似的事情。这让我发疯了一段时间。该视频是在带有 TinkerOS 的 Tinkerboard 上拍摄的,但同样的问题也出现在带有 FlintOS 的 Tinkerboard 上。

在普通笔记本电脑上没有问题,一切进展顺利。我不确定这是否是一个错误,或者是否是看到硬件差异的预期行为,所以我希望有人能对此有所了解。

这是来自 Tinkerboard 的 WebGL 报告: 在此处输入图像描述

这是我笔记本电脑上的 WebGL 报告: 在此处输入图像描述

显然存在差异,但我不知道这些差异是否可以解释这种行为。

谁能澄清一下?

谢谢!

0 投票
1 回答
140 浏览

c++ - ComputeLibrary CLTensor 数据传输

我正在将 ARM ComputeLibrary 集成到一个项目中。

它不是我熟悉其语义的 API,但我正在研究文档和示例。

目前,我正在尝试将 a 的内容复制std::vector到 a CLTensor。然后使用 ARMCL GEMM 操作。

我一直在构建一个 MWE,如下所示,目的是让矩阵乘法工作。

要从标准 C++ 获取输入数据std::vector,或者std::ifstream,我正在尝试基于迭代器的方法,基于文档中显示的此示例

但是,我不断收到段错误。

源代码中有一个使用sgemm 的示例CLTensor,这也是我从中汲取灵感的地方。但是,它从 Numpy 数组中获取输入数据,因此到目前为止并不相关。

我不确定在 ARMCL 中是否CLTensorTensor不相交的方法。但我觉得他们是一个共同的界面ITensor。尽管如此,我还没有找到一个等效的例子来CLTensor代替Tensor这个基于迭代器的方法。

您可以在下面看到我正在使用的代码,该代码在第 64 行 ( *reinterpret_cast..) 处失败。我不完全确定它执行的操作是什么,但我的猜测是我们的 ARMCL 迭代器input_it是递增n * m的,每次迭代都会CLTensor将该地址处的值设置为相应的输入值。 reinterpret_cast只是为了让类型一起玩得很好?

我认为我的 Iterator 和 Window 对象没问题,但不能确定。

0 投票
1 回答
327 浏览

android - Mali GPU 上的 HALF_FLOAT 问题

我的用户报告了在某些具有 Mali GPU 的设备(华为荣耀 9 和三星 Galaxy S10+ 分别带有 Mali G71 和 G76)上渲染半浮点数据的问题。

在 Adreno 和 PowerVR GPU 上正常工作时,它会导致这些设备上的渲染出现乱码。

我已经仔细检查了代码,它似乎是正确的:

代码似乎可以正确检测 OpenGL ES 3 并使用GLES30.GL_HALF_FLOAT.getGL_HALF_FLOAT()

示例着色器代码:

0 投票
2 回答
125 浏览

linux-kernel - 在 Linux 内核中获取帧计数

我试图找到一个变量/一些指标,可以帮助我计算在 Linux 内核的 Midgard GPU 驱动程序中呈现的实际帧数。

在用户级程序上测试我的算法时,我使用了一个系统调用(如下所示),它从 SurfaceFlinger 获取帧计数并将该值存储到一个文件中,稍后我在用户级程序中读取该文件。

注意:我正在尝试创建一个使用此信息的 dvfs 调节器,但我似乎无法在 Midgard 驱动程序中找到访问它的方法。我只能访问 GPU 内核的“利用率”,但这并不总是与帧数匹配。关于如何解决这个问题的任何想法?

0 投票
0 回答
285 浏览

opengl-es - 配置 gstreamer 以使用 openGLES 而不是 openGL

我的目标使用 Rockchip Mali GPU,它支持 OpenGLES,但不支持 OpenGL。我的目标是从 buildroot 构建的,我的应用程序需要简单的 GPU 转换,gl 插件(来自 gstreamer-plugins-bad)将非常有用。不幸的是,这个gl插件需要opengl,我之前提到过,Mali不支持。

有没有办法配置 gl 使用 OpenGLES?或者是否有一个模板/github 可以带入我的项目,以便在我的 gstreamer 管道中进行 GPU 转换?

我已经尝试过 opengl 插件,但是没有 GPU 支持,软件实现非常慢且处理器密集。

最终,我希望有一个简单实现的插件,如下所示:

0 投票
1 回答
437 浏览

opengl-es - 如何使用 FBO 提高 glTexImage2D 性能

我实现了一个在 mali-400 gpu 上运行的 opengl-es 应用程序。我从相机中抓取 1280x960 RGB 缓冲区并使用 glTexImage2D 在 gpu 上渲染。

然而,对于 1280x960 分辨率帧, glTexImage2D 调用大约需要 25 毫秒。它对 pCameraBuffer 进行了额外的内存复制。

1)有什么办法可以提高glTexImage2D的性能?2) FBO 会有帮助吗?如何使用帧缓冲区对象进行渲染。我发现很少有 FBO 示例,但我看到这些示例在最后一个参数(数据)中将 NULL 传递给 glTexImage2d。那么如何使用 FBO 渲染 pCameraBuffer 呢?

下面是为每个相机帧运行的代码。

0 投票
1 回答
214 浏览

opengl-es - OpenGL ES 3.0 矩阵/数组步幅

我有这个 UBO:

在 OpenGL 桌面上,大小为 3*Vec4*256 元素(总大小 12288 字节) - 这是我所期望的 = OK

但是在我的手机上运行时,OpenGL ES 3.0,大小为 4*Vec4*256 个元素(总大小 16384 字节)= Not OK

我认为std140应该保证所有平台上的布局相同?

那么问题是什么以及如何解决呢?

我需要更小的尺寸以获得更快的性能(因为传输带宽更小)

在桌面、Apple iOS 上工作正常,但在 2 个 Android ARM Mali GPU 上失败,这可能是 ARM Mali 驱动程序中的错误

0 投票
1 回答
76 浏览

android - 大型合并网格的低 FPS

我尝试渲染一组 3d 模型。我将网格合并为一个具有 200k 个顶点的网格。具有位置、法线和纹理坐标属性。我使用VBO但不使用索引缓冲区对象。我只做 2 个渲染调用(一个用于阴影)。我用libgdx.

我希望我的弱点上的合并网格具有良好的 FPS Galaxy j3 (2016),但我得到了 13 FPS。在 Galaxy s8 和 nexus 5 上,我得到了 60 FPS。

所以有什么问题?
Galaxy j3 对于 200k 顶点来说是不是太弱了?
或者 200k 顶点是太大的网格?

Galaxy J3 特性:
CPU:展讯 SC9830I Quad,1.5 ГГц。
内存:1.5 Gb。
GPU:ARM Mali-400 MP2。

0 投票
1 回答
737 浏览

opengl-es - 使用 Mali-400 GPU (OpenGL ES 2.0) 进行通用计算?

我正准备购买一用于基本(基于 CPU)并行计算的SOPINE A64 模块,我注意到这些模块也有 GPU。不难发现Mali-400与OpenCL兼容,但我无法确认是否能够使用 OpenGL 接口进行通用 GPU 编程。我不需要做任何花哨的事情;我只想知道是否可以将一些矩阵繁重的任务卸载到 GPU。

我可以在 OpenGL 中找到有关 GPGPU 编程的有用教程,但它假定访问 GLUT,这在 OpenGL ES 2.0 上不可用,我在 SE 上找到的最相关的答案是关于在iOS上做我想做的事,但不是相同的 GPU。

是否像使用 GLUT 之外的其他东西来设置 OpenGL 环境然后按照链接教程一样简单?还是我需要注意其他硬件限制?

0 投票
0 回答
51 浏览

computer-vision - 针对低内存集成设备(例如 arm 处理器/GPU)优化 GPU 卷积?

我希望在 arm Mali GPU 上实现卷积并希望它针对速度和内存进行优化?最好的方法是什么?基于 GEMM 的 MCMK 卷积不适合,因为它们会占用大量内存。此外,GPU 上的直接实现比相应的 CPU 版本要慢得多。在时序计算中应考虑到内存重塑的任何时间。