成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

RK3568開發(fā)板上應用Mesa 3D

系統(tǒng) OpenHarmony
OpenHarmony最新版本的L2標準版圖形子系統(tǒng)相比之前版本有著非常大的改動,使用了全新設計的框架,并使用Render Service替換了原來的Weston。

??想了解更多關于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎軟件社區(qū)??

??https://ost.51cto.com??

前言

本次采用的開發(fā)板為揚帆“競”開發(fā)板,揚帆“競”采用瑞芯微RK3568(Cortex-A55)四核64位超強CPU,搭載OpenHarmony最新操作系統(tǒng),主頻最高達2.0GHz。采用 Mali-G52 GPU,支持4K、H.265/H.264視頻解碼。

OpenHarmony最新版本的L2標準版圖形子系統(tǒng)相比之前版本有著非常大的改動,使用了全新設計的框架,并使用Render Service替換了原來的Weston。圖形棧整體上分為三層,從上到下依次為接口層、框架層和引擎層。設計上更加清晰,可以更加的靈活的適配不同的底層圖形庫和不同的顯示硬件,最大限度的發(fā)揮硬件性能而不用影響到整體圖形棧。

#創(chuàng)作者激勵#RK3568開發(fā)板上應用Mesa 3D-開源基礎軟件社區(qū)

框架層的整體功能如下表,框架層的核心就是Render Service渲染服務。

模塊

能力描述

Render Servicel (渲染服務)

提供UI框架的繪制能力,其核心職責是將ArkUI的控件描述轉(zhuǎn)換成繪制樹信息,根據(jù)對應的渲染策略,進行最佳路徑渲染。同時,負責多窗口流暢和空間態(tài)下UI共享的核心底層機制。

Drawing (繪制)

提供圖形子系統(tǒng)內(nèi)部的標準化接口,主要完成2D渲染、3D渲染和渲染引擎的管理等基本功能。

Animation (動畫)

提供動畫引擎的相關能力。

Effect (效果)

主要完成圖片效果、渲染特效等效果處理的能力,包括:多效果的串聯(lián)、并聯(lián)處理,在布局時加入渲染特效、控件交互特效等相關能力。

顯示與內(nèi)存管理

此模塊是圖形棧與硬件解耦的主要模塊,主要定義了OpenHarmony 顯示與內(nèi)存管理的能力,其定義的南向HDI 接口需要讓不同的OEM廠商完成對OpenHarmony圖形棧的適配。

新的Render Service圖形框架默認提供了對OpenGL的支持,并使用API HOOK技術,實現(xiàn)了OpenGL接口和實現(xiàn)的分離,大幅度降低了OpenGL庫的適配難度。
揚帆“競”開發(fā)板默認使用的是閉源的libmali-bifrost-g52-g2p0-ohos庫,也可以使用開源的Mesa 3D庫,實現(xiàn)對OpenGL的支持,在高級圖形應用的開發(fā)和調(diào)試方面非常方便。

使用Mesa庫

編譯Mesa庫

OpenHarmony已經(jīng)在三方庫中集成Mesa庫。下載OpenHarmony全量代碼,Mesa庫在third_party/mesa3d。
進入third_party/mesa3d/目錄,OpenHarmony已經(jīng)提供了編譯腳本。其中ohos/build_ohos.py就是針對新圖形框架的編譯腳本,參考README_zh.md文檔,先進行一次全量編譯,然后執(zhí)行。

#python ohos/build_ohos.py </path/to/openharmony> yangfan-j </path/to/openharmony>/third_party/mesa3d

命令編譯出mesa庫。

生成Mesa組件

1、在device/soc/rockchip/rk3568/hardware/gpu/目錄下新建lib-mesa目錄,用于存放Mesa 3D庫文件。

#mkdir …/device/soc/rockchip/rk3568/hardware/gpu/lib-mesa

2、將編譯生成的Mesa 3D庫文件拷貝到lib-mesa目錄:

#cp build-ohos/install/lib/libgbm.so.1.0.0 ../device/soc/rockchip/rk3568/hardware/gpu/lib-mesa/
#cp build-ohos/install/lib/libglapi.so.0.0.0 ../device/soc/rockchip/rk3568/hardware/gpu/lib-mesa/
#cp build-ohos/src/egl/libEGL.so.1.0.0 ../device/soc/rockchip/rk3568/hardware/gpu/lib-mesa/
#cp build-ohos/install/lib/libGLESv1_CM.so.1.1.0 ../device/soc/rockchip/rk3568/hardware/gpu/lib-mesa/
#cp build-ohos/install/lib/libGLESv2.so.2.0.0 ../device/soc/rockchip/rk3568/hardware/gpu/lib-mesa/
#cp build-ohos/src/gallium/targets/dri/libgallium_dri.so ../ device/soc/rockchip/rk3568/hardware/gpu/lib-mesa/
#cp build-ohos/install/lib/dri/panfrost_dri.so ../device/soc/rockchip/rk3568/hardware/gpu/lib-mesa/

3、修改device/soc/rockchip/rk3568/hardware/gpu/BUILD.gn

index 7d269ac..690a69d 100644
--- a/rk3568/hardware/gpu/BUILD.gn
+++ b/rk3568/hardware/gpu/BUILD.gn
@@ -47,3 +47,108 @@ ohos_prebuilt_shared_library("mali-bifrost-g52-g2p0-ohos") {
"libmali.so.1",
]
}
+
+ohos_prebuilt_shared_library("mesa_gbm") {
+ source = "lib-mesa/libgbm.so.1.0.0"
+ install_enable = true
+ install_images = [ chipset_base_dir ]
+ relative_install_dir = "chipsetsdk"
+ subsystem_name = "rockchip_products"
+ part_name = "rockchip_products"
+ symlink_target_name = [
+ "libgbm.so.1",
+ "libgbm.so",
+ ]
+}
+
+ohos_prebuilt_shared_library("mesa_egl") {
+ source = "lib-mesa/libEGL.so.1.0.0"
+ install_enable = true
+ install_images = [ chipset_base_dir ]
+ relative_install_dir = "chipsetsdk"
+ subsystem_name = "rockchip_products"
+ part_name = "rockchip_products"
+ symlink_target_name = [
+ "libEGL.so.1",
+ "libEGL.so",
+ "libGLESv1.so",
+ "libEGL_impl.so",
+ ]
+}
+
+ohos_prebuilt_shared_library("mesa_glapi") {
+ source = "lib-mesa/libglapi.so.0.0.0"
+ install_enable = true
+ install_images = [ chipset_base_dir ]
+ relative_install_dir = "chipsetsdk"
+ subsystem_name = "rockchip_products"
+ part_name = "rockchip_products"
+ symlink_target_name = [
+ "libglapi.so.0",
+ "libglapi.so",
+ ]
+}
+
+ohos_prebuilt_shared_library("mesa_glesv1") {
+ source = "lib-mesa/libGLESv1_CM.so.1.1.0"
+ install_enable = true
+ install_images = [ chipset_base_dir ]
+ relative_install_dir = "chipsetsdk"
+ subsystem_name = "rockchip_products"
+ part_name = "rockchip_products"
+ symlink_target_name = [
+ "libGLESv1_CM.so.1",
+ "libGLESv1_CM.so",
+ "libGLESv1_impl.so",
+ ]
+}
+
+ohos_prebuilt_shared_library("mesa_glesv2") {
+ source = "lib-mesa/libGLESv2.so.2.0.0"
+ install_enable = true
+ install_images = [ chipset_base_dir ]
+ relative_install_dir = "chipsetsdk"
+ subsystem_name = "rockchip_products"
+ part_name = "rockchip_products"
+ symlink_target_name = [
+ "libGLESv2.so.2",
+ "libGLESv2.so",
+ "libGLESv2_impl.so",
+ "libGLESv3_impl.so",
+ ]
+}
+
+ohos_prebuilt_shared_library("libgallium_dri") {
+ source = "lib-mesa/libgallium_dri.so"
+ install_enable = true
+ install_images = [ chipset_base_dir ]
+ relative_install_dir = "chipsetsdk"
+ subsystem_name = "rockchip_products"
+ part_name = "rockchip_products"
+ symlink_target_name = [ "libgallium_dri.so" ]
+}
+
+ohos_prebuilt_shared_library("panfrost_dri") {
+ source = "lib-mesa/panfrost_dri.so"
+ install_enable = true
+ install_images = [ "system" ]
+ subsystem_name = "rockchip_products"
+ part_name = "rockchip_products"
+ symlink_target_name = [
+ "rockchip_dri.so",
+ "libmali.so.0",
+ "libmali.so.1",
+ ]
+}
+
+group("mesa-gpu") {
+ public_deps = [
+ ":mesa_egl",
+ ":mesa_gbm",
+ ":mesa_glapi",
+ ":mesa_glesv1",
+ ":mesa_glesv2",
+ ":libgallium_dri",
+ ":panfrost_dri",
+ ]
+}

4、修改device/soc/rockchip/rk3568/hardware/BUILD.gn,使用Mesa 3D庫

index 479847d..e778fb0 100644
--- a/rk3568/hardware/BUILD.gn
+++ b/rk3568/hardware/BUILD.gn
@@ -15,7 +15,8 @@ import("http://build/ohos.gni")

group("hardware_group") {
deps = [
- "http://device/soc/rockchip/rk3568/hardware/gpu:mali-bifrost-g52-g2p0-ohos",
+ #"http://device/soc/rockchip/rk3568/hardware/gpu:mali-bifrost-g52-g2p0-ohos",
+ "http://device/soc/rockchip/rk3568/hardware/gpu:mesa-gpu",
"http://device/soc/rockchip/rk3568/hardware/isp:isp",
"http://device/soc/rockchip/rk3568/hardware/mpp:mpp",
"http://device/soc/rockchip/rk3568/hardware/wifi:ap6xxx",

修改內(nèi)核的配置文件

修改內(nèi)核配置文件,啟用panforst驅(qū)動

index 9a9501c..52b3232 100644
--- a/linux-5.10/arch/arm64/configs/yangfan-j_standard_defconfig
+++ b/linux-5.10/arch/arm64/configs/yangfan-j_standard_defconfig
@@ -3622,7 +3622,7 @@ CONFIG_DVB_SP2=m
#
# CONFIG_VGA_ARB is not set
CONFIG_DRM=y
-CONFIG_DRM_IGNORE_IOTCL_PERMIT=y
+# CONFIG_DRM_IGNORE_IOTCL_PERMIT is not set
CONFIG_DRM_MIPI_DSI=y
# CONFIG_DRM_DP_AUX_CHARDEV is not set
# CONFIG_DRM_DEBUG_MM is not set
@@ -3636,6 +3636,8 @@ CONFIG_DRM_FBDEV_OVERALLOC=100
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
# CONFIG_DRM_DP_CEC is not set
CONFIG_DRM_GEM_CMA_HELPER=y
+CONFIG_DRM_GEM_SHMEM_HELPER=y
+CONFIG_DRM_SCHED=y
#
# I2C encoder or helper chips
@@ -3793,7 +3795,7 @@ CONFIG_DRM_DW_MIPI_DSI=y
# CONFIG_TINYDRM_ST7735R is not set
# CONFIG_DRM_PL111 is not set
# CONFIG_DRM_LIMA is not set
-# CONFIG_DRM_PANFROST is not set
+CONFIG_DRM_PANFROST=y
# CONFIG_DRM_TIDSS is not set
# CONFIG_DRM_LEGACY is not set
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y

修改揚帆“競”內(nèi)核補丁

內(nèi)核補丁需要在Linux系統(tǒng)上使用vim編輯器修改,Windows編輯器修改可能導致編譯錯誤。

index 41a7df5..1a5e5a3 100644
--- a/linux-5.10/yangfan-j_patch/kernel.patch
+++ b/linux-5.10/yangfan-j_patch/kernel.patch
@@ -100948,36 +100948,36 @@ index 000000000..372617fee
+ };
+
+ gpu: gpu@fde60000 {
-+ compatible = "arm,mali-bifrost";
-+ reg = <0x0 0xfde60000 0x0 0x4000>;
++ compatible = "rockchip, rk3568-mali","arm,mali-bifrost";
++ reg = <0x0 0xfde60000 0x0 0x20000>;
+
-+ interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
++ interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
-+ <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
-+ interrupt-names = "GPU", "MMU", "JOB";
++ <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "job", "mmu", "gpu";
+
-+ upthreshold = <40>;
-+ downdifferential = <10>;
++ /* upthreshold = <40>; */
++ /* downdifferential = <10>; */
+
+ clocks = <&scmi_clk 1>, <&cru CLK_GPU>;
-+ clock-names = "clk_mali", "clk_gpu";
++ clock-names = "core", "bus";
+ power-domains = <&power RK3568_PD_GPU>;
+ #cooling-cells = <2>;
+ operating-points-v2 = <&gpu_opp_table>;
+
+ status = "disabled";
-+ gpu_power_model: power-model {
-+ compatible = "simple-power-model";
-+ leakage-range= <5 15>;
-+ ls = <(-24002) 22823 0>;
-+ static-coefficient = <100000>;
-+ dynamic-coefficient = <953>;
-+ ts = <(-108890) 63610 (-1355) 20>;
-+ thermal-zone = "gpu-thermal";
-+ };
-+ };
-+
-+ gpu_opp_table: opp-table2 {
++ /* gpu_power_model: power-model { */
++ /* compatible = "simple-power-model"; */
++ /* leakage-range= <5 15>; */
++ /* ls = <(-24002) 22823 0>; */
++ /* static-coefficient = <100000>; */
++ /* dynamic-coefficient = <953>; */
++ /* ts = <(-108890) 63610 (-1355) 20>; */
++ /* thermal-zone = "gpu-thermal"; */
++ /* }; */
++ };
++
++ gpu_opp_table: gpu-opp-table {
+ compatible = "operating-points-v2";
+
+ mbist-vmin = <825000 900000 950000>;

測試和驗證

1、查看GPU中斷,panforst驅(qū)動已經(jīng)正常工作。桌面顯示和操作正常

#創(chuàng)作者激勵#RK3568開發(fā)板上應用Mesa 3D-開源基礎軟件社區(qū)

2、游戲效果

#創(chuàng)作者激勵#RK3568開發(fā)板上應用Mesa 3D-開源基礎軟件社區(qū)


測試表明,揚帆“競”開發(fā)板的圖形界面使用正常且流暢,基礎應用都可以正常運行,體驗與使用libmali-g52庫基本一致。

??想了解更多關于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎軟件社區(qū)??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區(qū)
相關推薦

2023-08-18 14:34:09

HDF驅(qū)動框架

2023-03-13 15:18:04

NDK工具

2022-04-25 09:10:50

RK3568鴻蒙

2023-11-24 09:48:29

C++鴻蒙

2023-03-16 15:37:48

像素密度觸覺智能

2022-01-07 21:11:27

鴻蒙HarmonyOS應用

2022-03-03 19:21:50

Harmony鴻蒙操作系統(tǒng)

2023-03-03 21:36:02

鴻蒙操作系統(tǒng)

2023-02-10 15:34:45

Node.jsN-API組件

2024-09-20 16:20:00

2020-12-29 09:59:01

鴻蒙HarmonyOS智能家居

2020-12-16 10:05:48

鴻蒙開發(fā)板Onenet平臺

2022-08-10 19:39:08

Android系統(tǒng)聲音錄制

2020-10-27 10:08:19

Hi3861ADC驅(qū)動

2011-05-26 10:08:14

2017-07-21 11:28:57

前端Threejs3D地圖

2023-03-13 11:58:03

拓撲架構模塊

2024-07-16 12:02:11

2020-11-18 11:56:06

鴻蒙Hi3861

2020-12-08 12:36:41

Hi3861 ADC驅(qū)動開發(fā)
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97超碰成人| 国产高清精品在线 | 国产成人高清成人av片在线看 | 国内精品视频 | 日韩欧美在线一区 | 免费黄色a级毛片 | 午夜小影院 | 久久久久久国产精品 | 亚洲视频在线观看 | 香蕉视频91 | 好姑娘影视在线观看高清 | 91精品国产777在线观看 | av乱码| 亚洲精品电影网在线观看 | 97起碰| 成人免费视频一区二区 | 欧美精品v国产精品v日韩精品 | 黄色网址在线免费播放 | 婷婷综合激情 | 99爱在线 | 热久久999 | 欧美日韩在线播放 | 在线亚洲欧美 | 国产成人精品福利 | 精产国产伦理一二三区 | 欧美一级久久 | 97国产精品视频人人做人人爱 | 国产在线精品一区二区 | 红桃视频一区二区三区免费 | 99精品一区| 欧美一区二区三区在线 | 欧美日韩一二三区 | 日韩电影中文字幕 | 涩涩导航 | 日韩欧美三级在线 | 伊人精品久久久久77777 | 欧美黄色片在线观看 | 日本电影网站 | 欧美性受xxx | 在线观看国产视频 | 国产在线观看一区二区三区 |