CN115658351A - 2d拷贝方法、装置、电子设备和计算机可读存储介质 - Google Patents

2d拷贝方法、装置、电子设备和计算机可读存储介质 Download PDF

Info

Publication number
CN115658351A
CN115658351A CN202211682466.5A CN202211682466A CN115658351A CN 115658351 A CN115658351 A CN 115658351A CN 202211682466 A CN202211682466 A CN 202211682466A CN 115658351 A CN115658351 A CN 115658351A
Authority
CN
China
Prior art keywords
vertex
pixel
pixel row
sgl
node
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.)
Granted
Application number
CN202211682466.5A
Other languages
English (en)
Other versions
CN115658351B (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.)
Beijing Xiangdixian Computing Technology 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 CN202211682466.5A priority Critical patent/CN115658351B/zh
Publication of CN115658351A publication Critical patent/CN115658351A/zh
Application granted granted Critical
Publication of CN115658351B publication Critical patent/CN115658351B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Image Input (AREA)

Abstract

本公开提供一种2D拷贝方法、装置、电子设备和计算机可读存储介质,该方法包括:解析2D拷贝请求,得到解析信息,所述解析信息包括待搬移区域的顶点地址;根据所述解析信息执行链表生成操作,得到新链表;控制DMA根据所述新链表执行2D拷贝操作;所述顶点地址包括顶点源地址、顶点目标地址;所述新链表包括与所述顶点源地址对应的第一链表和与所述顶点目标地址对应的第二链表。通过该方法可在没有内存管理单元和/或DMA不具备2D拷贝功能的前提下实现2D拷贝功能。

Description

2D拷贝方法、装置、电子设备和计算机可读存储介质
技术领域
本公开涉及2D拷贝技术领域,尤其涉及一种2D拷贝方法、装置、电子设备和计算机可读存储介质。
背景技术
随着低功耗、低成本电子产品的发展,微内核操作系统+SOC(System on Chip,片上系统)的产品方案成为各个产品公司的首选方案。
对于SOC(System on Chip,片上系统)来说,其在图像传输方向存在需要使用DMA进行将一幅图像中的局部区域搬移到另一个区域的需求,例如将图1中的区域A,搬移到区域B的需求(即2D拷贝需求)。在集成有DMA的SOC上,只需要调用者指定内存起始地址、目标地址、长度和宽度后,DMA硬件即可自动完成2D拷贝,这种拷贝方式要求指定的地址所形成的内存空间是连续的物理地址空间。但是在实际应用过程中,一张分辨率为1080p的图像大概需要2M大小的内存空间,当向内存申请2M大小的内存空间时,申请下的内存空间在物理地址空间大概率是不连续的。此时,为了保证能够完成2D拷贝,需要借助于IOMMU(Input/Output Memory Management Unit,输入输出管理单元)将不连续的物理地址空间映射为连续的虚拟地址空间供DMA使用以完成2D拷贝。即在现有技术中,要实现2D拷贝的前提是,计算机系统具有IOMMU,且IOMMU处于使能状态。
但是,在一些计算系统中并未设置IOMMU,或者设有IOMMU单元但主板并未将其使能,或者DMA无法配合IOMMU进行使用,此时若需要DMA执行2D拷贝则无法正常的工作。
发明内容
本公开的目的是提供一种2D拷贝方法、装置、电子设备和计算机可读存储介质,以解决在没有IOMMU和/或DMA无法配合IOMMU进行使用的前提下实现2D拷贝功能。
根据本公开的一个方面,提供一种2D拷贝方法,该方法包括:解析2D拷贝请求,得到解析信息,所述解析信息包括待搬移区域的顶点地址;根据所述解析信息执行链表生成操作,得到新链表;控制DMA根据所述新链表执行2D拷贝操作;所述顶点地址包括顶点源地址、顶点目标地址;所述新链表包括与所述顶点源地址对应的第一链表和与所述顶点目标地址对应的第二链表。
本公开一种可行的实现方式中,所述待搬移区域包括多个像素行,所述根据所述解析信息执行链表生成操作,得到新链表,包括:根据所述解析信息,生成所述待搬移区域在搬移前包括的每个像素行对应的第一SGL,以及生成所述待搬移区域在搬移后包括的每个像素行对应的第二SGL;连接所述第一SGL节点得到所述第一链表,连接所述第二SGL节点得到所述第二链表。
本公开一种可行的实现方式中,所述连接所述第一SGL节点得到所述第一链表,包括:按照所述待搬移区域在搬移前包括的各个像素行的排列顺序对各个第一SGL节点进行排序;在所述第一SGL节点中添加用于保存下一顺序的第一SGL节点的虚拟地址。
本公开一种可行的实现方式中,所述顶点源地址与所述顶点目标地址分别表示所述待搬移区域的顶点像素在搬移前、后的虚拟地址,所述解析信息还包括与所述待搬移区域所属图像对应的原始链表、所述待搬移区域的像素行长度、像素行宽度和像素行总行数;所述根据所述解析信息,生成所述待搬移区域在搬移前包括的每个像素行对应的第一SGL,包括:根据所述顶点源地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址;针对所述每个像素行,根据其顶点像素在搬移前的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第一SGL节点;
相应的,所述根据所述解析信息,生成所述待搬移区域在搬移后包括的每个像素行对应的第二SGL,包括:根据所述顶点目标地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址;针对所述每个像素行,根据其顶点像素在搬移后的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第二SGL节点。
本公开一种可行的实现方式中,所述待搬移区域的顶点像素是所述待搬移区域的首像素,所述像素行的顶点像素是该像素行的首像素。
本公开一种可行的实现方式中,所述根据所述顶点源地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址,包括:将所述顶点源地址与n*k进行求和运算,得到所述待搬移区域的每个像素行的顶点像素在搬移前的虚拟地址;n的取值依次为0、1、……i-1,i表示所述待搬移区域的像素行总行数,k表示所述像素行宽度;调用系统接口将所述每个像素行的顶点像素在搬移前的虚拟地址转换成物理地址,得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址;
相应的,所述根据所述顶点目标地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址,包括:将所述顶点目标地址与n*k进行求和运算,得到所述待搬移区域的每个像素行的顶点像素在搬移后的虚拟地址;n的取值依次为0、1、……i-1,i表示所述待搬移区域的像素行总行数,k表示所述像素行宽度;调用系统接口将所述每个像素行的顶点像素在搬移后的虚拟地址转换成物理地址,得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址。
本公开一种可行的实现方式中,所述原始链表包括的每个原始SGL节点记录的信息包括:保存该原始SGL节点的虚拟地址、该原始SGL节点指示的内存的起始物理地址和该原始SGL节点指示的内存的内存长度;所述针对所述每个像素行,根据其顶点像素在搬移前的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第一SGL节点,包括:从所述原始链表包括的多个原始SGL节点中,筛选出其指示的内存的物理地址范围与该像素行对应的物理地址范围存在重合的目标节点;所述该像素行对应的物理地址范围通过该像素行的顶点像素在搬移前的物理地址和所述像素行长度计算得到,原始SGL节点指示的内存的物理地址范围根据该原始SGL节点指示的内存的起始物理地址范和该原始SGL节点指示的内存的内存长度计算得到;确定出重合物理地址的属性信息;根据所述属性信息及保存该目标节点的虚拟地址Node Addr1,生成与该目标节点对应的子SGL节点;将每个所述子SGL节点依次连接,得到所述与该像素行对应的第一SGL节点。
本公开一种可行的实现方式中,当所述目标节点的个数为1时,与所述目标节点对应的子SGL节点是所述第一SGL节点。
本公开一种可行的实现方式中,所述重合物理地址的属性信息包括:所述重合物理地址的首地址Start Addr2和所述重合物理地址的重合长度Length2;生成的所述子SGL节点记录的信息包括:保存该子SGL节点的虚拟地址Node Addr3、该子SGL节点指示的内存的起始物理地址Start Addr3、该SGL节点指示的内存的内存长度Length3;Node Addr3=Node Addr1,Start Addr3=Start Addr2,Length3=Length2。
根据本公开的另一方面,还提供一种2D拷贝装置,包括:解析模块、生成模块和控制模块。
所述解析模块,用于解析2D拷贝请求,得到解析信息,所述解析信息包括待搬移区域的顶点地址;
所述生成模块,用于根据所述解析信息执行链表生成操作,得到新链表;
所述控制模块,用于控制DMA根据所述新链表执行2D拷贝操作;
所述顶点地址包括顶点源地址、顶点目标地址;所述新链表包括与所述顶点源地址对应的第一链表和与所述顶点目标地址对应的第二链表。
本公开一种可行的实现方式中,所述生成模块,用于根据所述解析信息,生成所述待搬移区域在搬移前包括的每个像素行对应的第一SGL,以及生成所述待搬移区域在搬移后包括的每个像素行对应的第二SGL;连接所述第一SGL节点得到所述第一链表,连接所述第二SGL节点得到所述第二链表。
本公开一种可行的实现方式中,所述生成模块,用于按照所述待搬移区域在搬移前包括的各个像素行的排列顺序对各个第一SGL节点进行排序;在所述第一SGL节点中添加用于保存下一顺序的第一SGL节点的虚拟地址。
本公开一种可行的实现方式中,所述顶点源地址与所述顶点目标地址分别表示所述待搬移区域的顶点像素在搬移前、后的虚拟地址,所述解析信息还包括与所述待搬移区域所属图像对应的原始链表、所述待搬移区域的像素行长度、像素行宽度和像素行总行数;所述生成模块,用于根据所述顶点源地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址;针对所述每个像素行,根据其顶点像素在搬移前的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第一SGL节点;
所述生成模块,还用于根据所述顶点目标地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址;针对所述每个像素行,根据其顶点像素在搬移后的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第二SGL节点。
本公开一种可行的实现方式中,所述待搬移区域的顶点像素是所述待搬移区域的首像素,所述像素行的顶点像素是该像素行的首像素。
本公开一种可行的实现方式中,所述生成模块,用于将所述顶点源地址与n*k进行求和运算,得到所述待搬移区域的每个像素行的顶点像素在搬移前的虚拟地址;n的取值依次为0、1、……i-1,i表示所述待搬移区域的像素行总行数,k表示所述像素行宽度;调用系统接口将所述每个像素行的顶点像素在搬移前的虚拟地址转换成物理地址,得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址;
所述生成模块,还用于将所述顶点目标地址与n*k进行求和运算,得到所述待搬移区域的每个像素行的顶点像素在搬移后的虚拟地址;n的取值依次为0、1、……i-1,i表示所述待搬移区域的像素行总行数,k表示所述像素行宽度;调用系统接口将所述每个像素行的顶点像素在搬移后的虚拟地址转换成物理地址,得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址。
本公开一种可行的实现方式中,所述原始链表包括的每个原始SGL节点记录的信息包括:保存该原始SGL节点的虚拟地址、该原始SGL节点指示的内存的起始物理地址和该原始SGL节点指示的内存的内存长度;所述生成模块,用于从所述原始链表包括的多个原始SGL节点中,筛选出其指示的内存的物理地址范围与该像素行对应的物理地址范围存在重合的目标节点;所述该像素行对应的物理地址范围通过该像素行的顶点像素在搬移前的物理地址和所述像素行长度计算得到,原始SGL节点指示的内存的物理地址范围根据该原始SGL节点指示的内存的起始物理地址范和该原始SGL节点指示的内存的内存长度计算得到;确定出重合物理地址的属性信息;根据所述属性信息及保存该目标节点的虚拟地址NodeAddr1,生成与该目标节点对应的子SGL节点;将每个所述子SGL节点依次连接,得到所述与该像素行对应的第一SGL节点。
本公开一种可行的实现方式中,当所述目标节点的个数为1时,与所述目标节点对应的子SGL节点是所述第一SGL节点。
本公开一种可行的实现方式中,所述重合物理地址的属性信息包括:所述重合物理地址的首地址Start Addr2和所述重合物理地址的重合长度Length2;生成的所述子SGL节点记录的信息包括:保存该子SGL节点的虚拟地址Node Addr3、该子SGL节点指示的内存的起始物理地址Start Addr3、该SGL节点指示的内存的内存长度Length3;Node Addr3=Node Addr1,Start Addr3=Start Addr2,Length3=Length2。
根据本公开的另一方面,还提供一种电子设备,包括存储器、处理器和包括DMA的SOC,在所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,可实施上述任一实现方式中的2D拷贝方法。对于移动端,该电子设备可以是智能手机、平板电脑、VR眼镜、车载电脑等等电子产品;对于桌面端,该电子设备可以是台式机、笔记本电脑等电子产品。
根据本公开的另一方面,还提供一种计算机可读存储介质,该计算机可读存储介质上存储有2D拷贝程序,当2D拷贝程序被执行时,实现上述任一可行的实现方式所提供的2D拷贝方法。
附图说明
图1为本公开一个实施例的应用场景示意图;
图2为本公开一个实施例的2D拷贝方法的流程示意图;
图3为本公开一个实施例中确定属性信息的示意图之一;
图4为本公开一个实施例中确定属性信息的示意图之二;
图5为本公开一个实施例的2D拷贝装置的结构示意图。
附图标记:400-2D拷贝装置;410-解析模块;420-生成模块;430-控制模块。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
下面将针对本公开所提供的2D拷贝方案进行详细介绍。
请参照图2,本公开的一个实施例提供一种2D拷贝方法,该方法可以包括:
S110:解析2D拷贝请求,得到解析信息。
在本公开实施例中,当操作系统根据用户的操作生成2D拷贝请求(例如将如图1中的区域A所对应的像素搬移至区域B)后,存储于主机(Host)端或者微内核内的应用程序对该2D拷贝请求进行解析,得到解析信息。
解析信息包括由用户操作所形成的待搬移区域的属性信息及与待搬移区域所属图像(即完整图像)对应的原始链表Linklist 0。
其中,属性信息可以包括待搬移区域的用户态虚拟地址空间信息(例如待搬移区域的顶点地址)、待搬移区域的像素行长度、像素行宽度和像素行总行数等信息。
像素行宽度一般为默认值。
待搬移区域的顶点即为待搬移区域的顶点像素,一般指的是位于待搬移区域的左上角的像素,相应的,待搬移区域的顶点地址一般是指的待搬移区域的左上角的像素的地址。当然,在一些实施方式中,也可以将待搬移区域的顶点约定为位于待搬移区域的其他位置的像素,例如右上角的像素。本申请后续实施例均以顶点为待搬移区域的左上角的像素为例进行介绍,可以理解,当顶点为其他位置的像素时,对应的计算可以可参照后续的计算过程进行适应性调整。
在本公开实施例中,待搬移区域的顶点地址包括顶点源地址、顶点目标地址,且均为用户态的虚拟地址。
顶点源地址指的是待搬移区域的顶点在搬移之前对应的地址,顶点目标地址指的是待搬移区域的顶点在搬移之后对应的地址,例如对应到图1,顶点源地址指的是区域A的左上角像素(顶点像素)对应的地址,顶点目标地址指的是区域B的左上角像素(顶点像素)对应的地址。
至于与待搬移区域所属图像(即完整图像)对应的原始链表Linklist 0,其生成过程是较为常规的现有技术,一般为:应用程序首次获取到完整图像在用户态虚拟地址空间的地址信息后,可将其放入buffer(缓冲器)中传递至主机端或者微内核的驱动层(driver),由驱动层根据完整图像的用户态虚拟地址空间的地址信息划分实际的物理页面,利用操作系统接口将划分后的每个页面生成对应的SGL节点并进行连接,得到原始链表Linklist 0。
S120:根据所述解析信息执行链表生成操作,得到新链表。
其中,新链表包括第一链表以及第二链表。
前文提及,解析信息中的顶点地址包括顶点源地址、顶点目标地址。
在本公开实施例中,根据解析信息所包括的顶点源地址以及解析信息所包括的其他信息(例如原始链表、待搬移区域的像素行长度、像素行宽度和像素行总行数等信息)执行链表生成操作,可以得到第一链表。此外,还根据解析信息所包括的顶点目标地址以及解析信息所包括的其他信息(例如原始链表、待搬移区域的像素行长度、像素行宽度和像素行总行数等信息)执行链表生成操作,可以得到第二链表。
也就是说,在本公开实施例中,针对顶点地址包括的顶点源地址及顶点目标地址分别执行链表生成操作,得到对应的新链表。根据顶点源地址生成的对应的新链表(第一链表)表示待搬移区域在搬移前对应的链表;根据顶点目标地址生成的对应的新链表(第二链表)表示待搬移区域在搬移后对应的链表。
S130:控制DMA根据所述新链表执行2D拷贝操作。
值得指出的是,链表本身是将离散的物理地址空间映射为一片连续的虚拟地址空间的数据结构,DMA在根据链表执行数据搬移任务时不依赖IOMMU,那么在得到第一链表及第二链表后,应用程序即可将第一链表以及第二链表发送给DMA,并向DMA发送启动指令,以控制DMA将第一链表所指示的内存空间内的数据搬移到第二链表所指示的内存空间内。
由于在本申请中,第一链表表示待搬移区域在搬移前对应的链表,其所指示的内容表示待搬移区域包括的像素在搬移前所在的物理地址,第二链表表示待搬移区域在搬移后对应的链表,其所指示的内容表示待搬移区域包括的像素在搬移后应该所在的物理地址,且前文提及,DMA依据链表实施数据搬移任务时不依赖于IOMMU,因此,当DMA按照第一链表及第二链表实施数据搬移后,即可将第一链表所指示的内存空间内的数据搬移到第二链表所指示的内存空间内,即实现了在不依赖IOMMU或者在DMA无法与IOMMU配合使用的前提下,完成对特定区域的2D拷贝任务。
至于DMA如何根据链表实施搬移任务,是较为常规的现有技术,本公开不再对其进行详细说明。
下面将针对上述步骤S120中生成第一链表及第二链表的过程进行详细介绍。
总的来说,步骤S120是基于解析信息,针对搬移前的待搬移区域的每一个像素行生成一个SGL节点(为便于区分,称之为第一SGL节点),以表示该像素行的像素的物理地址分布范围,将各行的第一SGL节点进行连接,得到第一链表;及基于解析信息,针对搬移后的待搬移区域的每一个像素行生成一个SGL节点(为便于区分,称之为第二SGL节点),以表示该像素行的像素的物理地址分布范围,将各行的第二SGL节点进行连接,得到第二链表。
其中,连接第一SGL节点时,可以是按照待搬移区域在搬移前包括的各个像素行的排列顺序对各个第一SGL节点进行排序,然后针对每个第一SGL节点,在当前第一SGL节点内添加用于保存下一顺序的第一SGL节点的虚拟地址,即可完成对各个第一SGL节点进行连接,得到第一链表。当然,对于第一链表中位于最后顺序的第一SGL节点,由于在其之后不存在下一个第一SGL节点,因此,无需在其内添加用于保存下一顺序的第一SGL节点的虚拟地址。
相似的,连接第二SGL节点时,可以是按照待搬移区域在搬移后包括的各个像素行的排列顺序对各个第二SGL节点进行排序,然后针对每个第二SGL节点,在当前第二SGL节点内添加用于保存下一顺序的第二SGL节点的虚拟地址,即可完成对各个第二SGL节点进行连接,得到第二链表。当然,对于第二链表中位于最后顺序的第二SGL节点,由于在其之后不存在下一个第二SGL节点,因此,无需在其内添加用于保存下一顺序的第二SGL节点的虚拟地址。
前文提及,解析信息中的顶点地址包括顶点源地址、顶点目标地址,顶点源地址与顶点目标地址分别表示待搬移区域的顶点像素在搬移前、后的虚拟地址;新链表包括根据顶点源地址生成的第一链表及根据顶点目标地址生成的第二链表。
基于此,在基于解析信息,针对搬移前的待搬移区域的每一个像素行生成一个第一SGL节点,可以包括以下过程:
S121:根据顶点源地址、像素行宽度和像素行总行数,计算得到待搬移区域的每个像素行的顶点像素在搬移前的物理地址。
S122:针对所述每个像素行的顶点像素在搬移前的物理地址,根据该物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第一SGL节点。
基于此,在基于解析信息,针对搬移后的待搬移区域的每一个像素行生成一个第二SGL节点,可以包括以下过程:
S123:根据顶点目标地址、像素行宽度和像素行总行数,计算得到待搬移区域的每个像素行的顶点像素在搬移后的物理地址。
S124:针对所述每个像素行的顶点像素在搬移后的物理地址,根据该物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第二SGL节点。
可以看出,在本公开实施例中,针对每一个像素行,生成与之对应的第一SGL节点的过程,与生成与之对应的第二SGL节点的过程类似,区别点主要在于:生成与之对应的第一SGL节点时采用的是顶点源地址计算该像素行的顶点像素在搬移前的物理地址,并基于该像素行的顶点像素在搬移前的物理地址生成第一SGL节点;而生成与之对应的第二SGL节点时采用的是顶点目标地址计算该像素行的顶点像素在搬移后的物理地址,并基于该像素行的顶点像素在搬移后的物理地址生成第二SGL节点。
下面将以顶点源地址为例,对上述S121-S122的执行过程进行介绍。可以理解,当基于顶点目标地址执行上述S123-S124的过程与基于顶点源地址执行上述S121-S123的过程类似,二者可相互参照,本申请不再赘述。
可选的,基于虚拟地址连续的前提,在执行S121(根据顶点源地址、像素行宽度和像素行总行数,计算得到待搬移区域的每个像素行的顶点像素在搬移前的物理地址)时,可以包括:将顶点源地址与n*k进行求和运算,得到待搬移区域的每个像素行的顶点像素在搬移前的虚拟地址;n的取值依次为0、1、……i-1,i表示待搬移区域的像素行总行数,k表示像素行宽度;调用系统接口将每个像素行的顶点像素在搬移前的虚拟地址转换成物理地址,得到待搬移区域的每个像素行的顶点像素在搬移前的物理地址。
可选的,待搬移区域的顶点像素可以是待搬移区域的首像素,像素行的顶点像素可以是该像素行的首像素。
可选的,原始链表包括的每个原始SGL节点记录的信息包括:保存该原始SGL节点的虚拟地址Node Addr1、该原始SGL节点指示的内存的起始物理地址Start Addr1和该原始SGL节点指示的内存的内存长度Length1。
可选的,在执行S122(针对所述每个像素行的顶点像素在搬移前的物理地址,根据该物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第一SGL节点)时,其过程可以包括如下内容。
针对待搬移区域在搬移前的每个像素行,在已知该像素行的顶点像素在搬移前的物理地址的前提下,可以先从原始链表包括的多个原始SGL节点中,筛选出其指示的内存的物理地址范围与该像素行对应的像素的物理地址范围存在重合的目标节点。
由于像素行所占用的物理地址不一定连续,因此,在本申请实施例中,当像素行实际所占用的物理地址不连续时,该像素行对应的物理地址范围实际包括多个连续的物理地址子范围,且物理地址子范围之间不连续;当像素行实际所占用的物理地址均连续时,该像素行的物理地址范围是连续的物理地址范围。
像素行对应的物理地址范围通过该像素行的顶点像素在搬移前的物理地址和像素行长度计算得到,原始SGL节点指示的内存的物理地址范围根据该原始SGL节点指示的内存的起始物理地址范和该原始SGL节点指示的内存的内存长度计算得到。
具体的,像素行对应的像素的物理地址范围为:该像素行的顶点像素在搬移前的物理地址~该像素行的顶点像素在搬移前的物理地址+像素行长度-1。
原始SGL节点指示的内存的物理地址范围是:该原始SGL节点指示的内存的起始物理地址Start Addr1~Start Addr1+该节点指示的内存的内存长度Length1-1。
至于筛选的过程,可以是在计算得到各个原始SGL节点指示的内存的物理地址范围,以及待搬移区域的像素行在搬移前对应的像素的物理地址范围后,分别将各个原始SGL节点指示的内存的物理地址范围与像素行在搬移前对应的像素的物理地址范围进行比较,若两者存在重合,则说明当前进行比较的原始SGL节点是当前进行比较的像素行的目标节点。
在筛选出目标节点后,可针对每个目标节点生成对应的子SGL节点,然后将每个子SGL节点依次连接,得到当前像素行对应的第一SGL节点。其中,各个子SGL节点的生成顺序,即为子SGL节点的连接顺序。
可选的,本申请对各个子SGL节点的连接时机不做具体限定,例如可以是在属于同一第一SGL节点的全部子SGL节点生成完之后再一起连接,也可以是在生成一个子SGL节点后便开始连接。
当然,针对某个像素行来说,与之对应的目标节点数量至少为1。
其中,若针对某个像素行筛选出的目标节点的数量为1,则说明目标节点所指示的内存的物理地址范围完全覆盖当前像素行在搬移前对应的像素的物理地址范围,即当前像素行的所有数据均在该目标节点内,此时,生成1个子SGL节点,且该1个子SGL即为当前像素行对应的第一SGL节点。
若针对某个像素行筛选出的目标节点的数量大于1,则说明当前像素行在搬移前对应的像素的物理地址范围分布在多个目标节点中,此时,需要生成多个子SGL节点,并将其进行连接得到与当前像素行对应的第一SGL节点。
可选的,在生成与目标节点对应的子SGL节点时,可以从目标节点所指示的内存的物理地址范围中确定出与当前像素行在搬移前对应的物理地址范围存在重合的重合物理地址的属性信息,然后根据重合物理地址的属性信息及保存该目标节点的虚拟地址NodeAddr1,生成与该目标节点对应的子SGL节点。
可选的,每个原始SGL节点记录的信息还包括保存该原始SGL节点的虚拟地址,重合物理地址的属性信息包括:重合物理地址的首地址Start Addr2和重合物理地址的重合长度Length2。
基于此,在生成子SGL节点时,可以建立一个数据结构体作为子SGL节点,该数据结构体的成员包括:保存该数据结构体(子SGL节点)的虚拟地址Node Addr3、该子SGL节点指示的内存的起始物理地址Start Addr3、该子SGL节点指示的内存的内存长度Length3。其中,Node Addr3=Node Addr1,Start Addr3=Start Addr2,Length3=Length2。
其中,从目标节点所指示的内存的物理地址范围中,确定出与当前像素行在搬移前对应的物理地址范围存在重合的重合物理地址的属性信息的过程如下。
针对目标节点的数量为1的情况,如图3所示。
重合物理地址的属性信息中,重合物理地址的首地址Start Addr2=当前像素行的顶点像素在搬移前的物理地址,重合物理地址的重合长度Length2=当前像素行的像素行长度。
对于这种情况,目标节点的虚拟地址Node Addr1=目标节点1的虚拟地址。
针对目标节点的数量不为1的情况,如图4所示。
针对第一个目标节点(如图4中的目标节点1),其重合物理地址的属性信息中,重合物理地址的首地址Start Addr2=当前像素行的顶点像素在搬移前的物理地址(像素A的物理地址);重合物理地址的重合长度Length2=当前目标节点指示的内存的起始物理地址+当前目标节点指示的内存的内存长度-当前像素行的顶点像素在搬移前的物理地址(像素A的物理地址)。对于这种情况,当前目标节点的虚拟地址Node Addr1=目标节点1的虚拟地址。
针对其余目标节点(如图4中的目标节点2),其重合物理地址的属性信息中,重合物理地址的首地址Start Addr2=当前目标节点指示的内存的起始物理地址;重合物理地址的重合长度Length2分为两种情况。
情况一:针对当前像素行,若当前目标节点不是最后一个目标节点,那么重合物理地址的重合长度Length2=当前目标节点指示的内存的内存长度。
值得指出的是,各个目标节点之间的顺序遵循各个目标节点在原始链表中的排列顺序。
情况二:针对当前像素行,若当前目标节点是最后一个目标节点,那么重合物理地址的重合长度Length2=当前像素行的像素行长度-位于当前目标节点之前的目标节点的重合物理地址的重合长度Length2之和。
对于情况一和情况二,目标节点的虚拟地址Node Addr1=当前目标节点的虚拟地址。
当然,在目标节点的数量为多个时,每个子SGL节点包括的成员还包括:用于保存与该子SGL节点连接的下一个子SGL节点的虚拟地址。
在得到待搬移区域的每个像素行在搬移前对应的子SGL节点,并将其连接得到对应的第一SGL节点之后,即可连接各个第一SGL节点,得到第一链表。
此外,可以按照类似于上述生成第一SGL节点所包括的各个子节点的方式进行适应性调整(将生成第一SGL节点所包括的各个子节点所使用到的顶点源地址替换为顶点目标地址,将生成第一SGL节点所包括的各个子节点所使用到的像素行的顶点像素在搬移前的物理地址替换为像素行的顶点像素在搬移后的物理地址),生成待搬移区域的每个像素行在搬移后对应的子SGL节点,并将其连接得到对应的第二SGL节点之后,即可连接各个第二SGL节点,得到第二链表。
可选的,针对待搬移区域的各个像素行在搬移前对应的各个第一SGL节点,可按照待搬移区域在搬移前包括的各个像素行的排列顺序对各个SGL节点进行排序,连接的过程即是在第一SGL节点中添加用于保存下一个第一SGL节点的虚拟地址,进而得到第一链表。连接第二SGL节点的过程与之类似,不再赘述。
值得指出的是,对于包括一个子SGL节点的第一SGL节点以及第二SGL节点来说,其虚拟地址即为该子SGL节点的虚拟地址;对于包括多个子SGL节点的第一SGL节点以及第二SGL节点来说,其虚拟地址即为其包括的第一个子SGL节点的虚拟地址。
此外,请参照图5,本公开实施例还提供一种2D拷贝装置400,可以包括解析模块410、生成模块420和控制模块430。
所述解析模块410,用于解析2D拷贝请求,得到解析信息,所述解析信息包括待搬移区域的顶点地址;
所述生成模块420,用于根据所述解析信息执行链表生成操作,得到新链表;
所述控制模块430,用于控制DMA根据所述新链表执行2D拷贝操作;
所述顶点地址包括顶点源地址、顶点目标地址;所述新链表包括与所述顶点源地址对应的第一链表和与所述顶点目标地址对应的第二链表,所述第一链表表示所述待搬移区域在搬移前对应的链表,所述第二链表表示所述待搬移区域在搬移后对应的链表。
本公开一种可行的实现方式中,所述生成模块420,用于根据所述解析信息,生成所述待搬移区域在搬移前包括的每个像素行对应的第一SGL,以及生成所述待搬移区域在搬移后包括的每个像素行对应的第二SGL;连接所述第一SGL节点得到所述第一链表,连接所述第二SGL节点得到所述第二链表。
本公开一种可行的实现方式中,所述生成模块420,用于按照所述待搬移区域在搬移前包括的各个像素行的排列顺序对各个第一SGL节点进行排序;在第一SGL节点中添加用于保存下一顺序的第一SGL节点的虚拟地址。
本公开一种可行的实现方式中,所述顶点源地址与所述顶点目标地址分别表示所述待搬移区域的顶点像素在搬移前、后的虚拟地址,所述解析信息还包括与所述待搬移区域所属图像对应的原始链表、所述待搬移区域的像素行长度、像素行宽度和像素行总行数;所述生成模块420,用于根据所述顶点源地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址;针对所述每个像素行,根据其顶点像素在搬移前的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第一SGL节点;
所述生成模块420,还用于根据所述顶点目标地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址;针对所述每个像素行,根据其顶点像素在搬移后的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第二SGL节点。
本公开一种可行的实现方式中,所述待搬移区域的顶点像素是所述待搬移区域的首像素,所述像素行的顶点像素是该像素行的首像素。
本公开一种可行的实现方式中,所述生成模块420,用于将所述顶点源地址与n*k进行求和运算,得到所述待搬移区域的每个像素行的顶点像素在搬移前的虚拟地址;n的取值依次为0、1、……i-1,i表示所述待搬移区域的像素行总行数,k表示所述像素行宽度;调用系统接口将所述每个像素行的顶点像素在搬移前的虚拟地址转换成物理地址,得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址;
所述生成模块420,还用于将所述顶点目标地址与n*k进行求和运算,得到所述待搬移区域的每个像素行的顶点像素在搬移后的虚拟地址;n的取值依次为0、1、……i-1,i表示所述待搬移区域的像素行总行数,k表示所述像素行宽度;调用系统接口将所述每个像素行的顶点像素在搬移后的虚拟地址转换成物理地址,得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址。
本公开一种可行的实现方式中,所述原始链表包括的每个原始SGL节点记录的信息包括:保存该原始SGL节点的虚拟地址、该原始SGL节点指示的内存的起始物理地址和该原始SGL节点指示的内存的内存长度;所述生成模块420,用于从所述原始链表包括的多个原始SGL节点中,筛选出其指示的内存的物理地址范围与该像素行对应的物理地址范围存在重合的目标节点;所述该像素行对应的物理地址范围通过该像素行的顶点像素在搬移前的物理地址和所述像素行长度计算得到,原始SGL节点指示的内存的物理地址范围根据该原始SGL节点指示的内存的起始物理地址范和该原始SGL节点指示的内存的内存长度计算得到;确定出重合物理地址的属性信息;根据所述属性信息及保存该目标节点的虚拟地址Node Addr1,生成与该目标节点对应的子SGL节点;将每个所述子SGL节点依次连接,得到所述与该像素行对应的第一SGL节点。
本公开一种可行的实现方式中,当所述目标节点的个数为1时,与所述目标节点对应的子SGL节点是所述第一SGL节点。
本公开一种可行的实现方式中,所述重合物理地址的属性信息包括:所述重合物理地址的首地址Start Addr2和所述重合物理地址的重合长度Length2;生成的所述子SGL节点记录的信息包括:保存该子SGL节点的虚拟地址Node Addr3、该子SGL节点指示的内存的起始物理地址Start Addr3、该SGL节点指示的内存的内存长度Length3;Node Addr3=Node Addr1,Start Addr3=Start Addr2,Length3=Length2。
此外,本公开实施例还提供一种电子设备,包括存储器、处理器和包括DMA的SOC,在所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,可实施上述任一实现方式中的2D拷贝方法。
其中,存储器和处理器可以理解成独立于SOC之外的Host主机端或者微内核所包括的元器件。
在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、电视、平板电脑、VR设备等多媒体设备;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机、工作站、服务器等。
此外,本公开实施例还提供一种计算机可读存储介质,在该计算机可读存储介质上存储有2D拷贝程序,该2D拷贝程序被执行时,可实现上述任一可行的实现方式所提供的2D拷贝方法。至于具体的执行过程可参照上述方法实施例,此处不再赘述。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例和落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求和其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框和流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用于说明本公开的技术方案而非对其保护范围的限制,尽管参照上述实施例对本公开进行了详细的说明,所属领域的普通技术人员应当理解:本领域技术人员阅读本公开后依然可对发明的具体实施方式进行种种变更、修改或者等同替换,但这些变更、修改或者等同替换,均在公开待批的权利要求保护范围之内。

Claims (16)

1.一种2D拷贝方法,所述方法包括:
解析2D拷贝请求,得到解析信息,所述解析信息包括待搬移区域的顶点地址;
根据所述解析信息执行链表生成操作,得到新链表;
控制DMA根据所述新链表执行2D拷贝操作;
所述顶点地址包括顶点源地址、顶点目标地址;所述新链表包括与所述顶点源地址对应的第一链表和与所述顶点目标地址对应的第二链表。
2.根据权利要求1所述的方法,所述待搬移区域包括多个像素行,所述根据所述解析信息执行链表生成操作,得到新链表,包括:
根据所述解析信息,生成所述待搬移区域在搬移前包括的每个像素行对应的第一SGL,以及生成所述待搬移区域在搬移后包括的每个像素行对应的第二SGL;
连接所述第一SGL节点得到所述第一链表,连接所述第二SGL节点得到所述第二链表。
3.根据权利要求2所述的方法,所述连接所述第一SGL节点得到所述第一链表,包括:
按照所述待搬移区域在搬移前包括的各个像素行的排列顺序对各个第一SGL节点进行排序;
在所述第一SGL节点中添加用于保存下一顺序的第一SGL节点的虚拟地址。
4.根据权利要求2所述的方法,所述顶点源地址与所述顶点目标地址分别表示所述待搬移区域的顶点像素在搬移前、后的虚拟地址,所述解析信息还包括与所述待搬移区域所属图像对应的原始链表、所述待搬移区域的像素行长度、像素行宽度和像素行总行数;所述根据所述解析信息,生成所述待搬移区域在搬移前包括的每个像素行对应的第一SGL,包括:
根据所述顶点源地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址;
针对所述每个像素行,根据其顶点像素在搬移前的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第一SGL节点;
所述根据所述解析信息,生成所述待搬移区域在搬移后包括的每个像素行对应的第二SGL,包括:
根据所述顶点目标地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址;
针对所述每个像素行,根据其顶点像素在搬移后的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第二SGL节点。
5.根据权利要求4所述的方法,所述待搬移区域的顶点像素是所述待搬移区域的首像素,所述像素行的顶点像素是该像素行的首像素。
6.根据权利要求4所述的方法,所述根据所述顶点源地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址,包括:
将所述顶点源地址与n*k进行求和运算,得到所述待搬移区域的每个像素行的顶点像素在搬移前的虚拟地址;n的取值依次为0、1、……i-1,i表示所述待搬移区域的像素行总行数,k表示所述像素行宽度;
调用系统接口将所述每个像素行的顶点像素在搬移前的虚拟地址转换成物理地址,得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址;
相应的,所述根据所述顶点目标地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址,包括:
将所述顶点目标地址与n*k进行求和运算,得到所述待搬移区域的每个像素行的顶点像素在搬移后的虚拟地址;n的取值依次为0、1、……i-1,i表示所述待搬移区域的像素行总行数,k表示所述像素行宽度;
调用系统接口将所述每个像素行的顶点像素在搬移后的虚拟地址转换成物理地址,得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址。
7.根据权利要求4所述的方法,所述原始链表包括的每个原始SGL节点记录的信息包括:保存该原始SGL节点的虚拟地址、该原始SGL节点指示的内存的起始物理地址和该原始SGL节点指示的内存的内存长度;所述针对所述每个像素行,根据其顶点像素在搬移前的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第一SGL节点,包括:
从所述原始链表包括的多个原始SGL节点中,筛选出其指示的内存的物理地址范围与该像素行对应的物理地址范围存在重合的目标节点;所述该像素行对应的物理地址范围通过该像素行的顶点像素在搬移前的物理地址和所述像素行长度计算得到,原始SGL节点指示的内存的物理地址范围根据该原始SGL节点指示的内存的起始物理地址范和该原始SGL节点指示的内存的内存长度计算得到;
确定出重合物理地址的属性信息;
根据所述属性信息及保存该目标节点的虚拟地址Node Addr1,生成与该目标节点对应的子SGL节点;
将每个所述子SGL节点依次连接,得到所述与该像素行对应的第一SGL节点。
8.根据权利要求7所述的方法,当所述目标节点的个数为1时,与所述目标节点对应的子SGL节点是所述第一SGL节点。
9.根据权利要求7所述的方法,所述重合物理地址的属性信息包括:所述重合物理地址的首地址Start Addr2和所述重合物理地址的重合长度Length2;
生成的所述子SGL节点记录的信息包括:保存该子SGL节点的虚拟地址Node Addr3、该子SGL节点指示的内存的起始物理地址Start Addr3、该SGL节点指示的内存的内存长度Length3;Node Addr3=Node Addr1,Start Addr3=Start Addr2,Length3=Length2。
10.一种2D拷贝装置,包括:
解析模块,用于解析2D拷贝请求,得到解析信息,所述解析信息包括待搬移区域的顶点地址;
生成模块,用于根据所述解析信息执行链表生成操作,得到新链表;
控制模块,用于控制DMA根据所述新链表执行2D拷贝操作;
所述顶点地址包括顶点源地址、顶点目标地址;所述新链表包括与所述顶点源地址对应的第一链表和与所述顶点目标地址对应的第二链表。
11.根据权利要求10所述的装置,所述生成模块,用于根据所述解析信息,生成所述待搬移区域在搬移前包括的每个像素行对应的第一SGL,以及生成所述待搬移区域在搬移后包括的每个像素行对应的第二SGL;连接所述第一SGL节点得到所述第一链表,连接所述第二SGL节点得到所述第二链表。
12.根据权利要求11所述的装置,所述生成模块,用于按照所述待搬移区域在搬移前包括的各个像素行的排列顺序对各个第一SGL节点进行排序;在所述第一SGL节点中添加用于保存下一顺序的第一SGL节点的虚拟地址。
13.根据权利要求11所述的装置,所述顶点源地址与所述顶点目标地址分别表示所述待搬移区域的顶点像素在搬移前、后的虚拟地址,所述解析信息还包括与所述待搬移区域所属图像对应的原始链表、所述待搬移区域的像素行长度、像素行宽度和像素行总行数;所述生成模块,用于根据所述顶点源地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址;针对所述每个像素行,根据其顶点像素在搬移前的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第一SGL节点;
所述生成模块,还用于根据所述顶点目标地址、所述像素行宽度和所述像素行总行数,计算得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址;针对所述每个像素行,根据其顶点像素在搬移后的物理地址、所述原始链表、所述像素行长度,生成与该像素行对应的第二SGL节点。
14.根据权利要求13所述的装置,所述生成模块,用于将所述顶点源地址与n*k进行求和运算,得到所述待搬移区域的每个像素行的顶点像素在搬移前的虚拟地址;n的取值依次为0、1、……i-1,i表示所述待搬移区域的像素行总行数,k表示所述像素行宽度;调用系统接口将所述每个像素行的顶点像素在搬移前的虚拟地址转换成物理地址,得到所述待搬移区域的每个像素行的顶点像素在搬移前的物理地址;
所述生成模块,还用于:将所述顶点目标地址与n*k进行求和运算,得到所述待搬移区域的每个像素行的顶点像素在搬移后的虚拟地址;n的取值依次为0、1、……i-1,i表示所述待搬移区域的像素行总行数,k表示所述像素行宽度;调用系统接口将所述每个像素行的顶点像素在搬移后的虚拟地址转换成物理地址,得到所述待搬移区域的每个像素行的顶点像素在搬移后的物理地址。
15.一种电子设备,包括存储器、处理器和SOC,所述SOC包括DMA,在所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实施如权利要求1-9中任一项所述的2D拷贝方法。
16.一种计算机可读存储介质,所述计算机可读存储介质上存储有2D拷贝程序,所述2D拷贝程序被执行时,实现如权利要求1-9中任一项所述的2D拷贝方法。
CN202211682466.5A 2022-12-27 2022-12-27 2d拷贝方法、装置、电子设备和计算机可读存储介质 Active CN115658351B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211682466.5A CN115658351B (zh) 2022-12-27 2022-12-27 2d拷贝方法、装置、电子设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211682466.5A CN115658351B (zh) 2022-12-27 2022-12-27 2d拷贝方法、装置、电子设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN115658351A true CN115658351A (zh) 2023-01-31
CN115658351B CN115658351B (zh) 2023-03-14

Family

ID=85022738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211682466.5A Active CN115658351B (zh) 2022-12-27 2022-12-27 2d拷贝方法、装置、电子设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN115658351B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1797379A (zh) * 2004-12-24 2006-07-05 华为技术有限公司 采用直接存储器访问方式进行数据传送的方法
US8176252B1 (en) * 2007-11-23 2012-05-08 Pmc-Sierra Us, Inc. DMA address translation scheme and cache with modified scatter gather element including SG list and descriptor tables
CN108228497A (zh) * 2018-01-11 2018-06-29 湖南国科微电子股份有限公司 一种基于sgl链表的DMA传输方法
CN109491937A (zh) * 2018-10-24 2019-03-19 山东超越数控电子股份有限公司 一种Scatter-Gather DMA的数据传输方法及装置
CN111708717A (zh) * 2015-06-30 2020-09-25 华为技术有限公司 数据拷贝方法、直接内存访问控制器及计算机系统
CN114785748A (zh) * 2022-06-21 2022-07-22 苏州领慧立芯科技有限公司 用于图像传输的dma控制系统与方法
CN115145843A (zh) * 2022-07-22 2022-10-04 地平线征程(杭州)人工智能科技有限公司 数据拷贝方法、装置、计算机可读存储介质及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1797379A (zh) * 2004-12-24 2006-07-05 华为技术有限公司 采用直接存储器访问方式进行数据传送的方法
US8176252B1 (en) * 2007-11-23 2012-05-08 Pmc-Sierra Us, Inc. DMA address translation scheme and cache with modified scatter gather element including SG list and descriptor tables
CN111708717A (zh) * 2015-06-30 2020-09-25 华为技术有限公司 数据拷贝方法、直接内存访问控制器及计算机系统
CN108228497A (zh) * 2018-01-11 2018-06-29 湖南国科微电子股份有限公司 一种基于sgl链表的DMA传输方法
CN109491937A (zh) * 2018-10-24 2019-03-19 山东超越数控电子股份有限公司 一种Scatter-Gather DMA的数据传输方法及装置
CN114785748A (zh) * 2022-06-21 2022-07-22 苏州领慧立芯科技有限公司 用于图像传输的dma控制系统与方法
CN115145843A (zh) * 2022-07-22 2022-10-04 地平线征程(杭州)人工智能科技有限公司 数据拷贝方法、装置、计算机可读存储介质及电子设备

Also Published As

Publication number Publication date
CN115658351B (zh) 2023-03-14

Similar Documents

Publication Publication Date Title
CN107391653B (zh) 一种分布式NewSQL数据库系统及图片数据储存方法
CN108287708B (zh) 一种数据处理方法、装置、服务器及计算机可读存储介质
CN109564566B (zh) 对调用应用的发现以用于控制文件水化行为
WO2021169236A1 (zh) 渲染的方法、装置
US20230306555A1 (en) Image processing assembly, chip, image processing method and storage medium
CN111026493B (zh) 界面渲染的处理方法和装置
CN113535721A (zh) 一种数据写入方法及装置
CN109344062A (zh) 页面跨域跳转测试的方法及终端设备
CN104268229A (zh) 一种基于多进程浏览器的资源获得方法及装置
CN113204345A (zh) 页面生成方法、装置、电子设备及存储介质
CN116028455A (zh) 一种数据处理方法、装置、存储介质及电子设备
CN103020003A (zh) 面向多核程序确定性重演的内存竞争记录装置及其控制方法
CN114942863B (zh) 一种级联快照处理方法、装置、设备及存储介质
US8726101B2 (en) Apparatus and method for tracing memory access information
CN115660941B (zh) 图像搬移方法、装置、电子设备和计算机可读存储介质
US20130152049A1 (en) Warning of register and storage area assignment errors
CN113467823A (zh) 一种配置信息的获取方法、装置、系统及存储介质
US20150138077A1 (en) Display system and display controll device
CN115658351B (zh) 2d拷贝方法、装置、电子设备和计算机可读存储介质
CN109614089B (zh) 数据访问代码的自动生成方法、装置、设备及存储介质
CN111008934A (zh) 一种场景构建方法、装置、设备及存储介质
CN115964331A (zh) 一种数据访问方法、装置及设备
US20130198138A1 (en) Model for capturing audit trail data with reduced probability of loss of critical data
CN114070892A (zh) 数据传输方法和装置
CN114443306A (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