CN114898030A - 用于帧的安全关键渲染的方法和系统 - Google Patents
用于帧的安全关键渲染的方法和系统 Download PDFInfo
- Publication number
- CN114898030A CN114898030A CN202210064265.2A CN202210064265A CN114898030A CN 114898030 A CN114898030 A CN 114898030A CN 202210064265 A CN202210064265 A CN 202210064265A CN 114898030 A CN114898030 A CN 114898030A
- Authority
- CN
- China
- Prior art keywords
- primitives
- frame
- rendering
- data
- tile
- 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
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 155
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000012545 processing Methods 0.000 claims abstract description 140
- 238000010200 validation analysis Methods 0.000 claims abstract description 112
- 238000004519 manufacturing process Methods 0.000 claims description 56
- 238000003860 storage Methods 0.000 claims description 8
- 238000012795 verification Methods 0.000 claims description 8
- 238000012360 testing method Methods 0.000 description 16
- 239000012634 fragment Substances 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 239000000872 buffer Substances 0.000 description 7
- 238000004880 explosion Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000009466 transformation Effects 0.000 description 7
- 230000006872 improvement Effects 0.000 description 6
- 230000001052 transient effect Effects 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 230000005865 ionizing radiation Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000003921 oil Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004378 air conditioning Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000012993 chemical processing Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 238000011076 safety test Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005389 semiconductor device fabrication Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/395—Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
- G09G5/397—Arrangements specially adapted for transferring the contents of two or more bit-mapped memories to the screen simultaneously, e.g. for mixing or overlay
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/003—Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2370/00—Aspects of data communication
- G09G2370/20—Details of the management of multiple sources of image data
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2380/00—Specific applications
- G09G2380/10—Automotive applications
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Image Generation (AREA)
Abstract
本发明公开了用于帧的安全关键渲染的方法和系统。公开了在基于图块的图形处理系统中执行帧的安全关键渲染的方法和系统。所述方法包括接收用于帧的几何结构数据,包括定义表示帧中的多个对象的多个图元的数据。所述方法包括接收帧中的区域的定义,所述区域与多个图元中的一个或多个图元相关联。所述方法还包括接收将一个或多个图元与帧中的区域相关联的验证数据。此外,所述方法包括使用几何结构数据渲染帧,并且使用验证数据控制帧的渲染,使得所述渲染从区域外部的帧排除由验证数据标识的图元。
Description
技术领域
本发明涉及用于帧的安全关键渲染的方法和系统。
背景技术
安全关键系统通常是其失效会造成人员安全或环境的风险显著增加的那些系统。在安全关键系统中,系统的至少一些部件必须满足足以使系统作为整体能够满足被认为是系统所必要的安全等级的安全目标。例如,在大多数管辖区域内,车辆中的安全带收缩器或车胎等必须满足特定安全标准,以便使配备有此类装置的车辆通过安全测试。
数据处理装置常常形成安全关键系统的一体式部分,作为专用硬件或作为用于运行安全关键软件的处理器。例如,飞机用电传飞行系统、驾驶员辅助系统、铁路信号发送系统和医疗装置用控制系统通常都是在数据处理装置上运行的安全关键系统。在数据处理装置构成安全关键系统的组成部分的情况下,有必要使数据处理装置自身满足安全目标,使得系统作为整体可以满足适当安全等级。在汽车行业中,安全等级通常是功能安全标准ISO26262中所定义的汽车安全完整性等级(Automotive Safety Integrity Level,ASIL)。
例如,在汽车上下文中,图形处理系统可用于渲染诸如仪表组的安全关键帧以在仪表板显示屏处显示。仪表组向驾驶员提供关键信息,例如车速和与车辆的任何系统/部件相关联的任何故障的详细信息。重要的是,要将此类关键信息可靠地呈现给驾驶员,并且车辆法规通常会要求以符合预定义安全等级的方式渲染关键信息,预定义安全等级例如是ISO 26262标准的ASIL B。
为了确保安全关键系统的安全,硬件和软件元件两种都必须满足特定安全目标。一些软件失效可能是编程错误或不良错误处理造成的系统性失效。这些问题通常可以通过严格的开发实践、代码审核和测试协议来解决。还可能存在各种随机错误,这些随机错误可例如通过瞬时事件(例如,由电离辐射、电压尖峰或电磁脉冲造成的)引入硬件中。在二进制系统中,瞬时事件可能会在存储器中并沿着处理器的数据路径造成随机位翻转。这些错误可能影响图形处理系统以及安全关键帧的渲染。还可能存在影响安全关键帧的渲染的各种其它原因。
因此,当前的安全关键系统,特别是通过图形处理系统渲染安全关键帧的安全关键系统,具有其自身的缺点。
发明内容
提供本发明内容是为了以简化的形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
本文提供了用于在图形处理系统中安全地渲染安全关键元件的方法和系统。通过防止帧中的其它受损数据损坏安全关键几何结构数据来执行安全关键元件的安全渲染。
第一方面提供了一种在基于图块的图形处理系统中执行帧的安全关键渲染的方法。所述方法包括:接收用于帧的几何结构数据,包括定义表示帧中的多个对象的多个图元的数据;接收帧中的区域的定义,所述区域与多个图元中的一个或多个图元相关联;接收将一个或多个图元与帧中的区域相关联的验证数据;以及使用几何结构数据渲染帧并且使用验证数据控制帧的渲染,使得渲染从区域外部的帧排除由验证数据标识的图元。
任选地,控制包括检查包括由验证数据标识的图元的图块是否完全落在区域内。
任选地,通过将包括由验证数据标识的图元的图块的顶点与限定区域的顶点进行比较来执行检查,以标识图块是否落在限定区域的顶点内。
任选地,几何结构数据和验证数据是一起接收的,并且任选地,验证数据是状态数据。
任选地,所述区域是帧内的轴对齐包围盒,并且任选地,所述区域是与帧内的一个或多个图块对齐的轴对齐包围盒。
任选地,帧中的区域的定义包括帧中的区域的顶点的位置。
任选地,在接收到用于帧的几何结构数据时,所述方法包括:生成一个或多个图元块,每个图元块包括多个图元中的分组在一起的一个或多个图元;以及使帧上的多个图块中的每个图块与包括至少部分地落在图块的边界内的至少一个图元的图元块相关联。
任选地,控制渲染包括:针对帧上的多个图块中的每个图块生成控制流数据,从而标识落在图块上的图元;以及针对区域外部的每个图块,从控制流数据排除指向包括由验证数据标识的图元的图元块的指针。
任选地,定义多个图元的几何结构数据包括图元的顶点的坐标。
任选地,由所述区域覆盖的图元表示多维对象。
任选地,所述帧包括限定区域外部的一个或多个安全关键对象。
任选地,从应用程序接收验证数据。
任选地,应用程序请求渲染帧。
任选地,所述检查标识在渲染之前几何结构数据是否受损。
任选地,所述方法还包括接收多个区域的定义。验证数据将一个或多个图元与多个区域中的每个区域相关联。所述方法包括:使用验证数据控制帧的渲染,从所述区域外部的帧排除由针对每个区域的验证数据标识的图元。
任选地,所述方法还包括:接收帧中的第二区域的定义,所述区域与多个图元中的一个或多个图元相关联;接收针对第二区域的验证数据,所述验证数据标识与帧中的区域相关联的一个或多个图元;以及使用几何结构数据渲染帧并且使用验证数据控制帧的渲染,使得渲染从区域内部的帧排除验证数据未标识的图元。
第二方面提供了一种使得能够对帧进行安全关键渲染的基于图块的图形处理系统。所述系统包括渲染控制单元,所述渲染控制单元被配置成:接收用于帧的几何结构数据,包括定义表示帧中的多个对象的多个图元的数据;接收帧中的区域的定义,所述区域与多个图元中的一个或多个图元相关联;接收将一个或多个图元与帧中的区域相关联的验证数据;以及使用验证数据控制帧的渲染,使得渲染从限定区域外部的帧排除由验证数据标识的图元。所述系统包括渲染单元,所述渲染单元被配置成基于渲染控制单元的输出使用几何结构数据渲染帧。
任选地,所述渲染控制单元包括控制模块,所述控制模块被配置成检查包括由验证数据标识的图元的图块是否完全落在所述区域内。
任选地,所述渲染控制单元包括图元块生成器,所述图元块生成器被配置成接收用于帧的几何结构数据和验证数据,并且生成一个或多个图元块,每个图元块将多个图元中的一个或多个图元分组在一起。
任选地,所述渲染控制单元包括平铺逻辑,所述平铺逻辑被配置成从图元块生成器接收一个或多个图元块和几何结构数据,并且使帧上的多个图块中的每个图块与包括至少部分地落在所述图块的边界内的至少一个图元的图元块相关联。
任选地,所述渲染控制单元包括控制流生成器,所述控制流生成器被配置成针对帧上的多个图块中的每个图块生成控制流数据以渲染图像,并且针对区域外部的每个图块,通过从控制流数据排除指向与由验证数据标识的图元相关联的图元块的指针来控制帧的渲染。
任选地,所述控制模块接收包括区域的顶点的位置的帧中的区域的定义。
任选地,所述渲染控制单元从应用程序接收帧中的区域的定义。
任选地,所述基于图块的图形处理系统包含在集成电路上的硬件中。
第三方面提供了一种计算机可读代码,所述计算机可读代码被配置成在运行代码时使根据第一方面所述的方法被执行。
第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上编码有根据第三方面所述的计算机可读代码。
第五方面提供了一种使用集成电路制造系统制造根据第二方面所述的基于图块的图形处理系统的方法,所述方法包括:使用布局处理系统对图形处理系统的计算机可读描述进行处理,以便生成包含所述图形处理系统的集成电路的电路布局描述;以及使用集成电路生成系统根据电路布局描述制造所述图形处理系统。
第六方面提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有根据第二方面所述的图形处理系统的计算机可读描述,所述计算机可读描述当在集成电路制造系统中被处理时,使所述集成电路制造系统制造包含所述图形处理系统的集成电路。
第七方面提供了一种在基于图块的图形处理系统中执行帧的安全关键渲染的方法。所述方法包括:接收用于帧的几何结构数据,包括定义表示帧中的多个对象的多个图元的数据;接收帧中的区域的定义,所述区域与多个图元中的一个或多个图元相关联;接收将一个或多个图元与帧中的区域相关联的验证数据;以及使用几何结构数据渲染帧并且使用验证数据控制帧的渲染,使得渲染从帧的不同部分排除基于验证数据的图元。
第八方面提供了一种在图形处理系统中执行帧的安全关键渲染的方法。所述方法包括:接收用于帧的几何结构数据,包括定义表示帧中的多个对象的多个图元的数据;接收帧中的区域的定义,所述区域与多个图元中的一个或多个图元相关联;接收将一个或多个图元与帧中的区域相关联的验证数据;以及使用几何结构数据渲染帧并且使用验证数据控制帧的渲染,使得渲染从区域外部的帧排除由验证数据标识的图元。
第九方面提供了一种在基于图块的图形处理系统中执行帧的安全关键渲染的方法。所述方法包括接收用于帧的几何结构数据,包括定义表示帧中的多个对象的多个图元的数据。所述方法包括接收帧中的区域的定义,所述区域与多个图元中的一个或多个图元相关联。所述方法也包括接收将一个或多个图元与帧中的区域相关联的验证数据。此外,所述方法包括使用几何结构数据渲染帧并且控制帧的渲染,使得渲染从限定区域内部的帧排除验证数据未标识的图元。
第十方面提供了一种使得能够对帧进行安全关键渲染的基于图块的图形处理系统。所述系统包括渲染控制单元,所述渲染控制单元被配置成:接收用于帧的几何结构数据,包括定义表示帧中的多个对象的多个图元的数据;接收帧中的区域的定义,所述区域与多个图元中的一个或多个图元相关联;接收将一个或多个图元与帧中的区域相关联的验证数据;以及控制帧的渲染,使得渲染从限定区域内部的帧排除验证数据未标识的图元。所述系统还包括渲染单元,所述渲染单元被配置成基于渲染控制单元的输出使用几何结构数据渲染帧。
所述图形处理系统可以包含在集成电路上的硬件中。可以提供一种在集成电路制造系统处制造图形处理系统的方法。可以提供一种集成电路定义数据集,该集成电路定义数据集在集成电路制造系统中被处理时配置该系统以制造图形处理系统。可以提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有图形处理系统的计算机可读描述,该计算机可读描述当在集成电路制造系统中被处理时,使集成电路制造系统制造包含图形处理系统的集成电路。
可以提供一种集成电路制造系统,该集成电路制造系统包括:非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有图形处理系统的计算机可读描述;布局处理系统,该布局处理系统被配置成处理计算机可读描述,以便生成包含图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置成根据电路布局描述来制造图形处理系统。
可提供用于执行本文所述的任一方法的计算机程序代码。可以提供非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令当在计算机系统处被执行时使计算机系统执行本文所述的任一方法。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1示出了包括各种关键和非关键报警灯的仪表组;
图2示出了示例性基于图块的图形处理系统;
图3示出了用于图块的示例性显示列表(也称为图块控制流);
图4示出了由图形处理系统执行帧的安全关键渲染的方法;
图5a和5b示出了由用户限定以使得能够对帧进行安全关键渲染的区域;
图6是被配置成执行帧的安全关键渲染的图形处理系统中的平铺引擎的框图;
图7a示出了限定有包含性区域的数字仪表组;
图7b示出了限定有排除性区域的数字仪表组;
图8示出了使用渲染器渲染的屏幕空间中的多个图块;
图9示出了实现图形处理系统的计算机系统;以及
图10示出了用于生成包含图形处理系统的集成电路的集成电路制造系统。
附图示出了各种示例。技术人员将理解,附图中所示的元素边界(例如,框、框的组,或其它形状)表示边界的一个示例。在一些示例中,情况可能是一个元素可以被设计为多个元素,或者多个元素可以被设计为一个元素。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文描述的实施例,并且对所公开的实施例的各种修改对于本领域的技术人员将是显而易见的。
现在仅通过示例的方式来描述实施例。
本公开涉及用于帧的安全关键渲染的方法和系统。本文所述的方法可以用于图形处理系统在帧中渲染一个或多个安全关键元件的任何应用中。
上文论述的示例是用于在仪表组中渲染安全关键元件以在仪表板显示屏处显示的图形处理系统。
图1示出了仪表组150。仪表组150包括两个表盘,包括转速表(RPM计)152和速度表154,两者都呈传统表盘的形式,具有围绕表盘的边缘的值158并且具有角度取向分别指示车辆的当前RPM和速度的指针(156a、156b)。仪表组150还包括多个报警灯(或信号装置指示器)(160a、160b)。多个报警灯可以包括电池报警指示、ABS报警灯、油温计、信息图标(例如,指示所选的无线电台)、非严重报警图标(例如,指示空调系统的故障)和严重报警图标(例如,指示严重的发动机问题)等等。如今,随着汽车的电子系统的复杂化,传统机械仪表板被数字显示器取代。与机械仪表板中的常规表盘相比,数字显示器提供的信息多得多。这些数字显示器可以被定制以适应驾驶员的个人偏好,并且它们也能够具有适应性和动态性,从而准确显示驾驶员在任何给定时刻需要看到的信息。数字显示器上显示的各种应用程序,例如地图、音乐或空调可以基于用户偏好由用户定义。
当使用某些应用程序时,图形处理系统可以在数字显示器上渲染包括多维(例如,2D、3D)对象的多个对象。示例包括在使用导航应用程序时渲染车辆的周围环境。图形处理系统在仪表板上的数字显示器上渲染这些对象以及安全关键元件,例如,显示报警灯的数字仪表组。随着渲染变得越来越复杂,使用更多存储器并且使硬件保持活动更长时间,渲染错误的可能性更大,因此渲染多维对象增大了此类错误的可能性。此类错误可能表现为所谓的顶点爆炸,其中顶点的位置被错误地渲染,因此在周围的渲染中“爆炸”,并且因此损坏周围的渲染。此类对象的顶点的爆炸可能由于硬件中发生的随机错误而发生。即使系统错误可以通过严格的开发实践从安全关键系统完全排除,但引入硬件中的随机错误(例如,在存储器中并沿着处理器的数据路径造成随机位翻转的瞬时事件)也难以消除,这使得在对帧进行安全关键渲染时可能出现损坏。
在数字显示器上渲染的多维对象在性能方面是昂贵的。然而,如果它们不是安全相关的,则正确渲染它们并不是关键的。但必须避免这些多维对象对安全相关对象的影响。通常,为了确保正确渲染安全关键元件,将对场景中的所有几何结构进行两次处理,并且比较每个遍次之间的校验和,以验证几何结构是正确的。如果这些多维对象可以标记为非安全相关的,则可以跳过对用于处理这些对象的绘制调用的冗余处理,从而提高性能。然而,多维对象仍可能易于损坏,这可能影响场景中的其它安全相关对象(其仍被处理两次)。
本发明人设计了用于通过防止帧中的其它受损数据损坏安全关键几何结构数据来在图形处理系统中安全地渲染安全关键元件的方法和系统。这可以通过修改现有图形处理系统来实现,稍后将详细解释。
图形处理系统被配置成例如从计算机系统上运行的应用程序接收图形数据,并对来自图形数据的图像进行渲染以提供渲染输出。例如,应用程序可以生成场景的3D模型并输出表示场景中的对象的几何结构数据。具体地,应用程序可以使用一个或多个图元(即,简单的几何结构形状,例如但不限于可以被应用纹理的矩形、三角形、线和点)来表示每个对象,所述一个或多个图元由一个或多个顶点的位置限定。在这些情况下,由应用程序输出的几何结构数据可以包含标识每个顶点的信息(例如,顶点在世界空间中的坐标)和指示由顶点形成的图元的信息。然后,图形处理系统将接收到的几何结构数据转换成可以在屏幕上显示的图像。
图形处理系统可以例如实施即时模式渲染(IMR)或基于图块的渲染(TBR)。在IMR中,将整个场景作为整体进行渲染。与此对比,在TBR中,使用被划分成被称为图块的子区段的渲染空间对场景进行渲染,其中可针对每个图块独立地执行渲染过程的至少一部分。图块可以具有任何合适的形状,但通常为矩形(其中术语“矩形”包含正方形)。TBR的优点为,可以在渲染期间使用快速、片上存储器以用于颜色、深度和模板缓冲区操作,这与IMR相比允许显著减少系统存储器带宽,而不需要足够大以同时存储用于整个场景的数据的片上存储器。
TBR涉及两个关键阶段:几何结构处理阶段;以及光栅化阶段。在几何结构处理阶段期间,将从应用程序(例如,游戏应用程序)接收的几何结构数据(例如,限定图元的顶点)从世界空间坐标变换成屏幕空间坐标。然后创建至少部分地落在图块的边界内的经过变换的图元(例如三角形)的每图块列表。在光栅化阶段期间,对每个图块单独地渲染(即,将经过变换的图元映射到像素并且针对图块中的每个像素标识颜色)。这可以包括标识哪个(哪些)图元在每个像素处是可见的。接着可以由每个像素处的可见图元的外观确定所述像素的颜色,所述可见图元可以由应用于所述像素处的纹理和/或在所述像素上运行的像素着色器程序限定。像素着色器程序描述将针对给定像素执行的操作。对每个图块单独地渲染会使图形处理系统能够在光栅化阶段中对特定图块进行渲染时仅检索与所述图块相关的经过变换的图元数据,这会使针对存储器(例如中间缓冲区)的带宽要求保持为低。一旦已经针对图块中的每个像素标识出颜色值,就将图块的颜色值写出到存储器(例如帧缓冲区)。一旦已经渲染整个场景(即,一旦已经针对所有图块的像素确定了颜色值),场景就可以例如显示在屏幕上。
图2示出了示例性TBR图形处理系统200。系统200包括存储器2021、2022、2023、2024、几何结构处理逻辑204和光栅化逻辑206。存储器2021、2022、2023、2024中的两个或多个可以在同一物理存储器单元中实现。
几何结构处理逻辑204实施TBR的几何结构处理阶段。几何结构处理逻辑204包括变换逻辑208、图元块生成器210和平铺引擎212。变换逻辑208从应用程序接收几何结构数据(例如,顶点、图元和/或补片)并将几何结构数据变换到渲染空间(例如,屏幕空间)中。变换逻辑208还可以执行例如裁剪和剔除的功能以移除落在视锥外的几何结构数据(例如图元或补片),和/或应用所属领域的技术人员所知的照明/属性处理。
图元块生成器210将经过变换的图元(即,与其相关的经过变换的几何结构数据)以图元块的形式存储在存储器2022中。图元块是一个或多个图元(例如,与其相关的经过变换的几何结构数据)一起存储在其中的数据结构。在图元块中存储图元可以允许将一组图元的经过变换的几何结构数据更有效地存储在存储器2022中。具体而言,图元的经过变换的几何结构数据通常包括用于多个顶点的经过变换的顶点信息,其中这些顶点在多个图元之间共享(或是多个图元共有的)。因此,在同一图元块中的多个图元共享顶点的状况下,与该顶点有关的数据只需在所述图元块中存储一次。
可以使用任何适当的方法或技术将经过变换的图元分组成图元块。例如,在一些情况下,可以基于经过变换的图元到达图元块生成器210的次序将经过变换的图元分组成图元块。在这些状况下,每个图元块可以具有:最大大小(例如,就位或字节而言)、可以属于图元块的最大图元数和/或可以属于图元块的最大顶点数,并且图元块生成器210可以被配置为将图元添加到当前图元块中,直到达到一个或多个最大值。在其他情况下,可基于图元在渲染空间中的位置将所述图元分组成图元块,使得空间上相似的图元在同一图元块中。
将图元块与标识图元块在存储器中的位置的信息一起提供给平铺引擎212。平铺引擎212从经过变换的几何结构数据生成每个图块的经过变换的图元的列表,所述经过变换的图元至少部分地落在该图块内。所述列表可以被称为显示列表或经过变换的显示列表或图块控制流。在一些状况下,经过变换的显示列表可以包括到与至少部分地落在图块内的图元相关的经过变换的几何结构数据(例如,顶点数据)的指针或链路。例如,图3示出了图块的示例性显示列表(也称为图块控制流)302,所述显示列表包括每个图元块的图元块条目304、306,所述每个图元块包括至少部分地落在该图块的边界内的至少一个图元。每个图元块条目304、306包括标识所述图元块在存储器中的位置(例如,所述图元块在存储器中的地址)的信息308以及标识该图元块的哪些图元至少部分地落在图块的边界内的信息310。如图3所示,标识图元块的哪些图元至少部分地落在图块内的信息可以呈掩码的形式,所述掩码包括图元块中的每个图元的位,其指示该图元是否至少部分地落在图块的边界内。
回到图2,光栅化逻辑206实施TBR的光栅化阶段。具体而言,光栅化逻辑206通过从存储器2023获取图块的显示列表,然后从存储器2022获取落在图块内的由所述图块的显示列表指示的图元的经过变换的几何结构数据,以逐图块的方式渲染图元;并基于经过变换的几何结构数据来渲染所述图块的图元。
在一些状况下,光栅化逻辑206可包括光栅化器214、隐藏表面移除(HSR)逻辑216和纹理化/着色逻辑218。在这些情况下,光栅化器214从存储器2023获取每个显示列表,并且针对每个显示列表从存储器2022获取针对落在由对应的显示列表指定的图块内的图元的经过变换的几何结构数据,并将每个图元转换成图元片段的集合。术语“片段”在本文中用于意指采样点处的图元的样本,所述样本将被处理以对图像的像素进行渲染。在一些示例中,可以存在像素到片段的一对一映射。不过,在其他示例中,片段可以多于像素,并且此过采样可以允许像素值的较高质量渲染,例如通过促进可以应用于多个片段以用于对每个像素值进行渲染的抗混叠和其他滤波器。
然后将特定图块的图元片段提供到HSR逻辑216,所述HSR逻辑通过对图元片段执行深度测试而移除隐藏(例如,被其他图元片段隐藏)的图元片段。接着将其余片段(在隐藏表面移除之后)传递到纹理化/着色逻辑218,所述纹理化/着色逻辑对图元片段执行纹理化和/或着色以确定被渲染图像的像素值。接着,将图块的被渲染像素值存储在存储器2024(例如,帧缓冲区)中。
光栅化逻辑206处理每个图块,并且当整个图像已经被渲染并存储在存储器2024(例如,帧缓冲区)中时,图像可以从图形处理系统200输出并以任何合适的方式使用,例如,显示在显示器上、存储在存储器中或传输到另一设备等。在片段在由纹理化/着色逻辑218处理之前由HSR逻辑216处理的意义上,图2所展示的TBR图形处理系统200是“推迟的”渲染系统。在其他示例中,图形处理系统可能并非推迟的渲染系统,在此情况下,将会在将HSR应用于片段之前将纹理化/着色应用于那些片段。
尽管几何结构处理逻辑在图中示为与光栅化逻辑分离,但在一些实施方式中,几何结构处理逻辑和光栅化逻辑可共享一些资源。例如,图形处理系统可以使用统一着色方法,其中相同的物理执行单元可以用于执行在几何结构处理阶段中使用的指令(例如,执行顶点处理)并执行在光栅化阶段中使用的指令(例如,执行片段处理)。
因此,我们在几何结构处理阶段期间获得两种数据结构。一种数据结构是包括图元的顶点数据的图元块,另一种数据结构是包括与图块相关联的图元块和落在图块的边界内的图元的信息的图块控制流。
本发明人设计出通过修改平铺引擎212的功能以控制图块控制流的生成,可以安全地渲染帧中的安全关键元件而没有任何损坏。这可以通过不同实施方式来实现。
实现这一点的一种方法是围绕需要保护的元件定义区域。所述区域与帧中的一个或多个对象的一个或多个图元相关联。在这种实施方式中,关于所述区域的定义的数据作为图形处理系统中的平铺引擎的输入而提供。平铺引擎在接收到区域的定义时,能够基于使一个或多个图元与帧中的区域相关联的验证数据来控制帧的渲染,从而安全地渲染安全关键元件。验证数据的目的是标识与限定区域相关联的图元,使得可以检查平铺的输出,并且因此控制渲染。或者,这也可以通过围绕元件定义可能损坏帧中的场景的区域来实现。平铺引擎在接收到定义时,被配置成基于使一个或多个图元与帧中的区域相关联的验证数据来控制帧的渲染,从而安全地渲染安全关键元件。下文参考图4详细描述这两种实施方式。
可以通过许多不同方式定义所述区域。可以在整个过程开始之前定义区域,或者可以在应用程序运行时动态定义区域。在一些情况下,所述区域可以是用户定义的,即,由程序员预先设定。在一些其它情况下,所述区域可以由向几何结构处理逻辑提供数据的应用程序动态定义。在两种情境中,应用程序可以将屏幕空间中的区域输出为任何形状,例如像素对齐包围盒或图块对齐包围盒。并且,在一些情况下,也可以给出帧中的包括不同对象的多个区域作为几何结构处理逻辑的输入。限定区域可以提供给平铺引擎作为包围盒的定义,例如包围盒的顶点坐标。在一些情境中,所述定义可以任何形状提供给图形处理系统,且系统将其转换成图块对齐包围盒。
因此,通常可以任何粒度或分辨率生成包围盒。例如,在一些情况下,包围盒可以处于X和Y坐标分辨率(即,包围盒可以由几何结构的特定项目或特定项目集合的顶点的最大和最小X和Y坐标限定)。在其他情况下,包围盒可以处于图块分辨率(即,涵盖几何结构的相关项目的最近的图块边缘)。如前所述,图块可以是屏幕空间中的32×32图块。
考虑包括两个表盘的仪表组150的图1中的示例,其中每个表盘在每个表盘内的区域(显示为圆形)内包括多个报警灯(160a、160b)。该区域内可能有任意数目的报警灯。如上文所论述,当渲染包括仪表组150的图像的帧时,安全地渲染帧中的安全关键元件而没有任何损坏是非常重要的。因此,在渲染仪表组150的帧时,限定帧中的区域以保护帧中的安全关键元件。
参考图5a和图5b示出了限定区域的示例。在图5a所示的示例中,限定区域包括每个表盘内的包含多个报警灯的区域。第一区域被定义成使得第一区域是表盘152内的环绕/包围多个报警灯160a的区域(由圆表示)。第一区域由包围盒502的边界(或顶点)界定。类似地,第二限定区域包括表盘154内的围绕多个报警灯160b的区域。第二限定区域由第二包围盒504的边界界定。可以在帧中定义任何数目的区域。此外,可以使用任何数目的包围盒来界定每个区域。此处,限定两个区域,并且每个区域由该区域周围的包围盒来界定。图5a中的盒502和504是正方形盒。
在图5b所示的示例中,仪表组150内的每个表盘都包含在限定区域内。第一区域围绕表盘152。使用两个包围盒506和508来界定第一区域。类似地,第二区域围绕表盘154。使用两个包围盒510和512来界定第二区域。此处,限定两个区域,并且通过绘制匹配在每个区域周围的两个盒来界定每个区域。图5b中的盒是矩形盒。可以通过使用任何形状来限定所述区域。
在这种情况下,第一区域和第二区域由(以组合方式)紧密配合在要保护的区域周围的盒界定。所述区域也可以由更松散地配合在要保护的区域周围的各个包围盒限定。此外,所述区域可以由任何形状或任何数目的形状限定。优选地,所述区域由(组合地)对齐到屏幕空间的图块边界的轴对齐包围盒(AABB)限定。
图4示出了基于如上所述限定的区域在图形处理系统中执行帧的安全关键渲染的方法。图形处理系统可以实施帧的即时模式渲染(IMR)或基于图块的渲染(TBR)。该方法可以用于IMR或TBR两种实施方式中,但优选地用于基于TBR的图形处理系统中,因为当所述区域与基于TBR的图形处理系统的屏幕空间上的图块的边界匹配时,该方法可以容易地集成到现有基于图块的渲染技术中。
此方法可以通过修改图2中的平铺引擎来实现,如图6所示。图6示出了图形处理系统600的一部分,所述图形处理系统包括从图元块生成器604和应用程序接口(API)612接收输入的修改的平铺引擎602。图形处理系统的除了平铺引擎之外的所有部件都以与图2中所述的相同方式工作。类似地,光栅化逻辑的部件(图6中未示出)以与图2中所示的光栅化逻辑206的部件相同的方式工作。
此处参考图4和图6详细地解释在基于图块的图形处理系统中对帧执行安全关键渲染的方法400。所述帧可以包括多个对象,其中所述对象中的一些表示安全关键元件。所述方法任选地包括用于限定帧中的区域的步骤401。如先前论述的,此步骤可以在过程开始之前完成,使得所述区域可以是用户定义的,即由程序员预先设定。在其它情况下,所述区域可以由应用程序动态地限定。该应用程序的示例包括但不限于游戏应用程序或导航应用程序等等。该应用程序可以通过使用多个图元来表示帧中的每个对象。该应用程序可以将多个图元中的一个或多个图元与每个区域相关联。
在步骤402处,该方法包括由图形处理系统从应用程序接收用于帧的几何结构数据。图元可以具有任何形状,包括但不限于矩形、正方形或三角形。接收用于帧的几何结构数据包括接收定义表示所述帧中的多个对象的多个图元的数据。所接收的几何结构数据可以包括关于与不同对象相关联的图元、每个图元的顶点等的数据。所接收的几何结构数据由图形处理系统中的几何结构处理逻辑处理。
该方法还包括:在步骤403处,接收验证数据,所述验证数据将一个或多个对象的一个或多个图元与帧中限定的每个区域相关联。验证数据的示例包括状态数据、图元标签等。常规上,状态数据包括每个图元的绘制模式、纹理、着色器程序等。根据本公开,与特定区域相关联的一个或多个图元共享公共状态数据,所述公共状态数据指示所述图元与所述特定区域的关联。在一些情况下,几何结构数据和验证数据可以由几何结构处理逻辑单独地接收,并且步骤402和403可以按照任何顺序发生。在一些其它情况下,几何结构数据和验证数据可以由几何结构处理逻辑同时接收。几何结构处理逻辑包括变换逻辑(图6中未示出)、图元块生成器604和平铺引擎602。图形处理系统600的几何结构处理逻辑也可以被称为渲染控制单元,因为几何结构处理逻辑的输出如本文详细所述用于控制帧的渲染。
图形处理系统600的变换逻辑(图6中未示出)和图元块生成器604对应于图形处理系统200的变换逻辑208和图元块生成器210。变换逻辑和图元块生成器以与参考图2详细解释的相同方式工作。如前所述,变换逻辑从应用程序接收几何结构数据并将几何结构数据变换到渲染空间(例如,屏幕空间)中。
图元块生成器604生成一个或多个图元块以将由变换逻辑变换的图元存储在存储器中。图元块是定义一个或多个图元的数据被一起存储在其中的数据结构。可以使用如先前解释的任何合适的方法或技术将多个图元中经过变换的图元分组成图元块。优选地,可以基于图元在渲染空间中的位置将所述图元分组成图元块,使得空间上相似的图元在同一图元块中。
在一些情况下,可以基于图元的状态数据将图元分组到图元块中。图元块可以包括标头,所述标头包括用于解释图元块中包括的图元的状态数据。图元块中的数据的格式可以与上文关于图3描述的图元块300中的数据的格式相同。
生成的图元块存储在物理存储器614a(例如,参数缓冲区)中。存储器614对应于图2中所示的存储器2022。包括图元的顶点坐标和标识图元块在存储器中的位置的图元块地址的几何结构数据被提供给几何结构处理逻辑的平铺引擎。此步骤也称为图形处理系统的顶点处理阶段。
在步骤404处,该方法包括平铺引擎602接收区域的定义。平铺引擎可以使用区域的定义来检查由验证数据标识的图元是否落在定义区域内部/外部,从而允许与在对应区域内部/外部渲染的实际几何结构进行一致性检查。该方法允许通过应用程序将几何结构数据提供至几何结构处理逻辑来定义所述区域。
如先前讨论的,所述区域可以是任何形状。在基于图块的图形系统被优化为与对齐到图块边界的限定区域一起使用的情况下,中间软件驱动程序可以将所述区域的形状(例如,像素对齐包围盒)转换成图块对齐包围盒,以用于基于图块的图形处理系统中。在以下示例中更详细地考虑可以将验证步骤与图块控制流的生成完全结合的此类优化系统。尽管如此,在其它情况下,在基于图块的图像系统被配置成接受不与图块边界对齐的限定区域的情况下,可能不需要此类中间软件驱动程序。类似地,如果该方法在除基于图块的图形处理系统之外的图形处理系统中实施,则限定所述区域的像素对齐包围盒(或其它形状)也可以直接提供给该图形处理系统。换句话说,图形处理系统可以直接从API或通过中间软件驱动程序接收所述区域的定义。
在接收到所述区域的定义时,在步骤406处,该方法包括由平铺引擎602基于所述区域的定义和验证数据来控制帧的渲染。
参考图6解释由平铺引擎602控制帧的渲染的方法。图形处理系统600的平铺逻辑602执行几何结构处理逻辑的渲染控制,因为平铺逻辑的输出如本文详细所述用于控制帧的渲染。
图6中所示的平铺引擎602包括平铺逻辑606、控制模块608以及控制流生成器610。平铺逻辑606从图元块生成器604接收输入。平铺逻辑606被配置成(i)如上所述接收多个图元块,其中,每个图元块包括一个或多个图元以及诸如图元的顶点坐标的几何结构数据;(ii)针对每个接收的图元块,确定该图元块的哪些图元至少部分地落在区域中的每个图块的边界内(这在本文中可以被称为平铺图元);以及(iii)输出所述确定的结果。
平铺逻辑606可以使用任何合适的方法来确定图元是否至少部分地落在图块的边界内。例如,在一些情况下,平铺逻辑606可以使用简单的不太准确的方法(例如,简单的包围盒平铺方法)来确定图元是否至少部分地落在图块内,以便将图元快速地分类到图块中。如所属领域的技术人员所知的,在包围盒方法中,标识包围图元的包围盒(例如,包围图元的顶点的最小的轴对齐包围盒)。可以使用任何合适的方法来生成包围盒。例如,平铺逻辑606可以通过找到图元的顶点的最小和最大X和Y坐标并且根据这些坐标形成轴对齐包围盒来生成包围盒。同样,可以任何粒度或分辨率生成包围盒。例如,在一些情况下,包围盒可以处于X和Y坐标分辨率(即,包围盒可以由顶点的最大和最小X和Y坐标限定)。在其他情况下,包围盒可以处于图块分辨率(即,包围图元的最近的图块边缘)。
一旦平铺逻辑606已经标识出图元的包围盒,如果包围盒至少部分地与图块重叠,则平铺逻辑606就可以确定图元至少部分地落在所述图块内。换句话讲,如果图元的包围盒至少部分地落在图块的边界内,则可以确定所述图元至少部分地落在所述图块内。虽然可以使用包围盒方法快速且有效地确定图元是否至少部分地落在图块内,但这并不是“完美”的平铺,因为包围盒通常大于图元,这可能导致图元在实际上未处于图块中时被确定为处于所述图块中。来自平铺逻辑606的确定的输出被提供到控制模块608。
平铺引擎602的控制模块608进一步从API 612(可能经由软件驱动程序)接收输入。如上文所论述的,控制模块608因此接收限定区域的包围盒(优选AABB)的边界(或顶点的位置)。在帧中限定多个区域的一些情况下,所述方法包括接收为了进行保护而启用的一个或多个区域的定义。在示例中,控制模块608经由下文所示的绘制调用接收被启用区域的指示。
控制模块还接收验证数据。验证数据的目的是标识与限定区域(或多个限定区域,如果启用多个区域的话)相关联的图元。在其它实施方式中,验证数据可以(例如,通过由软件发出的功能调用或命令的序列)经由API从应用程序直接获得到软件驱动程序。在其他实施方式中,验证数据的形式可以是指示图元与限定区域的关联的图元状态数据。该状态数据(即,验证数据)可以从图元块生成器获得。验证数据可以从图元块生成器通过平铺逻辑或直接传递到控制模块。而且,可以从存储在存储器中的图元块推断验证数据。
控制模块608在平铺引擎602中执行渲染控制功能。控制模块608能够通过基于所接收的输入控制图块控制流的生成来控制帧的渲染。图块控制流由控制流生成器610基于从控制模块608接收到的输入而生成。
尽管在本文的描述中,平铺引擎602包括平铺逻辑606、控制模块608和控制流生成器610,作为执行平铺、控制和生成控制流的三个单独模块,但替代地,这可以通过在平铺引擎中实施单个模块或通过平铺引擎自身来实现。在这样的情况下,平铺引擎将从图元块生成器接收几何结构数据、验证数据和图元块作为输入,并接收区域的定义作为另一输入。平铺引擎可以被配置成执行平铺、控制和生成新控制流,以便如本文详细论述的那样控制帧的渲染。
控制模块608从从平铺逻辑606获得的输入获得落在每个图块内的图元的列表。如果在图形处理系统中处理几何结构数据时已发生任何损坏,则基于待渲染的实际图像,由平铺逻辑606确定落在每个图块内的图元可能不正确。可能存在造成几何结构数据损坏的许多原因,例如,例如通过瞬时事件(例如,由电离辐射、电压尖峰或电磁脉冲造成的),或通过存储器中并沿着处理器的数据路径的随机位翻转引入硬件中的随机错误。几何结构数据发生的损坏的示例将包括待渲染的帧内的多维对象的图元的顶点爆炸。与2D对象相比,诸如高多边形模型(例如3D和更高维度)的多维对象更容易损坏,这是因为处理的顶点数量增加。
如先前所述,方法400可以以两种概念上不同的方式实施以防止几何结构数据的损坏。
在第一实施方式中,平铺逻辑接收可能导致场景损坏(例如,高多边形模型)的区域,下文称为包含性区域。在预定义多个区域的情况下,平铺逻辑可以接收特定区域和测试类型为包含性的指示。在这种情况下,控制模块608控制帧的渲染,并通过仅在针对确定在限定区域中的图块的图块控制流中包括来自限定区域的图元(如由验证数据表示)来防止限定区域外部发生损坏。对渲染的控制包括检查包括由验证数据标识的任何图元的图块是否落在所述区域内。
通过将限定区域的顶点与包括由验证数据标识为在限定区域内的图元的图块的顶点进行比较来执行所述检查,以标识图块是否落在限定区域的顶点内。因此,如果图块(包括由验证数据标识为在限定区域内的图元)被标识为落在限定区域内,则不会从该图块的图块控制流移除图元的指针或援引。然而,如果图块(包括由验证数据标识为在限定区域内的图元)被标识为落在限定区域外部,则从这些图块移除被验证数据标识的那些图元的指针或援引。
换句话说,防止在限定区域外部渲染包括在用于限定区域的验证数据中的图元。因此,如果平铺过程期间的错误本来将导致来自限定区域内部的图元被错误地包括在限定区域外部的控制流中,则控制模块可以使用验证数据来防止这种情况发生。因此,平铺引擎中的控制模块608使得能够控制帧的渲染,使得渲染从限定区域外部的帧排除由验证数据标识的图元。
为了更好地理解第一实施方式,考虑图7a中给出的示例。
图7a示出了包括两个表盘的仪表组700,两个表盘包括转速表(RPM计)702和速度表704,两者都具有围绕表盘的边缘的值(708a和708b)和角度取向分别指示车辆的当前RPM和速度的指针(706a、706b)。数字仪表组700还包括多个报警灯710和汽车712的3D模型。多个关键灯包括但不限于电池、ABS报警灯、油温计、信息图标、非关键报警图标和关键报警图标等。
如先前所述,提供给控制模块608的平铺逻辑606的输出中可能存在错误,例如,图元的顶点爆炸。诸如图7a中所示的汽车的3D模型的高多边形模型更容易出现此类错误,因为存在更多顶点被处理以渲染这些模型。因此,在图7a中,包围汽车712的3D模型的区域716被定义为包含性区域。为了简单起见,图7a中仅示出了一个区域716,但可以在帧中限定多个区域。基于验证数据,可以防止由顶点爆炸造成的错误跨越帧中的关键元件延伸,超出限定区域。如稍后讨论的,限定区域内的渲染可能仍然不正确,但防止了该不正确渲染扩散到限定区域外部到达安全关键元件。
控制模块608接收图元落在每个图块内的确定作为一个输入,并且接收限定区域作为第二输入。控制模块608检查每个图块的平铺逻辑606的输出,以确定平铺逻辑将验证数据表示的图元分配到的图块是否完全落在限定区域内。换句话说,控制模块608检查平铺逻辑606的输出以确定图块(包括由验证数据表示的图元)是否落在限定区域外部。如果控制模块标识包括由验证数据标识的图元的任何图块都落在限定区域外部,那么控制模块608从分配给限定区域外部的图块的图元的列表中移除所述图元。在另一种情况下,当控制模块608标识包括由验证数据表示的几何结构数据中的图元的任何图块都落在限定区域外部时,控制模块608可以生成用于限定区域外部的图块的图元的新列表,不包括由验证数据表示的那些图元。控制模块仅在分配给限定区域内部的图块的图元的列表中包括由验证数据表示的那些图元。控制模块的输出,包括落在每个图块内的图元的列表,被提供给控制流生成器模块610。
例如,图8示出了待使用渲染器渲染的屏幕空间800的示例。屏幕空间800被划分成多个图块。多个对象的图元被映射到屏幕空间800中的多个图块。
在图8中,圆802和808表示映射到屏幕空间800的几何结构数据中的实际对象的图元。圆802表示汽车712的3D模型的图元,并且圆808表示多个报警灯710的图元。在该示例中,在平铺的较早阶段期间的某一时刻的错误意味着汽车802的3D模型的任何图元的一个或多个顶点在图块上爆炸并扩散。在受损之后,覆盖汽车802的3D模型的图元的顶点的区域由三角形804表示。在这种情况下,三角形804可以表示一个图元的所有三个顶点都已爆炸的情况,尽管实际上只有一个顶点可能爆炸或者多个爆炸可能源自不同的图元。可以看出,三角形804不期望地覆盖圆808中的一些(表示多个报警灯710的图元)。
如图7a中所述,控制模块608接收从平铺逻辑606提供的作为输入的图元落在每个图块内的确定。由于3D模型的图元的顶点爆炸,控制模块608接收的平铺逻辑的输出将包括由三角形804覆盖的所有图块中的车辆712的图元,所述所有图块包括包含多个报警灯710的图元的图块。
为了使用包含性区域减轻这种错误,将围绕汽车712的3D模型的限定区域716提供给控制模块608。所述区域的定义可以包括图块对齐包围盒的边界。限定区域716由屏幕空间800上的包围盒806表示。控制模块608还接收关于限定区域716内的对象(此处是汽车712)的图元的验证数据。
控制模块608将使用接收的区域716的定义来标识落在限定区域内的图块。此外,控制模块检查每个图块的平铺逻辑606的输出并确定包括由验证数据表示的图元的图块是否落在包围盒806外部。在这种情况下,由三角形804示出的车辆的受损图元被分配到由包围盒806限定的区域外部的多个图块。因此,控制模块从分配给包围盒806外部的图块的图元的列表移除这些图元。控制模块的输出,包括落在每个图块内的图元的列表,被提供给控制流生成器模块610。
在第二实施方式中,需要保护以免受损坏的一个或多个区域被提供到平铺逻辑,这些区域在下文中也被称为排除性区域。在一些情况下,可以向平铺逻辑提供启用的多个区域中的一个或多个区域的指示以及测试是排除性的指示。在这样的情况下,控制模块608控制帧的渲染,并通过从用于限定区域的图块控制流排除与限定区域相关联的图元(由验证数据表示)之外的任何图元来防止限定区域内部的损坏。对渲染的控制包括检查落在限定区域内的任何图块是否包括验证数据未标识的图元。通过将图块的顶点与限定区域的顶点进行比较来执行所述检查,以标识包括验证数据未标识的图元的任何图块是否落在限定区域的顶点内。
换句话说,防止不包括在用于限定区域的验证数据中的图元在限定区域内部渲染。因此,如果几何结构处理阶段期间的错误本来将导致来自限定区域外部的图元被错误地包括在限定区域内部的控制流中,则控制模块可以使用验证数据来防止这种情况发生。控制模块308控制帧的渲染,使得渲染从限定区域内部的帧排除验证数据未标识的图元。
为了更好地理解第二实施方式,考虑图7b和图8中给出的示例。图7b类似于图7a,不同之处在于限定区域是围绕多个报警灯710的排除性区域718。当明确知道需要保护帧中的哪些区域免受损坏时,可以限定排除性区域。在这样的情况下,可以消除由排除性区域外部的顶点爆炸引起的排除性区域内的错误,并且可以通过防止限定区域损坏来保护帧中的关键元件。为了实现这一点,将限定区域和包括关于多个报警灯710的图元的信息的验证数据提供给控制模块608。
因此,控制模块608从平铺逻辑606接收落在每个图块内的图元的确定,并从API604接收验证数据(例如,作为状态数据)和限定区域。控制模块608检查每个图块的平铺逻辑606的输出,并且确定包括预期在限定区域中的未由验证数据表示的图元的任何图块是否落在限定区域内。如果控制模块标识包括限定区域内存在的未由验证数据表示的图元的任何图块都落在限定区域内,那么控制模块从分配给限定区域内的图块的图元的列表移除那些图元。在另一种情况下,当控制模块608标识包括预期在限定区域中的未由验证数据表示的图元的任何图块都落在限定区域内时,控制模块608可以生成用于限定区域内的图块的图元的新列表,不包括限定区域中存在的由验证数据表示的那些图元之外的任何图元。控制模块的输出,包括落在每个图块内的图元的列表,被提供给控制流生成器模块610。
考虑上文在图8中给出的相同示例,其中,汽车802的3D模型的任何图元的一个或多个顶点在屏幕空间上的图块上爆炸并扩散。由受损3D模型的图元的顶点覆盖的区域由三角形804表示。由于3D模型的图元的顶点爆炸,平铺逻辑606接收到的平铺逻辑的输出会将汽车712的图元与由三角形804覆盖的所有图块相关联,所述所有图块包括围绕多个报警灯710的图元的限定区域718中的图块集合。
为了使用排除性区域来减轻这种错误,将围绕报警灯710的限定区域718提供给控制模块608。控制模块608将使用接收的区域718的定义来标识落在限定区域内的图块。限定区域718由屏幕空间800上的包围盒810表示。控制模块608还接收关于限定区域718内的图元的验证数据。
此外,控制模块检查每个图块的平铺逻辑606的输出,并且确定包括限定区域中存在的未由验证数据表示的图元的任何图块是否落在包围盒810内部。在这种情况下,由于汽车712的图元已被错误地分配给由包围盒810限定的区域内的图块,控制模块从分配给包围盒810内部的图块的图元的列表排除那些图元。控制模块的输出,包括落在每个图块内的图元的列表,被提供给控制流生成器模块610。
上文描述的图7a和7b已针对基于图块的系统示出,其中图块边界与“区域”边界相同,但在一些其它情况下,图块边界和区域边界可能不对齐,或者区域边界可能根本不是基于图块的。
可能存在可以实施控制模块608的功能的各种方式。一种方式可以是在控制模块608中实施多个比较器。多个比较器可以将包括由验证数据表示的图元的图块的顶点与由平铺逻辑606限定的区域的顶点进行比较,并确定是否将图元包括在与图块相关联的图元的列表中或从该列表排除图元。
下面详述由控制模块使用比较器进行的测试的示例。控制模块使用比较器检查图块是落在限定区域内部还是落在限定区域外部,每个图块包括由验证数据标识的图元。由验证数据标识的图元可以存在于许多图块中。针对包括由验证数据标识的图元的每个图块执行所述测试。
控制模块中的测试逻辑的真值表可以如下给出。第一列指示包括与验证数据相关联的图元的图块是否在所述区域内部。第二列指示所述区域是包含性的还是排除性的。最后一列指示基于这些条件是否满足测试。测试逻辑执行XOR操作。
内部 | 区域 | 遍次 |
0 | 0(包含性) | 0 |
0 | 1(排除性) | 1 |
1 | 0(包含性) | 1 |
1 | 1(排除性) | 0 |
该测试的伪代码可以如下给出:
//假设如图8所示的坐标系,以及与图块网格对齐的区域边界。
//令图块X和图块Y为由图元覆盖的图块的XY坐标。
//图元可以触及多个图块。将针对图元触及的每个图块执行测试。
//令tileRegion Min/Max X/Y限定区域的AABB
//令“regionTest”被编码,使得0=包含性,1=排除性
//使用4个比较器测试图块是否在保护区域内部。
是否InsideRegion=tileX>=tileRegionMinX AND tileX<=tileRegionMaxXAND tileY>=tileRegionMinY AND tileY<=tileRegionMaxY;
//XOR操作与上述真值表匹配。
allowToProgess=isInsideRegion XOR regionTest;
//可能存在多个保护区域,在这种情况下,测试可能在每个保护区域上迭代
标识哪些图元应包括在验证数据中的一种方式是使用绘制调用。绘制调用是由API提供的一种机制,应用程序可以通过该机制提交数据以供显示。应用程序可以使用一个或多个图元(即,简单的几何结构形状,例如但不限于可以被应用纹理的矩形、三角形、线和点)来表示每个对象,所述一个或多个图元由一个或多个顶点的位置限定。考虑每个图元由三角形表示,并且形成一个对象的全部或部分的所有三角形可以共享公共状态。具有公共状态意味着每个三角形具有公共的绘图模式、纹理、着色器程序等。将通过应用程序提供渲染具有相同状态的一组图元所需的信息来进行绘制调用。因此,帧中的每个对象将与不同的绘制调用或绘制调用的集合相关联。换句话说,返回到图7a和7b的示例,3D汽车模型的图元可以与和用于多个报警灯的绘制调用不同的绘制调用相关联。因此,绘制调用可以标识相关联的图元是否与安全关键显示元件有关,API接着可以使用其来构建相关限定区域(无论其被定义为包含性还是排除性),以相应地将对应图元作为验证数据关联到该相关限定区域。可以将相关联图元是否与安全关键显示元件相关的指示添加到绘制调用使用的状态信息。
例如,控制模块608(可能经由软件驱动程序)接收限定由API提供的区域718或区域716的包围盒。然后,包围盒将被应用于绘制调用中绘制的所有图元,并且可能应用于任何后续绘制调用,直到来自每个图块的图元的列表的所有图元基于验证数据被改变为止。
用于检查的验证数据可以使用功能调用(命令)的序列从应用程序经由API获得到驱动程序。
(简化的)示例性序列可以如下所示。首先,启用图元的一些状态。一旦启用状态,就使用诸如glDraw的命令序列获得图元。命令glDraw绘制具有相同状态的图元。此外,可以通过提供诸如min X,Y和Max X和Y的边界使用命令glSetProtectionRegion限定所述区域。此外,可以通过诸如glEnablei的命令启用一个或多个限定区域,以使用启用的区域来测试并保护安全几何结构元件的渲染。
glEnable(SOME_STATE);
glDraw(SOME_PRIMITIVES); //这是“绘制调用”
glDraw(SOME_PRIMITIVES);
glSomeFunction();
glSetProtectionRegion(0,MIN_X,MAX_X,MIN_Y,MAX_Y);//通过API暴露新功能以允许应用程序设置保护区域。这样设置区域0
glSetProtectionRegion(1,MIN_X,MAX_X,MIN_Y,MAX_Y);//这样设置区域1
glEnablei(PROTECTION_REGION,0); //启用刚刚设置的保护区域0
glEnablei(PROTECTION_REGION,1); //启用刚刚设置的保护区域1
//驱动程序将保护区域从像素坐标转换为图块坐标
//并将2个保护区域AABB发送到平铺引擎硬件
glDraw(SOME_PRIMITIVES);
因此,与每个绘制调用相关联的状态(AABB和启用位)将确定启用哪些保护区域(如果有的话),因此确定针对保护区域测试(由绘制调用生成的)哪些图元。
在上面的示例中,前两个绘制调用在应用程序启用任何保护区域之前出现,因此,平铺引擎不会测试由这些绘制调用生成的图元触及的图块。第三绘制调用在应用程序启用两个保护区域之后出现,因此,平铺引擎将针对启用的保护区域测试由来自绘制调用的每个图元覆盖的每个图块。
控制流生成器模块610进一步基于来自控制模块的输出生成图块控制流。控制流生成器模块610基于控制模块608的确定生成控制流数据,以防止在渲染时场景内的安全关键元件损坏。
控制流生成器610接收由平铺逻辑610输出的结果以及待从与控制块中的每个图块相关联的图元块移除的图元的细节。然后,控制流生成器610被配置成(i)生成图元块条目,并且(ii)基于来自控制模块的输出将生成的图元块条目存储在存储器614中作为该图块组的控制流的一部分。因此,在限定区域围绕(例如)汽车的3D模型的包含性实施方式中,控制流生成器使指针指向表示3D模型的图元块中的图元,作为仅限定区域内的图块的控制流的一部分。因此,控制流生成器生成的控制流使得能够控制帧的渲染,使得渲染从限定区域外部的帧排除由验证数据标识的图元。
此外,如果实施方式针对限定区域围绕需要保护的多个报警指示灯的排除性区域,则控制流生成器消除具有表示(例如)3D模型的图元的图元块,使其不再是限定区域内的那些图块的控制流的一部分,并且仅放置具有由验证数据表示的图元的图元块。因此,控制流生成器生成的控制流使得能够控制帧的渲染,使得渲染从限定区域内部的帧排除验证数据未标识的图元。
图元块的图元块条目可以包括:有效图块信息(例如,在图块组(一组图块)中针对每个图块具有一位的有效图块掩码),该有效图块信息标识图块组中的哪些图块针对图元块有效;以及指向存储器614中的对应的图元块的数据指针。图元块条目还可以包括图元块标头,该图元块标头可以包括关于图元块的附加信息。
此外,在一些情况下,控制流可以在存储器中存储在控制流条目块中,其中每个块具有最大数目的条目。在这些情况下,控制流生成器610可以被配置成通过将条目添加到控制流块直到已达到最大数目的条目来构建控制流块。一旦已经达到最大数目的条目减去一的条目,控制流生成器610就可以被配置成将链路条目添加到控制流块,指示下一控制流块将在存储器中存储的位置,然后将控制流块写入存储器中。控制流生成器610可以被配置成继续构建控制流块,直到已经生成最后一个图元块条目。
在一些情况下,控制流生成器610可以被配置成一旦生成图块组的最后一个图元块条目,就将终止条目(如上所述)存储在存储器中以指示该图块组的控制流的结束。
控制流生成器的输出存储在存储器614b中(例如,存储在参数缓冲存储器的区域中)。存储器614b对应于图2中的存储器2023。存储在存储器614b中的输出可以进一步由作为光栅化逻辑206的渲染单元使用。渲染单元被配置成基于渲染控制单元的输出使用几何结构数据渲染所述帧。因此,在如上文详细论述那样定义包含性区域的情况下,渲染控制单元控制渲染,使得渲染单元在渲染帧的同时从限定区域外部的帧排除由验证数据标识的图元。类似地,在限定排除性区域的情况下,渲染控制单元控制渲染,使得渲染单元在渲染帧的同时从限定区域内部的帧排除验证数据未标识的图元。
图9示出了可实施本文所描述的图形处理系统的计算机系统。计算机系统包括CPU902、GPU 904、存储器906和其他装置914,诸如显示器916、扬声器918和相机922。处理块910(对应于处理块110)在GPU 904上以及神经网络加速器(NNA)911上实现。在其他示例中,处理块910可以在CPU 902上或NNA 911内实现。计算机系统的部件可经由通信总线920彼此进行通信。存储库912(对应于存储库112)被实施为存储器906的一部分。
虽然图9示出了图形处理系统的一种实施方式,但是应理解,可以针对人工智能加速器系统,例如,通过替代CPU 902或GPU 904绘制类似的框图。处理块910可以在NNA中实现。
图6的图形处理系统600被示出为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,在本文中被描述为由平铺引擎602形成的中间值不需要由平铺引擎602在任何时间点物理地生成,并且可以仅仅表示方便地描述由平铺引擎602在其输入与输出之间执行的处理的逻辑值。
本文所述的图形处理系统600可以包含在集成电路上的硬件中。本文所述的图形处理系统600可以被配置成执行本文所述的任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序码在处理器上执行时执行指定任务。本文所述的算法和方法可以由执行码的一个或多个处理器执行,所述码使处理器执行算法/方法。计算机可读存储介质的示例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或其它数据并且可以由机器存取的其它存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其它软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是或包括任何种类的通用或专用处理器,诸如CPU、GPU、NNA、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,诸如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。也就是说,可以提供一种计算机可读存储介质,所述计算机可读存储介质上编码有集成电路定义数据集形式的计算机可读程序代码,所述集成电路定义数据集当在集成电路制造系统中处理(即,运行)时,将系统配置成制造被配置成执行本文所述的任何方法的平铺引擎602,或者制造包括本文所述的任何设备的平铺引擎602。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统中制造如本文所述的图形处理系统600的方法。此外,可以提供一种集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中处理时,使制造图形处理系统600的方法得以执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,所述计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,所述软件环境包括电路元件的定义和用于组合这些元件以便生成由所述表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将关于图10描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置成制造图形处理系统600的示例。
图10示出了集成电路(IC)制造系统1002的示例,该集成电路制造系统被配置成制造如本文任何示例中描述的图形处理系统600。具体而言,IC制造系统1002包括布局处理系统1004和集成电路生成系统1006。IC制造系统1002被配置成接收IC定义数据集(例如,定义如本文任何示例中描述的图形处理系统600)、处理IC定义数据集以及根据IC定义数据集(例如,其包含如本文任何示例中描述的图形处理系统600)来生成IC。IC定义数据集的处理将IC制造系统1002配置成制造集成电路,所述集成电路包含如本文任何示例中描述的图形处理系统600。
布局处理系统1004被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定待生成的电路的门级表示,例如就逻辑部件(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1004已经确定电路布局时,其可将电路布局定义输出到IC生成系统1006。电路布局定义可以是例如电路布局描述。
如本领域中已知的,IC生成系统1006根据电路布局定义来生成IC。例如,IC生成系统1006可实施生成IC的半导体装置制造工艺,该半导体装置制造工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,掩模可在光刻工艺中用于根据电路定义来生成IC。替代地,提供给IC生成系统1006的电路布局定义可呈计算机可读代码的形式,IC生成系统1006可使用该计算机可读代码来形成用于生成IC的合适的掩模。
由IC制造系统1002执行的不同过程可全部在一个位置例如由一方来实施。替代地,IC制造系统1002可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些可以在不同位置以及/或者由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成待生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其它示例中,在集成电路制造系统处处理集成电路定义数据集可将系统配置成在不需要处理IC定义数据集以便确定电路布局的情况下制造平铺引擎、渲染控制单元、渲染单元或图形处理系统。例如,集成电路定义数据集可以定义可重新配置的处理器诸如FPGA的配置,并且对该数据集的处理可以将IC制造系统配置成(例如,通过将配置数据加载到FPGA)生成具有该定义的配置的可重新配置的处理器。
在一些实施例中,集成电路制造定义数据集当在集成电路制造系统中处理时可以使集成电路制造系统生成如本文所述的装置。例如,通过集成电路制造定义数据集以上文相对于图10所描述的方式对集成电路制造系统进行配置可制造出如本文所描述的装置。
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图10中所示的示例中,IC生成系统还可由集成电路定义数据集配置成在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到所述集成电路上,或以其它方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实现方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实现方式可以引起性能改进。性能改进可以包含计算性能提高、延迟减少、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如,在集成电路中)期间,可以在性能改进与物理实现方式之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实施方式的改进(诸如硅面积减小)的概念可以针对性能提高进行折中。例如,这可以通过在预定义面积预算内制造模块的多个示例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
Claims (20)
1.一种在基于图块的图形处理系统中执行帧的安全关键渲染的方法,所述方法包括:
接收用于所述帧的几何结构数据,包括定义表示所述帧中的多个对象的多个图元的数据;
接收所述帧中的区域的定义,所述区域与所述多个图元中的一个或多个图元相关联;
接收将一个或多个图元与所述帧中的区域相关联的验证数据;以及
使用所述几何结构数据渲染所述帧并且使用所述验证数据控制所述帧的渲染,使得所述渲染从所述区域外部的帧排除由所述验证数据标识的图元。
2.根据权利要求1所述的方法,其中,所述控制包括检查包括由所述验证数据标识的图元的图块是否完全落在所述区域内,任选地,其中,所述检查标识在渲染之前所述几何结构数据是否受损。
3.根据权利要求1或2所述的方法,其中,所述几何结构数据和所述验证数据是一起接收的,并且任选地,所述验证数据是状态数据。
4.根据权利要求1或2或3所述的方法,其中,所述区域是所述帧内的轴对齐包围盒,并且任选地,所述轴对齐包围盒与所述帧内的一个或多个图块对齐,并且/或者其中,所述帧中的区域的定义包括所述帧中的区域的顶点的位置。
5.根据任一项前述权利要求所述的方法,其中,在接收到用于所述帧的几何结构数据时,所述方法包括:
生成一个或多个图元块,每个图元块包括所述多个图元中的分组在一起的一个或多个图元;以及
使所述帧上的多个图块中的每个图块与包括至少部分地落在所述图块的边界内的至少一个图元的图元块相关联。
6.根据权利要求5所述的方法,其中,所述方法包括通过以下方式控制所述渲染:
针对所述帧上的多个图块中的每个图块生成控制流数据,从而标识落在所述图块上的图元;以及
针对所述区域外部的每个图块,从所述控制流数据排除指向包括由所述验证数据标识的图元的图元块的指针。
7.根据任一项前述权利要求所述的方法,其中,由所述区域覆盖的图元表示多维对象。
8.根据任一项前述权利要求所述的方法,其中,所述帧包括在限定区域外部的一个或多个安全关键对象。
9.根据任一项前述权利要求所述的方法,其中,所述验证数据是从应用程序接收的,任选地其中,所述应用程序请求所述帧的渲染。
10.根据权利要求1所述的方法,还包括接收多个区域的定义,其中,所述验证数据将一个或多个图元与所述多个区域中的每个区域相关联,并且其中,使用所述验证数据控制所述帧的渲染从所述区域外部的帧排除由针对每个区域的验证数据标识的图元。
11.根据权利要求1所述的方法,其中,所述方法还包括:
接收所述帧中的第二区域的定义,所述区域与所述多个图元中的一个或多个图元相关联;
接收针对所述第二区域的验证数据,所述验证数据标识与所述帧中的区域相关联的一个或多个图元;以及
使用所述几何结构数据渲染所述帧并且使用所述验证数据控制所述帧的渲染,使得所述渲染从所述区域内部的帧排除所述验证数据未标识的图元。
12.一种使得能够对帧进行安全关键渲染的基于图块的图形处理系统,所述系统包括:
渲染控制单元,所述渲染控制单元被配置成:
接收用于所述帧的几何结构数据,包括定义表示所述帧中的多个对象的多个图元的数据;
接收所述帧中的区域的定义,所述区域与所述多个图元中的一个或多个图元相关联;
接收将一个或多个图元与所述帧中的区域相关联的验证数据;以及
使用验证数据控制所述帧的渲染,使得所述渲染从限定区域外部的帧排除由所述验证数据标识的图元;以及
渲染单元,所述渲染单元被配置成基于所述渲染控制单元的输出使用所述几何结构数据渲染所述帧。
13.根据权利要求12所述的系统,其中,所述渲染控制单元包括控制模块,所述控制模块被配置成检查包括由所述验证数据标识的图元的图块是否完全落在所述区域内。
14.根据权利要求12所述的系统,其中,所述渲染控制单元包括图元块生成器,所述图元块生成器被配置成接收用于所述帧的几何结构数据和验证数据,并且生成一个或多个图元块,每个图元块将所述多个图元中的一个或多个图元分组在一起。
15.根据权利要求14所述的系统,其中,所述渲染控制单元包括平铺逻辑,所述平铺逻辑被配置成:
从所述图元块生成器接收所述一个或多个图元块和所述几何结构数据;以及
将所述帧上的多个图块中的每个图块与包括至少部分地落在所述图块的边界内的至少一个图元的图元块相关联。
16.根据权利要求15所述的系统,其中,所述渲染控制单元包括控制流生成器,所述控制流生成器被配置成:
针对所述帧上的多个图块中的每个图块生成控制流数据以渲染图像;以及
针对所述区域外部的每个图块,通过从所述控制流数据排除指向与由所述验证数据标识的图元相关联的图元块的指针,来控制所述帧的渲染。
17.根据权利要求13所述的系统,其中,所述控制模块接收包括所述区域的顶点的位置的所述帧中的区域的定义。
18.根据权利要求12-17所述的系统,其中,所述基于图块的图形处理系统包含在集成电路上的硬件中。
19.一种使用集成电路制造系统制造根据权利要求12至18中任一项所述的基于图块的图形处理系统的方法,所述方法包括:
使用布局处理系统,处理所述图形处理系统的计算机可读描述,以便生成包含所述图形处理系统的集成电路的电路布局描述;以及
使用集成电路生成系统,根据所述电路布局描述来制造所述图形处理系统。
20.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有根据权利要求12至18中任一项所述的图形处理系统的计算机可读描述,所述计算机可读描述当在集成电路制造系统中处理时使所述集成电路制造系统制造包含所述图形处理系统的集成电路。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2101013.7A GB2598422B (en) | 2021-01-26 | 2021-01-26 | Method and system for safety critical rendering of a frame |
GB2101013.7 | 2021-01-26 | ||
GB2101014.5A GB2598423B (en) | 2021-01-26 | 2021-01-26 | Method and system for safety critical rendering of a frame |
GB2101014.5 | 2021-01-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114898030A true CN114898030A (zh) | 2022-08-12 |
CN114898030B CN114898030B (zh) | 2024-05-07 |
Family
ID=79425296
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210064265.2A Active CN114898030B (zh) | 2021-01-26 | 2022-01-20 | 用于帧的安全关键渲染的方法和系统 |
CN202210065514.XA Active CN114898024B (zh) | 2021-01-26 | 2022-01-20 | 用于帧的安全关键渲染的方法和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210065514.XA Active CN114898024B (zh) | 2021-01-26 | 2022-01-20 | 用于帧的安全关键渲染的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11954784B2 (zh) |
EP (2) | EP4033450B1 (zh) |
CN (2) | CN114898030B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150015571A1 (en) * | 2012-12-04 | 2015-01-15 | Panasonic Corporation | Divided-area-based rendering device and divided-area-based rendering method |
US20160379333A1 (en) * | 2015-06-23 | 2016-12-29 | Freescale Semiconductor, Inc. | Apparatus and method for verifying fragment processing related data in graphics pipeline processing |
CN107025681A (zh) * | 2016-02-01 | 2017-08-08 | 想象技术有限公司 | 稀疏渲染 |
CN108305318A (zh) * | 2017-01-12 | 2018-07-20 | 想象技术有限公司 | 图形处理单元和使用渲染空间的图块集合的成本指示来控制渲染复杂度的方法 |
CN112017104A (zh) * | 2019-05-30 | 2020-12-01 | 畅想科技有限公司 | 图形处理系统中的功能安全 |
CN112017102A (zh) * | 2019-05-31 | 2020-12-01 | 畅想科技有限公司 | 使用渲染进度检查的图形处理单元和方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2524121B (en) * | 2014-06-17 | 2016-03-02 | Imagination Tech Ltd | Assigning primitives to tiles in a graphics processing system |
GB201602117D0 (en) * | 2016-02-05 | 2016-03-23 | Bae Systems Plc | Method and apparatus for generating an image |
GB2558885B (en) * | 2017-01-12 | 2021-04-07 | Imagination Tech Ltd | Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering |
US10108850B1 (en) * | 2017-04-24 | 2018-10-23 | Intel Corporation | Recognition, reidentification and security enhancements using autonomous machines |
GB2579592B (en) * | 2018-12-04 | 2021-03-24 | Imagination Tech Ltd | Tile Region Protection |
US11216993B2 (en) | 2019-11-27 | 2022-01-04 | Arm Limited | Graphics processing systems |
-
2022
- 2022-01-20 CN CN202210064265.2A patent/CN114898030B/zh active Active
- 2022-01-20 EP EP22152416.8A patent/EP4033450B1/en active Active
- 2022-01-20 EP EP22152415.0A patent/EP4033449B1/en active Active
- 2022-01-20 CN CN202210065514.XA patent/CN114898024B/zh active Active
- 2022-01-26 US US17/584,979 patent/US11954784B2/en active Active
- 2022-01-26 US US17/584,808 patent/US11915358B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150015571A1 (en) * | 2012-12-04 | 2015-01-15 | Panasonic Corporation | Divided-area-based rendering device and divided-area-based rendering method |
US20160379333A1 (en) * | 2015-06-23 | 2016-12-29 | Freescale Semiconductor, Inc. | Apparatus and method for verifying fragment processing related data in graphics pipeline processing |
CN107025681A (zh) * | 2016-02-01 | 2017-08-08 | 想象技术有限公司 | 稀疏渲染 |
CN108305318A (zh) * | 2017-01-12 | 2018-07-20 | 想象技术有限公司 | 图形处理单元和使用渲染空间的图块集合的成本指示来控制渲染复杂度的方法 |
CN112017104A (zh) * | 2019-05-30 | 2020-12-01 | 畅想科技有限公司 | 图形处理系统中的功能安全 |
CN112017102A (zh) * | 2019-05-31 | 2020-12-01 | 畅想科技有限公司 | 使用渲染进度检查的图形处理单元和方法 |
Also Published As
Publication number | Publication date |
---|---|
US11915358B2 (en) | 2024-02-27 |
US20220254087A1 (en) | 2022-08-11 |
EP4033450B1 (en) | 2023-12-06 |
EP4033449A1 (en) | 2022-07-27 |
CN114898024B (zh) | 2023-10-24 |
EP4033450A1 (en) | 2022-07-27 |
US20220254088A1 (en) | 2022-08-11 |
US11954784B2 (en) | 2024-04-09 |
CN114898024A (zh) | 2022-08-12 |
CN114898030B (zh) | 2024-05-07 |
EP4033449B1 (en) | 2023-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6961755B2 (ja) | グラフィック処理システムにおける機能的安全性 | |
EP3663918B1 (en) | Tile region protection | |
US20230409432A1 (en) | Periodic reset of graphics processor unit in safety-critical graphics processing system | |
US20230162318A1 (en) | Configuration check for safety-critical gpu | |
GB2598423A (en) | Method and system for safety critical rendering of a frame | |
GB2579699A (en) | Tile region protection | |
CN114898024B (zh) | 用于帧的安全关键渲染的方法和系统 | |
GB2598422A (en) | Method and system for safety critical rendering of a frame | |
US11587198B2 (en) | Critical workload check |
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 |