Linux应用程序开发笔记:搭建Mali400/450-OpengGL ES开发环境(闭源模式)

本文主要是介绍Linux应用程序开发笔记:搭建Mali400/450-OpengGL ES开发环境(闭源模式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟实境、科学可视化程序和电子游戏开发。

OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。

ARM&Mali是一款高端GPU,将图形IP视觉娱乐变为现实,Mali属于高端GPU,在市场占安卓智能手机30%以下,可与PowerVRSGX系列GPU对比。

目标

搭建基于Allwinner-H5(Cotex-A53)+Mali400/450的OpenGL开发环境

搭建OpenGL环境(fbdev模式)

1、编译linux内核:git clone -b orange-pi-5.0 https://github.com/megous/linux.git

说明:

1)主线内核从4.19版本开始 sun50i-h5.dtsi 中增加了mali450描述

2)主线内容从5.0版本开始 sun50i-a64.dtsi 中增加了mali400描述

3)其它版本内核请自行增加 dts 中关于mali的描述

2、编译mali.ko:git clone https://github.com/mripard/sunxi-mali.git

说明:

1)根据仓库描述进行编译,在你的文件系统 modules 中会产生 mali.ko 模块

3、拷贝user-space(基于mali实现和编译的OpengGL)到你的文件系统 /usr/lib 和 /usr/include 中:git clone https://github.com/bootlin/mali-blobs.git

4、下载测试程序:git clone https://github.com/avafinger/mali-fbdev-stress-test-tools.git

5、运行测试程序:glmark2-es2-fbdev,顺利的话应该就有图形显示了

 

总结

以上只是正常搭建环境的步骤,但是经过我的测试发现 glmark2-es2-fbdev 会报错,所以是闭源的user-space可能有问题,希望后续维护人员能够修复

 

附采用r5p0版本测试可显示部分内容,依旧是不能完全正确显示:

kernel(需要自己增加关于mali的dts):git clone -b orange-pi-4.14 https://github.com/megous/linux.git

mali(这里有增加mali dts的补丁):git clone https://github.com/Jeepgoing/sunxi-mali.git

user-space:git clone https://github.com/Jeepgoing/mali-blobs.git

 

参考资料:

https://bootlin.com/blog/mali-opengl-support-on-allwinner-platforms-with-mainline-linux/

https://forum.armbian.com/topic/4467-orange-pi-pc2-h5-mali-blob/

https://github.com/mripard/sunxi-mali/issues/56

 

2019-02-19

这篇关于Linux应用程序开发笔记:搭建Mali400/450-OpengGL ES开发环境(闭源模式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957587

相关文章

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可