首页> 中国专利> 确保跨绘制调用的共享资源数据一致性的高效硬件机制

确保跨绘制调用的共享资源数据一致性的高效硬件机制

摘要

系统和方法可以提供:从与诸如例如乱序访问视图(UAV)之类的共享资源相关联的软件模块接收多个信号。所述多个信号包括指示绘制调用是否访问共享资源的第一信号、指示是否已经达到绘制调用的边界的第二信号和指示绘制调用是否具有一致性要求的第三信号。附加地,可以基于所述多个信号来在着色器启用中选择性地分派对应于绘制调用的工作量。

著录项

  • 公开/公告号CN106462938A

    专利类型发明专利

  • 公开/公告日2017-02-22

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201580027624.5

  • 发明设计人 P·叙尔蒂;A·纳瓦尔;J·S·波尔斯;

    申请日2015-06-04

  • 分类号G06T1/20;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人张健

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 01:44:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-05-17

    未缴年费专利权终止 IPC(主分类):G06T 1/20 专利号:ZL2015800276245 申请日:20150604 授权公告日:20200221

    专利权的终止

  • 2020-02-21

    授权

    授权

  • 2017-03-22

    实质审查的生效 IPC(主分类):G06T1/20 申请日:20150604

    实质审查的生效

  • 2017-02-22

    公开

    公开

说明书

相关申请的交叉引用

本申请要求2014年6月26日提交的美国非临时专利申请No. 14/315,597的优先权权益。

背景技术

图形管线可以促进内容在计算系统上的视觉输出。在一个示例中,图形管线被表示为一系列级,包括各种“着色器”级(例如,涡流、壳体、域、几何形状和/或像素着色器级),其建立用于构建最终图像的像素、顶点和/或纹理的位置、色调、饱和度、明亮度和对比度。乱序访问视图(UAV)可以由着色器级使用以在将最终图像转移到经由显示器/屏幕输出的渲染目标之前缓冲/存储中间表面信息。

在操作期间,给定着色器级可能经由一个或多个绘制调用来向UAV写入和/或从UAV读取。因为UAV可以在多个着色器级之间共享,所以在完成来自另一个着色器级的“生产者”绘制调用之前,担心与来自访问UAV中的信息的一个着色器级的“消费者”绘制调用相关联的写入后读取(RAW)危险。为了防范这样的危险,常规解决方案可以使用在应用编程接口(API)级别处运行于中央处理单元(CPU)上的软件模块以在检测到绘制调用依赖性时冲洗出整个图形管线。这样的方案可能向管线中插入相对大的“气泡”且继而对效率、性能、功耗和/或电池寿命具有负面影响。

附图说明

实施例的各种优点将通过阅读以下说明书和随附权利要求且通过参照以下附图而对本领域技术人员来说变得明显,在附图中:

图1是根据实施例的图形管线架构的示例的框图;

图2是根据实施例的操作着色器级分派模块的方法的示例的流程图;

图3是根据实施例的防止写入后读取(RAW)危险的方法的示例的流程图;

图4是根据实施例的维持全局计数器的方法的示例的流程图;

图5是根据实施例的填充先入先出(FIFO)缓冲器的方法的示例的流程图;

图6是根据实施例的维持线程计数器的方法的示例的流程图;

图7是根据实施例的全局观察绘制调用的方法的示例的流程图;

图8是根据实施例的着色器分派模块的示例的框图;

图9是根据实施例的系统的示例的框图;以及

图10是根据实施例的具有小形状因子的系统的示例的框图。

具体实施方式

图1示出了架构20,其中诸如例如应用编程接口(API)、操作系统(OS)组件、用户模式驱动器(UMD)等等之类的软件模块32向具有一系列级的图形管线22发布绘制调用33(33a、33b)。在所图示的示例中,这些级包括多个着色器启用(invocation)24(24a、24b,例如在图形处理器、计算引擎/切片、执行单元或其它图形硬件中),其一般可以建立用于构建最终图像的像素、顶点和/或纹理的位置、色调、饱和度、明亮度和对比度。该多个着色器启用24可以包括例如具有对应着色器分派模块26(26a、26b,例如在图形硬件中)的上游着色器24a和下游着色器24b,着色器分派模块26根据绘制调用33向其相应的着色器启用24分派工作量(例如,以线程和/或线程群组的形式)。着色器启用24可以经由软件模块32向共享资源30(例如,DIRECTX乱序访问视图/UAV、OPENGL图像、通用缓冲器、暂时存储器等)发布访问28(28a、28b)。访问28一般可以在将最终图像转移给经由显示器/屏幕(未示出)输出的渲染目标之前在共享资源30中缓冲/存储视觉信息(例如,中间表面信息、暂时存储器数据)。

更特别地,所图示的上游着色器24a向共享资源30发布第一访问28a(“共享资源访问#1”),其中第一访问28a对应于第一绘制调用33a(“绘制调用#1”)。类似地,所图示的下游着色器24b向共享资源30发布第二访问28b(“共享资源访问#2”),其中第二访问28b对应于第二绘制调用33b(“绘制调用#2”)。第一访问28a可能从例如一个或多个线程发布,该一个或多个线程涉及相对于图像的特定区(例如,由十六个线程的群组在其上操作的4x4像素块)的涡流、壳体、域和/或几何形状着色器操作,而第二访问28b可能从例如一个或多个线程发布,该一个或多个线程涉及相对于图像的相同区的像素着色器操作。因而,如果第一访问28a写入由第二访问28b消费的数据,则生产者-消费者关系可以在绘制调用33之间且跨着色器启用24而存在。

在所图示的示例中,软件模块32利用第一绘制调用33a发布第一多个信号34并利用第二绘制调用33b发布第二多个信号35,而不是在第一绘制调用33a之后发布管线冲洗且在发布第二绘制调用33b之前等待冲洗以自始至终行进通过管线22。如将更详细讨论的,所图示的信号34、35使得一个或多个分派模块26能够在管线级别处内部追踪绘制调用33的状态并确定生产者-消费者关系是否存在。相应地,对应于下游着色器24b的分派模块26b可以基于第二多个信号35选择性地分派对应于第二绘制调用28b的工作量。要特别注意到,可以准许对应于第二绘制调用33b的工作量前进通过管线22的较早级,而不是等待整个管线22被冲洗。这样的方案可以大幅减少管线22中气泡的存在,并继而可以改进效率和性能,降低功耗和/或延长电池寿命。

信号34、35可以被格式化为命令/指令位的集合,其传送关于每一个绘制调用33是否访问共享资源30、是否已经达到每一个绘制调用33的边界(例如,开头、结尾)、每一个绘制调用33是否具有一致性要求(例如,是否是相对于较早绘制调用的消费者)等等的信息。下表I示出了用于信号34、35的协议的一个示例。

共享资源标记共享资源边界共享资源一致性要求含义和行为0XX当所标记的共享资源为零时,忽略边界和一致性位110绘制调用的开头,并且该新绘制调用不具有关于先前绘制调用的一致性要求111绘制调用的开头,并且该新绘制调用具有关于先前绘制调用的一致性要求10X绘制调用的结尾,忽略一致性位

表I。

因而,随着引起访问28的绘制调用33由软件模块32发布给图形管线22,信号34、35可以由特定着色器启用24的分派模块26(诸如例如下游着色器24b(例如,像素着色器)的分派模块26b)检查。分派模块26继而可以使用信号34、35以追踪绘制调用33和相关联的线程/线程群组,并确定是将随后的工作量分派给着色器启用还是扣留那些工作量直到例如一个或多个生产者绘制调用已经完成。

图2示出了操作着色器分派模块(诸如例如已经讨论的分派模块26b(图1))的方法40。方法40可以在一个或多个模块中被实现为:存储在诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、闪速存储器等之类的机器或计算机可读存储介质中的逻辑指令的集合;可配置逻辑,诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD);使用电路技术的固定功能逻辑硬件,该电路技术诸如是例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术;或者其任何组合。例如,实施方法40中所示的操作的计算机程序代码可以以一个或多个编程语言的任何组合而编写,该一个或多个编程语言包括:面向对象的编程语言,诸如C++等等;以及常规过程编程语言,诸如“C”编程语言或类似编程语言。此外,方法40可以使用本文提及的电路技术中的任一个而实现。

所图示的处理块42提供:从与共享资源相关联的软件模块接收多个信号。该多个信号可以包括例如指示绘制调用是否访问共享资源的第一信号(例如,对应于表I的“共享资源标记”列的一个或多个位)、指示是否已经达到绘制调用的边界的第二信号(例如,对应于表I的“共享资源边界”列的一个或多个位)、指示绘制调用是否具有相对于一个或多个先前绘制调用的一致性要求的第三信号(例如,对应于表I的“共享资源一致性要求”列的一个或多个位)等等。附加地,块44可以基于该多个信号来在着色器启用中选择性地分派对应于绘制调用的工作量。

块44一般可以涉及例如防止RAW危险,维持全局计数器,填充用于线程群组标识符的先入先出(FIFO)缓冲器,维持线程计数器,全局观察绘制调用等等。图3-7示出了执行这些各种操作的方法46、48、50、52和54,其也可以在模块中被实现为:存储在诸如RAM、ROM、PROM、闪速存储器等之类的机器或计算机可读存储介质中的逻辑指令的集合;可配置逻辑,诸如例如PLA、FPGA、CPLD;使用电路技术的固定功能逻辑硬件,该电路技术诸如是例如ASIC、CMOS或TTL技术;或者其任何组合。

具体参照图3,示出了防止RAW危险的方法46。所图示的处理块56提供:确定是否已经遇到绘制调用的开头。因而,块56可以涉及确定对应于表I的“共享资源边界”列的位是否在绘制调用命令/指令中设定(即,具有值1)。如果是,则在块58处就绘制调用是否具有相对于一个或多个先前所遇到的绘制调用的一致性要求做出确定。块58因此可以涉及确定“共享资源一致性要求”位是否在绘制调用命令/指令中设定。如果是,则块60提供:对着色器扣留工作量直到待决的全局观察的绘制调用的全局计数器已经达到零。

如将更详细讨论的,全局计数器可以用于追踪绘制调用经过图形管线的下游组件的前进。因而,全局计数器达到零可以指示管线的其余部分不再包含绘制调用。这样的条件继而可以指示可以将工作量分派给着色器启用而不用担心RAW危险。如果没有遇到绘制调用的开头或者绘制调用不具有一致性要求,则在所图示的示例中绕过块60。

具体参照图4,示出了维持全局计数器的方法48,所图示的处理块62确定是否已经达到绘制调用的结尾。块56因此可以涉及确定对应于表I的“共享资源边界”列的位是否没有在绘制调用命令/指令中设定(即,具有值0)。如果是,则待决的全局观察(“GO”)的绘制调用的全局计数器在所图示的块64处递增。否则,可以绕过块64。块66可以确定是否已经从图形管线的下游组件接收到全局观察的确认。如果是,则块68可以使全局计数器递减。否则,可以绕过块68。因而,全局计数器值可以随着绘制调用结束和被确认而分别向上和向下波动,其中当结束的绘制调用的数目等于GO绘制调用的数目时,全局计数器达到零。

具体参照图5,示出了填充FIFO缓冲器的方法50。所图示的处理块70确定绘制调用是否向共享资源写入。块70因此可以包括确定对应于表的“共享资源标记”列的位是否在绘制调用命令/指令中设定。如果是,则所图示的块72确定是否已经遇到绘制调用的开头。如果已经遇到绘制调用的开头,则可以在块74处针对线程群组分配群组标识符(ID,例如“颜色”ID),其中所图示的块76将所分配的群组ID添加到先入先出(FIFO)缓冲器。例如,如果十六个线程的群组使用绘制调用以在图像的4x4区上操作,则可以为该线程群组指派群组ID,该群组ID继而可以与绘制调用相关联。在一个示例中,使用2位群组ID,并且FIFO缓冲器为四条目深。也可以取决于情形而使用其它ID和缓冲器配置。如果绘制调用没有向共享资源写入或者尚未遇到绘制调用的开头,则在所图示的示例中绕过块74和76。

具体参照图52,示出了维持线程计数器的方法52。所图示的处理块78使线程计数器递增,其中线程计数器追踪与绘制调用相关联的线程群组中的每一个线程。因而,如果线程群组包含十六个线程,则例如块78可以使线程计数器递增十六次。块80可以提供:将线程群组中的线程分派给着色器启用,其中线程计数器可以在块82处响应于线程群组中的每一个线程的引退而递减。

具体参照图7,示出了全局观察(例如,在系统级别处)绘制调用的方法54。所图示的处理块84确定FIFO缓冲器中的顶部条目是否具有群组ID,其带有为零的线程计数器。如果在块86处还确定全局计数器大于零,则块88可以张贴GO通知。如果对应于FIFO缓冲器中的顶部条目的线程计数器不为零或者全局计数器不大于零,则在所图示的示例中绕过块88。

图8示出了可容易地替代已经讨论的任何着色器分派模块26(图1)的着色器分派模块90(90a、90b)。在所图示的示例中,接口90a从与共享资源相关联的软件模块接收多个信号。该多个信号可以包括例如指示绘制调用是否访问共享资源的第一信号、指示是否已经达到绘制调用的边界(例如,开头、结尾)的第二信号、指示绘制调用是否具有一致性要求的第三信号等等。

所图示的着色器分派模块90还包括:绘制调用管理器90b,基于该多个信号来在着色器启用中选择性地分派对应于绘制调用的工作量。在一个示例中,绘制调用管理器90b包括:待决GO绘制调用的全局计数器92;和一致性单元94,仅在以下情况下才对着色器启用扣留工作量:第一信号指示绘制调用访问共享资源,第二信号指示已经达到绘制调用的开头,并且第三信号指示绘制调用具有一致性要求。在这样的情况下,工作量可以被扣留直到全局计数器92已经达到零。所图示的全局计数器92包括:递增单元,响应于第二信号指示已经达到绘制调用的结尾而使全局计数器92递增;以及递减单元,响应于来自下游组件的确认而使全局计数器92递减。

绘制调用管理器90b还可以包括:群组ID FIFO缓冲器96;和分配器98,在以下情况下分配用于线程群组的群组ID:第一信号指示绘制调用向共享资源写入,并且第二信号指示已经达到绘制调用的开头。附加地,推送单元100可以将所分配的群组ID添加给FIFO缓冲器96。

所图示的绘制调用管理器90b还包括一个或多个线程计数器102,其中每一个线程计数器102具有:递增单元,针对与绘制调用相关联的线程群组中的每一个线程而使线程计数器102递增。发动单元104可以将线程群组中的线程分派给着色器启用。附加地,每一个线程计数器102可以包括:递减单元,响应于线程群组中的每一个线程的引退而使线程计数器102递减。

绘制调用管理器90b还可以包括:全局观察单元106,响应于FIFO缓冲器96中的顶部条目具有带有为零的线程计数器的群组ID并且全局计数器92大于零而张贴GO通知。如已经指出的,线程计数器102可以追踪与绘制调用相关联的线程群组中的每一个线程,并且全局计数器92可以追踪待决GO绘制调用。

以下伪代码提供了一种实现着色器分派模块90的一个或多个方面的方案

图9图示了根据实施例的可输出视觉内容的系统700的实施例。在实施例中,系统700可以是媒体系统,尽管系统700不限于该上下文。例如,系统700可以被并入到个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板计算机、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话或智能电视)、移动互联网设备(MID)、消息传递设备、数据通信设备、游戏控制台等等。

在实施例中,系统700包括耦合到显示器720的平台702。平台702可以从诸如(一个或多个)内容服务设备730或(一个或多个)内容递送设备740之类的内容设备或者其它类似内容源接收内容。包括一个或多个导航特征的导航控制器750可以用于与例如平台702和/或显示器720交互。这些组件中的每一个在下文中被更详细描述。

在实施例中,平台702可以包括芯片集705、处理器710、存储器712、存储装置714、图形子系统715、应用716和/或无线电装置718的任何组合。芯片集705可以提供处理器710、存储器712、存储装置714、图形子系统715、应用716和/或无线电装置718之间的相互通信。例如,芯片集705可以包括能够提供与存储装置714的相互通信的存储适配器(未描绘)。

处理器710可以被实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核或任何其它微处理器或中央处理单元(CPU)。在实施例中,处理器710可以包括(一个或多个)双核处理器、(一个或多个)双核移动处理器等等。

存储器712可以被实现为易失性存储器设备,诸如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。

存储装置714可以被实现为非易失性存储设备,诸如但不限于磁盘驱动器、光盘驱动器、带驱动器、内部存储设备、附连存储设备、闪速存储器、电池备份SDRAM(同步DRAM)和/或网络可访问存储设备。在实施例中,存储装置714可以包括例如在包括多个硬盘驱动器时增加用于有价值的数字媒体的存储性能增强保护的技术。

图形子系统715可以执行诸如静止或视频之类的图像的处理以用于显示。图形子系统715可以是例如图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可以被用于通信耦合图形子系统715和显示器720。例如,接口可以是高清晰度多媒体接口、显示端口、无线HDMI和/或无线HD兼容技术中的任一个。图形子系统715可以集成到处理器710或芯片集705中。图形子系统715可以是通信耦合到芯片集705的独立卡。在一个示例中,图形子系统715包括管线,诸如例如图形管线22(图1),处理器710是执行诸如例如软件模块32(图1)之类的软件模块的主机处理器,并且存储器712包括共享资源,诸如例如已经讨论的共享资源30(图1)。

本文描述的图形和/或视频处理技术可以被实现在各种硬件架构中。例如,图形和/或视频功能可以集成在芯片集内。可替换地,可以使用分立的图形和/或视频处理器。作为又一个实施例,图形和/或视频功能可以由通用处理器实现,该通用处理器包括多核处理器。在另外的实施例中,功能可以被实现在消费者电子设备中。

无线电装置718可以包括能够使用各种合适无线通信技术发射和接收信号的一个或多个无线电装置。这样的技术可以涉及跨一个或多个无线网络的通信。示例性无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络和卫星网络。在跨这样的网络的通信中,无线电装置718可以依照任何版本中的一个或多个适用的标准来进行操作。

在实施例中,显示器720可以包括任何电视类型的监视器或显示器。显示器720可以包括例如计算机显示屏、触摸屏显示器、视频监视器、电视类设备和/或电视。显示器720可以是数字的和/或模拟的。在实施例中,显示器720可以是全息显示器。而且,显示器720可以是可接收视觉投影的透明表面。这样的投影可以传达各种形式的信息、图像和/或对象。例如,这样的投影可以是用于移动增强现实(MAR)应用的视觉覆盖。在一个或多个软件应用716的控制之下,平台702可以在显示器720上显示用户界面722。

在实施例中,(一个或多个)内容服务设备730可以由任何全国、国际和/或独立服务托管且因而对平台702来说经由例如互联网可访问。(一个或多个)内容服务设备730可以耦合到平台702和/或显示器720。平台702和/或(一个或多个)内容服务设备730可以耦合到网络760以向网络760且从网络760传送(例如,发送和/或接收)媒体信息。(一个或多个)内容递送设备740也可以耦合到平台702和/或显示器720。

在实施例中,(一个或多个)内容服务设备730可以包括有线电视盒、个人计算机、网络、电话、能够递送数字信息和/或内容的互联网启用的设备或器具、以及能够单向地或双向地经由网络760或直接地在内容提供商和平台702和/显示器720之间传送内容的任何其它类似设备。将领会到,内容可以经由网络760而向内容提供商和系统700中的任何一个组件且从内容提供商和系统700中的任何一个组件单向地和/或双向地传送。内容的示例可以包括任何媒体信息,其包括例如视频、音乐、医疗和游戏信息等等。

(一个或多个)内容服务设备730接收内容,诸如有线电视节目编排,包括媒体信息、数字信息和/或其它内容。内容提供商的示例可以包括任何有线或卫星电视或无线电或互联网内容提供商。所提供的示例不意在限制实施例。

在实施例中,平台702可以从具有一个或多个导航特征的导航控制器750接收控制信号。控制器750的导航特征可以用于例如与用户界面722交互。在实施例中,导航控制器750可以是指点设备,其可以为允许用户将空间(例如,连续和多维)数据输入到计算机中的计算机硬件组件(具体地,人机接口设备)。许多系统(诸如图形用户界面(GUI),以及电视和监视器)允许用户使用身体手势来控制数据并将数据提供给计算机或电视。

控制器750的导航特征的移动可以通过指针、光标、聚焦环或者在显示器上显示的其它视觉指示符的移动而在显示器(诸如例如显示器720)上回波。例如,在软件应用716的控制之下,位于导航控制器750上的导航特征可以被映射到例如在用户界面722上显示的虚拟导航特征。在实施例中,控制器750可以不是分离的组件,而是集成到平台702和/或显示器720中。然而,实施例不限于这些元素或者不被限制在本文描述或示出的上下文中。

在实施例中,驱动器(未示出)可以包括使得用户能够在初始启动之后、例如在被启用时利用按钮的触摸来即时开启和关闭平台702(像电视)的技术。程序逻辑可以允许平台702在平台被“关闭”时将内容流送给媒体适配器或(一个或多个)其它内容服务设备730或(一个或多个)内容递送设备740。附加地,芯片集705可以包括用于例如5.1环绕声音频和/或高清晰度7.1环绕声音频的硬件和/或软件支持。驱动器可以包括用于集成图形平台的图形驱动器。在实施例中,图形驱动器可以包括外围组件互连(PCT)高速图形卡。

在各种实施例中,在系统700中示出的组件中的任何一个或多个可以被集成。例如,平台702和(一个或多个)内容服务设备730可以被集成,或者平台702和(一个或多个)内容递送设备740可以被集成,或者例如平台702、(一个或多个)内容服务设备730和(一个或多个)内容递送设备740可以被集成。在各种实施例中,平台702和显示器720可以是集成单元。显示器720和(一个或多个)内容服务设备730可以被集成,或者例如显示器720和(一个或多个)内容递送设备740可以被集成。这些示例不意在限制实施例。

在各种实施例中,系统700可以被实现为无线系统、有线系统或二者的组合。当被实现为无线系统时,系统700可以包括适用于通过无线共享介质进行通信的组件和接口,诸如一个或多个天线、发射器、接收器、收发器、放大器、滤波器、控制逻辑等等。无线共享介质的示例可以包括无线频谱的部分,诸如RF频谱等等。当被实现为有线系统时,系统700可以包括适用于通过有线通信介质进行通信的组件和接口,诸如输入/输出(I/O)适配器、将I/O适配器与对应有线通信介质相连接的物理连接器、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等等。有线通信介质的示例可以包括导线、线缆、金属引线、印刷电路板(PCB)、底板、开关结构、半导体材料、双绞线、同轴线缆、光纤等等。

平台702可以建立一个或多个逻辑或物理信道以传送信息。该信息可以包括媒体信息和控制信息。媒体信息可以指代表示意在用于用户的内容的任何数据。内容的示例可以包括例如来自语音对话、视频会议、流送视频、电子邮件(“电邮”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等等的数据。来自语音对话的数据可以是例如话音信息、沉默时段、背景噪声、舒适噪声、音调等等。控制信息可以指代表示意在用于自动化系统的命令、指令或控制字的任何数据。例如,控制信息可以用于使媒体信息路由通过系统,或者指示节点以预定方式处理媒体信息。然而,实施例不限于这些元素或者不被限制在图9中示出或描述的上下文中。

如上文所述,系统700可以以变化的物理样式或形状因子体现。图10图示了其中可以体现系统700(图9)的小形状因子设备800的实施例。在实施例中,例如,设备800可以被实现为具有无线能力的移动计算设备。移动计算设备可以指代具有处理系统和移动电源或电力供给(诸如例如一个或多个电池)的任何设备。

如上文所述,移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板或智能电视)、移动互联网设备(MID)、消息传递设备、数据通信设备等等。

移动计算设备的示例还可以包括被布置为由人穿戴的计算机,诸如手腕计算机、手指计算机、戒指计算机、眼镜计算机、皮带夹计算机、臂章计算机、鞋子计算机、衣物计算机以及其它可穿戴计算机。在实施例中,例如,移动计算设备可以被实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。尽管作为示例可以利用被实现为智能电话的移动计算设备来描述一些实施例,但是可以领会到,也可以使用其它无线移动计算设备实现其它实施例。实施例不被限制在该上下文中。

如图10中所示,设备800可以包括外壳802、显示器804、输入/输出(I/O)设备806和天线808。设备800还可以包括导航特征812。显示器804可以包括用于显示适于移动计算设备的信息的任何合适显示单元。I/O设备806可以包括用于将信息录入到移动计算设备中的任何合适I/O设备。I/O设备806的示例可以包括字母数字键盘、数字键盘、触摸板、输入按键、按钮、开关、摇臂开关、麦克风、扬声器、语音识别设备和软件等等。还可以通过麦克风的方式将信息录入到设备800中。这样的信息可以由语音识别设备数字化。实施例不被限制在该上下文中。

附加注释和示例:

示例1可以包括一种系统,包括接收内容的无线电装置、共享资源、执行与共享资源相关联的软件模块的主机处理器、以及着色器分派模块。着色器分派模块可以包括:接口,从软件模块接收多个信号,其中所述多个信号包括指示与内容相关联的绘制调用是否访问共享资源的第一信号、指示是否已经达到绘制调用的边界的第二信号、以及指示绘制调用是否具有一致性要求的第三信号。着色器分派模块还可以包括:绘制调用管理器,基于所述多个信号来在着色器启用中选择性地分派对应于绘制调用的工作量。所述系统还可以包括在视觉上呈现内容的显示器。

示例2可以包括示例1的系统,其中绘制调用管理器包括待决的全局观察的绘制调用的全局计数器;以及一致性单元,仅在以下情况下才对着色器启用扣留工作量:第一信号指示绘制调用访问共享资源,第二信号指示已经达到绘制调用的开头,并且第三信号指示绘制调用具有一致性要求,其中工作量被扣留直到全局计数器已经达到零。

示例3可以包括示例2的系统,其中绘制调用管理器进一步包括:递增单元,响应于第二信号指示已经达到绘制调用的结尾而使全局计数器递增;以及递减单元,响应于来自下游图形组件的确认而使全局计数器递减。

示例4可以包括示例1的系统,其中绘制调用管理器包括:群组标识符先入先出(FIFO)缓冲器;分配器,在第一信号指示绘制调用向共享资源写入并且第二信号指示已经达到绘制调用的开头的情况下分配用于线程群组的群组标识符;以及推送单元,将群组标识符添加到FIFO缓冲器。

示例5可以包括示例1的系统,其中绘制调用管理器包括:线程计数器;递增单元,针对与绘制调用相关联的线程群组中的每一个线程使线程计数器递增;发动单元,将线程群组中的线程分派给着色器启用;以及递减单元,响应于线程群组中的每一个线程的引退使线程计数器递减。

示例6可以包括示例1-5中任一项的系统,其中绘制调用管理器包括:群组标识符先入先出(FIFO)缓冲器;以及全局观察单元,响应于FIFO缓冲器中的顶部条目具有带有为零的线程计数器的群组标识符并且全局计数器大于零而张贴全局观察的通知,其中线程计数器追踪与绘制调用相关联的线程群组中的每一个线程,并且全局计数器追踪待决的全局观察的绘制调用。

示例7可以包括一种操作着色器分派模块的方法,包括:从与共享资源相关联的软件模块接收多个信号,其中所述多个信号包括指示绘制调用是否访问共享资源的第一信号、指示是否已经达到绘制调用的边界的第二信号和指示绘制调用是否具有一致性要求的第三信号;以及基于所述多个信号来在着色器启用中选择性地分派对应于绘制调用的工作量。

示例8可以包括示例7的方法,其中选择性地分派工作量包括仅在以下情况下才对着色器启用扣留工作量:第一信号指示绘制调用访问共享资源,第二信号指示已经达到绘制调用的开头,并且第三信号指示绘制调用具有一致性要求,其中工作量被扣留直到待决的全局观察的绘制调用的全局计数器已经达到零。

示例9可以包括示例8的方法,进一步包括:响应于第二信号指示已经达到绘制调用的结尾而使全局计数器递增;响应于来自下游图形组件的确认而使全局计数器递减。

示例10可以包括示例7的方法,进一步包括:如果第一信号指示绘制调用向共享资源写入并且第二信号指示已经达到绘制调用的开头,则分配用于线程群组的群组标识符;以及将群组标识符添加到先入先出缓冲器。

示例11可以包括示例7的方法,进一步包括:使与绘制调用相关联的线程群组中的每一个线程的线程计数器递增;将线程群组中的线程分派给着色器启用;以及响应于线程群组中的每一个线程的引退而使线程计数器递减。

示例12可以包括示例7-11中任一项的方法,进一步包括:响应于先入先出缓冲器中的顶部条目具有带有为零的线程计数器的群组标识符并且全局计数器大于零而张贴全局观察的通知,其中线程计数器追踪与绘制调用相关联的线程群组中的每一个线程,并且群组计数器追踪待决的全局观察的绘制调用。

示例13可以包括至少一个计算机可读存储介质,其包括指令集,所述指令集在由计算设备的着色器分派模块执行时使着色器分派模块:从与共享资源相关联的软件模块接收多个信号,其中所述多个信号包括指示绘制调用是否访问共享资源的第一信号、指示是否已经达到绘制调用的边界的第二信号、以及指示绘制调用是否具有一致性要求的第三信号;以及基于所述多个信号来在着色器启用中选择性地分派对应于绘制调用的工作量。

示例14可以包括示例13的至少一个计算机可读存储介质,其中指令在被执行时使着色器分派模块仅在第一信号指示绘制调用访问共享资源、第二信号指示已经达到绘制调用的开头并且第三信号指示绘制调用具有一致性要求的情况下才对着色器启用扣留工作量,其中工作量被扣留直到待决的全局观察的绘制调用的全局计数器已经达到零。

示例15可以包括示例14的至少一个计算机可读存储介质,其中指令在被执行时使着色器分派模块响应于第二信号指示已经达到绘制调用的结尾而使全局计数器递增并且响应于来自下游图形组件的确认而使全局计数器递减。

示例16可以包括示例13的至少一个计算机可读存储介质,其中指令在被执行时使着色器分派模块:在第一信号指示绘制调用向共享资源写入并且第二信号指示已经达到绘制调用的开头的情况下分配用于线程群组的群组标识符;将群组标识符添加到先入先出缓冲器。

示例17可以包括示例13的至少一个计算机可读存储介质,其中指令在被执行时使着色器分派模块:将与绘制调用相关联的线程群组中的每一个线程的线程计数器递增,将线程群组中的线程分派给着色器启用;以及响应于线程群组中的每一个线程的引退而使线程计数器递减。

示例18可以包括示例13-17中任一项的至少一个计算机可读存储介质,其中指令在被执行时使着色器分派模块响应于先入先出缓冲器中的顶部条目具有带有为零的线程计数器的群组标识符并且全局计数器大于零而张贴全局观察的通知,其中线程计数器追踪与绘制调用相关联的线程群组中的每一个线程,并且全局计数器追踪待决的全局观察的绘制调用。

示例19可以包括一种着色器分派模块,包括:接口,从与共享资源相关联的软件模块接收多个信号,其中所述多个信号包括指示绘制调用是否访问共享资源的第一信号、指示是否已经达到绘制调用的边界的第二信号和指示绘制调用是否具有一致性要求的第三信号;以及绘制调用管理器,基于所述多个信号来在着色器启用中选择性地分派对应于绘制调用的工作量。

示例20可以包括示例19的着色器分派模块,其中绘制调用管理器包括:待决的全局观察的绘制调用的全局计数器;以及一致性单元,仅在以下情况下对着色器启用扣留工作量:第一信号指示绘制调用访问共享资源,第二信号指示已经达到绘制调用的开头,并且第三信号指示绘制调用具有一致性要求,其中工作量被扣留直到全局计数器已经达到零。

示例21可以包括示例20的着色器分派模块,其中绘制调用管理器进一步包括:递增单元,响应于第二信号指示已经达到绘制调用的结尾而使全局计数器递增;以及递减单元,响应于来自下游图形组件的确认而使全局计数器递减。

示例22可以包括示例19的着色器分派模块,其中绘制调用管理器包括:群组标识符先入先出(FIFO)缓冲器;分配器,在第一信号指示绘制调用向共享资源写入并且第二信号指示已经达到绘制调用的开头的情况下分配用于线程群组的群组标识符;以及推送单元,将群组标识符添加到FIFO缓冲器。

示例23可以包括示例19的着色器分派模块,其中绘制调用管理器包括:线程计数器;递增单元,针对与绘制调用相关联的线程群组中的每一个线程使线程计数器递增;发动单元,将线程群组中的线程分派给着色器启用;以及递减单元,响应于线程群组中的每一个线程的引退而使线程计数器递减。

示例24可以包括示例19-23中任一项的着色器分派模块,其中绘制调用管理器包括:群组标识符先入先出(FIFO)缓冲器;以及全局观察单元,响应于FIFO缓冲器中的顶部条目具有带有为零的线程计数器的群组标识符并且全局计数器大于零而张贴全局观察的通知,其中线程计数器追踪与绘制调用相关联的线程群组中的每一个线程,并且全局计数器追踪待决的全局观察的绘制调用。

示例25可以包括一种着色器分派模块,包括用于执行示例7-12中任一项的方法的构件。

本文描述的技术因此可以避免图形管线和完全管线绘制调用事件中的大间隙直至其中要求一致性的级。例如,像素着色器分派(PSD)功能可以维持簿记信息以追踪多个绘制调用并在管线级别处施行硬件中的一致性。这样的方案对于实时地处理相对大量的绘制调用的交互式应用而言可能特别有用。

各种实施例可以使用硬件元件、软件元件或二者的组合而实现。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定实施例是否使用硬件元件和/或软件元件实现可以依照任何数目的因素(诸如期望的计算速率、电力水平、热耐受性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束)而变化。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令实现,机器可读介质表示处理器内的各种逻辑,其在由机器读取时使机器建造执行本文描述的技术的逻辑。被称为“IP核”的这样的表示可以存储在有形机器可读介质上且被供给到各种客户或制造设施以加载到实际制作逻辑或处理器的建造机器中。

实施例适用于供所有类型的半导体集成电路(“IC”)芯片所使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片集组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片等等。附加地,在一些图中,以线条表示信号导体线路。一些可以是不同的以指示更多构成信号路径,具有号码标签以指示数个构成信号路径,和/或具有一个或多个末端处的箭头以指示主要信息流动方向。然而,这不应当以限制的方式被解释。相反,这样的所添加的细节可以与一个或多个示例性实施例结合使用以促进对电路的更容易理解。任何所表示的信号线路,不管是否具有附加信息,都可以实际上包括可在多个方向上行进的一个或多个信号且可以利用任何合适类型的信号方案而实现,例如,利用差分对实现的数字或模拟线路、光纤线路和/或单端线路。

可能已经给出示例尺寸/模型/值/范围,尽管实施例不限于此。随着制造技术(例如,光刻法)随时间而成熟,所预期的是,可以制造更小尺寸的设备。附加地,到IC芯片和其它组件的公知电力/接地连接可以或可以不在图内示出,以为了图示和讨论的简明,并且为了不使实施例的某些方面模糊。另外,可以以框图形式示出布置以便避免使实施例模糊,并且还考虑到以下事实:关于这样的框图布置的实现的细节非常依赖于要在其内实现实施例的平台,即,这样的细节应当很好地处于本领域技术人员的眼界内。在阐述具体细节(例如,电路)以便描述示例实施例的情况下,对本领域技术人员来说应当显而易见的是,可以在没有这些具体细节的情况下或者在具有这些具体细节的变形的情况下实践实施例。描述因而应被视为说明性的而非限制性的。

一些实施例可以例如使用可存储指令或指令集的机器或有形计算机可读介质或物件而实现,该指令或指令集在由机器执行的情况下可以使机器执行依照实施例的方法和/或操作。这样的机器可以包括例如任何合适处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等等,且可以使用硬件和/或软件的任何合适组合而实现。机器可读介质或物件可以包括例如任何合适类型的存储器单元、存储器设备、存储器物件、存储器介质、存储设备、存储物件、存储介质和/或存储单元,例如存储器、可移除或不可移除介质、可擦除或不可擦除介质、可写入或可重写介质、数字或模拟介质、硬盘、软盘、致密盘只读存储器(CD-ROM)、致密盘可记录(CD-R)、致密盘可重写(CD-RW)、光盘、磁介质、磁光介质、可移除存储器卡或盘、各种类型的数字多功能盘(DVD)、带、盒式带等等。指令可以包括任何合适类型的代码,诸如源代码、编译代码、解译代码、可执行代码、静态代码、动态代码、加密代码等等,其使用任何合适的高级、低级、面向对象、视觉、编译和/或解译编程语言而实现。

除非具体以其它方式陈述,可以领会到,诸如“处理”、“计算”、“核算”、“确定”等等之类的术语指代计算机或计算系统或者类似电子计算设备的动作和/或过程,其将被表示为计算系统的寄存器和/或存储器内的物理量(例如,电子的)的数据操控和/或变换成被类似地表示为计算系统的存储器、寄存器或其它这样的信息存储、传送或显示设备内的物理量的其它数据。实施例不被限制在该上下文中。

术语“耦合”在本文中可以用于指代所讨论的组件之间直接或间接的任何类型的关系,且可以适用于电气、机械、流体、光学、电磁、机电或其它连接。附加地,术语“第一”、“第二”等可以在本文中仅用以便于讨论,且不承载特定时间或时间顺序重要性,除非以其它方式指示。附加地,要理解到,不定冠词“一”或“一个”承载“一个或多个”或者“至少一个”的含义。

本领域技术人员将从前面的描述领会到,实施例的宽泛技术可以以多种形式实现。因此,尽管已经结合其特定示例描述了实施例,但是实施例的真实范围不应当如此受限,因为对技术人员而言,在研究了附图、说明书和所附权利要求后,其它修改将变得显而易见。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号