graphic_graphic_2d:基于OpenHarmony的图形子系统2D渲染项目

暂无描述

分支421Tags56
文件最后提交记录最后更新时间
ColorPicker: Add QuickSkip support and HWC intersection handling Implement ColorPicker functionality for QuickSkip scenarios where surface nodes are skipped during preparation but still require color picking. Changes: - Add ColorPicker drawable preparation in skipped subtrees via PrepareColorPickerDrawableInSkippedSubTree() - Add HWC node disable logic when surfaces intersect ColorPicker regions via UpdateHwcNodeEnableByColorPicker() and ProcessSurfaceForColorPicker() - Add ChildHasVisibleColorPicker() check for render nodes - Add surface marking for intersection checking during Prepare phase - Add OnDraw lifecycle trace in RSColorPickerDrawable for debugging - Remove duplicate test code (~540 lines) in RSColorPickerManagerTest - Remove verbose debug traces, keep only essential error logs This ensures ColorPicker works correctly when parent surfaces are quick-skipped for performance optimization. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> Change-Id: Icb16eb159e8c9631972f5f13da1010fd563f2f10 Signed-off-by: Tianer Zhou <zhoutianer@huawei.com> 3 个月前
codeOwner临时更换 Signed-off-by: white-dragon-tiger <bailonghu1@huawei.com> revert merge request: codeOwner临时更换 32314cafefab0d75f64b9f20d93769ca0b5dd2b5 This revert merge request !2981113 天前
linux arm64编译sdk-graphic_graphic_2d Signed-off-by: liangxinyan123 <liangxinyan2@huawei.com> 1 年前
add full fuzz test for SetDarkMode Signed-off-by: Tianer Zhou <ezhoureal@gmail.com> Co-Authored-By: Agent Change-Id: I0a73c892217dc81a5086c3dfbcf2e2f45fe431ed 1 个月前
delete ddgr cloud push Signed-off-by: zzzzzmeng <zhaomeng90@huawei.com> 5 个月前
delete module frame rectify Signed-off-by: baizengqiang <baizengqiang1@huawei.com> 1 年前
!30230 merge feat/font-variation-axis-histogram into master feat(text): add histogram enumeration for font variation axis usage Created-by: liufei225 Commit-by: liufei Merged-by: openharmony_ci Description: **Description:** 在文本引擎中添加字体变化轴(Font Variation Axis)使用情况的直方图枚举统计,用于了解各字体变化轴(wght, wdth, ital, slnt, opsz)在实际场景中的使用频率,为字体功能优化和裁剪提供数据支撑。 主要变更: - text_histogram.h: 新增 TEXT_HISTOGRAM_ENUMERATION 宏 - convert.cpp: 定义 FontVariationAxis 枚举,在 SplitTextStyleConvert 中上报统计 - BUILD.gn: 配置 histogram 依赖和 HISTOGRAM_MANAGEMENT_ENABLE 编译宏 **Issue number:** #23836 **Test & Result:** 编译通过,功能验证:在调用 SplitTextStyleConvert 设置 fontVariations 时,直方图统计正确上报对应的字体变化轴类型。 **CodeCheck:** <table> <thead> <tr> <th>类型</th> <th>自检项</th> <th>自检结果</th> </tr> </thead> <tbody> <tr> <td rowspan="2"><strong>多线程</strong></td> <td>在类的成员变量中定义了vector/map/list等容器类型,且在多个成员函数中有操作时,需要加锁保护</td> <td>自检结果:不涉及,仅新增静态只读map和枚举统计</td> </tr> <tr> <td>定义全局变量,在多个函数中都有操作时,需要加锁保护</td> <td>自检结果:不涉及,无全局变量</td> </tr> <tr> <td rowspan="4"><strong>内存操作</strong></td> <td>调用外部接口时,确认是否对返回值做了判空判断,尤其外部接口返回了nullptr的情况,避免进程崩溃</td> <td>自检结果:不涉及,无外部指针返回值</td> </tr> <tr> <td>内存操作优先使用安全函数,并检查其返回值</td> <td>自检结果:不涉及,无内存操作</td> </tr> <tr> <td>注意每个异常退出流程,是否都已经将资源释放(推荐使用RAII)</td> <td>自检结果:不涉及,无异常退出流程</td> </tr> <tr> <td>隐式内存分配场景:realpath、ReadParcelable序列化、cJSON相关函数时等,需主动释放或使用智能指针</td> <td>自检结果:不涉及</td> </tr> <tr> <td rowspan="3"><strong>外部输入</strong></td> <td>所有外部输入均不可信,需判断外部输入是否直接作为内存分配的大小,数组下标、循环条件、SQL查询等</td> <td>自检结果:不涉及,fontVariations的axis值仅用于map查找和枚举映射</td> </tr> <tr> <td>注意外部字符串数据有无尾0</td> <td>自检结果:不涉及,使用std::string</td> </tr> <tr> <td>外部输入的路径不可信,需使用realpath做标准化处理,并判断路径的合法性</td> <td>自检结果:不涉及,无路径输入</td> </tr> <tr> <td><strong>敏感信息</strong></td> <td>注意日志中打印敏感信息需匿名化</td> <td>自检结果:不涉及,无日志打印</td> </tr> <tr> <td><strong>数学运算</strong></td> <td>代码中是否混合了加减乘除等运算,需检查是否可能导致整数溢出或符号翻转</td> <td>自检结果:不涉及,无数学运算</td> </tr> <tr> <td><strong>初始化</strong></td> <td>类成员、局部变量使用前需初始化</td> <td>自检结果:符合,所有变量在使用前均已初始化</td> </tr> <tr> <td><strong>权限管理</strong></td> <td>作为系统服务对外提供了接口(或RSCmd),是否做了权限保护和校验,只允许申请了权限的应用访问</td> <td>自检结果:不涉及,无新增对外接口</td> </tr> </tbody> </table> ### L0新增用例自检结果 - [ ] 是,有新增L0用例,且完成自检 - [x] 否 See merge request: openharmony/graphic_graphic_2d!302302 天前
!30290 merge sub into master [codex] Add SDF subtraction shapes Created-by: zhoutianer Commit-by: Tianer Zhou Merged-by: openharmony_ci Description: ## What changed\n- Added RS/client/render shape exposure for SDFSubOpShape and SDFSmoothSubOpShape.\n- Added property tags, type strings, factories, and visual effect generation coverage.\n- Added graphic e2e scenes for normal and edge cases under ng_shape_test.\n\n## Why\nSDF shape composition needs explicit hard and smooth subtraction operations so one SDF can clip another.\n\n## Impact\nAdds new SDF operation shape types without changing existing shape behavior.\n\n## Validation\n- git diff --cached --check\n\nLinked issue: #23996\nIssue URL: https://gitcode.com/openharmony/graphic_graphic_2d/issues/23996 See merge request: openharmony/graphic_graphic_2d!3029011 小时前
普通录像支持log视频 Signed-off-by: mengzhe <mengzhe5@huawei.com> 4 天前
!30465 merge master into master fix UT crash Created-by: yanghua_angel Commit-by: yanghua_angel Merged-by: openharmony_ci Description: **Description:** fix UT crash **Issue number:** https://gitcode.com/openharmony/graphic_graphic_2d/issues/24026?ref=&did=4064371#tid-4064371 **Test & Result:** pass **CodeCheck:** <table> <tr> <th>类型</th><th>自检项</th><th>自检结果:pass</th> </tr> <tr> <td rowspan="2">多线程相关</td><td>在类的成员变量中定义了vector/map/list等容器类型,且在多个成员函数中有操作时,需要加锁保护</td><td>自检结果:pass</td> </tr> <tr> <td>定义全局变量,在多个函数中都有操作时,需要加锁保护</td><td>自检结果:pass</td> </tr> <tr> <td rowspan="4">内存相关</td><td>调用外部接口时,确认是否对返回值做了判断,尤其外部接口返回了nullptr的情况,避免进程崩溃</td><td>自检结果:pass</td> </tr> <tr> <td>调用安全函数时,如memcpy_s等,是否检查其返回值</td><td>自检结果:pass</td> </tr> <tr> <td>检查函数中是否涉及了内存或资源申请(如文件句柄),注意每个异常退出流程,是否都已经将资源释放(推荐使用RAII)</td><td>自检结果:pass</td> </tr> </tr> <tr> <td>隐式内存分配场景:realpath、ReadParcelable序列化、cJSON相关函数时等,需主动释放或使用智能指针</td><td>自检结果:pass</td> </tr> <tr> <td rowspan="4">校验外部输入</td><td>使用nlohmann:json解析外部输入时,需判断参数类型是否符合预期</td><td>自检结果:pass</td> </tr> <tr> <td>所有外部输入均不可信,需判断外部输入是否直接作为内存分配的大小,数组下标、循环条件、SQL查询等</td><td>自检结果:pass</td> </tr> <tr> <td>外部输入的路径不可信,需使用realpath做标准化处理,并判断路径的合法性</td><td>自检结果:pass</td> </tr> <tr> <td>外部输入包括对外提供的接口,IPC的proxy/stub接口,序列化/反序列化接口等</td><td>自检结果:pass</td> </tr> </tr> <tr> <td rowspan="2">数学运算</td><td>代码中是否混合了加减乘除等运算,需检查是否可能导致整数溢出或符号翻转</td><td>自检结果:pass</td> </tr> <tr> <td>需检查代码是否有高精度数字转换为低精度的操作,如果必须,建议使用C++安全类型转换接口</td><td>自检结果:pass</td> </tr> </tr> <tr> <td rowspan="1">秘钥相关</td><td>如变量临时保存了口令、秘钥等,需要在使用完成后及时清空(内存memset掉)</td><td>自检结果:pass</td> </tr> <tr> <td rowspan="2">权限相关</td><td>作为系统服务对外提供了接口,是否做了权限保护和校验(如需要),只允许申请了权限的应用访问</td><td>自检结果:pass</td> </tr> <tr> <td>内核对外提供了设备节点,是否做了权限保护,只允许特定的系统服务访问</td><td>自检结果:pass</td> </tr> </tr> <tr> <td rowspan="3">内核操作</td><td>如有mmap操作,并使用remap_pfn_range进行地址映射时,校验起始地址是否是用户态输入且没有做合法性校验</td><td>自检结果:pass</td> </tr> <tr> <td>是否有copy_from_user,并对外部输入的数据做了长度校验,以防止缓冲区溢出</td><td>自检结果:pass</td> </tr> <tr> <td>是否有使用copy_to_user,并在返回到用户态时,对数据做了完整初始化,或使用memset清空后再赋值</td><td>自检结果:pass</td> </tr> </tr> </table> ### L0新增用例自检结果 - [ ] 是,有新增L0用例,且完成自检 - [x] 否 See merge request: openharmony/graphic_graphic_2d!304651 小时前
普通录像支持log视频 Signed-off-by: mengzhe <mengzhe5@huawei.com> 4 天前
WIP: fix compile errors Signed-off-by: Zhang Peng <zhangpeng280@huawei.com> Change-Id: Ia7890859e556fec25b0b1278532a919d1fc21004 8 个月前
update OpenHarmony 2.0 Canary 4 年前
fix warning Signed-off-by: Tianer Zhou <zhoutianer@huawei.com> Change-Id: I382b27bc35d2392d1672120575dd07cd92a301fa 3 个月前
docs: add knowledge for HGM Co-Authored-By: Agent Signed-off-by: Masou_Shizuka <chensiyu78@huawei.com> 14 小时前
看板问题-编译告警整改 Signed-off-by: y30082097 <yuanzhi12@h-partners.com> 1 个月前
update OpenHarmony 2.0 Canary 4 年前
add fuzz test seed and update test case Signed-off-by: developer <liuyongkang4@huawei.com> 1 年前
quduoyu Signed-off-by: cwx1252618 <chaifu1@huawei.com> Change-Id: I967db2417529b55e12e397a7a929208d8433e397 2 年前
fix name Signed-off-by: zhangbirong <zhangbirong@huawei.com> Change-Id: I6f98c8a595b52a49e2ffffecadec917d12f82674 2 年前
Fixed arkui-x build due to missed adapters Signed-off-by: Ilya Tihobaev <tihobaev.ilya@huawei-partners.com> Change-Id: Ic83d408ec93ce2a393686c1294fd1ab2e51227a2 1 年前
移除 rs_proxy feature gate,默认启用 ENABLE_RS_PROXY 移除 graphic_2d_feature_enable_rs_proxy 特性开关,使 ENABLE_RS_PROXY 宏无条件生效。 Signed-off-by: sunriseLL <liwen176@huawei.com> Co-Authored-By: Agent 4 天前
add window type Change-Id: I1ed9d4e2408990f4d8f969c55996c84d0689932d Signed-off-by: lizheng <lizheng2@huawei.com> 4 年前
Description:change dir graphic/graphic to graphic/graphic_2d IssueNo:https://gitee.com/openharmony/graphic_standard/issues/I57W1P Feature or Bugfix: Bugfix Binary Source:NA Signed-off-by: sufeng <sufeng6@huawei.com> 3 年前
delete ddgr cloud push Signed-off-by: zzzzzmeng <zhaomeng90@huawei.com> 5 个月前
回退 'Pull Request !3058 : del unused code' 3 年前
!30339 merge 0528 into master 移除 rs_proxy feature gate,默认启用 ENABLE_RS_PROXY Created-by: sunriseLL Commit-by: sunriseLL Merged-by: openharmony_ci Description: **Description:** 移除 graphic_2d_feature_enable_rs_proxy 特性开关,使 ENABLE_RS_PROXY 宏无条件生效。rs_proxy 功能已稳定,不再需要通过 feature gate 控制。 修改内容: - bundle.json:移除 graphic_2d_feature_enable_rs_proxy feature 声明 - graphic_config.gni:移除 graphic_2d_feature_enable_rs_proxy = true 配置项 - rosen/modules/render_service_base/proxy/BUILD.gn:移除条件编译判断,直接添加 ENABLE_RS_PROXY 宏定义 **Issue number:** #23928 **Test & Result:** - 编译验证通过,ENABLE_RS_PROXY 宏已默认启用 - 不涉及运行时逻辑变更,仅修改编译配置 - 预期:所有依赖 ENABLE_RS_PROXY 的代码路径在所有构建配置中均生效 **CodeCheck:** <table> <thead> <tr> <th>类型</th> <th>自检项</th> <th>自检结果</th> </tr> </thead> <tbody> <tr> <td rowspan="2"><strong>多线程</strong></td> <td>在类的成员变量中定义了vector/map/list等容器类型,且在多个成员函数中有操作时,需要加锁保护</td> <td>Pass(纯构建配置变更,无运行时代码)</td> </tr> <tr> <td>定义全局变量,在多个函数中都有操作时,需要加锁保护</td> <td>Pass(不涉及全局变量操作)</td> </tr> <tr> <td rowspan="4"><strong>内存操作</strong></td> <td>调用外部接口时,确认是否对返回值做了判空判断,尤其外部接口返回了nullptr的情况,避免进程崩溃</td> <td>Pass(不涉及内存操作)</td> </tr> <tr> <td>内存操作优先使用安全函数,并检查其返回值</td> <td>Pass(不涉及内存操作)</td> </tr> <tr> <td>注意每个异常退出流程,是否都已经将资源释放(推荐使用RAII)</td> <td>Pass(不涉及异常流程)</td> </tr> <tr> <td>隐式内存分配场景:realpath、ReadParcelable序列化、cJSON相关函数时等,需主动释放或使用智能指针</td> <td>Pass(不涉及隐式内存分配)</td> </tr> <tr> <td rowspan="3"><strong>外部输入</strong></td> <td>所有外部输入均不可信,需判断外部输入是否直接作为内存分配的大小,数组下标、循环条件、SQL查询等</td> <td>Pass(不涉及外部输入处理)</td> </tr> <tr> <td>注意外部字符串数据有无尾0</td> <td>Pass(不涉及外部字符串)</td> </tr> <tr> <td>外部输入的路径不可信,需使用realpath做标准化处理,并判断路径的合法性</td> <td>Pass(不涉及外部路径)</td> </tr> <tr> <td><strong>敏感信息</strong></td> <td>注意日志中打印敏感信息需匿名化</td> <td>Pass(不涉及日志输出)</td> </tr> <tr> <td><strong>数学运算</strong></td> <td>代码中是否混合了加减乘除等运算,需检查是否可能导致整数溢出或符号翻转</td> <td>Pass(不涉及数学运算)</td> </tr> <tr> <td><strong>初始化</strong></td> <td>类成员、局部变量使用前需初始化</td> <td>Pass(不涉及变量初始化)</td> </tr> <tr> <td><strong>权限管理</strong></td> <td>作为系统服务对外提供了接口(或RSCmd),是否做了权限保护和校验,只允许申请了权限的应用访问</td> <td>Pass(仅修改编译宏定义,不新增接口暴露)</td> </tr> </tbody> </table> ### L0新增用例自检结果 - [x] 否 See merge request: openharmony/graphic_graphic_2d!303393 天前
蓝黄差异同步 Signed-off-by: white-dragon-tiger <bailonghu1@huawei.com> 4 个月前

graphic_2d

简介

Graphic子系统 提供了图形接口能力。

其主要的结构如下图所示:

Graphic子系统架构图

OpenHarmony 图形栈的分层说明如下:

• 接口层:提供图形的 Native API能力,包括:WebGL、Native Drawing的绘制能力、OpenGL 指令级的绘制能力支撑等。

• 框架层:分为 Render Service、Drawing、Animation、Effect、显示与内存管理五个模块。

模块 能力描述
Render Servicel (渲染服务) 提供UI框架的绘制能力,其核心职责是将ArkUI的控件描述转换成绘制树信息,根据对应的渲染策略,进行最佳路径渲染。同时,负责多窗口流畅和空间态下UI共享的核心底层机制。
Drawing (绘制) 提供图形子系统内部的标准化接口,主要完成2D渲染、3D渲染和渲染引擎的管理等基本功能。
Animation (动画) 提供动画引擎的相关能力。
Effect (效果) 主要完成图片效果、渲染特效等效果处理的能力,包括:多效果的串联、并联处理,在布局时加入渲染特效、控件交互特效等相关能力。
显示与内存管理 此模块是图形栈与硬件解耦的主要模块,主要定义了OpenHarmony 显示与内存管理的能力,其定义的南向HDI 接口需要让不同的OEM厂商完成对OpenHarmony图形栈的适配.

• 引擎层:包括 2D 图形库和 3D 图形引擎两个模块。2D 图形库提供 2D 图形绘制底层 API,支持图形绘制与文本绘制底层能力。3D 图形引擎能力尚在构建中。

目录

foundation/graphic/graphic_2d/
├── figures                 # Markdown引用的图片目录
├── frameworks              # 框架代码目录
│   ├── animation_server    # AnimationServer代码
│   ├── bootanimation       # 开机动画目录
│   ├── fence               # fence代码
│   ├── opengl_wrapper      # opengl_wrapper
│   ├── surface             # Surface代码
│   ├── surfaceimage        # surfaceimage代码
│   ├── vsync               # Vsync代码
│   ├── wm                  # wm代码
│   ├── wmserver            # wmserver代码
│   ├── wmservice           # wmservice代码
│   ├── wmtest              # wmtest代码
├── rosen                   # 框架代码目录
│   ├── build               # 构建说明
│   ├── doc                 # doc
│   ├── include             # 对外头文件代码
│   ├── modules             # graphic 子系统各模块代码
│   ├── samples             # 实例代码
│   ├── test                # 开发测试代码
│   ├── tools               # 工具代码
├── interfaces              # 图形接口存放目录
│   ├── inner_api           # 内部native接口存放目录
│   └── kits                # js/napi外部接口存放目录
└── utils                   # 小部件存放目录

相关仓

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

C++98.07%
C1.14%
ArkTS0.57%
JavaScript0.19%
Python0.01%