问题标签 [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 回答
1394 浏览

android - 三星 Galaxy SII (Mali-400 MP) 上的 glGenerateMipmap() 非常慢

我目前正在使用 Android NDK 和 OpenGL ES 2.0 在三星 Galaxy SII (ARM Mali-400 MP) 上做一些 GPGPU。为此,我需要从已通过 FBO 渲染的纹理生成 mipmap。不幸的是 glGenerateMipmap() 在设备上似乎很慢。为 512x512 RGBA8888 纹理生成 mipmap 大约需要 90 毫秒。由于我也在其他 Android 设备上尝试过相同的代码,而这个功能的运行速度要快得多(大约 2 毫秒),这种减速确实让我感到困惑。我在这里做错了什么或遗漏了什么吗?任何人都可以提供在带有 ARM Mali GPU 的设备上工作的这种情况的示例代码吗?

以下是我的代码的相关部分:

0 投票
2 回答
524 浏览

styles - 三星 Galaxy S2 或三星 Nexus i9250 进行测试?

由于我想为 ICS 开发,我想购买 4.0.3 智能手机来测试我的应用程序。我不想发布我只用模拟器测试过的应用程序(我猜曾经开发过 j2me 应用程序的人知道为什么......)。

我必须在 S2 和 Nexus i9250 之间做出选择。S2 似乎更强大,很受欢迎,但它不是最初的 ICS 4.0.3 风格。Nexus i9250 操作系统是纯安卓 ICS,价格也便宜一些。

android 应用程序在 S2 上看起来会有所不同吗?我在谈论诸如 TimePickers 之类的小部件。

真诚的,沃尔芬

编辑:

主要问题是:TouchWiz 会以任何方式影响我的应用程序吗?

0 投票
1 回答
520 浏览

opengl-es-2.0 - HeightMap : gltexsubimage2d VS 顶点属性

我的地形有一个动态高度图,几乎每一帧都会修改,我应该使用 gltexsubimage2d 和纹理作为高度图还是每帧更新顶点缓冲区而不是创建 vbo?什么方法应该更快?我知道我正在丢失通过 vbo 发送数据的硬件双线性滤波器,但根据谷歌 gltexxubimage2d 会导致移动设备出现问题,而且看起来我不能逐帧使用它,因为它很慢。

实际上问题应该是:在纹理中将数据发送到 gpu 内存是否比使用顶点属性更快?它是否依赖于实现?是否有任何身体在 android 的 opengl 中实现了纹理更新,例如使用 quad 作为视频播放画布?我知道这个问题在像 mali-400 或 tegra3 这样的新设备上可能是无稽之谈,这两种方法对我来说性能应该足够了,但我希望与 adreno200 或 sgx535 兼容。

0 投票
1 回答
995 浏览

android - OpenGL ES2:片段着色器中使用 Mali GPU 的多个纹理

我目前正在尝试让多个纹理在 android 上工作(使用一个片段着色器)。它在我的 Nexus 4 上运行良好,但在我测试过的所有三星设备上,它根本不显示矩形。问题似乎是在片段着色器代码中调用了两次 texture2d:

uTexture在这个着色器中,我使用法线贴图 ( )扭曲纹理 ( refractTexture)。我已经尝试使用正确的(不是计算的)坐标,gl_FragColor一旦我删除vec4 bumpTex = 2.0 * texture2D(refractTexture, vRefTexCoordinate) - 1.0;它就会出现在设备上。

任何提示都会有所帮助。

这里要求的是我用来设置纹理的 Java 代码:

以及顶点着色器的C代码:

0 投票
1 回答
2873 浏览

android - 在 MALI 400 上使用 Android Videoplayer 获取 SurfaceTexture 时出现问题

我编写了一个应用程序,它基本上使用此处许多帖子中的代码将视频渲染为纹理。我猜原件来自一些 nVidia 示例 (VideoSurfaceView) 在这里找到:Using SurfaceTexture in Android

这个例子在移动设备和平板电脑上都能正常工作——两者都基于 Tegra。然后,我在基于 MALI 400 的 android 系统(Minix Neo5)上尝试了相同的代码,我可以看到视频播放,但主要是黑屏,上面有一些垃圾(只有 3 或 4 行)

我尝试使用 OpenGL ES 跟踪器检查从 SurfaceTexture 复制回纹理本身的内容,但看起来跟踪器无法正确显示它(无论是在 tegra 系统上还是在 tegra 设备上。请注意,我没有不会出现任何 OpenGL 错误或任何警告。看起来一切正常。

如果将任何内容复制到 TEXTURE_EXTERNAL ,是否有任何其他工具可以告诉我怎么办?所有 TEXTURE_2D 在示踪剂上都可用。

我在 MALI 系统上注意到的一件奇怪的事情是它根本无法播放高清视频。我的视频 1280x720 在调试器上报告他们正在使用 SoftwareRenderer。也许这就是为什么帧没有正确复制到将用作纹理的 OGL_IMAGE 的原因。

我想我需要更好地了解幕后发生的事情,但我预计会出现一个错误,告诉系统无法执行此操作,或者它应该可以正常工作,即使性能很差。也许这是 android 的修改版本,并且媒体播放器代码刚刚被破坏......

0 投票
1 回答
1285 浏览

linux-kernel - GPU驱动程序的性能测试工具开源Mali/UMP

我正在使用 ARMv7 电视板,具有板特定的 GPU 驱动程序 mali400x4(OpenGL ES 1.1、2.0 和 OpenVG 1.1)。我想知道任何测试项目套件来测试这个驱动程序的性能、压力、Lmbench。

0 投票
3 回答
6655 浏览

android - 优化重片段着色器的性能

我需要帮助优化以下一组着色器:

顶点:

分段:

着色器接收 2D 纹理,旨在在高分辨率 2D 表面(设备屏幕)上漂亮地缩放它。它是对 SABR 缩放算法的优化,以防万一。

它已经可以工作,并且在非常高端的设备(如 LG Nexus 4)上运行良好,但在较弱的设备上运行速度确实很慢。

对我来说真正重要的设备是带有 Mali 400MP GPU 的三星 Galaxy S 2 \ 3 - 使用此着色器的性能非常糟糕。

到目前为止,我已经尝试过:

  1. 消除变化(来自 ARM 的 Mali 指南的建议)- 做了微小的改进。
  2. 用我自己的覆盖 mix() 函数 - 没有好处。
  3. 将浮点精度降低到 lowp - 没有改变任何东西。

我通过计算渲染时间(eglSwapBuffers 之前和之后)来测量性能——这给了我一个非常线性和一致的性能测量。

除此之外,我真的不知道在哪里看或可以在这里优化什么......

我知道这是一个繁重的算法,我并不是在寻求关于使用哪些替代缩放方法的建议——我已经尝试了很多,这个算法给出了最好的视觉结果。我希望以优化的方式使用完全相同的算法。

更新

  1. 我发现如果我使用常量向量而不是依赖向量进行所有纹理提取,我会获得重大的性能提升,所以这显然是一个很大的瓶颈 - 可能是因为缓存。但是,我仍然需要进行这些提取。我玩了至少一些使用 vec2 变化的提取(没有任何混合),但它并没有改善任何东西。我想知道什么可能是有效轮询 21 个纹素的好方法。

  2. 我发现计算的主要部分是使用完全相同的一组纹素进行多次 - 因为输出至少按 x2 缩放,并且我使用 GL_NEAREST 进行轮询。至少有 4 个片段落在完全相同的纹素上。如果在高分辨率设备上缩放为 x4,则有 16 个片段落在相同的纹素上——这是一种很大的浪费。有没有办法执行额外的着色器通道来计算在多个片段之间不会改变的所有值?我考虑过渲染到额外的屏幕外纹理,但我需要为每个纹素存储多个值,而不仅仅是一个。

更新

  1. 尝试使用已知的布尔规则来简化布尔表达式 - 为我节省了一些操作,但对性能没有任何影响。

更新

  1. 考虑了一种将计算传递给顶点着色器的方法——只有一个“几何”可以创建我的全屏,但是在缩放之前有很多顶点对应于每个原始像素。例如,如果我的原始纹理是 320x200,而我的目标屏幕是 1280x800,则将有 320x200 个顶点均匀分布。然后,在这些顶点中进行大部分计算。问题是 - 我的目标设备(S2 \ S3)不支持顶点纹理采样。

更新

  1. 在 LG Nexus 4 与三星 Galaxy S3 上测量的性能表明,Nexus 4 的运行速度要快 10 倍以上。怎么会这样?这些是同一代、相同分辨率等的 2 台设备...... Mali 400MP 在某些情况下真的很糟糕吗?我敢肯定,与 Nexus 4 相比,有一些非常具体的东西使它运行得如此缓慢(但还没有找到)。
0 投票
1 回答
1026 浏览

embedded - Mali400 平台上的 OpenGL ES 2.0 程序失败

我正在使用 OpenGL ES 2.0 编写一个简单的纹理流渲染程序。该程序在台式机上运行,​​但在使用 Mali400 GPU 的嵌入式平台上失败。LCD 变黑,顶部几行闪烁。我不知道我的代码有什么问题。我尝试了其他一些可以的 OpenGL ES 2.0 程序,所以问题一定出在我的代码中。任何帮助将不胜感激。谢谢。

主程序

vert.glsl

碎片glsl

0 投票
1 回答
334 浏览

opengl-es-2.0 - GL_OES_vertex_half_float 和 OES_element_index_uint

我通过 glGetString(GL_EXTENSIONS) 检查了我的 OpenGL ES 2.0 实现不支持 GL_OES_vertex_half_float 和 OES_element_index_uint。我正在使用 MALI 400 MP。有什么办法可以同时恢复它们吗?

谢谢

0 投票
2 回答
5338 浏览

opengl - OpenGL人脸检测

我目前正在从事人员检测和计数项目。它基本上通过 USB 网络摄像头检测场景中的任何人,然后计算经过的人。目前,我的设置是:

  1. OpenCV 2.4.6,使用Haar方法检测人头(浮点处理)
  2. 带有 ARM A9 四核和 Mali 四核 GPU 的 ARM 板

不幸的是,处理时间不够快,每帧 70 - 100 毫秒(14 - 10 fps),因此不计算以正常速度或更快行走的人。瓶颈在于 OpenCV HaarDetection 方法,基本上每帧 90% 的处理时间都被进程消耗了。

我尝试使用除 Haar 之外的另一种模型,即基于整数处理的 LBP 模型,但到目前为止,我的 LBP 模型并不令人满意,我仍在努力创建新模型。此外,我尝试将 TBB 与 OpenCV 一起使用(在 OpenCV 中本地实现多线程),但不知何故导致 Odroid 崩溃,如果我不使用 TBB,应用程序可以稳定运行。

我能想到的唯一优化是利用板上的 Mali GPU,使用修改后的 HaarDetection 重新编译 OpenCV 以利用一些 GPU 处理能力。我的问题是,这是否可以使用 OpenGL 库?我看到大多数 OpenGL 的例子是渲染图形,而不是处理图像。