问题标签 [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.
android - Android Mali-400 上的重复帧
在具有 Mali-400 GPU 的 Android 设备(三星 Galaxy S II、三星 Galaxy S3 Mini、三星 Galaxy Note II)上,屏幕会随机开始显示重复帧。
以下视频中从 0:51 到 1:01 的示例https://www.youtube.com/watch?v=5-p6Oy0BZmg
似乎新帧没有被渲染,而旧缓冲区中的内容又被显示出来了。游戏在重复的帧后面继续前进。
这不会发生在其他 GPU 上。
我读过有关使用 glFlush 或 glFinish 的信息,但 GLSurfaceView 在 onDrawFrame 之后执行 eglSwapBuffers 时会处理这个问题。
我读过关于 Mali-400 的怪癖,比如最好将变量用于纹理坐标,或者使用 lowp,但这无济于事。以下是供参考的着色器:
顶点着色器:
片段着色器:
我知道这些着色器不是最佳的,而且我正在沿着重现固定管道的道路前进。
渲染在一段时间后或在触摸屏幕后恢复正常。我认为触摸时恢复正常的唯一原因是我使用颜色编码来检测触摸的对象。我将图像渲染到后台缓冲区并从中获得 glReadPixels。然后,用正常的游戏图像覆盖后台缓冲区。
我不知道如何解决这个问题。
编辑
在遵循 Muzza 的建议后,我开始记录 GL 错误。glGetInteger 和 glBindBuffer 报告内存不足。
上面我说过一段时间后问题会自行解决。发生这种情况时,这些会出现在日志中:
x11 - 在没有 X11 的情况下构建 Mali 驱动程序
我尝试在没有 X11 和 Wayland 支持的情况下为香蕉 Pro 构建图像。但在 Mali 测试二进制编译期间出现以下错误:
当我查看0001-fix-test-build.patch
文件时,我看到以下几行
由于图像不支持 X11,我认为不应包含 X11 库。这不是真的吗?我怎么解决这个问题?
opengl-es - Mali 离线编译着色器在 OpenGLES2.0 应用程序中使用
我正在使用 Mali-400 GPU。我想使用 Mali 离线着色器编译器来编译顶点着色器和片段着色器。
我已经使用 ARM Mali 离线编译器编译了我的顶点着色器和片段着色器,步骤如下
malisc.exe --vertex -c Mali-400 -r r1p1 -d Mali-400_r5p0-01rel0 Vertex_shader.glsl -o vsshader.out malisc.exe --fragment -c Mali-400 -r r1p1 -d Mali-400_r5p0-01rel0 Fragm_shader.glsl -o fragment.out
我正在使用下面的代码,我的应用程序编译成功,但应用程序没有在我的目标上运行。将着色器二进制文件内容复制到一个静态数组中,并使用 glShaderBinary 对其进行签名。
我的代码片段:
运行此应用程序时,我在目标上收到一条消息:
信息:L0101 必须在链接之前编译所有附加的着色器
有人可以发布在 OpenGLES2.0 应用程序中使用离线编译着色器的示例代码。
loops - OpenCL 大全局大小或每个工作项的循环?
我正在学习 OpenCL 以实现一个相对复杂的图像处理算法,其中包括几个应该作为内核实现的子例程。
该实现旨在在 Mali T-6xx GPU 上进行。
我阅读了“OpenCL Programming by Example”一书和“Optimizing OpenCL kernels on the Mali-T600 GPUs”文档。
在书中的示例中,他们使用了一些全局大小的工作项,每个工作项在 for 循环中处理几个像素。
在文档中,内核是在没有循环的情况下编写的,因为内核中的每个工作项都有一次执行。
由于可能在 Mali T-600 GPU 上生成的工作项的最大全局大小为 256(对于简单内核而言)并且在大多数图像中显然有更多的像素需要处理,据我了解,没有循环的内核将生成尽可能多的工作项线程,直到工作项的全局大小完成执行内核,全局大小可能只是图像中的像素数量。那正确吗?这样它本身就是一种线程生成循环?
另一方面在书中。全局工作大小小于要处理的像素数量,但内核有循环使每个工作项在执行内核代码时处理几个像素。
所以我想知道哪种方法是编写图像处理内核或任何 OpenCL 内核的正确方法,以及在什么情况下一种方法可能比另一种更好,假设我正确理解了两种方法......
c - 在 Opencl 中,clGetDeviceIDs 返回错误 CL_OUT_OF_HOST_MEMORY
我有带 GPU 的firefly rk 3288 板,所以我想测试 openCL C 代码,编写非常基本的代码,可以读取平台信息如下:
输出 :
平台数 1:错误 = 0
clGetPlatformIDs 返回错误 = 0
平台信息 0:供应商 = ARM 名称 = ARM 平台版本 = OpenCL 1.1 错误 = 0
clGetDeviceIDs GPU 错误 -6
设备类型 ffffffdf:
MAX_WORK_ITEM_DIMENSIONS = 0,MAX_WORK_GROUP_SIZE = 0
device_id FOR Platform = 0 供应商 = ARM,设备名称 = ARM 平台,
设备版本 = OpenCL 1.1,驱动版本 = �*��
CL_DEVICE_PROFILING_TIMER_RESOLUTION = 0
最大计算单位 = 0
最大时钟频率 = 0
现在不明白为什么它的回报-6 (CL_OUT_OF_HOST_MEMORY)
?
为什么它无法在主机上分配 OpenCL 实现所需的资源或我错过的地方?
opengl-es - PowerVR 和 Mali GPU 芯片组的 opengl es 编程差异
我正在开发一个使用 OpenGL ES 创建 3D 应用程序的框架。我需要在 PowerVR 和 Mali GPU 芯片组中部署该框架。
在为不同的 GPU(PowerVR 和 Mali)编程 OpenGL ES 时是否需要注意任何方面?
android - 在底层了解 GUI 应用程序后台模式
我主要对 ARM Mali GPU 和 android 感兴趣,但这里的任何通用信息都会很有用。我只想知道我们在哪个级别知道“GUI 应用程序进入后台”这样的术语
- 平台API层面(即opengl之上的图形栈系统库)(一)
- 在opengl级别?(2)
- GPU(驱动程序和硬件级别)是否了解“应用程序进入后台”是什么?(3)
基本上,根据我的理解,它应该是(1)。当应用程序进入后台时应该发生什么,即可以丢弃哪些图形数据以及恢复需要哪些图形数据,是否有任何标准?还是每个平台都以自己的方式实现这一点?请,有人可以提供任何有用的信息或参考,说明必须保存来自低级图形上下文的哪些数据才能在 GUI 应用程序从后台返回到前台时恢复它?
android - Mali incompatible DDK on Android OpenCL
I was working on an Android app which uses OpenCL on the Galaxy Note 5 which has the Mali T-760 GPU. I pulled the library from the device and got the headers from the Mali OpenCL SDK and everything worked.
I'm trying to build and run the same app on the Galaxy S7 Edge which has the Mali T-880 GPU. I pulled the library from the device and used the same headers as before.
Now I get this error:
E/mali: ERROR: The DDK is not compatible with any of the Mali GPUs on the system. The DDK was built for 0x750 r0p1 status range [0..15], but none of the GPUs matched:
E/mali: /dev/mali0 detected as 0x880 r2p0 status 0
It's strange because I pulled the library from device itself and I tried the library from different locations too:
/system/lib/libOpenCl.so
/system/vendor/lib/libOpenCL.so
/system/vendor/lib/egl/libGLES_mali.so
In all cases I get the same error.
What is this DDK?
Where is it specified? In the headers? In the shared object?
What do I need to update in my app to make it work?
caching - 没有 L1 缓存可以有 L2 缓存吗?
我正在做一个关于Mali 450 GPU的项目。在图表中,我注意到只有一个 2 级缓存,根据我在课堂上学到的内容,这没有意义。据我了解,一级缓存始终是最接近和最小的缓存,因此应该将其标记为一级缓存。或者是否存在未在图表上标记的 1 级缓存?
另外,作为澄清的一个附带问题:二级缓存是否负责存储可以再次使用/引用的图像/视频数据?
arm - ARM Mali GPU 有独立于 Linux 内核的抽象层吗?
在发布其 Videocore IV 规范之前,Broadcom 发布了一个独立于操作系统的二进制 blob。ARM Mali GPU 是否具有独立于 Linux 内核且具有公共接口规范的抽象层?