一种基于DMA的GPU子图像处理方法技术

技术编号:23986672 阅读:61 留言:0更新日期:2020-04-29 13:52
本发明专利技术涉及计算机硬件建模技术领域,具体涉及一种基于DMA的GPU子图像处理方法,本方法包括以下步骤:对子图像处理的DMA长度进行计算;并计算图像参数和子图像skip参数;按照上述所得计算结果和参数的基础上将当前图像存储地址按配置进行对齐操作;将对齐操作后的图像存储地址跳过步骤1)所得子图像skip参数对应的像素数、行数和层数并配置DMA描述符启动DMA操作;计算下一个图像行的图像存储地址,重复上述步骤直到子图像处理完成;本发明专利技术针对GPU子图像处理问题,提出了一种绘制或读取在内存中所存储的图像数据矩形的一个子矩形的方法,为GPU的研制奠定了算法基础。

A method of GPU sub image processing based on DMA

【技术实现步骤摘要】
一种基于DMA的GPU子图像处理方法
本专利技术属于计算机图形学
,具体涉及一种基于DMA的GPU子图像处理方法。
技术介绍
在图形处理器芯片(下简称GPU)设计与开发中,图形处理算法的正确性和高效性是决定GPU功能和性能的重要因素。但是,GPU芯片硬件逻辑规模巨大,尤其是对于细节算法,很难在RTL阶段验证到并debug。因此需要在RTL设计之前,尽可能早的对算法进行验证,为RTL设计提供参考依据。
技术实现思路
基于
技术介绍
中存在的问题,本专利技术提供的一种基于DMA的GPU子图像处理方法,为GPU的研制奠定了算法基础。本专利技术的技术解决方案是:本专利技术提出一种基于DMA的GPU子图像处理方法,其特征在于,包括以下步骤:1)对子图像处理的DMA长度进行计算;并计算图像参数和子图像skip参数;2)按照步骤1)所得计算结果和参数的基础上将当前图像存储地址按配置进行对齐操作;3)将对齐操作后的图像存储地址跳过步骤1)所得子图像skip参数对应的像素数、行数和层数并配置DMA描述符启动DMA操作;4)计算下一个图像行的图像存储地址,重复步骤2)和步骤3)直到子图像处理完成。优选的,所述对子图像处理的DMA长度进行计算的实现方式为:判断OpenGL的bitmapFlag,如果bitmapFlag为0,则根据每像素所占字节数pixelSize、图像处理宽度width计算出以字为单位的DMA长度,如果bitmapFlag为1,则将图像处理宽度width加上配置寄存器中的SkipPixels中不足8的倍数的部分,计算出以字为单位的DMA长度。优选的,所述计算图像参数和子图像skip参数的实现方式为:判断子图像标记subgraphFlag是否为1,如果是1,则将skip_pixels、skip_rows和skip_images分别设置为配置寄存器中的SkipPixels、SkipRows和SkipImages,判断子图像标记subgraphFlag和配置寄存器RowLength(或ImageHeight)的值,如果subgraphFlag为0或者RowLength(或ImageHeight)为0,则执行第一种情况的计算图像参数步骤,否则执行第二种情况的计算图像参数步骤;如果子图像标记subgraphFlag不为1,则将skip_pixels、skip_rows、skip_images都设置为0,转入判断子图像标记subgraphFlag和配置寄存器RowLength(或ImageHeight)的值,如果subgraphFlag为0或者RowLength(或ImageHeight)为0,则执行第一种情况的计算图像参数步骤,否则执行第二种情况的计算图像参数步骤;所述第一种情况的计算图像参数步骤为:将行长度row_length设置为图像处理宽度width,图像高度image_height设置为图像处理高度htight;所述第二种情况的计算图像参数步骤为:将行长度row_length设置为配置寄存器中的RowLength,图像高度image_height设置为配置寄存器中的ImageHeight。优选的,所述步骤2)的实现方式包括以下步骤:2.1)判断层号是否小于最大值,层号的最大值为图像处理深度depth与skip_images之和,如果是,则转入步骤2.2),否则,结束子图像处理;2.2)判断行号是否小于最大值,行号的最大值为图像处理高度height与skip_rows之和,如果是,则转入步骤2.3),否则,层号加1并回到步骤2.1);2.3)判断当前图像行地址是否能整除配置寄存器中的参数Alignment,如果是,则转入步骤2.4),否则转入步骤2.5);2.4)将当前图像行存储地址保持不变;2.5)将当前图像行存储地址后移至能整除Alignment的位置。优选的,所述步骤3)的实现方式包括以下步骤:3.1)判断bitmapFlag的值,如果bitmapFlag为1,则转入步骤3.2),否则转入步骤3.3);3.2)图像存储地址后移pixelSize*skip_pixels/8个字节地址,转入步骤3.4);3.3)图像存储地址后移pixelSize*skip_pixels个字节地址,转入步骤3.4);3.4)判断行号和层号的值,如果行号不小于skip_rows并且层号不小于skip_images时,转入步骤3.5),否则转入步骤3.1),3.5)配置DMA描述符并且启动DMA传输。优选的,所述步骤4)的实现方式包括以下步骤:4.1)判断bitmapFlag,如果bitmapFlag为1,则转入步骤4.2),否则转入步骤4.3);4.2)图像行存储地址后移row_length*pixelSize/8个字节地址,并且将行号加1,重复步骤2)和步骤3)直到子图像处理完成;4.3)图像行存储地址后移row_length*pixelSize个字节地址,并且将行号加1,重复步骤2)和步骤3)直到子图像处理完成。本专利技术的有益效果:本专利技术针对GPU子图像处理问题,提出了一种绘制或读取在内存中所存储的图像数据矩形的一个子矩形的方法,为GPU的研制奠定了算法基础。附图说明图1为本专利技术基于DMA的GPU子图像处理方法流程图;具体实施方式下面结合说明书附图和具体实施例,对本专利技术的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其他实施例,都属于本专利技术的保护范围。在本专利技术的一个实施例中提出一种基于DMA的GPU子图像处理方法,其特征在于,包括以下步骤:1)对子图像处理的DMA长度进行计算;并计算图像参数和子图像skip参数;2)按照步骤1)所得计算结果和参数的基础上将当前图像存储地址按配置进行对齐操作;3)将对齐操作后的图像存储地址跳过步骤1)所得子图像skip参数对应的像素数、行数和层数并配置DMA描述符启动DMA操作;4)计算下一个图像行的图像存储地址,重复步骤2)和步骤3)直到子图像处理完成。在一个实施例中,所述对子图像处理的DMA长度进行计算的实现方式为:判断OpenGL的bitmapFlag,如果bitmapFlag为0,则根据每像素所占字节数pixelSize、图像处理宽度width计算出以字为单位的DMA长度,如果bitmapFlag为1,则将图像处理宽度width加上配置寄存器中的SkipPixels中不足8的倍数的部分,计算出以字为单位的DMA长度。在一个实施例中,所述计算图像参数和子图像skip参数的实现方式为:图像参数包括行长度row_length、图像高度image_heig本文档来自技高网...

【技术保护点】
1.一种基于DMA的GPU子图像处理方法,其特征在于,包括以下步骤:/n1)对子图像处理的DMA长度进行计算;并计算图像参数和子图像skip参数;/n2)按照步骤1)所得计算结果和参数的基础上将当前图像存储地址按配置进行对齐操作;/n3)将对齐操作后的图像存储地址跳过步骤1)所得子图像skip参数对应的像素数、行数和层数并配置DMA描述符启动DMA操作;/n4)计算下一个图像行的图像存储地址,重复步骤2)和步骤3)直到子图像处理完成。/n

【技术特征摘要】
1.一种基于DMA的GPU子图像处理方法,其特征在于,包括以下步骤:
1)对子图像处理的DMA长度进行计算;并计算图像参数和子图像skip参数;
2)按照步骤1)所得计算结果和参数的基础上将当前图像存储地址按配置进行对齐操作;
3)将对齐操作后的图像存储地址跳过步骤1)所得子图像skip参数对应的像素数、行数和层数并配置DMA描述符启动DMA操作;
4)计算下一个图像行的图像存储地址,重复步骤2)和步骤3)直到子图像处理完成。


2.根据权利要求1所述的一种基于DMA的GPU子图像处理方法,其特征在于:所述对子图像处理的DMA长度进行计算的实现方式为:
判断OpenGL的bitmapFlag,如果bitmapFlag为0,则根据每像素所占字节数pixelSize、图像处理宽度width计算出以字为单位的DMA长度,如果bitmapFlag为1,则将图像处理宽度width加上配置寄存器中的SkipPixels中不足8的倍数的部分,计算出以字为单位的DMA长度。


3.根据权利要求1所述的一种基于DMA的GPU子图像处理方法,其特征在于,所述计算图像参数和子图像skip参数的实现方式为:
判断子图像标记subgraphFlag是否为1,如果是1,则将skip_pixels、skip_rows和skip_images分别设置为配置寄存器中的SkipPixels、SkipRows和SkipImages,判断子图像标记subgraphFlag和配置寄存器RowLength(或ImageHeight)的值,如果subgraphFlag为0或者RowLength(或ImageHeight)为0,则执行第一种情况的计算图像参数步骤,否则执行第二种情况的计算图像参数步骤;
如果子图像标记subgraphFlag不为1,则将skip_pixels、skip_rows、skip_images都设置为0,转入判断子图像标记subgraphFlag和配置寄存器RowLength(或ImageHeight)的值,如果subgraphFlag为0或者RowLength(或ImageHeight)为0,则执行第一种情况的计算图像参数步骤,否则执行第二种情况的计算图像参数步骤;
所述第一种情况的计算图像参数步骤为:将行长度row_length设置为图像处理宽度width,图像高度image_height设置为图像处理高度ht...

【专利技术属性】
技术研发人员:张少锋陈佳姜丽云吴晓成马城城任向隆
申请(专利权)人:中国航空工业集团公司西安航空计算技术研究所
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1