CN115660941B - 图像搬移方法、装置、电子设备和计算机可读存储介质 - Google Patents

图像搬移方法、装置、电子设备和计算机可读存储介质 Download PDF

Info

Publication number
CN115660941B
CN115660941B CN202211682512.1A CN202211682512A CN115660941B CN 115660941 B CN115660941 B CN 115660941B CN 202211682512 A CN202211682512 A CN 202211682512A CN 115660941 B CN115660941 B CN 115660941B
Authority
CN
China
Prior art keywords
address
image
linked list
overlap
vertex
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211682512.1A
Other languages
English (en)
Other versions
CN115660941A (zh
Inventor
郭飞飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiangdixian Computing Technology Chongqing Co ltd
Original Assignee
Beijing Xiangdixian Computing Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Xiangdixian Computing Technology Co Ltd filed Critical Beijing Xiangdixian Computing Technology Co Ltd
Priority to CN202211682512.1A priority Critical patent/CN115660941B/zh
Publication of CN115660941A publication Critical patent/CN115660941A/zh
Application granted granted Critical
Publication of CN115660941B publication Critical patent/CN115660941B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Input (AREA)

Abstract

本公开提供一种图像搬移方法、装置、电子设备和计算机可读存储介质,该方法根据待搬移图像的源顶点地址、目的顶点地址及图像尺寸属性信息,计算待搬移图像在搬移前对应的源地址空间范围及在搬移后对应的目的地址空间范围;根据源地址空间范围及目的地址空间范围,判断后续的搬移过程是否存在Overlap;当存在Overlap时,根据图像尺寸属性信息、源顶点地址、目的顶点地址及原始链表,生成与源地址空间范围对应的第一链表和与目的地址空间范围对应的第二链表;控制DMA根据第一链表和第二链表搬移待搬移图像。通过该方法,可在没有IOMMU或者IOMMU未使能的前提下处理图像搬移过程中的Overlap,以避免图像搬移出错。

Description

图像搬移方法、装置、电子设备和计算机可读存储介质
技术领域
本公开涉及图像搬移技术领域,尤其涉及一种图像搬移方法、装置、电子设备和计算机可读存储介质。
背景技术
DMA(Direct Memory Access,直接存储器访问)在显卡设备内的主要作用是搬移图像所包括的图像数据。在实际情况中存在如图1所示的特殊搬移场景,图像在搬移前后所覆盖的区域存在重叠,此时即发生了Overlap。为了避免发生Overlap时图像搬移出错,DMA将会采用倒序的方式来搬移图像数据,即先搬移最后一个图像数据,最后搬移第一个图像数据。
在现有技术中,硬件DMA可以基于图像所使用的连续的地址判断图像在搬移前后是否发生了Overlap以及实施倒序搬移。对于图像使用非连续内存的情况,可以借助于显卡设备内的IOMMU(Input/Output Memory Management Unit,输入输出管理单元)将不连续的内存的物理地址空间映射为连续的虚拟地址空间,以供DMA基于连续的虚拟地址空间判断是否发生了Overlap,以及执行倒序搬移。但在实际应用中,有些显卡设备不具备IOMMU或者IOMMU未使能,此时,硬件DMA并不能检测到是否发生了Overlap,也无法针对当前情况实施图像搬移。
发明内容
本公开的目的是提供一种图像搬移方法、装置、电子设备和可读存储介质,以解决在没有IOMMU或者IOMMU未使能的前提下处理图像搬移过程中的Overlap,以避免图像搬移出错。
根据本公开的一个方面,提供一种图像搬移方法,该方法包括:根据待搬移图像的源顶点地址、目的顶点地址及图像尺寸属性信息,计算所述待搬移图像在搬移前对应的源地址空间范围及在搬移后对应的目的地址空间范围;根据所述源地址空间范围及所述目的地址空间范围,判断后续的搬移过程是否存在Overlap;当存在Overlap时,根据Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及原始链表,生成与所述源地址空间范围对应的第一链表和与所述目的地址空间范围对应的第二链表;所述原始链表与所述源地址空间范围及所述目的地址空间范围对应;所述Overlap的类型表示重叠的偏移方向;控制DMA根据所述第一链表和所述第二链表搬移所述待搬移图像。
本公开一种可行的实现方式中,所述根据所述源地址空间范围及所述目的地址空间范围,判断后续的搬移过程是否存在Overlap,包括:判断所述源地址空间范围与所述目的地址空间范围是否存在重合;当存在重合时表示存在Overlap,否则表示不存在Overlap。
本公开一种可行的实现方式中,所述方法还包括:根据所述目的顶点地址、所述图像尺寸属性信息及所述源地址空间范围,确定所述Overlap的类型。
本公开一种可行的实现方式中,所述待搬移图像在搬移后包括四个顶点,分别是位于所述待搬移图像左上角、右上角、左下角及右下角的第一目的顶点、第二目的顶点、第三目的顶点及第四目的顶点;所述根据所述目的顶点地址、所述图像尺寸属性信息及所述源地址空间范围,确定Overlap的类型,包括:根据所述目的顶点地址及所述图像尺寸属性信息,得到所述第一目的顶点的地址、所述第二目的顶点的地址、所述第三目的顶点的地址及所述第四目的顶点的地址;在所述第一目的顶点的地址及所述第三目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向右重叠;在所述第二目的顶点的地址及所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向左重叠;在所述第一目的顶点的地址属于所述源地址空间范围且所述第三目的顶点的地址不属于所述源地址空间范围,或者在所述第二目的顶点的地址属于所述源地址空间范围且所述第四目的顶点的地址不属于所述源地址空间范围,或者在所述第一目的顶点的地址和所述第二目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为Y方向的向下重叠;在所述第三目的顶点的地址属于所述源地址空间范围且所述第一目的顶点的地址不属于所述源地址空间范围,或者在所述第四目的顶点的地址属于所述源地址空间范围且所述第二目的顶点的地址不属于所述源地址空间范围,或者在所述第三目的顶点的地址和所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为Y方向的向上重叠。
本公开一种可行的实现方式中,所述Overlap的类型包括X方向的向右重叠、X方向的向左重叠、Y方向的向下重叠以及Y方向的向上重叠;所述根据Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及原始链表,生成与所述源地址空间范围对应的第一链表和与所述目的地址空间范围对应的第二链表,包括:根据所述目的顶点地址、所述图像尺寸属性信息及所述源地址空间范围,确定Overlap的类型;所述Overlap的类型包括X方向的向右重叠、X方向的向左重叠、Y方向的向下重叠以及Y方向的向上重叠;在所述Overlap的类型是是所述X方向的向右重叠或所述X方向的向左重叠时,根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的X方向上的节点生成操作,根据节点生成结果得到所述第一链表及所述第二链表;在所述Overlap的类型是所述Y方向的向下重叠或所述Y方向的向上重叠时,根据所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的Y方向上的节点生成操作,根据节点生成结果及所述Overlap的类型得到所述第一链表及所述第二链表;所述X方向及所述Y方向分别表示所述待搬移图像所在的二维坐标系的横轴方向及纵轴方向。
本公开一种可行的实现方式中,所述根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的X方向上的节点生成操作,包括:将所述源顶点地址与所述目的顶点地址执行减法运算,得到所述待搬移图像在X方向上的偏移;根据所述源顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移前对应的第一行首地址及第一行末地址,以及根据所述目的顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移后对应的第二行首地址及第二行末地址;针对所述待搬移图像的每个像素行,以其第一行末地址为起点,以所述偏移为步长向其第一行首地址的方向步进,将该像素行拆分为多个第一像素块;以及以其第二行末地址为起点,以所述偏移为步长向其第二行首地址的方向步进,将该像素行拆分为多个第二像素块;针对所述待搬移图像的每个像素行,根据所述原始链表及所述第一像素块的地址范围,生成与每个第一像素块的地址范围对应的第一子节点,以及根据所述原始链表及所述第二像素块的地址范围,生成与每个第二像素块的地址范围对应的第二子节点;针对所述待搬移图像的每个像素行,按照与所述Overlap的类型对应的子节点连接顺序连接各个第一子节点,得到该像素行在搬移前对应的第一节点,以及按照与所述Overlap的类型对应的子节点连接顺序连接各个第二子节点,得到该像素行在搬移后对应的第二节点。
本公开一种可行的实现方式中,所述根据所述原始链表及所述第一像素块的地址范围,生成与每个第一像素块的地址范围对应的第一子节点,包括:针对每个第一像素块,调用系统接口将其地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该第一像素块的物理地址范围存在重合的第一目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第一目标节点的虚拟地址Node Addr1,生成与该第一像素块的物理地址范围对应的第一子节点;所述重合物理地址的属性信息包括所述重合物理地址的首地址及其重合长度;
相应的,所述根据所述原始链表及所述第二像素块的地址范围,生成与每个第二像素块的地址范围对应的第二子节点,包括:针对每个第二像素块,调用系统接口将其地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该第二像素块的物理地址范围存在重合的第二目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第二目标节点的虚拟地址Node Addr1,生成与该第二像素块的物理地址范围对应的第二子节点。
本公开一种可行的实现方式中,在所述Overlap的类型为X方向的向右重叠时,所述对应的子节点连接顺序为行末到行首;在所述Overlap的类型为X方向的向左重叠时,所述对应的子节点连接顺序为行首到行末。
本公开一种可行的实现方式中,所述根据节点生成结果得到所述第一链表及所述第二链表,包括:根据所述待搬移图像的各个像素行从上到下的排列顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表;以及依次连接与各个像素行对应的第二节点,得到所述第二链表。
本公开一种可行的实现方式中,所述根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的Y方向上的节点生成操作,包括:根据所述源顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移前对应的第一地址范围,以及根据所述目的顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移后对应的第二地址范围;针对所述待搬移图像的每个像素行,根据所述原始链表及所述第一地址范围,生成该像素行在搬移前对应的第一节点,以及根据所述原始链表及所述第二地址范围,生成该像素行在搬移后对应的第二节点。
本公开一种可行的实现方式中,所述根据所述原始链表及所述第一地址范围,生成该像素行在搬移前对应的第一节点,包括:针对每个像素行,调用系统接口将其第一地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该像素行的物理地址范围存在重合的第三目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第三目标节点的虚拟地址,生成与该第三目标节点对应的第三子节点;将每个所述第三子节点依次连接,得到该像素行在搬移前对应的第一节点;
相应的,所述根据所述原始链表及所述第二地址范围,生成该像素行在搬移后对应的第二节点,包括:针对每个像素行,调用系统接口将其第二地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该像素行的物理地址范围存在重合的第四目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第四目标节点的虚拟地址,生成与该第四目标节点对应的第四子节点;将每个所述第四子节点依次连接,得到该像素行在搬移后对应的第二节点。
本公开一种可行的实现方式中,所述根据节点生成结果及所述Overlap的类型得到所述第一链表及所述第二链表,包括:在所述Overlap的类型为Y方向的向下重叠时,按照从最末行到起始行的顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表;在所述Overlap的类型为Y方向的向上重叠时,按照从起始行到最末行的顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表。
本公开一种可行的实现方式中,所述图像尺寸属性信息包括所述待搬移图像的像素行长度、像素行跨度以及像素行总行数;所述根据待搬移图像的源顶点地址、目的顶点地址及图像尺寸属性信息,计算所述待搬移图像在搬移前对应的源地址空间范围及在搬移后对应的目的地址空间范围,包括:将所述源顶点地址与所述像素行长度、所述像素行跨度以及所述像素行总行数进行几何运算,得到所述源地址空间范围的第一首地址以及第一尾地址;所述源地址空间范围是所述第一首地址到所述第一尾地址对应的地址范围;将所述目的顶点地址与所述像素行长度、所述像素行跨度以及所述像素行总行数进行几何运算,得到所述目的地址空间范围的第二首地址以及第二尾地址;所述目的地址空间范围是所述第二首地址到所述第二尾地址对应的地址范围。
根据本公开的另一方面,还提供一种图像搬移装置,包括:计算模块、判断模块、生成模块以及控制模块。
计算模块,用于根据待搬移图像的源顶点地址、目的顶点地址及图像尺寸属性信息,计算所述待搬移图像在搬移前对应的源地址空间范围及在搬移后对应的目的地址空间范围;
判断模块,用于根据所述源地址空间范围及所述目的地址空间范围,判断后续的搬移过程是否存在Overlap;
生成模块,用于当存在Overlap时,根据Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及原始链表,生成与所述源地址空间范围对应的第一链表和与所述目的地址空间范围对应的第二链表;所述原始链表与所述源地址空间范围及所述目的地址空间范围对应;所述Overlap的类型表示重叠的偏移方向;
控制模块,用于控制DMA根据所述第一链表和所述第二链表搬移所述待搬移图像。
本公开一种可行的实现方式中,所述判断模块,用于判断所述源地址空间范围与所述目的地址空间范围是否存在重合;当存在重合时表示存在Overlap,否则表示不存在Overlap。
本公开一种可行的实现方式中,所述生成模块,用于根据所述目的顶点地址、所述图像尺寸属性信息及所述源地址空间范围,确定Overlap的类型。
本公开一种可行的实现方式中,所述Overlap的类型包括X方向的向右重叠、X方向的向左重叠、Y方向的向下重叠以及Y方向的向上重叠;所述生成模块,用于在所述Overlap的类型是所述X方向的向右重叠或所述X方向的向左重叠时,根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的X方向上的节点生成操作,根据节点生成结果得到所述第一链表及所述第二链表;在所述Overlap的类型是所述Y方向的向下重叠或所述Y方向的向上重叠时,根据所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的Y方向上的节点生成操作,根据节点生成结果及所述Overlap的类型得到所述第一链表及所述第二链表;所述X方向及所述Y方向分别表示所述待搬移图像所在的二维坐标系的横轴方向及纵轴方向。
本公开一种可行的实现方式中,所述生成模块,用于所述待搬移图像在搬移后包括四个顶点,分别是位于所述待搬移图像左上角、右上角、左下角及右下角的第一目的顶点、第二目的顶点、第三目的顶点及第四目的顶点;根据所述目的顶点地址及所述图像尺寸属性信息,得到所述第一目的顶点的地址、所述第二目的顶点的地址、所述第三目的顶点的地址及所述第四目的顶点的地址;在所述第一目的顶点的地址及所述第三目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向右重叠;在所述第二目的顶点的地址及所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向左重叠;在所述第一目的顶点的地址属于所述源地址空间范围且所述第三目的顶点的地址不属于所述源地址空间范围,或者在所述第二目的顶点的地址属于所述源地址空间范围且所述第四目的顶点的地址不属于所述源地址空间范围,或者在所述第一目的顶点的地址和所述第二目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为Y方向的向下重叠;在所述第三目的顶点的地址属于所述源地址空间范围且所述第一目的顶点的地址不属于所述源地址空间范围,或者在所述第四目的顶点的地址属于所述源地址空间范围且所述第二目的顶点的地址不属于所述源地址空间范围,或者在所述第三目的顶点的地址和所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为Y方向的向上重叠。
本公开一种可行的实现方式中,所述生成模块,用于将所述源顶点地址与所述目的顶点地址执行减法运算,得到所述待搬移图像在X方向上的偏移;根据所述源顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移前对应的第一行首地址及第一行末地址,以及根据所述目的顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移后对应的第二行首地址及第二行末地址;针对所述待搬移图像的每个像素行,以其第一行末地址为起点,以所述偏移为步长向其第一行首地址的方向步进,将该像素行拆分为多个第一像素块;以及以其第二行末地址为起点,以所述偏移为步长向其第二行首地址的方向步进,将该像素行拆分为多个第二像素块;针对所述待搬移图像的每个像素行,根据所述原始链表及所述第一像素块的地址范围,生成与每个第一像素块的地址范围对应的第一子节点,以及根据所述原始链表及所述第二像素块的地址范围,生成与每个第二像素块的地址范围对应的第二子节点;针对所述待搬移图像的每个像素行,按照与所述Overlap的类型对应的子节点连接顺序连接各个第一子节点,得到该像素行在搬移前对应的第一节点,以及按照与所述Overlap的类型对应的子节点连接顺序连接各个第二子节点,得到该像素行在搬移后对应的第二节点。
本公开一种可行的实现方式中,所述生成模块,用于针对每个第一像素块,调用系统接口将其地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该第一像素块的物理地址范围存在重合的第一目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第一目标节点的虚拟地址Node Addr1,生成与该第一像素块的物理地址范围对应的第一子节点;所述重合物理地址的属性信息包括所述重合物理地址的首地址及其重合长度;针对每个第二像素块,调用系统接口将其地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该第二像素块的物理地址范围存在重合的第二目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第二目标节点的虚拟地址Node Addr1,生成与该第二像素块的物理地址范围对应的第二子节点。
本公开一种可行的实现方式中,在所述Overlap的类型为X方向的向右重叠时,所述对应的子节点连接顺序为行末到行首;在所述Overlap的类型为X方向的向左重叠时,所述对应的子节点连接顺序为行首到行末。
本公开一种可行的实现方式中,所述生成模块,用于根据所述待搬移图像的各个像素行从上到下的排列顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表;以及依次连接与各个像素行对应的第二节点,得到所述第二链表。
本公开一种可行的实现方式中,所述生成模块,用于根据所述源顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移前对应的第一地址范围,以及根据所述目的顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移后对应的第二地址范围;针对所述待搬移图像的每个像素行,根据所述原始链表及所述第一地址范围,生成该像素行在搬移前对应的第一节点,以及根据所述原始链表及所述第二地址范围,生成该像素行在搬移后对应的第二节点。
本公开一种可行的实现方式中,所述生成模块,用于针对每个像素行,调用系统接口将其第一地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该像素行的物理地址范围存在重合的第三目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第三目标节点的虚拟地址,生成与该第三目标节点对应的第三子节点;将每个所述第三子节点依次连接,得到该像素行在搬移前对应的第一节点;针对每个像素行,调用系统接口将其第二地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该像素行的物理地址范围存在重合的第四目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第四目标节点的虚拟地址,生成与该第四目标节点对应的第四子节点;将每个所述第四子节点依次连接,得到该像素行在搬移后对应的第二节点。
本公开一种可行的实现方式中,所述生成模块,用于在所述Overlap的类型为Y方向的向下重叠时,按照从最末行到起始行的顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表;在所述Overlap的类型为Y方向的向上重叠时,按照从起始行到最末行的顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表。
本公开一种可行的实现方式中,所述图像尺寸属性信息包括所述待搬移图像的像素行长度、像素行跨度以及像素行总行数;所述计算模块,用于将所述源顶点地址与所述像素行长度、所述像素行跨度以及所述像素行总行数进行几何运算,得到所述源地址空间范围的第一首地址以及第一尾地址;所述源地址空间范围是所述第一首地址到所述第一尾地址对应的地址范围;将所述目的顶点地址与所述像素行长度、所述像素行跨度以及所述像素行总行数进行几何运算,得到所述目的地址空间范围的第二首地址以及第二尾地址;所述目的地址空间范围是所述第二首地址到所述第二尾地址对应的地址范围。
根据本公开的另一方面,还提供一种电子设备,包括存储器、处理器和包括DMA的SOC,在所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,可实施上述任一实现方式中的图像搬移方法。对于移动端,该电子设备可以是智能手机、平板电脑、VR眼镜、车载电脑等等电子产品;对于桌面端,该电子设备可以是台式机、笔记本电脑等电子产品。
根据本公开的另一方面,还提供一种计算机可读存储介质,该计算机可读存储介质上存储有图像搬移程序,当图像搬移程序被执行时,实现上述任一可行的实现方式所提供的图像搬移方法。
附图说明
图1为本公开示出的一种图像搬移场景;
图2为本公开实施例提供的图像搬移方法的流程示意图;
图3为本公开实施例提供的Overlap的类型的示意图之一;
图4为本公开实施例提供的Overlap的类型的示意图之二;
图5A为本公开实施例提供的Overlap的类型的示意图之三;
图5B为本公开实施例提供的Overlap的类型的示意图之四;
图5C为本公开实施例提供的Overlap的类型的示意图之五;
图6A为本公开实施例提供的Overlap的类型的示意图之六;
图6B为本公开实施例提供的Overlap的类型的示意图之七;
图6C为本公开实施例提供的Overlap的类型的示意图之八;
图7为本公开实施例提供的针对每个像素行拆分第一像素块的示意图;
图8为本公开一个实施例中确定图像尺寸属性信息的示意图之一;
图9为本公开一个实施例中确定图像尺寸属性信息的示意图之二;
图10为本公开一个实施例中图像搬移过程示意图之一;
图11为本公开一个实施例中图像搬移过程示意图之二;
图12为本公开一个实施例中图像搬移过程示意图之三;
图13为本公开一个实施例中图像搬移过程示意图之四;
图14为本公开一个实施例的图像搬移装置的结构示意图。
附图标记:400-图像搬移装置;410-计算模块;420-判断模块;430-生成模块;440-控制模块。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开实施例旨在提出一种图像搬移方案。下面将针对本公开所提供的图像搬移方案进行详细介绍。
首先,请参照图2,本公开的一个实施例提供一种图像搬移方法,该方法可以包括:
S110:根据待搬移图像的源顶点地址、目的顶点地址及图像尺寸属性信息,计算所述待搬移图像在搬移前对应的源地址空间范围及在搬移后对应的目的地址空间范围。
在本公开实施例中,当操作系统根据用户的操作(例如将待搬移图像从区域A搬移至区域B)生成图像搬移请求后,存储于主机(Host)端或者微内核内的应用程序对该图像搬移请求进行解析,得到解析信息。
其中,解析信息可以包括待搬移图像的顶点在搬移前对应的源顶点地址、该同一顶点在搬移后对应的目的顶点地址、待搬移图像的图像尺寸属性信息以及系统根据本次图像搬移动作所生成的原始链表Linklist 0等信息。
待搬移图像的顶点可以是待搬移图像的顶点像素,一般指的是位于待搬移图像的左上角的像素,相应的,源顶点地址一般是指的待搬移图像的左上角的像素在搬移前的地址,目的顶点地址一般是指的待搬移图像的左上角的像素在搬移后的地址。
当然,在一些实施方式中,也可以将待搬移图像的顶点约定为位于待搬移图像的其他位置的像素,例如右上角的像素。本申请后续实施例均以顶点为待搬移图像的左上角的像素为例进行介绍,可以理解,当顶点为其他位置的像素时,对应的计算过程可参照后续的计算过程进行适应性调整。
值得指出的是,源顶点地址、目的顶点地址均是属于用户态的虚拟地址。
图像尺寸属性信息一般可以包括待搬移图像包括的像素行长度、像素行跨度和像素行总行数等信息。
像素行跨度一般为默认值,像素行长度以及像素行总行数由待搬移图像的具体情况所决定。
至于操作系统所生成的与本次图像搬移动作对应的原始链表Linklist 0,操作系统在接收到图像搬移请求之时,根据上述源顶点地址、目的顶点地址以及图像尺寸属性信息生成与本次图像搬移动作对应的原始链表Linklis0,且在本公开实施例中,原始链表属于已知量。至于原始链表的具体生成过程是较为常规的现有技术,此处不再赘述。
在得到上述信息后,可以根据源顶点地址、目的顶点地址及图像尺寸属性信息,计算待搬移图像在搬移前对应的源地址空间范围及在搬移后对应的目的地址空间范围。
可选的,基于虚拟地址连续的前提,可以将源顶点地址与像素行长度、像素行跨度以及像素行总行数进行几何运算,得到源地址空间范围的第一首地址(即待搬移图像的第一个像素在搬移前的地址)以及第一尾地址(即待搬移图像的最后一个像素在搬移前的地址);所述源地址空间范围是第一首地址到第一尾地址对应的地址范围。
以顶点为待搬移图像的左上角像素为例,第一首地址即为源顶点地址本身,第一尾地址=(第一首地址+M-1)+(N-1)*k,M表示像素行长度,N表示像素行总行数,k表示像素行跨度。
类似的,将目的顶点地址与像素行长度、像素行跨度以及像素行总行数进行几何运算,得到目的地址空间范围的第二首地址以及第二尾地址;所述目的地址空间范围是第二首地址到第二尾地址对应的地址范围。
当然,上述计算所得到的源地址空间范围与目的地址空间范围均是虚拟地址空间范围。
S120:根据所述源地址空间范围及所述目的地址空间范围,判断后续的搬移过程是否存在Overlap。
可选的,在一些实施方式中,可以通过判断源地址空间范围与目的地址空间范围是否存在重合。当存在重合时表示本次图像搬移存在Overlap,否则表示本次图像搬移不存在Overlap。
此外,在另一些实施方式中,也可以通过比对目的地址空间范围的两个端点地址是否在源地址空间范围内。当在源地址空间范围内时,表示表示本次图像搬移存在Overlap。
S130:当存在Overlap时,根据Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及原始链表,生成与所述源地址空间范围对应的第一链表和与所述目的地址空间范围对应的第二链表。
其中,Overlap的类型表示重叠的偏移方向。
值得指出的是,当本次图像搬移不存在Overlap时,原始链表Linklist 0一般包括两条链表,分别对应待搬移图像在搬移前所对应的链表以及待搬移图像在搬移后所对应的链表,且在不存在Overlap时,DMA即可直接基于原始链表包括的两条链表正常执行图像搬移操作。
当本次图像搬移存在Overlap时,说明待搬移图像在搬移前后所在的位置存在重叠。针对这种情况,由于待搬移图像在搬移前后所在的位置存在重叠,说明待搬移图像在搬移前后有一部分像素所占的虚拟地址重合,此时,根据系统设置,系统默认生成的原始链表Linklist 0为一条链表,且该原始链表与待搬移图像在搬移前的源地址空间范围对应,即该原始链表中的部分数据可以指示待搬移图像在搬移前的源地址空间范围,此外,该原始链表也与待搬移图像在搬移后的目的地址空间范围对应,即该原始链表中的部分数据可以指示待搬移图像在搬移后的目的地址空间范围。也就是说,步骤S130中的原始链表,是与源地址空间范围及目的地址空间范围对应的链表。
针对这种情况,则需要基于即将发生的Overlap的Overlap的类型、图像尺寸属性信息、源顶点地址、目的顶点地址及原始链表,将原始链表中与待搬移图像在搬移前对应的源地址空间范围对应的数据剥离出,并基于剥离出的数据生成只与源地址空间范围对应的第一链表;还需要将原始链表中与待搬移图像在搬移后对应的目的地址空间范围对应的数据剥离出,并基于剥离出的数据生成只与目的地址空间范围对应的第二链表。
例如原始链表包括3个原始节点,其中,原始节点1的全部数据以及原始节点2中的部分数据与源地址空间范围对应,原始节点2中的剩余部分数据以及原始节点3的全部数据与目的地址空间范围对应,那么需要将原始节点1的全部数据以及原始节点2中的部分数据剥离出来,并基于此生成第一链表,以及将原始节点2中的剩余部分数据以及原始节点3的全部数据剥离出来,并基于此生成第二链表。
S140:控制DMA根据所述第一链表和所述第二链表搬移所述待搬移图像。
至于DMA如何根据第一链表以及第二链表实施搬移任务,是较为常规的现有技术,本公开不再对其进行详细说明。
由上述内容可知,在本公开实施例中,可基于虚拟地址连续的前提计算出待搬移图像在搬移前所对应的源地址空间范围及在搬移后所对应的目的地址空间范围,并在不依赖IOMMU的前提下,由软件基于源地址空间范围和目的地址空间范围判断后续搬移过程是否会发生Overlap。
除此之外,由于链表本身是将离散的物理地址空间映射为一片连续的虚拟地址空间的数据结构,DMA在根据链表执行数据搬移任务时也不依赖IOMMU。基于此,在本公开实施例中,当确定存在Overlap,且在基于Overlap的类型、图像尺寸属性信息、源顶点地址、目的顶点地址及原始链表,生成与源地址空间范围对应的第一链表以及与目的地址空间范围对应的第二链表后,应用程序即可将第一链表以及第二链表发送给DMA,并向DMA发送启动指令,以控制DMA将第一链表所指示的内存空间内的数据搬移到第二链表所指示的内存空间内,即实现了在不依赖于IOMMU的前提下,当发生了Overlap时,将源地址空间范围内的图像搬移到目的地址空间范围内,即可在Overlap情况下,成功实施图像搬移。
可选的,在发生Overlap的情况,还可以根据所述目的顶点地址、所述图像尺寸属性信息及所述源地址空间范围,确定所述Overlap的类型。
其中,所述Overlap的类型包括X方向的向右重叠、X方向的向左重叠、Y方向的向下重叠以及Y方向的向上重叠。
可选的,待搬移图像在搬移前后均包括四个顶点。为了便于说明,本申请实施例中,将待搬移图像在搬移后所包括的四个顶点分别命名为第一目的顶点、第二目的顶点、第三目的顶点及第四目的顶点,分别表示是位于待搬移图像左上角、右上角、左下角及右下角的顶点。
基于此,在确定所述Overlap的类型时,可以包括:先根据目的顶点地址及图像尺寸属性信息,得到第一目的顶点的地址、第二目的顶点的地址、第三目的顶点的地址及第四目的顶点的地址,然后基于各个目的顶点的地址与源地址空间范围之间的包含关系,确定出Overlap的类型。
可选的,在本申请实施例中,当目的顶点地址指的是待搬移图像左上角顶点的地址时,目的顶点地址即等同于第一目的顶点的地址。当目的顶点地址指的是待搬移图像左下角顶点的地址时,目的顶点地址即等同于第三目的顶点的地址。当目的顶点地址指的是待搬移图像右上角顶点的地址时,目的顶点地址即等同于第二目的顶点的地址。当目的顶点地址指的是待搬移图像右下角顶点的地址时,目的顶点地址即等同于第四目的顶点的地址。
以目的顶点地址指的是待搬移图像左上角顶点的地址为例,第一目的顶点的地址=目的顶点地址,第二目的顶点的地址=目的顶点地址+M-1,第三目的顶点的地址=目的顶点地址+N*k,第四目的顶点的地址=(第一首地址+M-1)+(N-1)*k。
M表示像素行长度,N表示像素行总行数,k表示像素行跨度。
在计算出各个目的顶点的地址后,即可基于各个目的顶点的地址与源地址空间范围之间的包含关系,确定出Overlap的类型。其中,Overlap的类型分为X方向上的Overlap以及Y方向上的Overlap。
X方向上的Overlap包括X方向的向右重叠以及X方向的向左重叠,Y方向上的Overlap包括Y方向的向下重叠以及Y方向的向上重叠。
可选的,如图3所示,在所述第一目的顶点的地址及所述第三目的顶点的地址均属于所述源地址空间范围时,即可确定Overlap的类型为X方向的向右重叠。
可选的,如图4所示,在所述第二目的顶点的地址及所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向左重叠。
可选的,在确定存在如图5A-5C所示的任一一种情况时,可确定所述Overlap的类型为Y方向的向下重叠。
其中,图5A代表所述第一目的顶点的地址属于所述源地址空间范围且所述第三目的顶点的地址不属于所述源地址空间范围。图5B代表所述第二目的顶点的地址属于所述源地址空间范围且所述第四目的顶点的地址不属于所述源地址空间范围。图5C代表所述第一目的顶点的地址和所述第二目的顶点的地址均属于所述源地址空间范围。
可选的,在确定存在如图6A-6C所示的任一一种情况时,可确定所述Overlap的类型为Y方向的向上重叠。
其中,图6A代表所述第三目的顶点的地址属于所述源地址空间范围且所述第一目的顶点的地址不属于所述源地址空间范围。图6B代表所述第四目的顶点的地址属于所述源地址空间范围且所述第二目的顶点的地址不属于所述源地址空间范围。图6C代表所述第三目的顶点的地址和所述第四目的顶点的地址均属于所述源地址空间范围。
下面将针对上述步骤S130的实施过程进行详细说明。
S130:当存在Overlap时,根据Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及原始链表,生成与所述源地址空间范围对应的第一链表和与所述目的地址空间范围对应的第二链表。
可选的,步骤S130可以包括:
S132:在所述Overlap的类型是所述X方向的向右重叠或所述X方向的向左重叠时,根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的X方向上的节点生成操作,根据节点生成结果得到所述第一链表及所述第二链表。
S133:在所述Overlap的类型是所述Y方向的向下重叠或所述Y方向的向上重叠时,根据所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的Y方向上的节点生成操作,根据节点生成结果及所述Overlap的类型得到所述第一链表及所述第二链表。
其中,X方向及Y方向分别表示待搬移图像所在的二维坐标系的横轴方向及纵轴方向。
在确定出Overlap的类型后,在本公开实施例中,针对X方向上的Overlap以及Y方向上的Overlap,采取不同的方式生成第一链表以及第二链表。
可选的,在本公开实施例中,针对X方向上的Overlap(包括X方向的向右重叠以及X方向的向左重叠),执行S132:根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的X方向上的节点生成操作,根据节点生成结果得到所述第一链表及所述第二链表。
在一些实施方式中,在根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的X方向上的节点生成操作时,先计算待搬移图像搬移前后在X方向上的偏移offset、待搬移图像的每个像素行在搬移前对应的行首地址及行末地址(为了便于区分,将其称为第一行首地址及第一行末地址)以及待搬移图像的每个像素行在搬移后对应的行首地址及行末地址(为了便于区分,将其称为第二行首地址及第二行末地址)。
值得指出的是,行首即为该行的第一个像素,行末即为该行的最后一个像素。
其中,将源顶点地址与目的顶点地址执行减法运算,即可得到待搬移图像在X方向上的偏移offset。
针对待搬移图像的每个像素行,根据源顶点地址、图像尺寸属性信息,即可计算得到每个像素行在搬移前对应的第一行首地址及第一行末地址。
具体的,在源顶点地址表示待搬移图像的左上角顶点时,第一个像素行的第一行首地址=源顶点地址,第一个像素行的第一行末地址=源顶点地址+M-1;第Q个像素行的第一行首地址=源顶点地址+(Q-1)*k,第Q个像素行的第一行末地址=(源顶点地址+M-1)+(Q-1)*k。Q≤N,M表示像素行长度,N表示像素行总行数,k表示像素行跨度。
针对待搬移图像的每个像素行,根据目的顶点地址、图像尺寸属性信息,计算得到待搬移图像的每个像素行在搬移后对应的第二行首地址及第二行末地址。
具体的,在目的顶点地址表示待搬移图像的左上角顶点时,第一个像素行的第二行首地址=目的顶点地址,第一个像素行的第二行末地址=目的顶点地址+M-1;第Q个像素行的第二行首地址=目的顶点地址+(Q-1)*k,第Q个像素行的第二行末地址=(目的顶点地址+M-1)+(Q-1)*k。Q≤N,M表示像素行长度,N表示像素行总行数,k表示像素行跨度。
当然,上述执行计算偏移、各个像素行的第一行首地址、各个像素行的第一行末地址、各个像素行的第二行首地址及各个像素行的第二行末地址的过程,可以是并行执行,也可以是按照一定的预设顺序来执行,本申请实施例并不对其进行具体限定。
在得到偏移offset、待搬移图像的每个像素行在搬移前对应的第一行首地址及第一行末地址以及待搬移图像的每个像素行在搬移后对应的第二行首地址及第二行末地址后,针对每个像素行,可以执行像素块拆分操作。
值得指出的是,针对X方向上的Overlap,在后续搬移过程中可能会涉及到X方向上的倒序搬移。基于此,为了避免倒序搬移过程中某次搬移会覆盖未搬移的像素,在本申请实施例中,在执行像素块拆分操作时,需要从每个像素行的行末开始拆分。
具体的,如图7所示,针对每个像素行,以其第一行末地址为起点,以偏移为步长向其第一行首地址的方向(图7中箭头所示的方向)步进,以将该像素行拆分为多个第一像素块。同理,针对每个像素行,以其第二行末地址为起点,以偏移为步长向其第二行首地址的方向步进,将该像素行拆分为多个第二像素块。
当然,按照该拆分方式,针对每个像素行,最后所得到的第一像素块包括的像素个数可能少于该行先拆分得到的第一像素块所包括的像素个数;该行的第二像素块同理。
针对每个像素行,在将按照搬移前/后拆分为多个第一像素块/第二像素块后,针对每个像素行的每个第一像素块,可根据原始链表及该第一像素块的地址范围,生成与该第一像素块的地址范围对应的第一子节点;针对每个像素行的每个第二像素块,可根据原始链表及该第二像素块的地址范围,生成与该第二像素块的地址范围对应的第二子节点。
具体的,在针对每个第一像素块生成对应的第一子节点时,可以包括如下过程。
针对每个像素行,按照从行末到行首的顺序,其第一个第一像素块(图7中的第一像素块4)的地址范围为:该第一像素块的首地址(该行的第一行末地址-偏移)~该第一像素块的尾地址(该行的第一行末地址);第H个第一像素块的地址范围为:该第一像素块的首地址(前一个第一像素块的块首地址-1-偏移)~该第一像素块的尾地址(前一个第一像素块的块首地址-1)。其中,该行的最后一个第一像素块的块首地址为该行的第一行首地址。
值得指出的是,上述第一像素块的地址范围均是虚拟地址范围,基于此,在确定出第一像素块的地址范围后,针对每个第一像素块,可通过调用系统接口将其虚拟地址范围转换成物理地址范围。由于图像所占用的物理地址不一定连续,因此,在本申请实施例中,当第一像素块实际所占用的物理地址存在不连续时,该第一像素块的物理地址范围实际包括多个连续的物理地址子范围,且物理地址子范围之间不连续;当第一像素块实际所占用的物理地址均连续时,该第一像素块的物理地址范围是连续的物理地址范围。当然,值得指出的是,本申请实施例中所涉及到的与每个像素行对应的物理地址范围以及与第二像素块对应的物理地址范围的情况和与第一像素块对应的物理地址范围情况类似。
第一像素块的块首物理地址=该第一像素块的块首地址经转换后的物理地址,第一像素块的块末物理地址=该第一像素块的块末地址经转换后的物理地址,第一像素块的像素块长度=第一像素块的块末地址-第一像素块的块首地址。
针对每个第一像素块,在已知该第一像素块的物理地址范围的前提下,可从原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该第一像素块的物理地址范围存在重合的第一目标节点,以及确定出重合物理地址的属性信息;然后根据重合物理地址的属性信息及保存该第一目标节点的虚拟地址Node Addr1,生成与该第一像素块的物理地址范围对应的第一子节点。
其中,原始链表包括多个原始节点,且每个原始节点所记录的信息包括保存该原始节点的虚拟地址Node Addr1、该原始节点指示的内存的起始物理地址和该原始节点指示的内存的内存长度。相应的,每个原始节点指示的内存的物理地址范围是:该原始节点指示的内存的起始物理地址Start Addr1~Start Addr1+该原始节点指示的内存的内存长度Length1-1。
至于筛选的过程,可以是分别将各个原始节点指示的内存的物理地址范围与第一像素块的物理地址范围进行比较,若两者存在重合,则说明当前进行比较的原始节点是当前进行比较的第一像素块的第一目标节点。
在筛选出第一目标节点后,可针对与同一个第一像素块对应的每个第一目标节点生成对应的孙子节点,然后将与同一个第一像素块对应的孙子节点依次连接,得到与当前第一像素块的物理地址范围对应的第一子节点。其中,各个孙子节点的生成顺序,即为各个孙子节点的连接顺序。
可选的,本申请对各个孙子节点的连接时机不做具体限定,例如可以是在属于同一第一子节点的全部孙子节点生成完之后再一起连接,也可以是在生成一个孙子节点后便开始连接。
下面将针对与同一个第一像素块对应的每个第一目标节点生成对应的孙子节点的过程进行介绍。
可选的,与某个第一像素块对应的第一目标节点数量至少为1。
在一些实施方式中,若针对同一第一像素块所筛选出的第一目标节点数量为1,则说明该第一目标节点所指示的内存的物理地址范围完全覆盖当前第一像素块的像素对应的物理地址范围,即当前第一像素块的所有数据均在该第一目标节点内。此时,生成1个孙子节点,且该1个孙子节点即为与当前第一像素块的物理地址范围对应的第一子节点。
在一些实施方式中,若针对同一第一像素块所筛选出的第一目标节点数量大于1,则说明当前第一像素块的像素对应的物理地址范围分布在多个第一目标节点中,此时,需要针对多个第一目标节点中的每个第一目标节点均生成一个对应的孙子节点,且将各个孙子节点进行连接得到与当前第一像素块的物理地址范围对应的第一子节点。
可选的,在生成与第一目标节点对应的孙子节点时,可以从第一目标节点所指示的内存的物理地址范围中确定出与当前第一像素块的像素对应的物理地址范围存在重合的重合物理地址的属性信息,然后根据重合物理地址的属性信息及保存该第一目标节点的虚拟地址Node Addr1,生成第一目标节点对应的孙子节点。
可选的,每个原始节点记录的信息还包括保存该原始节点的虚拟地址,重合物理地址的属性信息包括:重合物理地址的首地址Start Addr2和重合物理地址的重合长度Length2。
基于此,在生成孙子节点时,可以建立一个数据结构体作为孙子节点,该数据结构体的成员包括:保存该数据结构体(孙子节点)的虚拟地址Node Addr3、该孙子节点指示的内存的起始物理地址Start Addr3、该孙子节点指示的内存的内存长度Length3。其中,NodeAddr3=当前对应的第一目标节点的Node Addr1,Start Addr3=Start Addr2,Length3=Length2。
其中,从第一目标节点所指示的内存的物理地址范围中,确定出与当前第一像素块的像素对应的物理地址范围存在重合的重合物理地址的属性信息的过程如下。
针对第一目标节点的数量为1的情况,如图8所示。
重合物理地址的属性信息中,重合物理地址的首地址Start Addr2=当前第一像素块的块首物理地址,重合物理地址的重合长度Length2=当前第一像素块的像素块长度。
值得指出的是,对于这种情况,第一目标节点的虚拟地址Node Addr1=第一目标节点1的虚拟地址。
针对第一目标节点的数量不为1的情况,如图9所示。
针对第一个第一目标节点(如图9中的第一目标节点1),其重合物理地址的属性信息中,重合物理地址的首地址Start Addr2=当前第一像素块的块首物理地址(像素A的物理地址);重合物理地址的重合长度Length2=当前第一目标节点指示的内存的起始物理地址+当前第一目标节点指示的内存的内存长度-当前第一像素块的块首物理地址(像素A的物理地址)。对于这种情况,当前第一目标节点的虚拟地址Node Addr1=第一目标节点1的虚拟地址。
针对其余目标节点(如图9中的第一目标节点2),其重合物理地址的属性信息中,重合物理地址的首地址Start Addr2=当前第一目标节点指示的内存的起始物理地址;重合物理地址的重合长度Length2分为两种情况。
情况一:针对当前第一像素块,若当前第一目标节点不是最后一个第一目标节点,那么重合物理地址的重合长度Length2=当前第一目标节点指示的内存的内存长度。
值得指出的是,各个第一目标节点之间的顺序应遵循各个第一目标节点在原始链表中的排列顺序。
情况二:针对当前第一像素块,若当前第一目标节点是最后一个第一目标节点,那么重合物理地址的重合长度Length2=当前第一像素块的像素块长度-位于当前第一目标节点之前的第一目标节点的重合物理地址的重合长度Length2之和。
对于情况一和情况二,第一目标节点的虚拟地址Node Addr1=当前第一目标节点的虚拟地址。
当然,在与同一第一像素块对应的第一目标节点的数量为多个时,每个孙子节点包括的成员还包括:用于保存与该孙子节点连接的下一个孙子节点的虚拟地址(即下一个孙子节点的虚拟地址)。
在得到与同一第一像素块对应的各个第一目标节点对应的孙子节点后,可将各个孙子节点进行连接得到与当前第一像素块的物理地址范围对应的第一子节点。
连接的过程即是在当前孙子节点内添加用于保存下一个孙子节点的虚拟地址。各个孙子节点的生成顺序,即为各个孙子节点的连接顺序。对于得到的每个第一子节点来说,保存该第一子节点的虚拟地址(即该第一子节点的虚拟地址)是该第一子节点所包括的第一个孙子节点的虚拟地址。
与生成第一像素块对应的第一子节点的过程类似,在针对每个第二像素块生成对应的第二子节点时,即是将上述生成与第一像素块对应的第一子节点过程中所涉及到的与第一像素块有关的参数替换为与第二像素块有关的参数(例如将第一行末地址替换为第二行末地址),将源顶点地址替换为目的顶点地址,即可得到与各个第二像素块所命中的第二目标节点一一对应的孙子节点,然后将与同一个第二像素块对应的孙子节点依次连接,得到与当前第二像素块的物理地址范围对应的第二子节点。其中,连接的过程即是在当前孙子节点内添加用于保存下一个孙子节点的虚拟地址。各个孙子节点的生成顺序,即为各个孙子节点的连接顺序。
为避免赘述,上述生成与各个第二像素块的物理地址范围对应的第二子节点的过程不再重复描述。
针对同一像素行,当得到该像素行的各个第一像素块一一对应的第一子节点后,可将各个第一子节点进行连接,即可得到与该像素行对应的第一节点,与像素行对应的第一节点表示该像素行在搬移前所对应的数据。
连接的过程即是在当前第一子节点中添加用于保存下一个第一子节点的虚拟地址。对于得到的每个第一节点来说,保存该第一节点的虚拟地址(即该第一节点的虚拟地址)是该第一节点所包括的第一个子节点的虚拟地址。
同理,针对同一像素行,当得到该像素行的各个第二像素块一一对应的第二子节点后,可将各个第二子节点进行连接,即可得到与该像素行对应的第二节点,与像素行对应的第二节点表示该像素行在搬移后所对应的数据。连接的过程即是在当前第二子节点中添加用于保存下一个第二子节点的虚拟地址。
当然,在上述针对X方向生成第一链表以及第二链表的过程中,还可根据当前Overlap的类型确定是否需要对待搬移图像进行倒序搬移,即生成第一链表及第二链表的过程,还可考虑倒序搬移。
其中,连接各个第一子节点的顺序以及连接各个第二子节点的顺序,取决于X方向上的Overlap的具体类型。
进一步的,在Overlap的类型为X方向的向右重叠时,同一像素行中各个第一子节点连接顺序为行末到行首(即包括行末的第一像素块对应的第一子节点到包括行首的第一像素块对应的第一子节点),即为了避免后续搬移出错,需要倒序连接各个第一子节点,以便后续DMA实施针对X方向的倒序搬移;在Overlap的类型为X方向的向左重叠时,同一像素行中各个第一子节点的连接顺序为行首到行末。
同理,在Overlap的类型为X方向的向右重叠时,同一像素行中各个第二子节点连接顺序为行末到行首(即包括行末的第二像素块对应的第二子节点到包括行首的第二像素块对应的第二子节点),即为了避免后续搬移出错,此时需要考虑倒序搬移;在Overlap的类型为X方向的向左重叠时,同一像素行中各个第二子节点的连接顺序为行首到行末。
在得到待搬移图像的各个像素行在搬移前一一对应的第一节点后,即可按照待搬移图像的各个像素行从上到下的排列顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表。
连接第一节点的过程即是在当前第一节点中添加用于保存下一个第一节点的虚拟地址,以及连接第二节点的过程即是在当前第二节点中添加用于保存下一个第二节点的虚拟地址。
在连接顺序为行末到行首的情况下,当后续DMA将最终得到的第一链表对应的数据往最终得到的第二链表对应的数据搬移时,待搬移图像在X方向上的搬移过程如图10所示。箭头上的数字表示第一像素块的搬移顺序,即在图像搬移过程中,在各个像素行所包括的第一像素块层面,需要倒序搬移像素行所包括的第一像素块。至于Y方向上,无需倒序搬移,按照从上到下的搬移顺序即可。
在连接顺序为行首到行末的情况下,当后续DMA将最终得到的第一链表对应的数据往最终得到的第二链表对应的数据搬移时,待搬移图像在X方向上的搬移过程如图11所示。箭头下的数字表示第一像素块的搬移顺序,即在图像搬移过程中,在各个像素行所包括的第一像素块层面,无需倒序搬移像素行所包括的第一像素块。至于Y方向上,也无需倒序搬移,按照从上到下的搬移顺序即可。
可选的,在本公开实施例中,针对Y方向上的Overlap(包括Y方向的向上重叠以及Y方向的向下重叠),执行S133:根据所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的Y方向上的节点生成操作,根据节点生成结果及所述Overlap的类型得到所述第一链表及所述第二链表。
在一些实施方式中,在根据所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的Y方向上的节点生成操作时,先计算出待搬移图像的每个像素行在搬移前、后分别对应的第一地址范围以及第二地址范围,然后针对待搬移图像的每个像素行,根据其第一地址范围生成该像素行在搬移前对应的第一节点,以及根据其第二地址范围生成该像素行在搬移后对应的第二节点。
当然,上述针对同一像素行计算第一地址范围以及第二地址范围的时机可以同时进行,也可以先后进行,本申请不对其进行限定。上述针对同一像素行生成第一节点以及第二节点的时机同理。
下面将针对计算出待搬移图像的每个像素行在搬移前、后分别对应的第一地址范围以及第二地址范围,然后针对待搬移图像的每个像素行,根据其第一地址范围生成该像素行在搬移前对应的第一节点,以及根据其第二地址范围生成该像素行在搬移后对应的第二节点的过程进行介绍。
针对待搬移图像的每个像素行,可根据源顶点地址、图像尺寸属性信息,即可计算得到每个像素行在搬移前对应的第一行首地址及第一行末地址,计算过程与上述针对X方向上的Overlap时,计算得到每个像素行在搬移前对应的第一行首地址及第一行末地址类似,此处不再赘述。那么针对每个像素行,其在搬移前对应的第一地址范围即为与该像素行对应的第一行首地址~第一行末地址。
此外,可根据目的顶点地址、图像尺寸属性信息,即可计算得到每个像素行在搬移后对应的第二行首地址及第二行末地址,计算过程与上述针对X方向上的Overlap时,计算得到每个像素行在搬移后对应的第二行首地址及第二行末地址类似,此处不再赘述。那么针对每个像素行,其在搬移后对应的第二地址范围即为与该像素行对应的第二行首地址~第二行末地址。
针对每个像素行,在得到其在搬移前对应的第一地址范围后,可根据原始链表及第一地址范围,生成该像素行在搬移前对应的第一节点;以及针对每个像素行,在得到其在搬移前对应的第二地址范围后,可根据原始链表及第二地址范围,生成该像素行在搬移后对应的第二节点。
具体的,针对每个像素行,在得到与之对应的第一地址范围后,该第一地址范围是虚拟地址范围,可通过调用系统接口将其第一地址范围转换成物理地址范围。在得到每个像素行的物理地址范围后,可从原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该像素行的物理地址范围存在重合的第三目标节点,以及确定出重合物理地址的属性信息。后续可根据重合物理地址的属性信息及保存该第三目标节点的虚拟地址Node Addr1,生成与该第三目标节点对应的第三子节点。
其中,原始链表包括多个原始节点,且每个原始节点所记录的信息包括保存该原始节点的虚拟地址Node Addr1、该原始节点指示的内存的起始物理地址和该原始节点指示的内存的内存长度。相应的,每个原始节点指示的内存的物理地址范围是:该原始节点指示的内存的起始物理地址Start Addr1~Start Addr1+该原始节点指示的内存的内存长度Length1-1。
至于筛选的过程,可以是分别将各个原始节点指示的内存的物理地址范围与各个像素行的物理地址范围进行比较,若两者存在重合,则说明当前进行比较的原始节点是当前进行比较的像素行的第三目标节点。
在筛选出第三目标节点后,可针对与同一个像素行对应的每个第三目标节点生成对应的第三子节点,然后将与同一个像素行对应的第三子节点依次连接,得到与当前像素行在搬移前的物理地址范围对应的第一节点。其中,各个第三子节点的生成顺序,即为各个第三子节点的连接顺序。连接的过程即是在当前第三子节点内添加用于保存下一个第三子节点的虚拟地址。对于连接后所得到的每个第一节点来说,保存该第一节点的虚拟地址(即该第一节点的虚拟地址)是该第一节点所包括的第一个第三子节点的虚拟地址。
可选的,本申请对各个第三子节点的连接时机不做具体限定,例如可以是在属于同一像素行的全部第三子节点生成完之后再一起连接,也可以是在生成一个第三子节点后便开始连接。
与前文所介绍的针对与同一个第一像素块对应的每个第一目标节点生成对应的孙子节点的过程类似,在本公开实施例中,与某个像素行对应的第三目标节点数量至少为1。
在一些实施方式中,若针对同一像素行所筛选出的第三目标节点数量为1,则说明该第三目标节点所指示的内存的物理地址范围完全覆盖当前像素行的像素对应的物理地址范围,即当像素行的所有数据均在该第三目标节点内。此时,生成1个第三子节点,且该1个第三子节点即为与当前像素行在搬移前的物理地址范围对应的第一节点。
在一些实施方式中,若针对同一像素行所筛选出的第三目标节点数量大于1,则说明当前像素行的像素在搬移前对应的物理地址范围分布在多个第三目标节点中,此时,需要针对多个第三目标节点中的每个第三目标节点均生成一个对应的第三子节点,且将各个第三子节点进行连接得到与当前像素行在搬移前的物理地址范围对应的第一节点。
可选的,在生成与第三目标节点对应的第三子节点时,可以从第三目标节点所指示的内存的物理地址范围中确定出与当前像素行的像素对应的物理地址范围存在重合的重合物理地址的属性信息,然后根据重合物理地址的属性信息及保存该第三目标节点的虚拟地址Node Addr1,生成第三目标节点对应的第三子节点。
可选的,每个原始节点记录的信息还包括保存该原始节点的虚拟地址,重合物理地址的属性信息包括:重合物理地址的首地址Start Addr2和重合物理地址的重合长度Length2。
基于此,在生成第三子节点时,可以建立一个数据结构体作为第三子节点,该数据结构体的成员包括:保存该数据结构体(第三子节点)的虚拟地址Node Addr4、该第三子节点指示的内存的起始物理地址Start Addr4、该第三子节点指示的内存的内存长度Length4。其中,Node Addr4=当前对应的第三目标节点的Node Addr1,Start Addr4=StartAddr2,Length4=Length2。
其中,从第三目标节点所指示的内存的物理地址范围中,确定出与当前像素行的像素对应的物理地址范围存在重合的重合物理地址的属性信息的过程与前文类似,为避免赘述,此处不再重复介绍。
在Overlap的类型为Y方向上的Overlap的情况下,与生成每个像素行对应的第一节点的过程类似,在生成与每个像素行对应的第二节点时,即是针对每个像素行,调用系统接口将其第二地址范围转换成物理地址范围;从原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该像素行的物理地址范围存在重合的第四目标节点,以及确定出重合物理地址的属性信息;后续根据重合物理地址的属性信息及保存该第四目标节点的虚拟地址,生成与该第四目标节点对应的第四子节点;然后将同一像素行的每个第四子节点依次连接,得到该像素行在搬移后对应的第二节点。
为避免赘述,上述生成与各个像素行对应的第二节点的过程请参照前述相似描述,此处不再重复。
在得到待搬移图像的每个像素行在搬移前对应的第一节点后,即可根据与当前的Overlap的类型对应的连接顺序,将待搬移图像包括的每个像素行在搬移前对应的第一节点进行连接,得到第一链表。此外,在得到待搬移图像的每个像素行在搬移后对应的第二节点后,即可根据与当前的Overlap的类型对应的连接顺序,将待搬移图像包括的每个像素行在搬移后对应的第二节点进行连接,得到第二链表。
连接的过程即是在当前第一节点内添加用于保存下一个第一节点的虚拟地址,以及在当前第二节点内添加用于保存下一个第二节点的虚拟地址。
上述生成第一链表以及第二链表的时机可以同时进行,也可以先后进行,本申请不对其进行限定。
当然,在上述针对Y方向生成第一链表以及第二链表的过程中,还需要根据当前Overlap的类型确定是否需要对待搬移图像进行倒序搬移,即生成第一链表及第二链表的过程还可考虑倒序搬移。
其中,在所述Overlap的类型为Y方向的向下重叠时,与当前的Overlap的类型对应的连接顺序为最末行到起始行。此时,按照待搬移图像的最末行对应的第一节点到待搬移图像的起始行对应的第一节点的顺序,依次连接各个第一节点,得到第一链表,即在所述Overlap的类型为Y方向的向下重叠时,为了避免后续搬移出错,此时需要倒序连接各个第一节点,以便于DMA实施针对Y方向的倒序搬移。同理,按照待搬移图像的最末行对应的第二节点到待搬移图像的起始行对应的第二节点的顺序,依次连接各个第二节点,得到第二链表。
在所述Overlap的类型为Y方向的向上重叠时,与当前的Overlap的类型对应的连接顺序为起始行到最末行。此时,按照待搬移图像的起始行对应的第一节点到待搬移图像的最末行对应的第一节点的顺序依次连接各个第一节点,得到第一链表。同理,按照待搬移图像的起始行对应的第二节点到待搬移图像的最末行对应的第二节点的顺序依次连接各个第二节点,得到第二链表。
在连接顺序为最末行到起始行的情况下,当后续DMA将最终得到的第一链表对应的数据往最终得到的第二链表对应的数据搬移时,待搬移图像在Y方向上的搬移过程如图12所示。箭头上的数字表示像素行的搬移顺序,即在图像搬移过程中,在各个像素行层面,需要倒序各个像素行。至于X方向上,无需倒序搬移,按照从左到右的搬移顺序即可。
在连接顺序为起始行到最末行的情况下,当后续DMA将最终得到的第一链表对应的数据往最终得到的第二链表对应的数据搬移时,待搬移图像在Y方向上的搬移过程如图13所示。箭头上的数字表示像素行的搬移顺序,即在图像搬移过程中,在各个像素行层面,无需倒序搬移各个像素行。至于X方向上,也无需倒序搬移第一像素块。
此外,请参照图14,本公开实施例还提供一种图像搬移装置400,可以包括计算模块410、判断模块420、生成模块430以及控制模块440。
计算模块410,用于根据待搬移图像的源顶点地址、目的顶点地址及图像尺寸属性信息,计算所述待搬移图像在搬移前对应的源地址空间范围及在搬移后对应的目的地址空间范围;
判断模块420,用于根据所述源地址空间范围及所述目的地址空间范围,判断后续的搬移过程是否存在Overlap;
生成模块430,用于当存在Overlap时,根据Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及原始链表,生成与所述源地址空间范围对应的第一链表和与所述目的地址空间范围对应的第二链表;所述原始链表与所述源地址空间范围及所述目的地址空间范围对应;所述Overlap的类型表示重叠的偏移方向;
控制模块440,用于控制DMA根据所述第一链表和所述第二链表搬移所述待搬移图像。
本公开一种可行的实现方式中,所述判断模块420,用于判断所述源地址空间范围与所述目的地址空间范围是否存在重合;当存在重合时表示存在Overlap,否则表示不存在Overlap。
本公开一种可行的实现方式中,所述生成模块430,用于根据所述目的顶点地址、所述图像尺寸属性信息及所述源地址空间范围,确定Overlap的类型。
本公开一种可行的实现方式中,所述Overlap的类型包括X方向的向右重叠、X方向的向左重叠、Y方向的向下重叠以及Y方向的向上重叠;所述生成模块430,用于在所述Overlap的类型是所述Y方向的向下重叠或所述Y方向的向上重叠时,根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的X方向上的节点生成操作,根据节点生成结果得到所述第一链表及所述第二链表;在所述Overlap的类型是属于Y方向的Overlap时,根据所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的Y方向上的节点生成操作,根据节点生成结果及所述Overlap的类型得到所述第一链表及所述第二链表;所述X方向及所述Y方向分别表示所述待搬移图像所在的二维坐标系的横轴方向及纵轴方向。
本公开一种可行的实现方式中,所述生成模块430,用于所述待搬移图像在搬移后包括四个顶点,分别是位于所述待搬移图像左上角、右上角、左下角及右下角的第一目的顶点、第二目的顶点、第三目的顶点及第四目的顶点;根据所述目的顶点地址及所述图像尺寸属性信息,得到所述第一目的顶点的地址、所述第二目的顶点的地址、所述第三目的顶点的地址及所述第四目的顶点的地址;在所述第一目的顶点的地址及所述第三目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向右重叠;在所述第二目的顶点的地址及所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向左重叠;在所述第一目的顶点的地址属于所述源地址空间范围且所述第三目的顶点的地址不属于所述源地址空间范围,或者在所述第二目的顶点的地址属于所述源地址空间范围且所述第四目的顶点的地址不属于所述源地址空间范围,或者在所述第一目的顶点的地址和所述第二目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为Y方向的向下重叠;在所述第三目的顶点的地址属于所述源地址空间范围且所述第一目的顶点的地址不属于所述源地址空间范围,或者在所述第四目的顶点的地址属于所述源地址空间范围且所述第二目的顶点的地址不属于所述源地址空间范围,或者在所述第三目的顶点的地址和所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为Y方向的向上重叠。
本公开一种可行的实现方式中,所述生成模块430,用于将所述源顶点地址与所述目的顶点地址执行减法运算,得到所述待搬移图像在X方向上的偏移;根据所述源顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移前对应的第一行首地址及第一行末地址,以及根据所述目的顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移后对应的第二行首地址及第二行末地址;针对所述待搬移图像的每个像素行,以其第一行末地址为起点,以所述偏移为步长向其第一行首地址的方向步进,将该像素行拆分为多个第一像素块;以及以其第二行末地址为起点,以所述偏移为步长向其第二行首地址的方向步进,将该像素行拆分为多个第二像素块;针对所述待搬移图像的每个像素行,根据所述原始链表及所述第一像素块的地址范围,生成与每个第一像素块的地址范围对应的第一子节点,以及根据所述原始链表及所述第二像素块的地址范围,生成与每个第二像素块的地址范围对应的第二子节点;针对所述待搬移图像的每个像素行,按照与所述Overlap的类型对应的子节点连接顺序连接各个第一子节点,得到该像素行在搬移前对应的第一节点,以及按照与所述Overlap的类型对应的子节点连接顺序连接各个第二子节点,得到该像素行在搬移后对应的第二节点。
本公开一种可行的实现方式中,所述生成模块430,用于针对每个第一像素块,调用系统接口将其地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该第一像素块的物理地址范围存在重合的第一目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第一目标节点的虚拟地址Node Addr1,生成与该第一像素块的物理地址范围对应的第一子节点;所述重合物理地址的属性信息包括所述重合物理地址的首地址及其重合长度;针对每个第二像素块,调用系统接口将其地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该第二像素块的物理地址范围存在重合的第二目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第二目标节点的虚拟地址Node Addr1,生成与该第二像素块的物理地址范围对应的第二子节点。
本公开一种可行的实现方式中,在所述Overlap的类型为X方向的向右重叠时,所述对应的子节点连接顺序为行末到行首;在所述Overlap的类型为X方向的向左重叠时,所述对应的子节点连接顺序为行首到行末。
本公开一种可行的实现方式中,所述生成模块430,用于根据所述待搬移图像的各个像素行从上到下的排列顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表;以及依次连接与各个像素行对应的第二节点,得到所述第二链表。
本公开一种可行的实现方式中,所述生成模块430,用于根据所述源顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移前对应的第一地址范围,以及根据所述目的顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移后对应的第二地址范围;针对所述待搬移图像的每个像素行,根据所述原始链表及所述第一地址范围,生成该像素行在搬移前对应的第一节点,以及根据所述原始链表及所述第二地址范围,生成该像素行在搬移后对应的第二节点。
本公开一种可行的实现方式中,所述生成模块430,用于针对每个像素行,调用系统接口将其第一地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该像素行的物理地址范围存在重合的第三目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第三目标节点的虚拟地址,生成与该第三目标节点对应的第三子节点;将每个所述第三子节点依次连接,得到该像素行在搬移前对应的第一节点;针对每个像素行,调用系统接口将其第二地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该像素行的物理地址范围存在重合的第四目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第四目标节点的虚拟地址,生成与该第四目标节点对应的第四子节点;将每个所述第四子节点依次连接,得到该像素行在搬移后对应的第二节点。
本公开一种可行的实现方式中,所述生成模块430,用于在所述Overlap的类型为Y方向的向下重叠时,按照从最末行到起始行的顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表;在所述Overlap的类型为Y方向的向上重叠时,按照从起始行到最末行的顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表。
本公开一种可行的实现方式中,所述图像尺寸属性信息包括所述待搬移图像的像素行长度、像素行跨度以及像素行总行数;所述计算模块410,用于将所述源顶点地址与所述像素行长度、所述像素行跨度以及所述像素行总行数进行几何运算,得到所述源地址空间范围的第一首地址以及第一尾地址;所述源地址空间范围是所述第一首地址到所述第一尾地址对应的地址范围;将所述目的顶点地址与所述像素行长度、所述像素行跨度以及所述像素行总行数进行几何运算,得到所述目的地址空间范围的第二首地址以及第二尾地址;所述目的地址空间范围是所述第二首地址到所述第二尾地址对应的地址范围。
此外,本公开实施例还提供一种电子设备,包括存储器、处理器、SOC及其他必要的部件,在SOC内包括DMA。在所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,可实施上述任一实现方式中的图像搬移方法。
其中,存储器和处理器可以理解成独立于SOC之外的Host主机端或者微内核所包括的元器件。
在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、电视、平板电脑、VR设备等多媒体设备;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机、工作站、服务器等。
此外,本公开实施例还提供一种计算机可读存储介质,在该计算机可读存储介质上存储有图像搬移程序,该图像搬移程序被执行时,可实现上述任一可行的实现方式所提供的图像搬移方法。至于具体的执行过程可参照上述方法实施例,此处不再赘述。
综上,在本申请实施例中,可基于虚拟地址连续的前提计算出待搬移图像在搬移前所对应的源地址空间范围及在搬移后所对应的目的地址空间范围,并在不依赖IOMMU的前提下,基于源地址空间范围和目的地址空间范围判断后续搬移过程是否会发生Overlap。除此之外,由于链表本身是将离散的物理地址空间映射为一片连续的虚拟地址空间的数据结构,DMA在根据链表执行数据搬移任务时也不依赖IOMMU。基于此,在本公开实施例中,当确定存在Overlap,且在基于Overlap的类型、图像尺寸属性信息、源顶点地址、目的顶点地址及原始链表,生成第一链表及第二链表后,应用程序即可将第一链表以及第二链表发送给DMA,并向DMA发送启动指令,以控制DMA将第一链表所指示的内存空间内的数据搬移到第二链表所指示的内存空间内,即实现了在不依赖于IOMMU的前提下,处理图像搬移过程中的Overlap,以避免图像搬移出错。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例和落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求和其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框和流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用于说明本公开的技术方案而非对其保护范围的限制,尽管参照上述实施例对本公开进行了详细的说明,所属领域的普通技术人员应当理解:本领域技术人员阅读本公开后依然可对发明的具体实施方式进行种种变更、修改或者等同替换,但这些变更、修改或者等同替换,均在公开待批的权利要求保护范围之内。

Claims (22)

1.一种图像搬移方法,所述方法包括:
根据待搬移图像的源顶点地址、目的顶点地址及图像尺寸属性信息,计算所述待搬移图像在搬移前对应的源地址空间范围及在搬移后对应的目的地址空间范围;
根据所述源地址空间范围及所述目的地址空间范围,判断后续的搬移过程是否存在Overlap;
当存在Overlap时,根据Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及原始链表,生成与所述源地址空间范围对应的第一链表和与所述目的地址空间范围对应的第二链表;所述原始链表与所述源地址空间范围及所述目的地址空间范围对应;所述Overlap的类型表示重叠的偏移方向;所述第一链表是将所述原始链表中与所述源地址空间范围对应的数据剥离出后,基于该剥离的数据生成的与所述源地址空间范围对应的链表,所述第二链表是将所述原始链表中与所述目的地址空间范围对应的数据剥离出后,基于该剥离的数据生成的与所述目的地址空间范围对应的链表;
控制DMA根据所述第一链表和所述第二链表搬移所述待搬移图像。
2.根据权利要求1所述的方法,所述根据所述源地址空间范围及所述目的地址空间范围,判断后续的搬移过程是否存在Overlap,包括:
判断所述源地址空间范围与所述目的地址空间范围是否存在重合;当存在重合时表示存在Overlap,否则表示不存在Overlap。
3.根据权利要求1所述的方法,所述方法还包括:
根据所述目的顶点地址、所述图像尺寸属性信息及所述源地址空间范围,确定所述Overlap的类型。
4.根据权利要求3所述的方法,所述待搬移图像在搬移后包括四个顶点,分别是位于所述待搬移图像左上角、右上角、左下角及右下角的第一目的顶点、第二目的顶点、第三目的顶点及第四目的顶点;所述根据所述目的顶点地址、所述图像尺寸属性信息及所述源地址空间范围,确定所述Overlap的类型,包括:
根据所述目的顶点地址及所述图像尺寸属性信息,得到所述第一目的顶点的地址、所述第二目的顶点的地址、所述第三目的顶点的地址及所述第四目的顶点的地址;
在所述第一目的顶点的地址及所述第三目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向右重叠;
在所述第二目的顶点的地址及所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向左重叠;
在所述第一目的顶点的地址属于所述源地址空间范围且所述第三目的顶点的地址不属于所述源地址空间范围,或者在所述第二目的顶点的地址属于所述源地址空间范围且所述第四目的顶点的地址不属于所述源地址空间范围,或者在所述第一目的顶点的地址和所述第二目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为Y方向的向下重叠;
在所述第三目的顶点的地址属于所述源地址空间范围且所述第一目的顶点的地址不属于所述源地址空间范围,或者在所述第四目的顶点的地址属于所述源地址空间范围且所述第二目的顶点的地址不属于所述源地址空间范围,或者在所述第三目的顶点的地址和所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为Y方向的向上重叠。
5.根据权利要求1所述的方法,所述Overlap的类型包括X方向的向右重叠、X方向的向左重叠、Y方向的向下重叠以及Y方向的向上重叠;所述根据Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及原始链表,生成与所述源地址空间范围对应的第一链表和与所述目的地址空间范围对应的第二链表,包括:
在所述Overlap的类型是所述X方向的向右重叠或所述X方向的向左重叠时,根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的X方向上的节点生成操作,根据节点生成结果得到所述第一链表及所述第二链表;
在所述Overlap的类型是所述Y方向的向下重叠或所述Y方向的向上重叠时,根据所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的Y方向上的节点生成操作,根据节点生成结果及所述Overlap的类型得到所述第一链表及所述第二链表;
所述X方向及所述Y方向分别表示所述待搬移图像所在的二维坐标系的横轴方向及纵轴方向。
6.根据权利要求5所述的方法,所述根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的X方向上的节点生成操作,包括:
将所述源顶点地址与所述目的顶点地址执行减法运算,得到所述待搬移图像在X方向上的偏移;
根据所述源顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移前对应的第一行首地址及第一行末地址,以及根据所述目的顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移后对应的第二行首地址及第二行末地址;
针对所述待搬移图像的每个像素行,以其第一行末地址为起点,以所述偏移为步长向其第一行首地址的方向步进,将该像素行拆分为多个第一像素块;以及以其第二行末地址为起点,以所述偏移为步长向其第二行首地址的方向步进,将该像素行拆分为多个第二像素块;
针对所述待搬移图像的每个像素行,根据所述原始链表及所述第一像素块的地址范围,生成与每个第一像素块的地址范围对应的第一子节点,以及根据所述原始链表及所述第二像素块的地址范围,生成与每个第二像素块的地址范围对应的第二子节点;
针对所述待搬移图像的每个像素行,按照与所述Overlap的类型对应的子节点连接顺序连接各个第一子节点,得到该像素行在搬移前对应的第一节点,以及按照与所述Overlap的类型对应的子节点连接顺序连接各个第二子节点,得到该像素行在搬移后对应的第二节点。
7.根据权利要求6所述的方法,所述根据所述原始链表及所述第一像素块的地址范围,生成与每个第一像素块的地址范围对应的第一子节点,包括:
针对每个第一像素块,调用系统接口将其地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该第一像素块的物理地址范围存在重合的第一目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第一目标节点的虚拟地址Node Addr1,生成与该第一像素块的物理地址范围对应的第一子节点;所述重合物理地址的属性信息包括所述重合物理地址的首地址及其重合长度;
相应的,所述根据所述原始链表及所述第二像素块的地址范围,生成与每个第二像素块的地址范围对应的第二子节点,包括:
针对每个第二像素块,调用系统接口将其地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该第二像素块的物理地址范围存在重合的第二目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第二目标节点的虚拟地址Node Addr1,生成与该第二像素块的物理地址范围对应的第二子节点。
8.根据权利要求6所述的方法,在所述Overlap的类型为X方向的向右重叠时,所述对应的子节点连接顺序为行末到行首;在所述Overlap的类型为X方向的向左重叠时,所述对应的子节点连接顺序为行首到行末。
9.根据权利要求6-8任一项所述的方法,所述根据节点生成结果得到所述第一链表及所述第二链表,包括:
根据所述待搬移图像的各个像素行从上到下的排列顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表;以及依次连接与各个像素行对应的第二节点,得到所述第二链表。
10.根据权利要求5所述的方法,所述根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的Y方向上的节点生成操作,包括:
根据所述源顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移前对应的第一地址范围,以及根据所述目的顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移后对应的第二地址范围;
针对所述待搬移图像的每个像素行,根据所述原始链表及所述第一地址范围,生成该像素行在搬移前对应的第一节点,以及根据所述原始链表及所述第二地址范围,生成该像素行在搬移后对应的第二节点。
11.根据权利要求10所述的方法,所述根据所述原始链表及所述第一地址范围,生成该像素行在搬移前对应的第一节点,包括:
针对每个像素行,调用系统接口将其第一地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该像素行的物理地址范围存在重合的第三目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第三目标节点的虚拟地址,生成与该第三目标节点对应的第三子节点;将每个所述第三子节点依次连接,得到该像素行在搬移前对应的第一节点;
相应的,所述根据所述原始链表及所述第二地址范围,生成该像素行在搬移后对应的第二节点,包括:
针对每个像素行,调用系统接口将其第二地址范围转换成物理地址范围;从所述原始链表包括的多个原始节点中,筛选出其指示的内存的物理地址范围与该像素行的物理地址范围存在重合的第四目标节点;确定出重合物理地址的属性信息;根据所述重合物理地址的属性信息及保存该第四目标节点的虚拟地址,生成与该第四目标节点对应的第四子节点;将每个所述第四子节点依次连接,得到该像素行在搬移后对应的第二节点。
12.根据权利要求10或11所述的方法,所述根据节点生成结果及所述Overlap的类型得到所述第一链表及所述第二链表,包括:
在所述Overlap的类型为Y方向的向下重叠时,按照从最末行到起始行的顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表;
在所述Overlap的类型为Y方向的向上重叠时,按照从起始行到最末行的顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表。
13.根据权利要求1所述的方法,所述图像尺寸属性信息包括所述待搬移图像的像素行长度、像素行跨度以及像素行总行数;所述根据待搬移图像的源顶点地址、目的顶点地址及图像尺寸属性信息,计算所述待搬移图像在搬移前对应的源地址空间范围及在搬移后对应的目的地址空间范围,包括:
将所述源顶点地址与所述像素行长度、所述像素行跨度以及所述像素行总行数进行几何运算,得到所述源地址空间范围的第一首地址以及第一尾地址;所述源地址空间范围是所述第一首地址到所述第一尾地址对应的地址范围;
将所述目的顶点地址与所述像素行长度、所述像素行跨度以及所述像素行总行数进行几何运算,得到所述目的地址空间范围的第二首地址以及第二尾地址;所述目的地址空间范围是所述第二首地址到所述第二尾地址对应的地址范围。
14.一种图像搬移装置,包括:
计算模块,用于根据待搬移图像的源顶点地址、目的顶点地址及图像尺寸属性信息,计算所述待搬移图像在搬移前对应的源地址空间范围及在搬移后对应的目的地址空间范围;
判断模块,用于根据所述源地址空间范围及所述目的地址空间范围,判断后续的搬移过程是否存在Overlap;
生成模块,用于当存在Overlap时,根据Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及原始链表,生成与所述源地址空间范围对应的第一链表和与所述目的地址空间范围对应的第二链表;所述原始链表与所述源地址空间范围及所述目的地址空间范围对应;所述Overlap的类型表示重叠的偏移方向;所述第一链表是将所述原始链表中与所述源地址空间范围对应的数据剥离出后,基于该剥离的数据生成的与所述源地址空间范围对应的链表,所述第二链表是将所述原始链表中与所述目的地址空间范围对应的数据剥离出后,基于该剥离的数据生成的与所述目的地址空间范围对应的链表;
控制模块,用于控制DMA根据所述第一链表和所述第二链表搬移所述待搬移图像。
15.根据权利要求14所述的装置,所述Overlap的类型包括X方向的向右重叠、X方向的向左重叠、Y方向的向下重叠以及Y方向的向上重叠;所述生成模块,用于:
在所述Overlap的类型是所述X方向的向右重叠或所述X方向的向左重叠时,根据所述Overlap的类型、所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的X方向上的节点生成操作,根据节点生成结果得到所述第一链表及所述第二链表;
在所述Overlap的类型是所述Y方向的向下重叠或所述Y方向的向上重叠时,根据所述图像尺寸属性信息、所述源顶点地址、所述目的顶点地址及所述原始链表,执行针对所述待搬移图像的Y方向上的节点生成操作,根据节点生成结果及所述Overlap的类型得到所述第一链表及所述第二链表;所述X方向及所述Y方向分别表示所述待搬移图像所在的二维坐标系的横轴方向及纵轴方向。
16.根据权利要求15所述的装置,所述待搬移图像在搬移后包括四个顶点,分别是位于所述待搬移图像左上角、右上角、左下角及右下角的第一目的顶点、第二目的顶点、第三目的顶点及第四目的顶点;所述生成模块,用于:
根据所述目的顶点地址及所述图像尺寸属性信息,得到所述第一目的顶点的地址、所述第二目的顶点的地址、所述第三目的顶点的地址及所述第四目的顶点的地址;
在所述第一目的顶点的地址及所述第三目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向右重叠;
在所述第二目的顶点的地址及所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为X方向的向左重叠;
在所述第一目的顶点的地址属于所述源地址空间范围且所述第三目的顶点的地址不属于所述源地址空间范围,或者在所述第二目的顶点的地址属于所述源地址空间范围且所述第四目的顶点的地址不属于所述源地址空间范围,或者在所述第一目的顶点的地址和所述第二目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为Y方向的向下重叠;
在所述第三目的顶点的地址属于所述源地址空间范围且所述第一目的顶点的地址不属于所述源地址空间范围,或者在所述第四目的顶点的地址属于所述源地址空间范围且所述第二目的顶点的地址不属于所述源地址空间范围,或者在所述第三目的顶点的地址和所述第四目的顶点的地址均属于所述源地址空间范围时,确定所述Overlap的类型为Y方向的向上重叠。
17.根据权利要求15所述的装置,所述生成模块,用于:
将所述源顶点地址与所述目的顶点地址执行减法运算,得到所述待搬移图像在X方向上的偏移;
根据所述源顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移前对应的第一行首地址及第一行末地址,以及根据所述目的顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移后对应的第二行首地址及第二行末地址;
针对所述待搬移图像的每个像素行,以其第一行末地址为起点,以所述偏移为步长向其第一行首地址的方向步进,将该像素行拆分为多个第一像素块;以及以其第二行末地址为起点,以所述偏移为步长向其第二行首地址的方向步进,将该像素行拆分为多个第二像素块;
针对所述待搬移图像的每个像素行,根据所述原始链表及所述第一像素块的地址范围,生成与每个第一像素块的地址范围对应的第一子节点,以及根据所述原始链表及所述第二像素块的地址范围,生成与每个第二像素块的地址范围对应的第二子节点;
针对所述待搬移图像的每个像素行,按照与所述Overlap的类型对应的子节点连接顺序连接各个第一子节点,得到该像素行在搬移前对应的第一节点,以及按照与所述Overlap的类型对应的子节点连接顺序连接各个第二子节点,得到该像素行在搬移后对应的第二节点。
18.根据权利要求17所述的装置,在所述Overlap的类型为X方向的向右重叠时,所述对应的子节点连接顺序为行末到行首;在所述Overlap的类型为X方向的向左重叠时,所述对应的子节点连接顺序为行首到行末。
19.根据权利要求15所述的装置,所述生成模块,用于:
根据所述源顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移前对应的第一地址范围,以及根据所述目的顶点地址、所述图像尺寸属性信息,计算所述待搬移图像的每个像素行在搬移后对应的第二地址范围;
针对所述待搬移图像的每个像素行,根据所述原始链表及所述第一地址范围,生成该像素行在搬移前对应的第一节点,以及根据所述原始链表及所述第二地址范围,生成该像素行在搬移后对应的第二节点。
20.根据权利要求15所述的装置,所述生成模块,用于:
在所述Overlap的类型为Y方向的向下重叠时,按照从最末行到起始行的顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表;在所述Overlap的类型为Y方向的向上重叠时,按照从起始行到最末行的顺序,依次连接与各个像素行对应的第一节点,得到所述第一链表,以及依次连接与各个像素行对应的第二节点,得到所述第二链表。
21.一种电子设备,包括存储器、处理器和SOC,所述SOC包括DMA,在所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实施如权利要求1-13中任一项所述的图像搬移方法。
22.一种计算机可读存储介质,所述计算机可读存储介质上存储有图像搬移程序,所述图像搬移程序被执行时,实现如权利要求1-13中任一项所述的图像搬移方法。
CN202211682512.1A 2022-12-27 2022-12-27 图像搬移方法、装置、电子设备和计算机可读存储介质 Active CN115660941B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211682512.1A CN115660941B (zh) 2022-12-27 2022-12-27 图像搬移方法、装置、电子设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211682512.1A CN115660941B (zh) 2022-12-27 2022-12-27 图像搬移方法、装置、电子设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN115660941A CN115660941A (zh) 2023-01-31
CN115660941B true CN115660941B (zh) 2023-03-14

Family

ID=85023520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211682512.1A Active CN115660941B (zh) 2022-12-27 2022-12-27 图像搬移方法、装置、电子设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN115660941B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116308999B (zh) * 2023-05-18 2023-08-08 南京砺算科技有限公司 图形处理器的数据处理方法及图形处理器、存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102111615B (zh) * 2009-12-29 2012-11-28 中兴通讯股份有限公司 直接存储器存取搬移实现视频滤波的方法及系统
CN113407357B (zh) * 2020-03-17 2023-08-22 华为技术有限公司 进程间数据搬移的方法及装置
CN114693501A (zh) * 2020-12-25 2022-07-01 英特尔公司 用于图像处理的引导式神经网络模型的装置和方法
CN112947857B (zh) * 2021-02-25 2023-02-28 山东英信计算机技术有限公司 一种数据搬移方法、装置、设备及计算机可读存储介质
CN113110802A (zh) * 2021-04-16 2021-07-13 维沃移动通信有限公司 图像块的处理方法、装置、电子设备、可读存储介质
CN114756490A (zh) * 2022-03-21 2022-07-15 奥比中光科技集团股份有限公司 一种dma数据搬运方法及装置
CN114785748B (zh) * 2022-06-21 2022-09-16 苏州领慧立芯科技有限公司 用于图像传输的dma控制系统与方法

Also Published As

Publication number Publication date
CN115660941A (zh) 2023-01-31

Similar Documents

Publication Publication Date Title
CN107958480B (zh) 图像渲染方法、装置及存储介质
US10085056B2 (en) Method and system for improving application sharing by dynamic partitioning
CN1329870C (zh) 任意形状图像的基于块的旋转
CN115660941B (zh) 图像搬移方法、装置、电子设备和计算机可读存储介质
CN102023843B (zh) 函数的调用方法、装置及智能卡
US20230338842A1 (en) Rendering processing method and electronic device
CN114022344B (zh) 基于Linux服务器的Android容器渲染资源共享方法和装置
CN111080544B (zh) 基于图像的人脸畸变校正方法、装置及电子设备
CN105335309A (zh) 一种数据传输方法及计算机
CN108197596B (zh) 一种手势识别方法和装置
CN107122104B (zh) 数据显示方法及装置
CN109718554A (zh) 一种实时渲染方法、装置及终端
CN111091083B (zh) 基于图像的人脸尺度计算方法、装置及电子设备
CN111639523B (zh) 目标检测方法、装置、计算机设备和存储介质
JP2021174531A (ja) 目標追跡方法及び装置、電子機器、記憶媒体並びにコンピュータプログラム
CN114115673B (zh) 车载屏幕的控制方法
CN113129366A (zh) 单目slam初始化方法、装置及电子设备
CN115658351B (zh) 2d拷贝方法、装置、电子设备和计算机可读存储介质
CN114090466A (zh) 一种指令处理装置、方法、计算机设备及存储介质
CN111973990A (zh) 游戏地图的动态加载方法、装置,电子设备及存储介质
CN112181264A (zh) 一种手势识别方法和装置
US11663752B1 (en) Augmented reality processing device and method
CN112915534B (zh) 游戏的图像计算方法及装置
CN115661485B (zh) 图像特征提取方法、装置、设备及存储介质
CN116912790A (zh) 一种车道线检测方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240108

Address after: 401135 No. 618 Liangjiang Avenue, Longxing Town, Yubei District, Chongqing

Patentee after: Xiangdixian Computing Technology (Chongqing) Co.,Ltd.

Address before: Room 901, 901, floor 9 (09), building 1, yard 5, Anding Road, Chaoyang District, Beijing 100029

Patentee before: Beijing xiangdixian Computing Technology Co.,Ltd.