所公开的是一种借助于图形处理单元和存储器来处理关于图像的多种数据结构的图形操作的系统和方法。所述系统和方法的所述公开技术创建用来累积对于数据结构的变化的数据结构的累积缓冲器。然后从累积缓冲器的数据结构的至少一部分创建分离的缓冲器。所述公开的技术借助于图形处理单元从分离的缓冲器读取数据结构。图形处理单元借助于操作影响从分离的缓冲器读取的数据结构。然后,所述公开的技术把操作的结果写到与分离的缓冲器相对应的累积缓冲器的所述部分上。
【技术实现步骤摘要】
【国外来华专利技术】对相关申请的交叉引用这是提交于2004年4月16日、并且标题为“用于图形操作的高级程序接口”的美国申请No.10/826,762的继续申请,该申请通过参考被全部包括。
技术介绍
在过去几年,在所有各种硬件中对于图形子系统寄于的要求一直在增加。例如,在一般计算领域中,即使传统的大众程序,如表示软件,也包括要求更快和更复杂图形计算的动画和其它工具。另外,传统图形密集应用程序,像视频、图片编辑及游戏,在范围和图形密度方面都在增长。况且,垂直系统,如游戏和图形专用计算(例如,Nintendo Gamecube等),为了图形优势甚至更快地加速与一般计算结构的竞争。在此同一时段期间,硬件制造商已经寻求用具有日益增加能力的专用图形处理器来满足和超过增长需要。当今,有几种可买到的可编程图形处理单元(GPU)。尽管可编程和不可编程GPU都提供了用于图形计算的增强速度,但可编程GPU的不同在于它们提供高度灵活性。例如,在可编程GPU以前,应用程序程序员可能在使用CPU时间以呈现更有趣图形、或使用GPU增加整个应用程序性能但以显示较不理想的图形为代价之间权衡。可编程GPU已经把以前GPU的速度优点与显著灵活性程度相结合。在实用方面,可编程性是重要的优点,因为它允许程序以与系统微处理器类似的方式使用图形芯片。通过以这种方式使用GPU,系统可虚拟地产生无限图形效果而不加载系统CPU。可编程GPU运行一般叫做分段程序的程序。“分段(fragment)”程序的名称来源于如下事实,运算的数据单位一般是象素-即图像的片段。GPU可在和几个象素上同时运行分段程序以创建结果,该结果一般通过它所驻留的缓冲器的名称被参考。GPU使用一般叫做纹理(texture)的数据输入,这种数据输入类似于象素的收集。而且,在设想和开发GPU的同一时段期间,已经在进行为希望使用图形专用硬件的应用程序提供某些编程接口的努力。一种这样的努力通常称作OpenGL。OpenGL的目标是使得图形功能对于程序员是可访问的,其独立于硬件。在这样做时,OpenGL像状态机器。具体地说,使用OpenGL库的程序必须设置诸如当前颜色、亮暗、混合等等之类的状态。当程序被运行时,生成的上下文将是状态和输入纹理的组合,这样的组合取决于被编程的东西。给定状态机器类型操作,操作的结果不总是容易可预测的。随着计算机向更加视觉丰富的内容迁移,图像处理变得更加重要。结果,程序员访问这些工具的容易性和图形计算的效率的重要性继续增加。尽管OpenGL和可编程GPU的组合已经提供了对于图形可编程性的广泛改进,但仍然有对于到图形子系统的更高级接口的需要。这种需要对于在图像处理中直接涉及的应用程序(例如,Photoshop、AfterEffects或类似软件)而加剧。在这些应用程序和其它程序中,希望有一个抽取层,其对采用该基础结构的那些人隐藏图形硬件的复杂性。此外,操作系统可能希望通过向所用应用程序呈现这样一个抽取层而有助于整体丰富用户图形体验。这样一种接口应该允许程序员或程序简单地对于给定图像应用滤波器或效果。在对于更高级API的要求中隐含的是,以快速和高效方式实现该API的要求。为了高效,系统应该具有以容易理解和容易操作的方式概念化图形编程的机构。此外,这样一种系统应该使存储器和计算时间的使用的最小,同时也高效地划分在CPU与GPU之间的工作。最后,希望具有一种系统,该系统可以在单一处理器上仿真,从而为双处理器系统(GPU和CPU)建造的程序可在仅具有CPU的传统系统上运行。除滤波器或效果之外,图形操作也是图像编辑的固有成分。图形操作(或更明确地说,累积图形操作)通常用在图像编辑中,该图像编辑包括画笔划、聚光、弯曲(warping)、渲染(caustics)、颗粒呈现(particle rendering)、或光线轨迹(ray tracing)。例如,用户可以把画笔划施加到图像上。另外,用户可以使用多个光源产生舞台状表现,并且把戏剧添加到他们正在编辑的图像上。图像弯曲也是对于可得到的一种有用的累积图形操作,并且是用户应用于图像的较流行操作之一。用于进行在CPU上实现的累积图形操作的当前技术可能使用多于所希望的更多处理和存储器空间。另外,各种累积图形操作涉及在复杂数据结构中的数据,如高密度限定定义颜色(光)、向量偏移、及图元球字段(metaball field)值。在这些复杂数据结构中的数据适合于由GPU计算。简短地说,GPU能以显著高的处理速度和以足够的精度进行这样的累积图形操作。因此,存在对于用GPU进行累积图形操作的需要。然而,GPU不能对于相同缓冲器进行排他性的读取/修改/写入序列,这妨碍GPU处理这样的累积图形操作。本公开主题的目的在于,克服、或至少减小以上叙述的问题的一个多个的影响。
技术实现思路
在其它进步中,本专利技术寻求解决问题,并且满足上述的需要和希望。在这样做时,本专利技术的一些实施例包括用于图形操作、或潜在其它操作的高级程序接口,这些潜在其它操作可能采用辅助处理器资源。在这种类型的更具体实施例中,高级程序接口包括由用户或在系统中的程序可以调用的图形滤波功能。程序或用户通过由预定义列表创建效果或规定滤波器功能,而利用所述高级程序接口。在可选择实施例中,程序员或程序可以获得对于可扩展基础结构的访问,以把滤波器添加到所述预定义列表上。在本专利技术的一个一般实施例中,软件将利用系统中的被选择的处理器,以编译图像任务的图形状描述。图形状描述可以是图像的节点和链接表示,其中节点可以代表操作员,并且链接可以代表中间结果和保持这些结果所必需的存储。更具体地说,在图形状描述中的节点可以最终包括线程或程序,用来在另一个处理器上计算整个图像操作的一部分。此外,具有整个图像任务的图形状描述,这允许优化编译器的使用,以减少用于整个图像任务的必要资源。这种编译功能特别有用,因为节点程序一般在不同于运行所述编译器的处理器的一个处理器上运行。以上一般实施例可以在单一CPU与单一GPU临时配对的上下文中描述。这个实施例提出在CPU上运行的软件,以访问整个图像任务和构造其图形状描述。这可以视觉地表现为具有上述联系的节点和链接的树图。由于节点-程序可以在GPU上执行,所以程序的构造说明GPU的性质。最值得注意的是,并且在一般意义上,可编程GPU操作几个并行执行流,所以节点-程序可以以可并行化的语言表达。例如,节点程序可以是GPU分段程序。在代表整个图像任务的图形的建造之后,图形可以凭借在CPU上运行的编译器而优化。可替换地,当创建所述图形时,所述图形可以由编译器以不同的片段来优化。优化的目的是使存储器使用和CPU或GPU时间最小,否则当计算图像时获得效率。根据本专利技术的变形实施例,优化可以具有多种功能特性。例如,优化可以包括高速缓存中间结果、把多个分段程序统一成一个、把存储器和计算限制到在定义的约束域和感兴趣区内的区域、或优化在处理器之间计算的划分。在当今图形上下文中应用这些技术是高度高效的,并且允许开发人员通过表达将要在元素(例如,象素)上的进行的操作而写滤波器,而不用担心在系统中的特定硬件-它将由编译程序考虑。另外,已经创建了为了在多处理器系统中使用的API和高效处理基础结构,多个实施例也包括在单一处理器系统上利用A本文档来自技高网...
【技术保护点】
一种用图形处理单元和存储器处理关于数据的操作的方法,该方法包括步骤:a)创建用来累积对于所述数据的变化的数据的累积缓冲器;b)用所述图形处理单元读取所述累积缓冲器的所述数据的一部分;c)通过使用所述图形处理单元的操作,来操作所述数据而创建结果;及d)把所述结果写到在累积缓冲器中的所述数据的所述部分上。
【技术特征摘要】
【国外来华专利技术】...
【专利技术属性】
技术研发人员:马克齐默,
申请(专利权)人:苹果公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。