对图形资源的串行化访问的制作方法

文档序号:6541301阅读:191来源:国知局
对图形资源的串行化访问的制作方法
【专利摘要】本发明提供了用于对图形资源的串行化访问的方法和系统,所述方法和系统规定识别引用公共屏幕位置并且访问读取/写入资源的多个主题命令,并且根据预定义顺序来串行化所述多个主题命令。此外,可以延迟所述多个主题命令的执行,直到执行了引用所述公共屏幕位置的一个或多个附加命令为止。在一个示例中,所述多个主题命令响应于串行化命令而被串行化。
【专利说明】对图形资源的串行化访问
【背景技术】
[0001]图形管线可以用于生成像素用于在屏幕上进行显示。例如,图形管线可以接受图像的表示作为输入并且生成该图像的像素表示。在一个示例中,该图形管线被表示为一系列级,其中一个这样的级是被称为像素着色器的程序或电路。像素着色器可以接收插值顶点数据(例如以三角形为例的“图元”)并且以该差值顶点数据为基础来输出像素颜色。
[0002]多个像素着色器可以同时操作以便实现图形设备中的数据并行性。例如,单个像素着色器调用可以计算屏幕上单个像素的颜色(以及潜在的其它属性),其中能够并行地计算屏幕上的所有像素。而且,并行操作的多个像素着色器可以引用相同的屏幕位置(例如,相同的x,y坐标)。尽管每一个像素着色器调用可以独立于其它像素着色器调用,但是图形设备可以保证按照特定顺序来处理到渲染目标资源的写入。
[0003]例如以DIRECTX (微软公司注册商标)和OPENGL (硅图形公司注册商标)为例的某些应用编程接口(API)可以提供对于渲染目标写入操作的排序,但是可能对于诸如未排序访问视图(DIRECTX)或图像(OPENGL)的其它读取/写入(R / W)资源缺乏任何这样的顺序保证。传统排序技术可以在外部存储器中维持对象的链接列表并且使用全局原子操作来保证对该列表的串行化访问。然而,这样的方案在高度并行化图形架构中会引入明显的成本。例如,全局存储器原子学可以涉及原子计数器或要求原子操作(例如,相互排斥/互斥)的同步图元的使用,这会显著地影响性能。此外,原子操作本身会消耗存储器带宽并且干扰其它输入/输出(I / O)请求。
【专利附图】

【附图说明】
[0004]通过阅读下面的说明书和所附权利要求并且通过参考下面的附图,实施例的各种优点将变得对于本领域普通技术人员显而易见,在附图中:
[0005]图1是根据实施例的访问读取/写入资源的多个线程的示例的说明;
[0006]图2是根据实施例的排序解决方案的示例的说明;
[0007]图3是根据实施例的处理命令的方法的示例的流程图;
[0008]图4是根据实施例的逻辑架构的示例的方框图;
[0009]图5是根据实施例的系统的示例的方框图;
[0010]图6是根据实施例具有导航控制器的系统的示例的方框图;并且
[0011]图7是根据实施例具有小形状因子的系统的示例的方框图。
【具体实施方式】
[0012]图1示出了多个线程lO(lOa-lOc),其在高度并行化图形计算环境中使能视觉内容的呈现。所说明的线程10通常包含一个或多个编译命令,其在执行例如以像素着色为例的功能时访问读取/写入(R / W)资源12 (例如,DIRECTX未排序访问视图/ UAV、OPENGL图像、通用缓冲器等等)。在像素着色的情况下,每一个线程10可以接收到来图元作为图形管线的光栅化级的一部分,并且以该到来图元为基础输出像素颜色。可以将这些功能的结果写入到经由显示器/屏幕(未示出,例如,液晶显示器/ IXD、发光二极管(LED)显示器等等)输出的渲染目标14。在所说明的示例中,线程10在公共屏幕位置16(例如,X, y坐标)上进行操作。因此,串行化技术可以用于确保线程10之间以及线程10内的像素着色命令之间的正确访问顺序。特别注意到,该串行化技术可以使用单个串行化命令代替全局原子操作(原子学)。结果,所说明的解决方案可以降低存储器空间要求并且比传统解决方案消耗较少的存储器带宽。
[0013]例如,第一线程IOa可以配置为将由第一多个主题命令18 (例如,第一像素着色器调用)计算的透明度信息(例如,窗口)写入到位于公共屏幕位置16的R / W资源12,第二线程IOb可以配置为将由第二多个主题命令20(例如,第二像素着色器调用)计算的透明度信息(例如,烟雾)写入到位于公共屏幕位置16的R / W资源12,并且第三线程IOc可以配置为将由第三多个主题命令22(例如,第三像素着色器调用)计算的透明度信息(例如,烟雾)写入到位于公共屏幕位置16的R / W资源12。如下面更详细讨论的,每一个线程10可以根据预定义顺序来串行化其命令,并且延迟其命令的执行,直到执行了引用该公共屏幕位置16的一个或多个附加命令为止。该预定义顺序可以例如以到来图元(例如,插值顶点数据、三角形等等)的光栅化顺序为基础进行确定。
[0014]因而,第一线程IOa可以响应于第一串行化命令24而根据预定义顺序串行化第一多个主题命令18,并且延迟该第一多个主题命令18的执行,直到执行了第二多个主题命令20为止。在这种情况下,该预定义顺序可以例如以与第一多个主题命令18相关联的到来图元的光栅化顺序为基础进行确定。类似地,第二线程IOb可以响应于第二串行化命令26而根据预定义顺序串行化第二多个主题命令20,并且延迟该第二多个主题命令20的执行,直到执行了第三多个主题命令22为止。再一次,该预定义顺序可以例如以与第二多个主题命令20相关联的到来图元的光栅化顺序为基础进行确定。此外,第三线程IOc可以响应于第三串行化命令28而根据预定义顺序串行化第三多个主题命令22,并且延迟第三多个主题命令22的执行,直到执行了引用该公共屏幕位置16的一个或多个附加命令。
[0015]分别与主题命令18,20,22分隔开的所说明的串行化命令24,26,28可以按照例如以DIRECTX高级着色语言(HLSL)、OPENGL着色语言(GLSL)等等为例的高级语言进行读取。这样的方案可以避免对与防止挂起、延迟等等相关的着色器代码的限制的任何关注。此外,所说明的解决方案对于下列应用会特别有利,例如顺序独立的透明度(OIT)应用、混合应用(例如,混合操作符、非线性颜色空间、唯一编码)、深度剥离、构造性实体几何体、场模糊的深度、运动模糊、体积渲染等等,其中着色器排序是相关的。
[0016]图2示出了一种排序解决方案,其中第三线程IOc包括对来自第一图元的片段进行着色的着色部分30,以及访问位于公共屏幕位置的诸如R / W资源12 (图1)的R / W资源(例如,DIRECTX未排序访问视图、OPENGL图像)的读取/修改/写入(R / M / W)部分32。此外,第二线程IOb可以包括对来自第二图元的片段进行着色的着色部分34,以及访问位于公共屏幕位置的R / W资源的R/M / W部分36。在所说明的示例中,施加等待时段38,直到完成第三线程IOc的R/M / W部分32为止,以使得第二线程IOb的R / M / W部分36不干扰第三线程IOc的R / M / W部分32。
[0017]现在转到图3,示出了处理命令的方法40。该方法40可以实现在可执行软件中作为存储在存储器的机器可读或计算机可读存储介质中的一组逻辑指令,该存储器例如是随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM (PROM)、固件、闪存等等,可以实现在例如以可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)为例的可配置逻辑中,可以使用例如以专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或者晶体管-晶体管逻辑(TTL)技术为例的电路技术实现在固定功能逻辑硬件中,或者其任何组合。
[0018]所说明的处理方框42规定读取串行化命令。该串行化命令可以按照例如以HLSL、GLSL等等为例的语言进行读取。而且,取决于环境,可以在条件循环(例如,IF分支)内部和/或条件循环外部遇见该串行化命令。在串行化命令在特定着色器线程中被遇见多于一次的情况中,仅第一次出现可以影响该线程的排序。方框44可以识别引用公共屏幕位置并且访问R / W资源(例如,DIRECTX未排序访问视图、OPENGL图像)的多个主题命令,其中,响应于串行化命令,在方框46,可以根据预定义顺序来串行化该多个主题命令。如已经注意的,可以例如以与多个主题命令相关联的到来图元的光栅化顺序为基础来确定该预定义顺序。
[0019]在方框48可以做出是否存在引用该公共屏幕位置的附加命令(例如,来自其它像素着色器线程)。如果为是,则在方框50延迟该多个主题命令的执行,直到执行了附加命令为止。一旦完成了附加命令,所说明的方框52执行多个主题命令。以下是串行化命令“BeginPixelOrderingO ” 的不例实现。
[0020]{
[0021]BeginPixelOrdering ();
[0022]uint rgbe=gRGBEBuffer [xy] ; / / 从资源进行读取
[0023]f loat3dstRGB=RGBE_to_RGG (rgbe) ; / / 修改
[0024]dstRGB=alpha*rgb+(1-alpha) *dstRGB ; / / 修改
[0025]gRGBEBuffer [xy] = RGB_to_RGBE (dstRGB) ; / / 写入到资源
[0026]}
[0027]图4示出了逻辑架构54(54a_54c)以便处理与视觉内容的呈现相关联的命令。架构54可以通常实现已经讨论的方法40(图3)的一个或多个方面。在所说明的示例中,架构54包括串行化模块54a,用于识别引用公共屏幕位置并且访问R / W资源(例如,未排序访问视图,图像)的多个主题命令。可以响应于可以按照诸如HLSL、GLSL等等的语言进行读取的串行化命令而识别和/或串行化该多个主题命令。例如,命令顺序模块54b可以根据预定义顺序来串行化多个主题命令,其中命令顺序模块54b可以例如以与多个主题命令相关联的到来图元的光栅化顺序为基础来确定该预定义顺序。此外,所说明的架构54包括线程顺序模块54c,其延迟多个主题命令的执行,直到执行了引用该公共屏幕位置的一个或多个附加命令为止。在一个示例中,多个主题命令与第一像素着色器线程相关联,并且一个或多个附加命令与第二像素着色器线程相关联。
[0028]线程依赖性寄存器可以用于存储每一个线程相对于其它线程的依赖性。当每一个像素着色器到达串行化点时,可以使用指令来使每一个像素着色器等待,直到较早开始的像素着色器将像素写入R / W资源为止。光栅化器能够实施像素着色器的开始顺序,并且计分板可以用于实施命令完成顺序。
[0029]现在转向图5,示出了计算系统56,其中系统56可以是诸如膝上型电脑、移动互联网设备(MID)、个人数字助理(PDA)、媒体播放器、成像设备、可穿戴式计算机等等的移动平台,诸如智能电话、智能平板、智能TV(电视)等等的任何智能设备,或其任何组合的一部分。系统56还可以是诸如个人计算机(PC)、服务器、工作站等等的固定平台的一部分。所说明的系统56包括具有提供对系统存储器62的访问的集成存储器控制器(iMC)60的中央处理单元(CPU,例如,主机处理器)58,该系统存储器62可以例如包括双数据率(DDR)同步动态随机存取存储器(SDRAM,例如,DDR3SDRAM JEDEC标准JESD79-3C,2008年4月)模块。系统存储器62的模块可以例如集成在单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)、小外形 DIMM (SODIMM)等等中。
[0030]CPU58还可以具有一个或多个驱动器64、像素着色器API (应用编程接口)66和/或处理器核心(未示出),其中每一个核心可以具有指令获取单元、指令解码器、一级(LI)高速缓存、执行单元等等的全部功能。在一个示例中,像素着色器API66配置为包含按照例如以HLSL、GLSL等等为例的高级语言进行功能调用的一个或多个串行化命令。CPU58可选地能够经由互连系统56中的每一个部件的前侧总线或点对点纤维来与也被称为北桥的1MC60的片外变型进行通信。CPU58也可以执行操作系统(OS)68。
[0031]所说明的CPU58经由总线与也被称为南桥的输入/输出(IO)模块70进行通信。1MC6O / CPU58和IO模块70有时被称为芯片集。CPU58也可以经过IO模块70和各种其它控制器72经由网络端口可操作地连接到网络(未示出)。因而,其它控制器72可以提供平台外通信功能,用于诸如有线通信或无线通信的各种不同目的,包括但不局限于蜂窝电话(例如,宽带码分多址、W-CDMA(通用移动通信系统/ UMTS)、CDMA2000(IS-856 /IS-2000)等等)、W1-Fi (无线保真,例如,电气和电子工程师协会/ IEEE802.11,2007版)、蓝牙(例如,IEEE802.15.1-2005,无线个域网)、WiMax(例如,IEEE802.16-2004)、全球定位系统(GPS)、扩频(例如,900MHz)以及其它射频(RF)电话学目的。IO模块70还可以与显示器74进行通信,以便规定视频、图像和其它内容的视觉输出/呈现。其它控制器72还可以与IO模块70进行通信以便提供对于诸如小键盘、鼠标等等的用户接口设备(未示出)的支持,以便允许用户与系统56进行交互并且感知来自系统56的信息。
[0032]IO模块70还可以具有诸如USB (通用串行总线,例如,USB规范2.0,USB实现者论坛)、串行 ATA (SATA,例如,SATA Rev3.0 规范,2009 年 5 月 27 日,SATA 国际组织 / SATA-10)、高清音频和其它控制器的内部控制器(未示出)。所说明的IO模块70也耦接到存储,该存储可以包括硬驱76、只读存储器(ROM)、光盘、闪存(未示出)等等。
[0033]所说明的系统56还包括耦接到专用图形存储器80的专用图形处理单元(GPU,图形处理器)78。该专用图形存储器80可以例如包括⑶DR(图形DDR)或DDR SDRAM模块,或者适合于支持图形渲染的任何其它存储器技术。GPU78和图形存储器80可以安装在图形/视频卡上,其中GPU78可以经由诸如PCI Express图形(PEG,例如,外围部件互联/ PCIExpress xl6图形150W-ATX规范1.0,PCI特殊兴趣组)或者加速图形端口(例如,AGPV3.0接口规范,2002年9月)总线的图形总线82与CPU58进行通信。该图形卡可以集成在系统主板上,主CPU58裸片中,配置为主板上的分立卡等等。GPU78还可以执行一个或多个驱动器84,并且可以包括图形管线86和内部高速缓存88,以便存储指令和其它数据。
[0034]可选地,GPU78可以不包括专用图形存储器,而是代替地与CPU92共享系统存储器62。这样的配置可以用于集成的图形架构,其中GPU78和CPU58是相同裸片的一部分(例如,经过合适的接口相连接)。
[0035]所说明的图形管线86包括能够在高度并行化的图形解决方案中运行多个像素着色器调用的像素着色器90。在一个示例中,着色器API66包括例如以已经讨论的逻辑架构54(图4)为例的逻辑。因此,着色器API66可以配置为识别像素着色器90中引用公共屏幕位置并且访问诸如系统存储器62中的R / W缓冲器92的R / W资源的多个主题命令。着色器API66还可以根据预定义顺序来串行化多个主题命令并且延迟该多个主题命令的执行,直到执行了引用该公共屏幕位置的一个或多个附加命令为止。
[0036]图6说明了系统700的实施例。在实施例中,系统700可以是媒体系统,但是系统700并不局限于这一环境。例如,系统700可以被结合到个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板电脑、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/ PDA、电视、智能设备(例如,智能电话、智能平板或智能电视)、移动互联网设备(MID)、消息传送设备、数据通信设备等等中。因而,系统700可以用于如本文描述地渲染图像。
[0037]在实施例中,系统700包括耦接到显示器720的平台702。平台702可以从诸如内容服务设备730或内容传送设备740或其它相似的内容源的内容设备接收视频比特流内容。包括一个或多个导航特征的导航控制器750可以用于例如与平台702和/或显示器720进行交互。以下详细描述这些部件中的每一个。
[0038]在实施例中,平台702可以包括芯片集705、处理器710、存储器712、存储714、图形子系统715、应用716和/或无线电设备718的任意组合。芯片集705可以提供处理器710、存储器712、存储714、图形子系统715、应用716和/或无线电设备718之间的相互通信。例如,芯片集705可以包括能够提供与存储714进行相互通信的存储适配器(未示出)。
[0039]处理器710可以实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核心或者任何其它微处理器或中央处理单元(CPU)。在实施例中,处理器710可以包括双核处理器、双核移动处理器等等。
[0040]存储器712可以实现为易失性存储器设备,例如但不局限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM (SRAM)。
[0041]存储714可以实现为非易失性存储设备,例如但不局限于磁盘驱动、光盘驱动、磁带驱动、内部存储设备、附接的存储设备、闪存、备用电池的SDRAM(同步DRAM)和/或网络可访问的存储设备。在实施例中,当例如包括多个硬驱时,存储714可以包括用于增加对于有价值的数字媒体的存储性能增强保护的技术。
[0042]图形子系统715可以执行诸如静态或视频的图像的处理用于显示。图形子系统715可以例如是图形处理单元(GPU)或视觉处理单元(VPU)。图形子系统715可以因此包括已经讨论的GPU78(图5)。此外,处理器710可以配置为经由从存储器712、存储714或其它合适的源获得的指令而操作为CPU58(图5)。模拟或数字接口可以用于可通信地耦接图形子系统715和显示器720。例如,该接口可以是任何高清晰度多媒体接口、显示端口、无线HDMI和/或无线HD兼容的技术。图形子系统715可以集成到处理器710或芯片集705中。图形子系统715可以是可通信地耦接到芯片集705的单独的卡。
[0043]本文描述的图形和/或视频处理技术可以按照各种硬件架构来实现。例如,图形和/或视频功能可以集成在芯片集内。可选地,可以使用分立的图形和/或视频处理器。作为另一实施例,该图形和/或视频功能可以由包括多核处理器的通用处理器实现。在进一步实施例中,该功能可以在消费类电子设备中实现。
[0044]无线电设备718可以包括能够使用各种适合的无线通信技术来发射和接收信号的一个或多个无线电设备。这样的技术可以涉及一个或多个无线网络上的通信。示例性无线网络包括(但不局限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络和卫星网络。在这样的网络上进行通信时,无线电设备718可以根据一个或多个任何版本的可适用标准进行操作。
[0045]在实施例中,显示器720可以包括任何电视类型的监视器或显示器。显示器720可以例如包括计算机显示屏幕、触摸屏显示器、视频监视器、类似电视的设备和/或电视。显示器720可以是数字和/或模拟的。在实施例中,显示器720可以是全息显示器。并且,显示器720可以是可以接收视觉投影的透明表面。这样的投影可以传递各种形式的信息、图像和/或对象。例如,这样的投影可以是用于移动增强现实(MAR)应用的视觉重叠。在一个或多个软件应用716的控制下,平台702可以在显示器720上显示用户界面722。
[0046]在实施例中,内容服务设备730可以由任何国内、国际和/或独立服务来控制,并且因而可以例如经由互联网对于平台702可访问。内容服务设备730可以被耦接到平台702和/或显示器720。平台702和/或内容服务设备730可以耦接到网络760以便与网络760来回地通信(例如,发送和/或接收)媒体信息。内容传送设备740还可以耦接到平台702和/或显示器720。
[0047]在实施例中,内容服务设备730可以包括有线电视盒、个人计算机、网络、电话、能够传送数字信息和/或内容的互联网使能的设备或装置以及能够经由网络760或者直接地在内容提供方和平台702和/或显示器720之间单向或双向地通信内容的任何其它类似的设备。将意识到,该内容可以经由网络760单向和/或双向地与系统700和内容提供方中的任意一个部件来回地进行通信。内容的示例可以包括任何媒体信息,例如包括视频、音乐、医疗和游戏/[目息等等。
[0048]内容服务设备730接收内容,例如包括媒体信息、数字信息和/或其它内容的有线电视节目。内容提供方的示例可以包括任何有线或卫星电视或者无线电或互联网内容提供方。所提供的示例并不意在限制实施例。
[0049]在实施例中,平台702可以从具有一个或多个导航特征的导航控制器750接收控制信号。控制器750的导航特征可以用于例如与用户接口 722进行交互。在实施例中,导航控制器750可以是指向设备,其可以是允许用户将空间(例如,连续和多维)数据输入到计算机中的计算机硬件部件(特别是人类接口设备)。诸如图形用户接口(GUI)、电视和监视器的许多系统允许用户使用身体姿势控制并提供数据到计算机或电视。
[0050]可以通过在显示器上显示的指针、光标、聚焦环或其它视觉指示符的移动来将控制器750的导航特征的移动反映在显示器(例如,显示器720)上。例如,在软件应用716的控制下,可以例如将位于导航控制器750上的导航特征映射到在用户接口 722上显示的虚拟导航特征。在实施例中,控制器750可以不是分离的部件,而是集成在平台702和/或显示器720中。然而,实施例并不局限于本文示出的或描述的元素或者上下文。
[0051]在实施例中,驱动器(未示出)可以包括一种技术,当平台702被使能时,在最初的启动之后,使用户利用按钮的触摸来快速地打开和关闭类似电视的平台702。当平台被“关闭”时,程序逻辑可以允许平台702将内容流传送到媒体适配器或其它内容服务设备730或内容传送设备740。此外,芯片集705可以例如包括对于5.1环绕声音频和/或高清晰度7.1环绕声音频的硬件和/或软件支持。驱动器可以包括对于集成图形平台的图形驱动器。在实施例中,该图形驱动器可以包括外围部件互联(PCI)Express图形卡。
[0052]在各种实施例中,可以集成系统700中示出的任何一个或多个部件。例如,可以集成平台702和内容服务设备730,或者可以集成平台702和内容传送设备740,或者可以集成平台702、内容服务设备730以及内容传送设备740。在各种实施例中,平台702和显示器720可以是集成单元。可以集成显示器720和内容服务设备730,或者可以例如集成显示器720和内容传送设备740。这些示例并不意在限制该实施例。
[0053]在各种实施例中,系统700可以实现为无线系统、有线系统或上述二者的组合。当实现为无线系统时,系统700可以包括适用于通过诸如一个或多个天线、发射机、接收机、收发机、放大器、滤波器、控制逻辑等等的无线共享媒体进行通信的部件和接口。无线共享媒体的示例可以包括诸如RF频谱等等的无线频谱的部分。当实现为有线系统时,系统700可以包括适用于通过有线通信媒体进行通信的部件和接口,该有线通信媒体例如是输入/输出(I / O)适配器、使I / O适配器与相对应的有线通信介质连接的物理连接器、网络接口卡(NIC)、磁盘控制器、视频控制器、音频控制器等等。有线通信媒体的示例可以包括电线、电缆、金属引线、印刷电路板(PCB)、背板、交换纤维、半导体材料、双绞线、同轴电缆、光缆等等。
[0054]平台702可以建立一个或多个逻辑或物理信道以便通信信息。该信息可以包括媒体信息和控制信息。媒体信息可以指代表示意在用于用户的内容的任何数据。内容的示例可以例如包括来自语音会话、视频会议、视频流传送、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等等的数据。来自语音会话的数据可以例如是讲话信息、沉默时段、背景噪声、舒适噪声、音调等等。控制信息可以指代表示意在用于自动化系统的命令、指令或控制字的任何数据。例如,控制信息可以用于经过系统来路由媒体信息,或者指示节点以便按照预定方式来处理媒体信息。然而,实施例并不局限于在图6中示出或者描述的元素或者环境。
[0055]如上所述,系统700可以体现在不同的物理风格或形状因子中。图7说明了系统可以体现在其中的小形状因子设备800的实施例。在实施例中,例如,设备800可以实现为具有无线能力的移动计算设备。移动计算设备可以例如指代具有处理系统和例如一个或多个电池的移动功率源或功率供应的设备。
[0056]如上所述,移动计算设备的示例可以包括个人计算机(PO、膝上型计算机、超级膝上型计算机、平板电脑、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/ PDA、电视、智能设备(例如,智能电话、智能平板或智能电视)、移动互联网设备(MID)、消息传送设备、数据通信设备等等。
[0057]移动计算设备的示例还可以包括布置为由人穿戴的计算机,例如腕式计算机、手指计算机、指环计算机、眼镜计算机、腰带计算机、臂带计算机、鞋式计算机、服装计算机以及其它可穿戴式计算机。在实施例中,例如,移动计算设备可以实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。尽管一些实施例可以利用实现为智能电话的移动计算设备通过示例的方式进行描述,但是应当意识到,其它实施例也可以使用其它无线移动计算设备来实现。所述实施例不局限于这一环境。
[0058]如图7所示,设备800可以包括壳体802、显示器804、输入/输出(I / O)设备806和天线808。设备800还可以包括导航特征812。显示器804可以包括用于显示适合于移动计算设备的信息的任何合适的显示单元。I / O设备806可以包括用于将信息输入到移动计算设备中的任何合适的I / O设备。I / O设备806的示例可以包括字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇杆开关、麦克风、扬声器、语音识别设备和软件等等。也可以通过麦克风的方式将信息输入到设备800中。这样的信息可以由语音识别设备数字化。该实施例不局限于这一环境。
_] 附加注释和示例:
[0060]示例I可以包括用于呈现视觉内容的系统,该系统包括用于以像素数据为基础来输出视觉内容的显示器、用于识别引用公共屏幕位置并且访问读取/写入资源的多个主题命令的串行化模块、用于根据预定义顺序来串行化多个主题命令的命令顺序模块以及用于延迟多个主题命令的执行直到执行了引用该公共屏幕位置的一个或多个附加命令为止的线程顺序模块,其中,所述多个主题命令和所述一个或多个附加命令的执行生成所述像素数据。
[0061]示例2可以包括示例I的系统,其中,所述多个主题命令响应于串行化命令而被串行化。
[0062]示例3可以包括示例2的系统,其中,所述串行化模块用于按照高级着色语言或OPENGL着色语言中的一个来读取所述串行化命令。
[0063]示例4可以包括示例I至3中的任意一个的系统,其中,所述命令顺序模块用于以与所述多个主题命令相关联的到来图元的光栅化顺序为基础来确定所述预定义顺序。
[0064]示例5可以包括示例I至3中的任意一个的系统,其中,所述多个主题命令与第一像素着色器线程相关联,并且所述一个或多个附加命令与第二像素着色器线程相关联。
[0065]示例6可以包括示例I至3中的任意一个的系统,其中,所述多个主题命令引用DIRECTX未排序访问视图或OPENGL图像中的一个。
[0066]示例7可以包括一种处理命令的方法,所述方法包括识别引用公共屏幕位置并且访问读取/写入资源的多个主题命令,根据预定义顺序来串行化所述多个主题命令,并且延迟所述多个主题命令的执行直到执行了引用所述公共屏幕位置的一个或多个附加命令为止。
[0067]示例8可以包括示例7的方法,其中,所述多个主题命令响应于串行化命令而被串行化。
[0068]示例9可以包括示例8的方法,进一步包括按照高级着色语言或OPENGL着色语言中的一个来读取所述串行化命令。
[0069]示例10可以包括示例7至9中的任意一个的方法,进一步包括以与所述多个主题命令相关联的到来图元的光栅化顺序为基础来确定所述预定义顺序。
[0070]示例11可以包括示例7至9中的任意一个的方法,其中,所述多个主题命令与第一像素着色器线程相关联,并且所述一个或多个附加命令与第二像素着色器线程相关联。
[0071]示例12可以包括示例7至9中的任意一个的方法,其中,所述多个主题命令引用DIRECTX未排序访问视图或OPENGL图像中的一个。[0072]示例13可以包括包含指令集的至少一个计算机可读存储介质,如果由计算设备执行,所述指令集使所述计算设备识别引用公共屏幕位置并且访问读取/写入资源的多个主题命令,根据预定义顺序串行化所述多个主题命令,并且延迟所述多个主题命令的执行直到执行了引用所述公共屏幕位置的一个或多个附加命令为止。
[0073]示例14可以包括示例13的至少一个计算机可读存储介质,其中,所述多个主题命令响应于串行化命令而被串行化。
[0074]示例15可以包括示例14的至少一个计算机可读存储介质,其中,如果被执行,所述指令使计算设备按照高级着色语言或OPENGL着色语言中的一个来读取所述串行化命令。
[0075]示例16可以包括示例13至16中的任意一个的至少一个计算机可读存储介质,其中,如果被执行,所述指令使计算设备以与所述多个主题命令相关联的到来图元的光栅化顺序为基础来确定所述预定义顺序。
[0076]示例17可以包括示例13至16中的任意一个的至少一个计算机可读存储介质,其中,所述多个主题命令与第一像素着色器线程相关联,并且所述一个或多个附加命令与第二像素着色器线程相关联。
[0077]示例18可以包括示例13至16中的任意一个的至少一个计算机可读存储介质,其中,所述多个主题命令引用DIRECTX未排序访问视图或OPENGL图像中的一个。
[0078]示例19可以包括一种用于处理命令的装置,所述装置包括用于识别引用公共屏幕位置并且访问读取/写入资源的多个主题命令的串行化模块、用于根据预定义顺序来串行化所述多个主题命令的命令顺序模块以及用于延迟所述多个主题命令的执行直到执行了引用所述公共屏幕位置的一个或多个附加命令为止的线程顺序模块。
[0079]示例20可以包括示例19的装置,其中,所述多个主题命令响应于串行化命令而被串行化。
[0080]示例21可以包括示例20的装置,其中,所述串行化模块用于按照高级着色语言或OPENGL着色语言中的一个来读取所述串行化命令。
[0081]示例22可以包括示例19至21中的任意一个的装置,其中,所述命令顺序模块用于以与所述多个主题命令相关联的到来图元的光栅化顺序为基础来确定所述预定义顺序。
[0082]示例23可以包括示例19至21中的任意一个的装置,其中,所述多个主题命令与第一像素着色器线程相关联,并且所述一个或多个附加命令与第二像素着色器线程相关联。
[0083]示例24可以包括如示例19至21中的任意一个的装置,其中,所述多个主题命令引用DIRECTX未排序访问视图或OPENGL图像中的一个。
[0084]示例25可以包括一种用于处理命令的装置,包括用于执行示例7至12中的任意一个的方法的单元。
[0085]本文描述的技术因此可以通过消除全局存储器原子操作来降低在0ΙΤ、混合和其它应用中的存储器空间要求和存储器带宽使用。例如,调用串行化命令可以保证由着色器调用从先前图元发出的并且映射到相同屏幕位置的任何存储器事务是完整的,并且对于调用该串行化命令的着色器调用是可视的。
[0086]各种实施例可以使用硬件元件、软件元件或二者的组合来实现。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片集等等。软件的示例可以包括软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任意组合。确定实施例是使用硬件元件和/或软件元件实现可以根据任何数量的因素而改变,例如期望的计算速率、功率级别、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束。
[0087]至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令实现,该代表性指令代表处理器内的各种逻辑,当由机器读取时,所述代表性指令使所述机器制造逻辑以便执行本文描述的技术。可以将被称为“IP核”的这样的表示存储在有形的机器可读介质上并且供应到各种客户或制造商,以便装载到实际上制造该逻辑或处理器的制造机器中。
[0088]实施例适用于与所有类型的半导体集成电路(“1C”)芯片共同使用。这些IC芯片的示例包括但不局限于处理器、控制器、芯片集部件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片等等。此外,在一些附图中,信号导线利用线条来表示。一些可能不同,以便指示更多的构成信号路径,具有数字标签,以便指示多个构成信号路径,和/或在一端或多端具有箭头,以便指示主要信息流方向。然而,这不应该被按照限制的方式进行构筑。相反,可以将添加的细节结合一个或多个示例性实施例一起使用,以便促进对电路的更加容易的理解。无论是否具有附加信息,任何所表示的信号线可以实际上包括一个或多个信号,该一个或多个信号可以沿多个方向传播并且可以利用任何合适类型的信号方案来实现,例如,利用差分对、光纤线和/或单端线实现的数字或模拟线。
[0089]已经给出了示例尺寸/模型/值/范围,但是实施例并不局限于这些相同的值。随着制造技术(例如,光刻)日渐成熟,期望能够制造具有更小尺寸的设备。此外,出于说明和讨论的简化目的,并且为了不混淆实施例的某些方面,图中可以示出或者可以不示出到IC芯片和其它部件的已知的电源/接地连接。进而,可以按照方框图的形式示出布置,以便避免混淆实施例,并且也考虑关于这样的方框图布置的实现的具体情况高度依赖于在其内实现所述实施例的平台,即,这样的具体情况应该在本领域普通技术人员的知识范围内。当阐释具体细节(例如,电路)以便描述示例实施例时,对于本领域普通技术人员显而易见的是,能够在没有这些具体细节的情况下或者在具有这些具体细节的变型的情况下来实践所述实施例。因而,该描述应该被视为是说明性而非限制性的。
[0090]一些实施例可以例如使用可以存储指令或者指令集的机器或有形计算机可读介质或物品来实现,如果由机器执行,该指令或者指令集可以使该机器执行根据该实施例的方法和/或操作。这样的机器可以例如包括任何合适的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等等,并且可以使用硬件和/或软件的任何合适的组合来实现。机器可读介质或物品可以例如包括任何合适类型的存储器单元、存储器设备、存储器物品、存储器介质、存储设备、存储物品、存储介质和/或存储单元,例如存储器、可移除或不可移除介质、可擦除或不可擦除介质、可写入或可重写介质、数字或模拟介质、硬盘、软盘、压缩盘只读存储器(CD-ROM)、可记录压缩盘(CD-R)、可重写压缩盘(CD-Rff)、光盘、磁介质、磁光介质、可移除存储器卡或盘、各种类型的数字多功能盘(DVD)、磁带、盒式磁盘等等。指令可以包括使用任何合适的高级、低级、面向对象、可视、编译和/或解释编程语言实现的任何合适类型的代码,例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、加密代码等等。
[0091]除非以其它方式专门指出,应当意识到,诸如“处理”、“计算”、“运算”、“确定”等等的术语指代计算机或计算系统或类似电子计算设备的动作和/或处理,其将计算系统的寄存器和/或存储器内表示为物理量(例如,电子)的数据操控和/或变换为在计算系统的存储器、寄存器或其它这样的信息存储、传输或显示设备内被类似地表示为物理量的其它数据。所述实施例不局限于这一环境。
[0092]术语“耦接”在本文中可以用于指代讨论中的组件之间的直接或间接的任何类型的关系,并且可以应用于电气、机械、液态、光学、电磁、机电或其它连接。此外,术语“第一”、“第二”等等在本文中可以仅用于方便讨论,并且除非以其它方式指出,不承载特定的时间或时序含义。
[0093]本领域普通技术人员通过前面描述将意识到,该实施例的广泛技术可以按照各种形式来实现。因此,尽管结合其特定示例描述了该示例,但是该实施例的真正范围不应该被如此限制,因为其它变型将对于研究了附图、说明书和下面的权利要求书的本领域普通技术人员变得显而易见。
【权利要求】
1.一种呈现视觉内容的系统,包括: 显示器,用于以像素数据为基础来输出视觉内容; 串行化模块,用于识别引用公共屏幕位置并且访问读取/写入资源的多个主题命令;命令顺序模块,用于根据预定义顺序来串行化所述多个主题命令;以及线程顺序模块,用于延迟所述多个主题命令的执行,直到执行了引用所述公共屏幕位置的一个或多个附加命令为止,其中,所述多个主题命令和所述一个或多个附加命令的执行生成所述像素数据。
2.根据权利要求1所述的系统,其中,所述多个主题命令响应于串行化命令而被串行化。
3.根据权利要求2所述的系统,其中,所述串行化模块用于按照高级着色语言或OPENGL着色语言中的一个来读取所述串行化命令。
4.根据权利要求1至3中的任意一项所述的系统,其中,所述命令顺序模块用于以与所述多个主题命令相 关联的到来图元的光栅化顺序为基础来确定所述预定义顺序。
5.根据权利要求1至3中的任意一项所述的系统,其中,所述多个主题命令与第一像素着色器线程相关联,并且所述一个或多个附加命令与第二像素着色器线程相关联。
6.根据权利要求1至3中的任意一项所述的系统,其中,所述多个主题命令引用DIRECTX未排序访问视图或OPENGL图像中的一个。
7.—种处理命令的方法,包括: 识别引用公共屏幕位置并且访问读取/写入资源的多个主题命令; 根据预定义顺序来串行化所述多个主题命令;并且 延迟所述多个主题命令的执行直到执行了引用所述公共屏幕位置的一个或多个附加命令为止。
8.根据权利要求7所述的方法,其中,所述多个主题命令响应于串行化命令而被串行化。
9.根据权利要求8所述的方法,进一步包括按照高级着色语言或OPENGL着色语言中的一个来读取所述串行化命令。
10.根据权利要求7至9中的任意一项所述的方法,进一步包括以与所述多个主题命令相关联的到来图元的光栅化顺序为基础来确定所述预定义顺序。
11.根据权利要求7至9中的任意一项所述的方法,其中,所述多个主题命令与第一像素着色器线程相关联,并且所述一个或多个附加命令与第二像素着色器线程相关联。
12.根据权利要求7至9中的任意一项所述的方法,其中,所述多个主题命令引用DIRECTX未排序访问视图或OPENGL图像中的一个。
13.一种处理命令的装置,包括: 串行化模块,用于识别引用公共屏幕位置并且访问读取/写入资源的多个主题命令;命令顺序模块,用于根据预定义顺序来串行化所述多个主题命令;以及线程顺序模块,用于延迟所述多个主题命令的执行直到执行了引用所述公共屏幕位置的一个或多个附加命令为止。
14.根据权利要求13所述的装置,其中,所述多个主题命令响应于串行化命令而被串行化。
15.根据权利要求14所述的装置,其中,所述串行化模块用于按照高级着色语言或OPENGL着色语言中的一个来读取所述串行化命令。
16.根据权利要求13至15中的任意一项所述的装置,其中,所述命令顺序模块用于以与所述多个主题命令相关联的到来图元的光栅化顺序为基础来确定所述预定义顺序。
17.根据权利要求13至15中的任意一项所述的装置,其中,所述多个主题命令与第一像素着色器线程相关联,并且所述一个或多个附加命令与第二像素着色器线程相关联。
18.根据权利要求13至15中的任意一项所述的装置,其中,所述多个主题命令引用DIRECTX未排序访问视图或OPENGL图像中的一个。
19.一种处理命令的装置,包括: 用于识别引用公共屏幕位置并且访问读取/写入资源的多个主题命令的单元; 用于根据预定义顺序来串行化所述多个主题命令的单元;以及 用于延迟所述多个主题命令的执行直到执行了引用所述公共屏幕位置的一个或多个附加命令为止的单元。
20.根据权利要求19所述的装置,其中,所述多个主题命令响应于串行化命令而被串行化。
21.根据权利要求20所述的装置,进一步包括用于按照高级着色语言或OPENGL着色语言中的一个来读取所述串行化命令的单元。
22.根据权利要求19至21中的任意一项所述的装置,进一步包括用于以与所述多个主题命令相关联的到来图元的光栅化顺序为基础来确定所述预定义顺序的单元。
23.根据权利要求19至21中的任意一项所述的装置,其中,所述多个主题命令与第一像素着色器线程相关联,并且所述一个或多个附加命令与第二像素着色器线程相关联。
24.根据权利要求19至21中的任意一项所述的装置,其中,所述多个主题命令引用DIRECTX未排序访问视图或OPENGL图像中的一个。
【文档编号】G06F9/46GK103927223SQ201410107851
【公开日】2014年7月16日 申请日期:2014年1月15日 优先权日:2013年1月16日
【发明者】T·扬恰克, A·勒福恩, M·萨尔维, L·塞勒 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1